Изменения

Перейти к: навигация, поиск

Шаблонизатор VMX::Template

993 байта добавлено, 21:39, 18 марта 2010
Реализация
== Реализация ==
 
Маркера начала и конца кода <!-- --> и подстановки { } могут быть заменены любыми другими. Если, например, вы привыкли к TT, можно установить [% %].
Путь к переменной теперь может включать в себя числа. Это будут обращения к элементам массивов, в то время как всё остальное — обращения к элементам хешей.
Вне блока {block} будет иметь значение ARRAY(0x…) , то есть массив всех итераций блока block, а {block.0} будет иметь значение HASH(0x…), то есть первую итерацию блока block.
<pre><!-- BEGIN block --></pre>
А Теперь, внутри блока {block} теперь будет иметь значение HASH(0x…), то есть уже значение текущей итерации блока block, а {block.#} будет иметь значением номер текущей итерации блока, отсчитываемый с 0, а не с 1, как в старой версии.
<pre><!-- END block --></pre>
На <nowiki><!-- END другоеимя --></nowiki> после <nowiki><!-- BEGIN block --></nowiki> шаблонизатор выдаст ошибку, «ибо нефиг» (c). Если block в хеше данных — не массив, а хеш — это значит, что итерация у блока только одна, и тогда <nowiki><!-- BEGIN block --></nowiki> работает как for($expression) {} в Perl.
Операторов <tt>BEGIN ... END</tt> — это циклы в «старом стиле». А можно использовать и TT-подобный: <pre><!-- FOR var = block -->...<!-- END --></pre> Причём, <tt>var</tt> может быть само <tt>block</tt>'ом. Это, по сути, и есть то, что делает BEGIN: <!-- BEGIN block --> эквивалентно <!-- FOR block = block -->. Предыдущее значение переменной цикла после выхода из цикла всегда восстанавливается. К номеру итерации можно обратиться через '''<tt>{var#}</tt>'''. '''Операторов нет''', но есть функции. Пример:
<pre><!-- IF OR(function(block.key1),AND(block.key2,block.key3)) --></pre>
<!-- function(block.key) -->
<!-- function block.key -->
{block.key/Ls}{L s block.key}
</pre>
<!-- IF NOT block.key -->...<!-- END -->
</pre>
 
ELSIF эквивалентно ELSE IF и ELSEIF.
Запись значения переменной:

Навигация