我应该使用哪个通用模板处理器?

3
这是一个潜在的危险问题,因为跨学科的问题和答案将会有偏见,但我还是要试着回答一下。纯属好心!
所以,我们开始吧。我正在为Emacs编写一个主要的编辑模式,用于语言,它几乎没有得到支持。而且我已经到了决定生成项目文件方式的地步了。以下是任务的大纲:
模板必须表示项目目录树,而不仅仅是单个文件。
生成的文件格式各不相同,可能包括类似SGML的语言,但不限于此种变体。它们也必须生成类似C代码、eLisp源代码和纯文本文件(如README)等多样化的文件格式。
模板必须在用户启动的批处理过程中进行处理(例如,当用户想要创建一个项目时,必须在用户指定的目录中创建多个文件)。监管创建过程可能有益,但比完全自动运行的能力不重要。
额外功能:
- 模板语言已经有了用户群(可以重用现有的模板)。 - 模板可以用于代码片段(包含可交互填充的空白,用户调用代码生成例程时编辑文件)。 - 显而易见的事情,如跨平台性,通过图形界面和命令行的易用性。
我做了一些研究,但我暂时不会分享我的结果,以免影响答案。回答这个问题的问题并不在于难以找到答案,而在于从众多答案中选择一个最好的。
3个回答

2
我正在基于Mustache开发一个系统,正好符合你所描述的用例。模板语言本身是Mustache的一个非常简单的扩展,称为Groome
我还发布了一个名为Molt的命令行工具,用于呈现Groome模板。我很想知道它是否满足你的所有需求。我仍在为该工具添加功能,并尚未宣布。谢谢。

Groome相当不错。谢谢。 - Amr Mostafa

1

几年前,我遇到了一个类似的问题,我想使用Emacs从UML图(cogre)生成代码,并根据项目规范生成Makefiles。我首先尝试使用Tempo,但是当我尝试让模板嵌套时,遇到了问题。我还研究了Skeleton,但它也不完全符合计划。

最终,我使用Google模板一段时间,并喜欢其语法,然后开发了SRecode,并从Google模板中借用了好的部分。SRecode专门为机器生成的代码编写。模板插入的交互(即Tempo编写的内容)在SRecode中不是一流的。但是,对于从数据结构生成代码,它非常强大,并具有许多功能和自动填充变量。它与您的主要模式密切配合,并允许许多嵌套模板,控制嵌套字典值。有一个子系统将使用Semantic标记并为几种语言生成代码。这意味着您可以使用Semantic解析一种语言的代码,并使用SReocde使用这些标记生成另一种语言的代码。很棒!CEDET参考手册的许多部分都是这样构建的。

这些模板本身允许循环、条件语句和包含语句。在SRecode中有一些示例可以制作“应用程序”,例如注释编写器,EDE使用它来创建Makefiles,这几乎正是您要做的。


0
另一种选择是Generator,它提供“与语言无关的项目引导,并强调简单性”。安装需要Node.js和npm
Generator强调简单性意味着很容易学习如何制作模板。Generator还可以避免您必须通过文件路径引用模板-它在〜/ .generator中查找模板。
但是,没有办法为模板本身编写 README 或 LICENSE 文件,除非将这些文件复制到生成的项目中。此外,在 Makefile 中编写的后生成命令将被复制到生成的 Makefile 中,即使在不再使用后也是如此。最后,特别的模板语言没有提供一种方法来转义 __ lowercasevariables__ -虽然我想不到哪种语言会有这样的限制。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接