2014-11-07 4 views
1

Есть ли парсер php, чтобы взять код уценки в стиле emmet и проанализировать его в html?Emmet Parser for PHP

Я нахожу, что пишу код как.

$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 и приступаю к работе.

+0

Если Heredoc доставляет вам тяжело, вы пытались [** nowdoc **] (http://php.net/manual/en/language.types.string.php#language.types .string.syntax.nowdoc)? Похоже, что это сработает. –

+0

Heredoc на самом деле лучше для моих целей. Но я все равно хочу использовать сокращенный синтаксис. – Bryan

+0

вы можете захотеть заглянуть в HAML ... – mb21

ответ

0

Вот композитор, который может сработать для вас, он говорит, что это html-рендеринг в php, вдохновленный h yperscript и имеет подобные функции.

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> 

Supposedly в любом случае! Я еще не использовал это, но я определенно буду для своего следующего проекта. Надеюсь это поможет!

https://github.com/spatie/html-element