Изменения

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

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

746 байтов добавлено, 20:43, 27 июля 2018
Нет описания правки
'''VMX::Template''' — простой и высокопроизводительный шаблонизатор, имеющий Perl- и PHP-версии (основная — в данный момент PHP).
* Лицензия: GNU GPL версии 3 или новее
* Полный набор исходников здесь: http://yourcmc.ru/git/summaryvitalif/VMXTemplate** PHP-версия(PHP >= 5.4): [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/template.php template.php] и [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/template.parser.php template.parser.php].** Новая Perl-версия: [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/VMXTemplate.pm VMXTemplate.pm] и все его [http://yourcmc.ru/git/tree/VMXTemplate.git/master/VMXTemplate подмодули VMXTemplate/*.pm].** Старая Perl-версия: [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/VMX%2FTemplate.pm VMX/Template.pm] и [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/VMX%2FCommon.pm VMX/Common.pm].** Исходный код грамматики PHP-версии (LALR(1) [http://yourcmc.ru/git/summaryvitalif/lime LIME]): [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/template.lime template.lime].** Исходный код грамматики Perl-версии (LALR(1) {{CPAN|Parse::Yapp}}): [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/template.yp template.yp] и [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/template.skel.pm template.skel.pm].** Исходный код голой грамматики (LALR(1) yacc): [http://yourcmc.ru/git/blobvitalif/VMXTemplate.git/raw/master/template.y template.y].** В Git-репозитории можно найти полную историю разработки, начиная с самых старых phpbb-подобный версий.
* Простые настройки для подсветки синтаксиса шаблонов в [http://www.midnight-commander.org/ Midnight Commander]'а: [{{SVN|vitalif/trunk/scripts/tpl.syntax|markup}} tpl.syntax]. Чтобы подсветка нормально выглядела, к tpl.syntax в начало надо дописать html.syntax из стандартного комплекта поставки mc.
'auto_escape' => '', # функция авто-экранирования, например "s" (для HTML-безопасного режима)
);
 
$template->vars({
var => 'value',
...
});
# Выполнения полностью аналогичны PHP:
Если вы знаете о порождающих грамматиках, то вот контекстно-свободная грамматика для LALR(1) алгоритма разбора:
* Голая Bison-грамматика, для получения представления о синтаксисе: {{SVN|http://yourcmc.ru/git/vitalif/trunkVMXTemplate/raw/Templatemaster/template.y|markup}}* Рабочая [httpshttp://github.com/vitalif/lime LIME]-грамматика: {{SVN|http://yourcmc.ru/git/vitalif/trunkVMXTemplate/raw/Templatemaster/template.lime|markup}} (для её работы нужен патченый LIME — см. https://github.com/vitalif/lime)* Рабочая {{CPAN|Parse::Yapp}}-грамматика: http://yourcmc.ru/git/vitalif/VMXTemplate/raw/master/template.yp
=== Пример ===
Ограничение длины строки <tt>str</tt> максимальной длиной <tt>len</tt> — <tt>strlimit(str, len, dots = "...")</tt>. Если строка превышает заданную длину, она обрезается предпочтительно по пробелу или Tab’у, а в конец добавляется <tt>dots</tt> или по умолчанию <tt>"..."</tt>, если аргумент <tt>dots</tt> не передаётся.
 
==== PLURAL_RU ====
 
Выбор правильного окончания в русском языке в зависимости от количества: <tt>plural_ru(число, один, несколько, много)</tt>. Например (1 шаблон, 2-3-4-102 шаблонА, 5-6-15-… шаблонОВ):
 
<tt><nowiki>{num} шаблон{plural_ru(num, '', 'а', 'ов')}</nowiki></tt>
=== Массивы и хеши ===
Это бывает весьма полезно, если нужно написать модуль к системе, которая сама написана без шаблонизатора или с каким-нибудь полу-кривым собственным, и не хочется вводить дополнительную зависимость.
[[Категория:Sway]][[Категория:РазработкаТехактивы]]
[[Категория:Perl]]
[[Категория:PHP]]

Навигация