我见过的Mustache的所有文档和示例都展示了如何使用哈希来填充模板。我有兴趣走另一个方向。 EG,如果我有这个:
Hello {{name}}
小胡子可以生成这个(伪代码):
tags = 'name'
我正在使用Mustache的PHP风格,但我对这种语言并不太讲究。我要做的是构建一个系统,人们可以使用Mustache标签创建模板,而另一个开发人员可以快速查看模板需要的数据。这是Mustache可以做的事情,还是我将不得不做一些有趣的正则表达式魔术?
答案 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"]