Тема: Snakeskin
Показать сообщение отдельно
  #12 (permalink)  
Старый 19.06.2013, 02:20
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от nerv_ Посмотреть сообщение
глупый вопрос - в боевых проектах использовал или сделал и положил на полку?
Конечно использую, этот как бы и писалось под проект (я вроде об этом говорил ), причём огромный, сейчас уже больше 300-шаблонов (пишу несколько лет, но последние пол года на фул тайме, т.к. уволился с работы, Бог даст к НГ сделаю релиз) и многие находятся в зависимостях наследования.

Я очень жирно использую ООП и мне крайне важно было максимально гибкая система наследования в шаблонах, а также одинаково удобная система использования на сервере (node.js) и клиенте.

Ошибки и новые фичи исправляю по мере необходимости. На этой недели собирался сделать большой фикс, так как всплыли некоторые оч противные баги (вроде невозможности декларировать константы внутри прототипа).

С cdata проблема в том, что содержимое вырезается по регулярке до анализа шаблона и построения дерева, поэтому возможна следующая проблема:

{cdata}
    {end}
{end}


Фактически содержимое внутри блока cdata никак не обрабатывается, поэтому я могу написать что угодно, но в данном случае нужно либо как то экранировать {end} теги внутри области (как например это делается в xml), тому кто пишет шаблон или ввести особый закрывающий тег, как сейчас сделано у меня.

А так я не вижу смысла делать для каждой директивы свой закрывающий тег - это имхо не круто, тем более с точки зрения парсинга это не даёт профита, т.к. по шаблону у меня строится дерево, в котором видна вся вложенность блоков. Ну а чтобы было видно человеку - нужно делать отступы

{template foo(params, type = 'static')}
    {if type === 'static'}
        муахахаха!
    {else}
        {block bar}
            ...
        {end}
    {end}
{end}
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 19.06.2013 в 02:44.
Ответить с цитированием