изменить: вы можете следить за прогрессом здесь: https://github.com/simple-updates/template
Я использую peg.js и пытаюсь написать что-то, что могло бы интерпретировать шаблон как:
hello {{ "world" }}
{% if a %}
good {{ a }}
{% else %}
bad
{% endif %}
Я пробовал много вещей, но допустим, это моя отправная точка:
Template
= ws markup ws
ws = " "*
open_interpolation = "{{"
close_interpolation = "}}"
open_tag = "{%"
close_tag = "%}"
char = . // ?
markup =
(open_tag tag:char* close_tag)
{ return { 'tag': tag.join('') } } /
(open_interpolation interpolation:char* close_interpolation)
{ return { 'interpolation': interpolation.join('') } } /
chars:char*
{ return { 'chars': chars.join('') } }
когда я примеряю строку {{ test }}
, например, она будет интерпретировать ее как символы вместо интерполяции.
есть идеи, как мне это сделать?
(очевидно, что было бы сложнее с вложенными "наценками")