Pug/Jade 获取给定模板中的所有变量
Pug/Jade get all variables in a given template
对于给定的 Jade/Pug 模板,我想获取模板中出现的所有变量的列表。
我的动机如下:在我的软件中,不同的模板用于生成一些 HTML 片段。基于给定的上下文(即给定某些变量的值),我只想建议那些可以分配模板中所有变量的模板。
示例:对于这样的模板 myTemplate
:
html
head
title= myTitle
body
h1 #{value.headline}
p #{paragraph.text}
我想得到这样的输出:
var variableNames = extractVariableNamesFromTemplate('myTemplate');
// variableNames = [ 'myTitle', 'value.headline', 'paragraph.text' ]
有现成的东西吗?最好是考虑到所有特定于语言的功能的解决方案,例如包含、扩展等。
这不是您问题的完整答案,而是一个起点。通过调试哈巴狗代码,我注意到您可能 "hook" 在模板 "compilation" 的步骤之一中使用插件进行编码。看here。
似乎在编译的各个步骤中,您可以访问模板中存在的不同节点。
你也可以看看this,它似乎提供了几乎你正在寻找的东西。
如果你做类似
var lex = require('pug-lexer');
var filename = 'template.pug';
var src = `
html
head
title= myTitle
body
h1 #{value.headline}
p #{paragraph.text}`;
var tokens = lex(src, {filename});
令牌的内容是不同令牌的数组,"code"或"interpolate-code"类型的似乎是不同的变量。
希望对您有所帮助
对于给定的 Jade/Pug 模板,我想获取模板中出现的所有变量的列表。
我的动机如下:在我的软件中,不同的模板用于生成一些 HTML 片段。基于给定的上下文(即给定某些变量的值),我只想建议那些可以分配模板中所有变量的模板。
示例:对于这样的模板 myTemplate
:
html
head
title= myTitle
body
h1 #{value.headline}
p #{paragraph.text}
我想得到这样的输出:
var variableNames = extractVariableNamesFromTemplate('myTemplate');
// variableNames = [ 'myTitle', 'value.headline', 'paragraph.text' ]
有现成的东西吗?最好是考虑到所有特定于语言的功能的解决方案,例如包含、扩展等。
这不是您问题的完整答案,而是一个起点。通过调试哈巴狗代码,我注意到您可能 "hook" 在模板 "compilation" 的步骤之一中使用插件进行编码。看here。 似乎在编译的各个步骤中,您可以访问模板中存在的不同节点。
你也可以看看this,它似乎提供了几乎你正在寻找的东西。
如果你做类似
var lex = require('pug-lexer');
var filename = 'template.pug';
var src = `
html
head
title= myTitle
body
h1 #{value.headline}
p #{paragraph.text}`;
var tokens = lex(src, {filename});
令牌的内容是不同令牌的数组,"code"或"interpolate-code"类型的似乎是不同的变量。
希望对您有所帮助