Войти с помощью github
Форум /

Пример Добавление БЭМ-сущностей для задач вёрстки из руководства по BEMHTML выдает ошибку:

Error: Only literal or function is allowed in template's body
   at Compiler.assert (/vagrant/project-stub/node_modules/enb-bemxjst/node_modules/bem-xjst/node_modules/xjst/lib/xjst/compiler/base.js:180:9)
   at Compiler.transformTemplates (/vagrant/project-stub/node_modules/enb-bemxjst/node_modules/bem-xjst/node_modules/xjst/lib/xjst/compiler/base.js:648:8)
   at Array.map (native)
   at Compiler.translate (/vagrant/project-stub/node_modules/enb-bemxjst/node_modules/bem-xjst/node_modules/xjst/lib/xjst/compiler/base.js:201:41)
   at Object.translate (/vagrant/project-stub/node_modules/enb-bemxjst/node_modules/bem-xjst/node_modules/xjst/lib/xjst/api.js:16:40)
   at Compiler.translate (/vagrant/project-stub/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/compiler.js:121:35)
   at Compiler.generate (/vagrant/project-stub/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/compiler.js:707:14)
   at Object.generate (/vagrant/project-stub/node_modules/enb-bemxjst/node_modules/bem-xjst/lib/bemhtml/api.js:16:40)
   at require.declare.process (/vagrant/project-stub/node_modules/enb-bemxjst/techs/bem-xjst.js:7:28)
   at /vagrant/project-stub/node_modules/enb-bemxjst/node_modules/sibling/lib/runner.js:22:48

Гугление подсказало обернуть матчинг флага в анонимную функцию:

block('box').match(function() { return !this.ctx._processed; })

Не помогло.

Обернул вызов applyCtx:

block('box').match(function() { return !this.ctx._processed; }).content()(function() {
    applyCtx({'ctx._processed':true}, {
        elem: 'left-top',
        content: {
            elem: 'right-top',
            content: {
                elem: 'right-bottom',
                content: {
                    elem: 'left-bottom',
                    content: applyNext()
                }
            }
        }
    });
})

Ошибка пропала, но html сгенерировался криво:

<div class="box">
    <div class="box">text</div>
    <div class="box__left-top">
        <div class="box__right-top">
            <div class="box__right-bottom">
                <div class="box__left-bottom"></div>
            </div>
        </div>
    </div>
</div>

Подскажите, как правильно делать такую банальную вещь?