Изменения

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

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

3170 байтов добавлено, 16:29, 18 марта 2010
Нет описания правки
Данный модуль представляет собой новую версию VMX::Template, построенную на некоторых новых идеях, ликвидировавшую безобразие и legacy-код, накопленный в [[Шаблонизатор VMX::Template/Старая версия|старой версии]], однако сохранившую высокую производительность и простоту.
 
Есть [{{SVN|vitaphoto/branch/php/template.php}} PHP-версия] и [{{SVN|vitaphoto/branch/solstice/lib-sway/VMX/Template.php Perl-версия] шаблонизатора. Реализация, естественно, несколько отличается по причине различий языков — например, в Perl’е для кэширования кода используются coderef’ы, а в PHP предполагается, что кэшированием занимается какой-нибудь [http://xcache.lighttpd.net/ XCache] или [http://eaccelerator.net/ eAccelerator], ибо там сохранить coderef между запросами, по-видимому, невозможно.
 
Развивается то одна, то другая, в зависимости от проекта, над которым я работаю в моменте.
 
<span style="border: 2px #FF8000 dashed">VMX::Template — это что-то в духе «ох уж эти перлисты — что ни пишут, всё Template::Toolkit получается».</span> Это к тому, что идея вообще-то схожая, но реализация гораздо проще и быстрее.
== Идеи ==
=== OR, AND, NOT ===
Логические ИЛИ, И, НЕ, действующие аналогично Perl операторам || , && , !.
=== EVEN, ODD ===
Истина в случае, если аргумент чётный или нечётный соответственно.
=== INT=I, ADD, MUL, DIV, MOD ===
Преобразование к целому числу и арифметические операции.
=== EQ, NE, SEQ, SNE, GT, LT, GE, LE, SGT, SLT, SGE, SLE ===
Действуют аналогично Perl операторам == eq > < >= <= gt lt ge le.
=== CONCATВ PHP-версии на данный момент такого многообразия нет, JOIN=IMPLODE, SPLIT, COUNT ===есть просто EQ NE GT LT GE LE.
=== CONCAT, JOIN=IMPLODE, SPLIT === Конкатенация всех своих аргументов - concat(аргументы). Конкатенирует также все элементы всех переданных массивов.
Конкатенация элементов массива через разделитель - join(строка,аргументы). Причём если какие-то аргументы - массивы, конкатенирует все их элементы, а не их самих.
Разделение строки по регулярному выражению и лимиту - split(РЭ,аргумент,лимит). Лимит необязателен. (см. [http://perldoc.perl.org/functions/split.html perldoc -f split])
 
=== COUNT, SUBARRAY=ARRAY_SLICE, SUBARRAY_DIVMOD ===
Количество элементов массива, или 0, если аргумент - не массив - count(аргумент).
 
Аналог функции [http://php.net/manual/en/function.array-slice.php array_slice] из PHP.
 
Выбор из массива каждого div'того элемента, начиная с номера mod или нуля по умолчанию - subarray_divmod(массив, div, mod).
 
=== ARRAY, HASH ===
 
Создание массива или хэша из всех атрибутов.
 
Соответственно в хеше атрибуты идут парами КЛЮЧ, ЗНАЧЕНИЕ, КЛЮЧ, ЗНАЧЕНИЕ и т.п. (специального синтаксиса "=>" нет).
 
=== GET, AGET, HGET ===
 
Получение элемента массива/хэша по «динамическому» ключу. По-моему, это лучше, чем зюки-хрюки Template Toolkit’а: <tt>hash.${hash2.$key}</tt> и т. п.
 
GET(откуда, что) автоматически решает, «откуда» — это массив или хеш, AGET служит только для массивов, а HGET только для хешей. В PHP-версии все три идентичны.
=== LC=LOWER=LOWERCASE, UC=UPPER=UPPERCASE ===
Нижний и верхний регистр.
 
=== STRLIMIT(s, l) ===
 
(пока только PHP-версия, в Perl будет в будущем) Ограничение длины строки s максимальной длиной l. Если строка превышает заданную длину, она обрезается предпочтительно по пробелу или Tab’у, а в конец добавляется «…» (троеточие).
=== S=HTML, T=STRIP, H=STRIP_UNSAFE ===
Преобразование символов < > & " ' в HTML-сущности,.
Удаление всех [[lib:HTML|HTML]]/[[lib:XML|XML]] тегов,.
Удаление только запрещённых тегов.
=== Q=QUOTE, REQUOTE=RE_QUOTE=PREG_QUOTE ===
Экранирование символов " ' \бэкслэшем.
А также экранирование символов, являющихся специальными в регулярных выражениях (см. [http://perldoc.perl.org/perlre.html perldoc perlre]).

Навигация