胡子:从模板中检索标签的列表/哈希?

时间:2012-02-20 02:08:46

标签: mustache

我见过的Mustache的所有文档和示例都展示了如何使用哈希来填充模板。我有兴趣走另一个方向。 EG,如果我有这个:

Hello {{name}}

小胡子可以生成这个(伪代码):

tags = 'name'

我正在使用Mustache的PHP风格,但我对这种语言并不太讲究。我要做的是构建一个系统,人们可以使用Mustache标签创建模板,而另一个开发人员可以快速查看模板需要的数据。这是Mustache可以做的事情,还是我将不得不做一些有趣的正则表达式魔术?

3 个答案:

答案 0 :(得分:2)

例如,您可以在nodejs上运行Hogan.js,并使用scan函数:

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

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

这返回的是一个对象数组。每个对象条目都有两个您想要查找的键: n 表示标记名称,标记表示标记类型。 我认为标记类型没有明确记录,但作为参考_v表示纯文本,#是一个部分开头,/是部分结尾。

答案 1 :(得分:0)

我知道我迟到了这个问题,但我在寻找关于如何在Ruby中做同样事情的建议时偶然发现了它。既然我找到了一个对我有用的解决方案,我想我会分享:

创建一个自定义渲染器,从Mustache创建子类,并跟踪每个部分或上下文的请求。无论如何,您将需要/需要正常的渲染行为,因为您将要捕获从其他部分引用的上下文/部分。

在Ruby中,这很容易做到 - 希望它对PHP开发人员来说仍然有用。 :)

答案 2 :(得分:0)

在Ruby中自己弄清楚了这一点,因为我找不到通过Google真正有用的东西。事实证明很简单:

Mustache.templateify("{{name}} was {{location}}").tags

这将返回一个标签名称数组:

["name", "location"]