2012-06-16 68 views
0

模板引擎可用於代碼生成。以下是Ruby ERB模板腳本的示例:具有遞歸模板支持的模板引擎

<ul><% for @item in @shopping_list %><li><%= @item %></li><% end %></ul> 

但是,我的代碼生成要求不僅僅是簡單的變量擴展或for循環。我需要遞歸代碼生成功能,換句話說,我需要一個帶遞歸模板支持的Python或Ruby模板引擎。有人可以爲我推薦這樣的模板引擎嗎?非常感謝!

回答

2

在Rails中默認使用的Ruby ERB模板系統支持遞歸模板。這是一個例子。

應用/視圖/控制器1/action1.html.erb

Factorial of <%= @n %> equals to <%= render "factorial", :n => @n %> 

應用/視圖/控制器1/_factorial.html.erb

<% if n == 1 %> 
    1 
<% else %> 
    <%= n %> * <%= render "factorial", :n => n - 1 %> 
<% end %> 

輸出:

Factorial of 10 equals to 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 
+0

「渲染」階乘「」怎麼知道我們的模板è?因爲我沒有看到有一個模板定義爲「階乘」。 – Dagang

+0

它似乎是Rails功能。 「factorial」是[partial](http://ionrails.com/2009/08/08/rails-partial-templates/)。 'render' Rails函數負責根據名稱找到適當的部分。更確切地說,當你傳遞「factorial」作爲第一個參數時,'render'嘗試在app/views/controller1和app/views/application中找到名爲「_factorial.html.erb」的文件。沒有Rails我沒有嘗試實現這一點,但我想這是可能的。 –