Цитата:
|
Браво *Скромность украшает мужчину, но настоящий мужчина не нуждается в приукрашивании!*
|
Именно так
Просто сейчас я работаю над документацией к новой 7-й версии и на это реально уходит очень много сил. Как закончу - то там всё будет.
Цитата:
|
Но проблема в другом - как данные ИЗ_ШАБЛОНА вытащить В_УПРАВЛЯЮЩИЙ_СКРИПТ?
|
В SS нет такой проблемы, потому что здесь иная философия. В Jade шаблоном является сам файл, а в SS для декларации шаблонов используется специальная директива template (по духу близкая к class в JS), т.е. в одном файле может быть много шаблонов, у шаблонов могут быть методы, шаблоны могут наследоваться от других шаблонов и т.д. В этом главное отличии SS от большинства других шаблонов, SS выступает в роли транслируемого языка в JS, а не шаблонного движка.
Допустим у нас есть папка posts, там мы будем хранить наши посты, и для группировки засуним их в один родительский немспейс posts.
posts/
posts/foo.ss
- namespace posts[%fileName%] /// тоже самое, что и написать явно posts.foo
/// Главный шаблон назовём main, он содержит основной пост
- template main()
< .hello
Hello world!
/// А это шаблон с превью статьи
- template preview()
Hello!
Теперь создадим файл с содержанием, который будет выводить тексты превью
contents.ss
- namespace contents
- include 'posts/*' /// Подключаем по маске все файлы из папки posts
- template main()
/// Т.к. все посты у нас лежат в неймспейсе posts, то просто делаем обход этого объекта
- forEach posts => post
+= post.preview() /// Вызываем шаблон превею и выводим его текст
Цитата:
|
А можно на выходе JSON получить?
|
Конечно.
Цитата:
|
или движок общего назначения
|
Генерить можно любой текст, но для XML есть специальные директивы и фичи. Например я также использую SS для генерации MD файлов.
- namespace myMd
/// Здесь будем использовать вариант синтаксиса без управляющих пробелов, для более удобной генерации
/// И также включим режим "терпимости к пробелам", чтобы сохранить структуру пробелов, т.к. мы генерируем md
{template index(data) @= tolerateWhitespaces true}
# Hello world
{forEach data => el}
* {el}
{/}
{/template}