ecomfe / etpl

ETPL是一个强复用、灵活、高性能的JavaScript模板引擎,适用于浏览器端或Node环境中视图的生成。
http://ecomfe.github.io/etpl/
BSD 3-Clause "New" or "Revised" License
496 stars 96 forks source link

import嵌套时,有bug #57

Closed errorrik closed 9 years ago

errorrik commented 9 years ago

@otakustay 发现的问题

<!-- import: listPage -->
    <!-- block: crumb --><!-- import: exampleListCrumb --><!-- /block -->
    <!-- block: main -->World<!-- /block -->
<!-- /import -->

<!-- target: exampleListCrumb -->
<!-- import: crumb -->
    <!-- block: path -->
        <span>示例</span>
    <!-- /block -->
<!-- /import -->

<!-- target: listPage -->
<div class="list-page">
    <div class="page-crumb">
        <!-- block: crumb --><!-- /block -->
        <!-- block: tip --><!-- /block -->
    </div>
    <div class="list-page-content">
        <!-- block: main --><!-- /block -->
    </div>
</div>

<!-- target: crumb -->
<div data-ui-type="Crumb" data-ui-id="crumb">
    <!-- block: path --><!-- /block -->
</div>

输出结果不正确,<!-- block: main -->World<!-- /block -->的block内容没有被正确替换 原因是由于target不存在嵌套,etpl2的语法也不可能出现import嵌套,导致实现没考虑到import嵌套的问题,在parse的过程,对于block的处理直接(ctx.imp || ctx.target).blocks[name]=了。