Изменения

Шаблонизатор VMX::Template/Старая версия

335 байтов добавлено, 12:42, 20 июня 2016
Шаблонизатор VMX::Template [[Шаблонизатор VMX::Template/Старая PHP версия|зародился ]] реализованным на языке PHP, как адаптация шаблонизатора из phpBB2. Далее был развит и переписан на Perl. Далее был [[Шаблонизатор VMX::Template|развит ещё больше]] и переписан с нуля.
VMX::Template — простой и быстрый шаблонизатор, выросший из шаблонизатора phpBB2.
== Программный интерфейс ==
<source lang="perl">
# Конструктор
$template = VMX::Template->new(
# Каждый такой файл содержит код на языке Perl, возвращающий ссылку на хеш.
# Загрузка происходит с автоматическим пересчитыванием с диска при изменениях.
$template->load_lang(«файл1"файл1.pl»pl", «файл2"файл2.pl»pl");
# Загрузка хешей в качестве языковых данных:
# Присвоение переменных корневого уровня:
$template->assign_vars(KEY => «значение»"значение");
# Присвоение переменных блока-цикла в новую итерацию блока:
$template->assign_block_vars(«block»"block", KEY => «значение»"значение");
# Или то же, но без копирования готового хешрефа:
$template->assign_block_vars(«block»"block", { KEY => «значение» "значение" });
# Или то же, но в последнюю заданную итерацию блока, а не в новую:
$template->append_block_vars(«block»"block", KEY => «значение»"значение");
# Выполнение шаблона и получение результатов (страницы):
=== Включение (INCLUDE) ===
<pre>
Включение шаблона с именем filename.tpl:
 <pre><!-- INCLUDE filename.tpl --> </pre>
=== Подстановки переменных ===
<code>{переменная} </code> или <code>{переменная->путь} </code> или <code>{переменная/преобразование}</code>
Где переменная — цепочка идентификаторов, разделённая точками. Все, кроме последнего — имена блоков, последний — имя переменной. После имени переменной может идти путь по ней, если она представляет собой хеш или массив. Путь — цепочка идентификаторов или чисел, разделённая стрелками -> Например, <code>{DOMAIN}</code> — подстановка корневой переменной DOMAIN. А <code>{site.url.DOMAIN}</code> — подстановка переменной DOMAIN блока url, вложенного в блок site. А <code>{site.url.CONFIG->rules->0/s}</code> — подстановка первого элемента массива, вложенного в переменную CONFIG блока url, вложенного в блок site, по ключу rules, в HTML-безопасном виде (то есть с преобразованием s, см.ниже).
А преобразование — одно из:
</pre>
Где подстановка — любая допустимая в <code>{фигурных.скобках} </code> подстановкабез фигурных скобок.
Тесты:
<pre>
<!-- IF! site.url.CONFIG->rules->0/Lz -->
<!-- END -->
</pre>
</pre>
Конец блока — всегда <code><nowiki><!-- END block --></nowiki></code>.
Пример:
</pre>
И специальный случай: внутри внутреннего блока <code>{inner_block.#} </code> имеет значением номер текущей итерации внутреннего блока, считающийся с 1. Именно <code>{inner_block.#}</code>, а не <code>{block.inner_block.#}</code>.
=== Автоматические контекстные переводы ===
Они доступны в двух вариантах: <code>%Переводимая строка% </code> и <code>{переменная/L}</code>.
Идея в том, чтобы автоматически заменять строки на другие строки в зависимости от их расположения в файле шаблона (контекста).
Соответственно и загружаемые файлы переводов должны содержать просто код, возвращающий хешреф. То есть в простейшем случае — просто хешреф.
 
[[Категория:Sway]]
[[Категория:Perl]]
[[Категория:Архив]]