1

我需要构建一个批量服务创建守护进程,它可以输入一个数据表,然后开始创建一组预装服务。然而,服务的类型可能是多种多样的,并且可能后面的步骤将需要前面步骤的输出。

似乎我需要用某种特定于领域的语言来实现,以允许我定义模板配方。然后,这可以通过模板引擎传递,并在最终运行之前从数据表中进行替换。

重用现有的语言基础设施以允许更复杂的配方使用流控制并定义一组受限的基本操作是有意义的。但是,我希望简单的食谱不需要更改语言知识,因为最终用户可能没有软件经验。

我会设想一个简单的模板配方,看起来像:

# Create a service from NodeA to NodeC via NodeB
# Parameters are:
#   node a id, node a port, node b id, node c id, node c port, comment
node_a = node_a_type($1)
conn_a = node_a.create_connection($2, $7)
node_b = node_b_type($3)
conn_b = node_b.create_connection(conn_a.output_port, $7)
node_c = node_c_type($4)
conn_c = node_c.terminate_connection(conn_b.output_port, $5, $7)

我建议将 python 作为我熟悉的基础语言。然而,Python wiki 提出了许多不同的选项 ( http://wiki.python.org/moin/Templating ),其中大多数是针对 HTML/XML 模板解决方案。深入了解不同系统的优缺点将不胜感激。

4

1 回答 1

2

我认为MakoJinja2都可以满足要求。

  • 两者都不是html/xml 模板,而是基于文本的。
  • 两者都很受欢迎并且有据可查。
  • Mako 有更多的 Pythonic 语法,而 Jinja 的巨大优势在于,它支持沙盒,这可能对您有用。
于 2011-04-27T11:36:52.380 回答