03.08.2014, 15:15
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от kobezzza
|
Потому, что я сам этого не знаю Я веду работу над своим основным проектом, понимаю что мне нужен список фич, откладываю их до тех пор, пока не решаю реализовать в новой версии.
Хотя конечно, я бы мог писать roadmap при начале работы над новой версией.
|
да) просто , чтобы понимать, что ты хочешь из него сделать.
например, было бы интересно узнать про jade-like синтаксис и инкрементальную сборку шаблонов, ну и про переменные, и layout'ы, и про React и про подсветку синтаксиса ....
короче, вопросов очень много )
|
|
03.08.2014, 15:32
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Цитата:
|
было бы интересно узнать про jade-like синтаксис
|
Скоро закончу видео по этой части
Цитата:
|
инкрементальную сборку шаблонов
|
Ну, я сделаю ручку, которая будет говорить соотвествует ли JS файл с SS по версии, а дальше уже нужно колдовать в отдельных плагинах сборщиков.
UPD: сейчас подумал, что можно придумать логику для {include}, чтобы он не инклудил файл, который может быть взят из кеша.
Цитата:
|
ну и про переменные, и layout'ы
|
Тоже будет в видео.
Тут не понятно: у меня нет биндинга Я склоняюсь к тому, что если и делать его, то как отдельная клиентская либа, которая будет юзать Snakeskin, но пока не планируется.
Цитата:
|
про подсветку синтаксиса
|
Дык. Я уже про это снял самое первое видео, где рассказывается как её можно добавить. Что качается обработки ошибок, то вывод в терминал от вотчера: snakeskin в 90% случаев ловит ошибку на этапе трансляции и скажет точно где произошла ошибка.
Последний раз редактировалось kobezzza, 03.08.2014 в 15:34.
|
|
03.08.2014, 15:48
|
sinistral
|
|
Регистрация: 28.03.2011
Сообщений: 5,418
|
|
Сообщение от kobezzza
|
Дык. Я уже про это снял самое первое видео, где рассказывается как её можно добавить.
|
о, я этот момент прослакал) для sublime text придется плагин фигачить
|
|
03.08.2014, 15:52
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сообщение от melky
|
о, я этот момент прослакал) для sublime text придется плагин фигачить
|
Если делать честную поддержку в WebStorm, то тоже плагин писать, но чёто ради этого Жабу курить лень
|
|
05.08.2014, 16:55
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Добавил метод, который компилирует заданный файл (если нужно), кеширует результат и возвращает ссылку на главную функцию: 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 превысило общее количество коммитов всех предыдущих версий
Последний раз редактировалось kobezzza, 05.08.2014 в 17:18.
|
|
05.08.2014, 23:27
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Перед сном пришла идейка:
- 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)
Завтра реализую
|
|
08.08.2014, 11:16
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Добавил перегрузку директивы else
{if 1}
...
{else 2} /// тоже самое, что и elseIf
...
{/}
{if 1}
...
{else if 2} /// тоже самое, что и elseIf
...
{/}
{if 1}
...
{else unless 2} /// тоже самое, что и elseUnless
...
{/}
ЗЫ: странно, что я с самого начала так не сделал, а ввёл новую директиву elseIf, но оставил её для совместимости.
Последний раз редактировалось kobezzza, 08.08.2014 в 11:19.
|
|
08.08.2014, 14:27
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сделал демку 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 /// просто текст
{/}
Последний раз редактировалось kobezzza, 08.08.2014 в 14:54.
|
|
08.08.2014, 15:26
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Сам релиз 4-й версии намечен на вечер воскресения.
|
|
08.08.2014, 15:48
|
|
Профессор
|
|
Регистрация: 23.12.2013
Сообщений: 1,856
|
|
kobezzza,
нам ждать статейку на Хабре?)
|
|
|
|