Тема: Snakeskin
Показать сообщение отдельно
  #646 (permalink)  
Старый 10.02.2016, 19:48
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
Браво *Скромность украшает мужчину, но настоящий мужчина не нуждается в приукрашивании!*
Именно так Просто сейчас я работаю над документацией к новой 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}
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 10.02.2016 в 19:56.
Ответить с цитированием