Выпустил новую версию: 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, время: 01:35. |