Python3实现基于模板及逆向数据库的代码生成器

这段时间由于有大量重复的代码工作,因此打算用代码生成器来提高工作效率。原理十分简单,根据数据库表名逆向工程得到表信息,利用得到的信息生成代码文件。
需要提的是一开始我才用的是字符串拼接和参数的方式来完成的,但是第一效率太低,而且几乎没有通用性,每个类型的文件都得写大量代码来进行字符串操作。后来改成了利用正则表达式对template文件进行操作,这样就可以把输出内容与代码隔离。当需要导入新模板时,只需要将一篇现成的代码保存为template文件然后用标签将其中的关键词替换就可以了。

主要代码分为两大块,一是核心的parser,利用正则表达式对标签进行解析;二是参数生成部分,主要是接受用户输入,然后逆向数据库得到字段信息,从用户输入和字段信息中提取关键信息,最后根据配置文件调用相应的模板文件和参数一起送入parser完成解析。因此如果想要增加参数,只需要在这部分添加代码即可。

目前为止,生成器提供一下几种标签:
1.{name},简单替换。替换为name所对应的值。
2.{{?name:content?}},可选内容。如果参数中的chosen数组不包含name则这段会被删除,否则将修饰用的标签删除保留content部分。
3.{{!name:content!}},循环。这里的name应该是参数中所提供的dict list,parser将遍历lsit,同时用当前的dict中的参数对content进行置换,遍历完成后将所有content拼接在一起后置入文档中。另外,content内目前实现了`{!a|b!}的语法,当不是最后一次循环时会调用啊,否则调用b,后期打算更改为根据输入条件来选择输出内容。

具体代码就暂时不放了,现在的虽然能用,但是功能不够完善,2和3都需要改进,而且还有文档引用的功能没加,等全部完善了在放代码吧。