А я могу, каким-то образом получить bemjson, который соотвествует финальной верстке BEMHTML ?
т.е. например из
{
block: 'widgets',
content: [
{
elem: 'weather',
content: 4
}
]
}
вот это
{
block: 'widgets',
tag:"div",
attrs: {
class: "widgets i-bem",
"data-bem": '{ "weather": { "id": 4321 } }'
},
content: [
{
elem: 'weather',
tag:"span",
attrs: {
class:"widgets__weather"
},
content: 4
}
]
}
Да, для этого существует bemtree.
@Guria, хорошо, как это сделать на bemtree ?
Bemtree не генерирует мне теги, классы, и параметры ibem'а
@isuvorov Можно получить полный json по собранному html например с помощью этого) https://github.com/bem-incubator/html2bemjson там будет бэм сущности но не будет тега
div
так как он по умолчанию в BEMJSONИли с помощью PostHTML https://github.com/posthtml/posthtml Там будет полное дерево похожее на bemjson... input HTML
Tree in PostHTML
Как видишь есть бэм классы. Но нет бэм сущностей в дереве. Но можно быстренько плагин для этого написать
@voischev да, тоже думал об этом. но мне кажется не правильно собирать из JSON'а строку, и потом эту строку обратно парсить в JSON.
А по поводу posthtml, круто! только сегодня его увидел, читаю
Простите был не внимателен
Разобрался, как это можно сделать в рамках БЭМа:
создал у себя в блоках i-bem/i-bem.bemhtml
там переписал, как мне нужно match() def()
@tadatuta Единственное не понял, каким образом я могу заглушить ваш вызов oninit() ? Или каким образом я могу получить изначальный exports.apply https://github.com/bem/bem-core/blob/v2/common.blocks/i-bem/i-bem.bemhtml#L251
Получится же i-bem.bemtree один в один?
Похоже, но должен вести себя как bemhtml, но apply не в строку, а в объект 1) синхронно 2) формирование, ctx.tag ctx.attrs.class ctx.jsAttrs как в bemhtml 3) использовать все шаблоны bemhtml
Но по сути, я просто скомбинировал код bemtree, bemhtml Вот, что у меня получилось https://gist.github.com/isuvorov/4d516eeec2a7b57b07a3
@isuvorov Кмк, нет смысла пытаться реализовать это под названием bemhtml, это другая технология. Ее имеет смысл создавать отдельно. Хотя вариант с тем, чтобы получать BEMJSON и результирующего HTML, кмк, гораздо проще в реализации (и уже готов ;))