Усы: получить список / хэш тегов из шаблона? - PullRequest
2 голосов
/ 20 февраля 2012

Вся документация и примеры усов, которые я видел, показывают, как использовать хеш для заполнения шаблона. Я заинтересован в том, чтобы идти в другом направлении. Например, если у меня есть это:

Hello {{name}}

Может ли усы сгенерировать это (псевдокод):

tags = 'name'

Я использую PHP-усы, но я не слишком разборчив в языке. Я пытаюсь создать систему, в которой люди могут создавать шаблоны с тегами Mustache, а другой разработчик может быстро увидеть, какие данные понадобятся шаблону. Это что-то, что может сделать Усы, или я собираюсь заняться магией регулярных выражений?

Ответы [ 2 ]

2 голосов
/ 11 мая 2012

Вы можете использовать Hogan.js , работающий, например, на nodejs, и использовать функцию scan:

var template = "{{foo}}{{#bar}}{{baz}}{{/bar}}{{#array}}{{.}}{{/array}}"'

var parsedTree = Hogan.scan(template, '{{ }}'​)​​​​;

То, что это возвращает, является массивом объектов.Каждая запись объекта имеет два ключа, которые вы хотите найти: n представляет имя тега, tag представляет тип тега.Я не думаю, что типы тегов четко документированы, но в качестве ссылки _v означает простой текст, # - начало раздела, а / - конец раздела.

0 голосов
/ 12 сентября 2012

Я знаю, что опоздал на этот вопрос, но наткнулся на него, когда искал рекомендацию о том, как сделать то же самое в Ruby. Поскольку я нашел решение, которое хорошо работает для меня, я решил поделиться:

Создайте пользовательский рендер, подклассы из усов, и отслеживайте запросы для каждого партиала или контекста. В любом случае вы захотите / будете нуждаться в нормальном поведении рендеринга, так как вы захотите отлавливать контексты / партиалы, на которые ссылаются другие партиалы.

В Ruby это действительно легко сделать - надеюсь, что это все еще полезно и для разработчиков PHP. :)

...