我需要构建一个批量服务创建守护进程,该守护进程可以提供一个数据表,然后开始创建一组预先固定的服务。然而,服务的类型可能多种多样,并且后面的步骤可能需要前面步骤的输出。
这似乎是我需要用某种领域特定语言来实现的,它允许我定义模板配方。然后可以通过模板引擎传递该数据,并在最终运行之前从数据表中进行替换。
重用现有的语言基础设施以允许更复杂的配方使用流程控制并定义一组受限制的基本操作是有意义的。不过,我希望简单的配方不需要更改语言知识,因为最终用户可能没有软件经验。
我会设想一个简单的模板配方,看起来像这样:
# 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 模板解决方案。深入了解不同系统的优缺点将不胜感激。
最佳答案
- 两者都不是 html/xml 模板,而是基于文本。
- 两者都很受欢迎并且有据可查。
- Mako 具有更多 Python 语法,而 Jinja 的一大优势是它支持沙箱,这可能对您有用。
关于python - 存在哪些模板系统适合编写服务创建配方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5802897/