如何获取模板中使用的所有变量的列表?

时间:2017-12-06 20:49:49

标签: javascript nunjucks

当有许多模板使用不同的变量时,我会遇到这种情况。 如何获取一个模板中所有变量名称的列表,以便我可以准确传递模板在渲染时所需的内容?

我知道我可以使用正则表达式,但它并不像看起来那么容易实现。变量名称周围的语法可能确实不同,我没有时间或资源来查找每种可能的情况。

1 个答案:

答案 0 :(得分:0)

考虑到以下最小测试用例,正则表达式仍然有效:

{{ name }}
{{ name.child }}
{{ name[child] }}
{{ name["child"] }}
{{ name_last["child"] }}
{{ name1["child"] }}
{{ function() }}
{% if variable %}

所以,如果你想把它解析为pcre(即使问题被标记为,我的理解是你要预先解析页面),你:< / p>

  • 寻找开场{{和结束}},可选择用空格填充:{{\s?\s?}}
  • 查找上下文短语的“头部”:([\w]+)
  • 使用描述属性选择器的内容创建第二个非捕获组:((?:\..+)|(?:\[.+))?

你留下的是{{\s?([\w]+)((?:\..+)|(?:\[.+)?)\s?}},其第一个捕获组($1)将在测试样本中匹配namename_last和{{1} }}

Live example