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

Цитата:
Как вставить код скрипта, вместе с тегами script в шаблон, чтобы парсер не ругался?
Для этой задачи в SS существует расширенный синтаксис: https://github.com/kobezzza/Snakeski...%D0%B8%D 1%81

Логика простая: когда ты начинаешь юзать #{...} для декларации директивы, то все вложенные директивы также будут требовать такую декларацию, например:

{template foo()}
  #{script}
    var a = {
      bar: #{1 + 2}
    };
  #{/}
{/}


Цитата:
data
Эта директива для inline вставок, например,

{template foo()}
  <input type="button" onclick="{data console.log({foo: 1})}">
{/}


Цитата:
А тогда такой вопрос, а зачем тут решётка? Был хитрый план по на будущее?
CDATA работает до построения AST, чисто вырезается по регулярке и поэтому я сделал обязательным расширенный синтаксис директивы для использования, чтобы случайно не выстрелить себе в ногу.

Цитата:
Оо, нашёл. Честно говоря решётку не заметил, думал это коммент, автоматом воспринимаю в конфигах...
В SS комменты обозначаются через

/// Однострочный коммент
/* Многострочный коммент */
/** JSDoc (не вырезается парсером из конечного кода) */


Для создания XML комментариев есть удобная директива comment, которая также поддерживает условия для старых ИЕ.

{template foo()}
  {comment IE 7}
    {link}http://bar.com/ie.css{/link}
  {/}
{/}


Но также можно просто писать по старинке

PS: По поводу однострочных комментов: есть сильное желание заменить в SS7 на //# (или ещё как), т.к. сейчас можно напороться на ошибку при подключение некоторых урлов:

<a href="file:///C://foo.png">121</a>


Т.е. нужно явно экранировать:

<a href="file://\/C://foo.png">121</a>


Забавно, что я сделал коммент как /// чтобы не напарываться на такие ошибки с //, но не учёл, что урлы с тремя слешами тоже бывают
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 22.06.2015 в 23:55.
Ответить с цитированием