Есть ли PHP-парсер, чтобы взять код разметки стиля emmet и разобрать его в HTML?
Я пишу код, как.
$htmlBlock .= '<div id="'.$myDivId.'">';
$htmlBlock .= '<ul>';
foreach( $myArray as $listItem){
$htmlBlock .= '<li>' . $listItem . '</li>';
}
$htmlBlock .= '</ul>';
$htmlBlock .= '</div>';
echo $htmlBlock;
С некоторыми вложениями, условиями, атрибутами и классами это становится очень утомительным и сложным. Хуже всего помнить о закрытии тегов и вычислять, когда тег должен быть закрыт.
Я знаком с Heredoc но это становится довольно грязным с вложенными циклами и условными выражениями. Я хотел бы полностью избежать тегов и синтаксиса HTML. Во всяком случае, я чувствую себя сумасшедшим даже потому, что пишу это.
Те, кто знаком с Эмметом, знают, что
#page>div.logo+ul#navigation>li*5>a{Item $}
Разберусь в
<div id="page">
<div class="logo"></div>
<ul id="navigation">
<li><a href="">Item 1</a></li>
<li><a href="">Item 2</a></li>
<li><a href="">Item 3</a></li>
<li><a href="">Item 4</a></li>
<li><a href="">Item 5</a></li>
</ul>
Было бы намного проще написать
$emmet = #$myDivId ul li{$myArray}
Даже быть в состоянии написать это было бы довольно мило.
$emmet = #$myDivId ul
$emmet .= foreach ($myArray as $listItem) li{$listItem}
Я вижу много парсеров уценки для php, и Parsedown выглядит круто, но я не хочу изучать другой язык. Мне нравится вывод HTML в сокращенном синтаксисе.
Похоже, стилус, sass, и менее решены проблемы в CSS, но HTML был забыт. Что удивительно для меня, потому что HTML намного более многословен.
Я чувствую, что идеальным решением будет парсер php emmet, который допускает переменные. Кто-нибудь знает об этом? Если нет, я начну репозиторий Github и пойду на работу.
Я нашел только два проекта с правильной направленностью, но один так и не был начат.
https://github.com/lavoiesl/php-emmet
Это может сделать трюк. Я буду исследовать это.
https://code.google.com/p/php-zen-coding/wiki/OverviewUsage
Вот пакет composer, который может работать для вас, он говорит, что это HTML-рендеринг в php, вдохновленный HyperScript и имеет emmet-подобные функции.
https://github.com/spatie/html-element
Этот код:
el('div.container > div.row > div.col-md-6', 'Hello world!'));
Окажет это:
<div class="container">
<div class="row">
<div class="col-md-6">
Hello world!
</div>
</div>
</div>
Предположительно в любом случае! Я еще не использовал это, но я определенно буду для моего следующего проекта. Надеюсь это поможет!
https://github.com/spatie/html-element
https://github.com/artemBilik/emmet
Использование ‘div> p.myP {некоторый текст} + p # myPersonalP {другой текст}
И то же самое для JavaScript
https://github.com/artemBilik/js_emmet