Выпустил новую версию: 3.2.0.
1) Добавлена директива $forEach для совместной работы с Collection: {$forEach [1, 2, 3] => el, i} {end} {$forEach [1, 2, 3] => {filter: ':el > 2'} => el, i} {end} 2) Улучшена работы с пробельными символами; 3) Исправлены найденные ошибки. ЗЫ: в пример в фидле подключил также Collection, что бы можно было потестить. |
Выпустил версию 3.3.0
1) Добавлена новая директива interface, которая позволяет декларировать шаблоны, которые войдут в скомпилированный файл как пустые функции с входными параметрами; {interface foo(a1, a2, a3)} ... {end} => function foo(a1, a2, a3) {} Таким образом сейчас существует 3 директивы для декларации шаблона: *) template - простая декларация шаблона; *) interface - декларация шаблона, но в конечный JS войдёт только интерфейс; *) placeholder - декларация шаблона доступного только на этапе трансляции. 2) Исправлены некоторые ошибки; 3) Улучшена обработка ошибок на этапе трансляции. |
А почему не работает, если используемое в шаблоне пространство имен уже было объявлено ранее? Что мешает сделать в нем ссылку на функцию шаблона?
|
Цитата:
*** Переопределять шаблоны можно, пример (тут в новый шаблон ссылается на старый через супер-глобальную переменную) {template helloWorld(name = 'world')} <h1>Hello {name}!</h1> {/template} {old = helloWorld} {template helloWorld()} {call @old()} {/template} |
|
Цитата:
upd: хм, баг воспроизводится только в фидле, мистика :) А вообще так можно делать и так нужно делать, ибо это одна из самых первых фич которые я закладывал в шаблонку когда я её разрабатывал. upd upd: это особенность работы в фидле и компиляции в живом режиме, мб придумаю как зафиксить. *** Вот так работает, видимо из-за eval-ов в фидле глючит. window.ns = {}; Snakeskin.compile(document.getElementById('templates')); document.getElementById('test').innerHTML = ns.helloWorld(); |
|
tenshi, не совсем понял причём тут манифест аддонов к хрому, но кстати, выполнение eval там можно разрешить в том же манифесте, я писал в своём время аддоны к хрому (как для первой версии манифеста, так и для второй).
|
При том, что не во всех окружениях эвал разрешен. И вообще замыкания быстрее эвалов.
Кроме экстеншенов есть еще апликейшены, где говорят нельзя включить. |
tenshi, ну дык, предварительная компиляция и никаких эвалов.
|
Часовой пояс GMT +3, время: 13:08. |