2016-11-09 80 views
3

對於給定的Jade/Pug模板,我希望獲得模板中發生的所有變量的列表。Pug/Jade獲取給定模板中的所有變量

我的動機如下:在我的軟件中,不同的模板用於生成一些HTML片段。根據給定的上下文(即給定某些變量的值),我只想建議那些模板中的所有變量都可以分配的模板。

例如:對於模板myTemplate這樣的:

html 
    head 
     title= myTitle 
    body 
     h1 #{value.headline} 
     p #{paragraph.text} 

我想獲得一些像這樣的輸出:

var variableNames = extractVariableNamesFromTemplate('myTemplate'); 
// variableNames = [ 'myTitle', 'value.headline', 'paragraph.text' ] 

是否有可用的東西隨時可以使用?最好是考慮所有特定語言特徵的解決方案,例如包括,擴展等。

回答

1

這不是對您的問題的完整解答,而是更多的出發點。從調試帕格代碼,我已經注意到,你可能可以在模板「編譯」的代碼步驟之一中「鉤」一個插件。看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}); 

令牌的內容是有多種不同的令牌的數組,一個是類型的「代碼」或「插碼」似乎是有多種不同的變量。

希望這會有幫助

+0

謝謝Mathieu!這看起來非常有價值。它仍然需要額外的邏輯,例如用於條件和變量賦值,但這是邁向正確方向的一大步。 PS:如果在接下來的兩天內我不能得到更完整的解決方案,賞金就是你的! – qqilihq

相關問題