Отказался от идеи реализации типографа, как в mdash.ru.
Вместо этого продумываю более универсальную систему макросов. Это будет простой препроцессор, пример использования:
Правила по умолчанию (можно задать свои)
{
'"': [['«', '»'], ['„', '“']],
'\'': [['“', '”'], ['‘', '’']],
'(c)': '©',
'(tm)': '™',
'[v]': '☑',
'[x]': '☒',
'[_]': '☐',
'<-': '←',
'<-|': '↤',
'->': '→',
'|->': '↦',
'<->': '↔',
'...': '…',
'-': '−',
'--': '—'
};
- template foo()
"Snakeskin -- 'лучший' шаблонный движок!" (c)
Отрендерится как
«Snakeskin — „лучший“ шаблонный движок!» ©
Система макросов удобна тем, что можно вводить свои правила, например для замены смайликов на картинки, но без использования специальных механизмов Snakeskin, таких как вызываемые блоки или прототипы.
{
':)': '<img src="..."/>'
};
Следует заметить, что такие макросы будут работать только в простом тексте, т.е. внутри строк директир или литералов локализации всё будет как есть, т.к. такое поведение тем может привести в потенциальным ошибкам.
{'[x]'.replace('[x]', 'error')} // данный код не выполнится, т.к. [x] -> ☒
Также будет введена директивы plain, внутри которой текст будет вставляться "как есть" + такое же поведение будет у директив script, style и link