CVS logs for:
Working file: EasyTT.pm
head: 1.21
branch:
locks: strict
access list:
symbolic names:
keyword substitution: kv
total revisions: 21; selected revisions: 21
description:
date: 2002/09/13 18:07:48; author: gosha; state: Exp; lines: +3 -3Ошибка в разборе foreach'а. Не проходил тест foreach3.tmpl
[% FOREACH ref = ARRAY %]
[% ref %]"[% ref %]
[% END %]
короче " между тегами все портила...
date: 2002/09/03 11:59:41; author: gosha; state: Exp; lines: +3 -3В configure нельзя было сделать undef параметру...
date: 2002/08/24 21:58:31; author: gosha; state: Exp; lines: +19 -3Добавил два новых ключа в конфигурационном хеше для new
FILTERS
OPERATORS
оба ссылки на хеш. Для инициализации соответственно
фильтров и операторов.
date: 2002/08/23 16:53:47; author: gosha; state: Exp; lines: +31 -27Поправил процедуру на прохождение теста foreach_in_local_if.tmpl
Проблемма была в том, что некорректно определялась
глубина вложенности FOREACH при нахождении его в
цикле LOCAL_IF....
Поменял несколько коичество экспортируемыех процедур...
date: 2002/08/16 17:05:47; author: gosha; state: Exp; lines: +17 -9Фильтры к INCLUDE прикрутил. Принцип работы как и у обычных контейнеров...
date: 2002/08/14 22:38:26; author: gosha; state: Exp; lines: +55 -73Переписал структуру зранения временных дфнных
( IF циклов до проверки ), в результате
чего еще чуть ускорились...
В if_parser и foreach_parser в массывах @last_tags
теперь хранятся не названия тегов а bool
значение...
В @is_global = @skip_tags : глобал = 0 или undef
date: 2002/08/14 16:57:57; author: gosha; state: Exp; lines: +21 -24Ошибка в if_parser некорректно заполнялся массив @last_tags
в результате число закрывающих тегов не соответствовало
числу открывающих. Тест в foreach_and_local_if.tmpl
date: 2002/08/13 22:08:52; author: gosha; state: Exp; lines: +80 -50В split'ах в регекспе стояло [ \t] что не корректно
заменил на [ \t]+
Предыдущий трабл с GLOBAL_IF не был исправлен
В any_tag_handler добавилась ручка $Template::EasyTT::MAX_SLICE
максимальное число разделений ( читать тегов ) обрабатываемых
за раз. Сделано для экономии памяти. По умолчанию 10000.
date: 2002/08/13 13:52:07; author: gosha; state: Exp; lines: +17 -24В if_parser некорректно определялись глобальные и локальные
переменные.
Несколько IF ( FOREACH ) циклов одного уровня считались
одним и поэтому все было в куче...
тест этого глюка лежит в hidden_index.tmpl
В foreach_handler некорректно было указано число разделений в
split'е ( 5 => 3 )
date: 2002/08/10 13:31:05; author: gosha; state: Exp; lines: +12 -18Немного ускорил any_tag_...
В filter регексп поправил...
date: 2002/08/09 22:31:23; author: gosha; state: Exp; lines: +198 -169В строках теперь разбираются %xx последовательности...
В обработчики if и foreach теперь передаются ссылки на $data
Внутри [% %] в качестве разделителей могут быть только
таб и пробел...
В if_parser новый аргумент ссылка на скаляр
используется для оптимизайии global и local if...
В IF теперь корректно отработают и 2 аргумента...
Добавил новый фильт в код 'exe' - запуск кода из шаблона
по умолчанию ссылка на код не выполняется теперь...
var_tune теперь возвращает не только указатели...
При обработке any_tag_handler рефы не обрабатываются.
т.е. теперь [% ARRAY %] даст после обработки
ссылку на массив а не количество элементов массива...
В IF циклах теперь могут отрабатываться ссылки.
Т.е. при отработке IF цикла с одним параметром
( bool only ) все ref'ы мы отраматываем сами,
при отработке IF с 3 параметрами все ссылки
должен расковыревать оператар который используется
для сравнения... Это даст возможность писать операторы
для сравнения например каждого элемента массива и т.д..
Для предыдущего пункта добавилась процедура ref_to_num
возвращает в зависимости от вида указателя или
scalar @, или keys %...
date: 2002/08/08 21:53:03; author: gosha; state: Exp; lines: +39 -39Добавил новыt параметры:
GLOBAL_IF - отработка глобальных IF
LOCAL_IF - обработка локальных IF
STOP - обработка STOP
Убрал IF
В конце обыйных контейнеров теперь не отрубается '\n'
date: 2002/08/07 21:37:55; author: gosha; state: Exp; lines: +4 -6Не работали multi фильтры.
В связи с этим в фильтрах опять нельзя пользовать ']'
В общем использование ']' осталось возможным только в
строках IF цикла...
date: 2002/08/07 20:53:17; author: gosha; state: Exp; lines: +235 -127Комментарий открывающейся скобки теперь выглядит так : '[%\'
Добавил параметр COMPILE_ONLY - флаги как и у DEBUG
только нельзя комбинировать. возвращает
откомпилированный до опр стадии шаблон...
Этим флагом можно поиграться - при данном запросе
отключить некоторые директивы и т.д. ... Да и посуте своей
тоже самое что и DEBUG только вместо STDERR возвращает этот
шаблон...
Имена файлов при INCKUDE должны быть без пробелов.
При обработки IF циклов с проверкой отличной от только bool
( т. е. сравнение двух параметров ) первый аргумент
обязательно должен быть именем контейнера.
В шаблонах не должно быть комбинации '%]' она допускается только
в именах фильтров и в условиях циклов в строках, там оно
может быть закомментировано '\%]'
В именах шаблонов не допускается '"
В обыйных шаблонах контейнеры _ВСЕ_КРОМЕ_ПРОБЕЛЬНЫХ_СИМВОЛОВ_ !!!
и прочих, а лучше если это a-zA-Z0-9... Да кстати на счет
точек, они используются в качестве разделителей...
В IF цикле при проверке if_bool если передавалось
два аргумента ( указателя ) то второй затирался...
Не корректно отрабатывался при разборе IF циклов.
( бага с определением 'Глобальных' и 'локальных' переменных )
При передачи для сравнения двух строк надо пользоваться
такой конструкцией:
IF GLOBAL_VAR ne "tra tra ta"
т.е. пробеллы могут быть только во втором аргументе...
Добавил флаги для отладки... Параметр DEBUG
0x01 Сбросить в STDERR шаблон после обработки `глобальных'
IF циклов
0x02 Сбросить в STDERR шаблоны после обработки INCLUDE
0x04 Сбросить в STDERR шаблон после обработки FOREACH циклов
0x08 Сбросить в STDERR шаблон после обработки `локальных' IF
циклов
0x10 Сбросить в STDERR шаблон после обработки STOP
При обработке FOREACH и циклов IF - ELSIF - ELSE - END был
глюк. IF неправильно парсились...
P.S.
а вообще переписано почти все...
date: 2002/08/03 20:17:30; author: gosha; state: Exp; lines: +8 -8Помкнял порядок разбора. Т.е. теперь INCLUDE парсятся после
глобальных IF, что дает возможность вставлять
INCLUDE файлы в зависимости от проверки IF'а
При таком раскладе в INCLUDE файлах теоретически также
можно использовать IF циклы, т.к. потом еще раз
разбираем IF которые образовались после FOREACH,
глобальные IF'ы также отработаются...
date: 2002/07/28 20:06:32; author: gosha; state: Exp; lines: +8 -5При передачи вместо имени вайла ссылки на скаляр
она `запарывалась' fileparse'ром...
date: 2002/07/23 21:05:38; author: gosha; state: Exp; lines: +25 -17Добавил возможность передачи вместо имени файла
ссылку на скаляр с данными, при этом автоматически
отключается INCLUDE
В load_src директория и файл склеиваются теперь с
помощью модуля File::Spec
date: 2002/07/22 21:43:55; author: gosha; state: Exp; lines: +3 -2Добавил binmode при открытии файла...
date: 2002/07/10 11:48:41; author: gosha; state: Exp; lines: +10 -5Сделал определение системы на предмет разделения дир/файл
date: 2002/07/08 15:19:07; author: gosha; state: Exp; lines: +10 -5Подправил new на предмет 'не получения ссылки на хеш'
date: 2002/07/08 13:46:48; author: gosha; state: Exp;Необходимый минимум для модуля...
Working file: MyEaseTTEmulation.pm
head: 1.27
branch:
locks: strict
access list:
symbolic names:
start: 1.1.1.1
gosha: 1.1.1
keyword substitution: kv
total revisions: 28; selected revisions: 28
description:
date: 2002/07/08 09:35:02; author: gosha; state: Exp; lines: +88 -22В split'е поменял мкстами альтернативы END|IF|FOREACH...
Для секьюрности в процедуре load_src появился 4 аргумент
если он TRUE то имя файла стрипается, остается только его
последняя часть. Это все работает только если
INCLUDE_PATH не undef
В load_src теперь проверяется наличие процедуры log_error
Исправил глюки в обработчике FOREACH
Добавил процедуру configure для настройки процесса
отработки шаблонов. Поддерживает следующие ключи:
INCLUDE_PATH - путь для INC файлов [ undef ]
INCLUDE - Разрешить(1)/Запретить(0) контейнер INCLUDE [ 1 ]
IF - Разрешить(1)/Запретить(0) контейнер IF/UNLESS [ 1 ]
FOREACH - Разрешить(1)/Запретить(0) контейнер FOREACH [ 1 ]
LOCK_OK - Разрешить(1)/Запретить лочить файлы [ 1 ]
Теперь надо доку написать....
date: 2002/07/06 22:26:25; author: gosha; state: Exp; lines: +126 -17
Добавил поддержку в IF'ах и UNLES'ах операторов.
'<' '>' '<=' '>=' '==' '!='
'<<' '>>'
'eq' 'ne' 'lt' 'gt' 'le' 'ge'
'&' '|' '^'
Все эти комманды трубуют двух ургументов. Если Аргумент
в кавычках ( ' || " ) то считается что это константа,
иначе считается что это переменная из хеша `ptr'
Число операторов можно расширить, пользоваться процедурой
operators_add('name', code)
name - имя оперетатора.
code - ссылка на подпрограмму обработки.
В подпрограмму передается 2 аргумента
`правый' и `левый'. Подпрограмма должна
возвратить TRUE или FALSE
Подкрутил check_global на предмет новых возможностей с опператорами...
date: 2002/07/06 16:53:34; author: gosha; state: Exp; lines: +216 -104Добавил поддержку синтаксися a.b.c.d
Переписал регеспы
Сделал поддержку multi- фильтров
Подержка любых вложенных циклов в FOREACH
date: 2002/06/26 12:23:39; author: gosha; state: Exp; lines: +4 -4Все таже проблемма... Короче опять в INCLUDE PARSE ковырялся
В load_src файл теперь открывается такк:
open (..., '<' . dir . '/' . file )
^^^^^^^
date: 2002/06/26 11:56:14; author: gosha; state: Exp; lines: +3 -3В строке парсе инклуде опять проверяется CFG_HOME_DIR
Если есть то пользуется она, если нет то дирректория
в которой лежит текущий шаблон...
date: 2002/06/09 22:20:16; author: gosha; state: Exp; lines: +13 -15Регэкспы переточил...
date: 2002/06/09 15:52:47; author: gosha; state: Exp; lines: +5 -5В цыклк FOREACH не корректно отрабатывались два рядом стоящие
контейнера... Т.е.:
[% T1 %][% T2 %] => [% T1 %]
date: 2002/06/07 09:36:36; author: gosha; state: Exp; lines: +2 -13Убрал комментарии...
date: 2002/06/07 09:33:04; author: gosha; state: Exp; lines: +15 -10Сделал проверку на наличие процедуры print
В process передается полный путь к файлу шаблона.
date: 2002/03/29 19:14:39; author: gosha; state: Exp; lines: +4 -3Ошибка в фильтре tmpl. В результате чего [% SOME_TEXT %]
заменялся на %[ SOME_TEXT %]
date: 2002/01/07 18:38:02; author: gosha; state: Exp; lines: +6 -2Ошибка при разборе FOREACH вложенного в IF
date: 2002/01/07 17:47:29; author: gosha; state: Exp; lines: +4 -4
При Обработке контейнеров вида TEMPLATE.0 нулевой элемент массива и хеша
не определялся, вместо этого выводилось ARRAY...
т.е. тоже что и предыдущее только в if_bool процедуре...
date: 2002/01/07 17:29:03; author: gosha; state: Exp; lines: +4 -4При Обработке контейнеров вида TEMPLATE.0 нулевой элемент массива и хеша
не определялся, вместо этого выводилось ARRAY...
date: 2001/12/24 22:30:30; author: gosha; state: Exp; lines: +5 -3в сигнатуре покопался, а в коде вроде ни чего нового нет...
date: 2001/12/22 18:02:24; author: gosha; state: Exp; lines: +49 -26Можно задавать свои фиьтры:
filters_add(NAME,HANDLER);
NAME - имя фильтра
HANDLER - ссылка на процедуры абработчик этого фильтра.
Эта процедура получает аргументы:
0 - $self
1 - строка
Шаблон для вытаскивания фильтра имеет вид: [^\s\]]
date: 2001/12/16 18:42:04; author: gosha; state: Exp; lines: +5 -3Добавил определение места из которого нас вызвали self || MODULE
date: 2001/12/06 20:42:59; author: gosha; state: Exp; lines: +29 -29Была ошибка в алгоритме отработки if циклов.
date: 2001/12/04 16:42:39; author: gosha; state: Exp; lines: +19 -19Боролся за чистоты кода...
date: 2001/11/23 23:12:06; author: gosha; state: Exp; lines: +7 -2Сдклал local $_;
date: 2001/11/06 13:43:49; author: gosha; state: Exp; lines: +4 -14Проверку параметра file (файл шаблона), на ref ARRAY перенес
в web_business в процедуру parse_tamplate
date: 2001/11/03 14:58:39; author: gosha; state: Exp; lines: +34 -19Глюк с вложенными циклами в секциях ELSIF и ELSE:
не правидьня обрабатывалась глубина вложенности
цикла...
date: 2001/11/01 18:11:27; author: gosha; state: Exp; lines: +158 -52Поддержка вложенных IF'ов
Поддержка STOP'a
Поддержка UNLESS
Обработчик IF_&_UNLESS теперь понимает синтаксис VAL.INDEX || VAL.KEY
ПОддержка указателей на массив, хеш, скаляр
Все обязатнльные шаблоны тепереь создаются в
web_business'
Теперь не пользую POSIX.pm
date: 2001/10/28 21:18:57; author: gosha; state: Exp; lines: +24 -8И всетаки он ужасно кривой...
Ну в общем всего наисправлял, а толку не больно прибавилось...
date: 2001/10/28 14:59:20; author: gosha; state: Exp; lines: +4 -2Добавил два templat'а REMOTE_ADDR и REMOTE_IDENT
date: 2001/10/27 21:03:34; author: gosha; state: Exp; lines: +3 -2Был пропущен NEW_USER_LEVEL
date: 2001/10/27 20:51:00; author: gosha; state: Exp; lines: +22 -19Неправильно парсились шаблоны
Прикрутил POSIX::strtime (TOKEN = RU_DATE)
date: 2001/10/25 20:41:48; author: gosha; state: Exp;branches: 1.1.1;
Initial revision
date: 2001/10/25 20:41:48; author: gosha; state: Exp; lines: +0 -0Старт...
=============================================================================