Цитата:
например, было бы интересно узнать про jade-like синтаксис и инкрементальную сборку шаблонов, ну и про переменные, и layout'ы, и про React и про подсветку синтаксиса .... короче, вопросов очень много ) |
Цитата:
Цитата:
UPD: сейчас подумал, что можно придумать логику для {include}, чтобы он не инклудил файл, который может быть взят из кеша. Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Добавил метод, который компилирует заданный файл (если нужно), кеширует результат и возвращает ссылку на главную функцию: https://github.com/kobezzza/Snakeski...keskin.es6#L67
Главная функция определяется по правилу: return tpl[path.basename(src, '.ss')] || tpl.main || tpl[Object.keys(tpl)[0]] || null; Пример использования: profile.ss - template %fileName%(@params) Hello {@name}! var snakeskin = require('snakeskin'); snakeskin.execFile('./profile.ss')({name: 'Вася'}) // Hello Вася! ЗЫ: количество коммитов в версию 4 превысило общее количество коммитов всех предыдущих версий :) |
Перед сном пришла идейка:
- template foo(a|trim, b|parse) ... Тоже самое, что и - template foo(a, b) ? a = (a|trim) ? b = (b|parse) ?? Вопрос, должен ли такой фильтр накладываться на значение по умолчанию... думаю - нет. - template foo(a|trim = 'foo') ... <=> - template foo(a) ? a = a != null ? (a|trim) : 'foo' И самое-вызываемые прототипы - template foo(a|trim, b|parse) - proto bar(a, b) => 1, 2 ... Тоже самое, что и - template foo(a|trim, b|parse) - proto bar(a, b) ... - apply bar(1, 2) Завтра реализую :) |
Добавил перегрузку директивы else
{if 1} ... {else 2} /// тоже самое, что и elseIf ... {/} {if 1} ... {else if 2} /// тоже самое, что и elseIf ... {/} {if 1} ... {else unless 2} /// тоже самое, что и elseUnless ... {/} ЗЫ: странно, что я с самого начала так не сделал, а ввёл новую директиву elseIf, но оставил её для совместимости. |
Сделал демку RC версии Snakeskin 4, можно поиграться.
http://jsfiddle.net/kobezzza/NAPWB/10/ Описание Jade-Like синтаксиса Резюме: В Snakeskin директивы размещаются в { ... } {template foo()} ... {/} В некоторых случаях использовать такую форму не удобно (например для генерации JS-скрипта), поэтому была введена расширенная форма #{ ... }, которая работает по принципу: все вложенные директивы также должны использовать такую форму. {template foo()} #{script js} var a = {b: #{1 + 2}}; #{/} {/} В Jade-Like вместо юзает - и # - template foo() # script js var a = {b: #{1 + 2}}; Но также у некоторых директив есть короткая форма, например, у void (?), tag(<) и т.д. {template foo()} {?alert(1)} /// тоже самое, что и {void alert(1)} {/} В JadeLike можно использовать эти сокращения и не писать - - template foo() ? alert(1) /// вместо - void alert(1) или - ? alert(1) #? alert(1) /// расширенная форма Чтобы юзать Jade-Like вне шаблона, то просто берём и пишем - var a = 1 - if a - global b = 2 Синтаксис можно совмещать - var a = 1 {if a} - global b = 2 {/} Но при декларации шаблона, чтобы юзать Jade-Like необходимо саму декларацию также заюзать в таком синтаксисе - template foo() - var a = 1 |- var a = 1 /// специальный символ | означает, что это текст, а не начало директивы {template foo()} - var a = 1 /// просто текст {/} |
Сам релиз 4-й версии намечен на вечер воскресения.
|
kobezzza,
нам ждать статейку на Хабре?) |
Часовой пояс GMT +3, время: 20:22. |