Изменения

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

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

2334 байта добавлено, 21:32, 18 марта 2010
Нет описания правки
Данный модуль представляет собой новую версию VMX::Template, построенную на некоторых новых идеях, ликвидировавшую безобразие и legacy-код, накопленный в [[Шаблонизатор VMX::Template/Старая версия|старой версии]], однако сохранившую высокую производительность и простоту.
Есть [{{SVN|vitaphoto/branch/php/template.php}} PHP-версия] и [{{SVN|vitaphoto/branch/solstice/lib-sway/VMX/Template.php pm}} Perl-версия] шаблонизатора. Реализация, естественно, несколько отличается по причине различий языков — например, в Perl’е для кэширования кода используются coderef’ы, а в PHP предполагается, что кэшированием занимается какой-нибудь [http://xcache.lighttpd.net/ XCache] или [http://eaccelerator.net/ eAccelerator], ибо там сохранить coderef между запросами, по-видимому, невозможно.
Развивается то одна, то другая, в зависимости от проекта, над которым я работаю в моменте.
<span style="border: 2px #FF8000 dashed; padding: 4px">Про VMX::Template — это что-то в духе Template можно сказать «ох уж эти перлисты — что ни пишут, всё Template::Toolkit получается».</span> Это к тому, что идея вообще-то схожая, но реализация гораздо проще и быстрее.
== Идеи ==
Истина в случае, если аргумент чётный или нечётный соответственно.
=== INT=I, ADD, MUL, DIV, MOD , LOG ===
Преобразование к целому числу и , арифметические операциии логарифм.
=== EQ, NE, SEQ, SNE, GT, LT, GE, LE, SGT, SLT, SGE, SLE ===
В PHP-версии на данный момент такого многообразия нет, есть просто 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 ===
GET(откуда, что) автоматически решает, «откуда» — это массив или хеш, AGET служит только для массивов, а HGET только для хешей. В PHP-версии все три идентичны.
 
=== MAP ===
 
Применение функции, имя которой передано как первый аргумент, ко всем переданным аргументам и элементам всех переданных массивов — map(«имя_функции», аргументы).
=== LC=LOWER=LOWERCASE, UC=UPPER=UPPERCASE ===
(пока только PHP-версия, в Perl будет в будущем) Ограничение длины строки s максимальной длиной l. Если строка превышает заданную длину, она обрезается предпочтительно по пробелу или Tab’у, а в конец добавляется «…» (троеточие).
=== S=HTML=HTMLSPECIALCHARS, T=STRIP, H=STRIP_UNSAFE ===
Преобразование символов < > & " ' в HTML-сущности.
Удаление только запрещённых тегов.
=== URI_QUOTE=URIQUOTE=URLENCODE === URL-кодирование строки ({{CPAN|URI::Escape}} в Perl и [http://php.net/manual/en/function.urlencode.php urlencode()] в PHP). === CONCAT, JOIN=IMPLODE === Конкатенация всех своих аргументов — concat(аргументы). Конкатенирует также все элементы всех переданных массивов. Конкатенация элементов массива через разделитель — join(строка, аргументы). Конкатенирует также все элементы всех переданных массивов. === Q=QUOTE=ADDSLASHES, REQUOTE=RE_QUOTE=PREG_QUOTE === Экранирование символов " ' \ бэкслэшем — quote(строка). Экранирование символов, являющихся специальными в регулярных выражениях — re_quote(строка). (см. [http://perldoc.perl.org/perlre.html perldoc perlre]). === REPLACE, SPLIT ===
Экранирование символов " ' \ бэкслэшемЗамена Perl- (соответственно PCRE- в PHP-версии) регулярного выражения в строке — replace(RegExp, замена, строка).
А также экранирование символовРазделение строки по регулярному выражению и лимиту — split(RegExp, являющихся специальными в регулярных выражениях аргумент, лимит). Лимит необязателен. (см. [http://perldoc.perl.org/perlrefunctions/split.html perldoc perlre-f split]).
=== SUBST, SPRINTF, STRFTIME ===
Подстановка на места подстрок вида $ЧИСЛО соответствующих параметров функции или элементов переданного массивамассива — subst(строка, $1, $2, …).
[http://perldoc.perl.org/functions/sprintf.html sprintf].
Форматирование даты и/или времени с помощью функции [http://www.manpagez.com/man/3/strftime/ strftime] — strftime(формат, дата [, часть_даты]). Формат strftime’овский (например, «%d %b %Y»). Дата может передаваться как один или два аргумента, если два — они конкатенируются через пробел. Далее дата разбирается способом, похожим на wfTimestamp() в MediaWiki. Принимается один из следующих форматов:* UNIX время.* Времена типа MySQL DATE, MySQL DATETIME, EXIF, ISO 8601, MediaWiki-формат, и любые другие, подпадающие под следующий формат: 1 группа из 4 или более цифр (год) и 2 (месяц, день) или 5 (месяц, день, часы, минуты, секунды) групп по 2 цифры, разделённые любыми нецифровыми символами и в конце — опционально временная зона — 2 цифры, предварённые пробелом, плюсом или минусом. Короче говоря, <pre>^\D*(\d{4,})\D*(\d{2})\D*(\d{2})\D*(?:(\d{2})\D*(\d{2})\D*(\d{2})\D*([\+\- ]\d{2}\D*)?)?$</pre>.* Оракловский формат даты-времени: День(2 цифры)-Месяц(3 буквы)-Год Часы. Минуты. Секунды.* RFC 822.
[[Категория:Sway]]
[[Категория:Разработка]]
[[Категория:Perl]]

Навигация