2012-06-16 70 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我没有尝试实现这一点,但我想这是可能的。 –