基于Jinja模板引擎的textX生成器框架
textX-jinja的Python项目详细描述
文本X jinja
基于Jinja的框架 textX发电机。如果需要生成 textX模型中基于模板的文件集。在
如何使用?在
- 在
创建一个包含文件和文件夹的文件夹,其结构类似于 想要生成。每个文件可以是一个Jinja模板(应该以
在.jinja
结尾) 扩展)。在 - 在
文件名可以包含格式为
在__<varible name>__
的变量部分 (变量名周围有双下划线)。文件名的这些部分将 替换为生成器上下文中的变量值。如果 变量是iterable,则将为每个对象创建一个文件。那样的话, 文件名中的替换值将由函数创建map_names
(如果给定)或对象本身的{}。目标将是 在模板中的名称为 obj
(对iterables的支持仍然是 在制品!)。如果变量是bool
类型,则如果 变量值是False
。在 - 在
在textX项目中注册一个生成器(参见 registration)。在
fromtextximportgeneratorfromtextxjinjaimporttextx_jinja_generator@generator('mylang','mytarget')defmygenerator(metamodel,model,output_path,overwrite,debug):# template directorytemplate_folder=os.path.join(os.path.dirname(__file__),'templates')# create config dict with all variables that should be accessible# by templatesconfig={'some_variable':'some value'}# Optionally provide Jinja filtersdefstriptabs(s):returnre.sub(r'^[ \t]+','',s,flags=re.M)filters={'striptabs':striptabs}# call the generatortextx_jinja_generator(template_folder,output_path,config,overwrite,filters)
在 - 在
安装您的项目(建议使用Python虚拟环境):
^{pr2}$ 在 - 在
像往常一样运行textX生成器:
$ textx generate ...
在
生成器将使用template文件夹使用Jinja呈现文件
模板引擎。模板文件夹中不是Jinja的所有文件
模板(不以.jinja
'扩展名结尾)将被复制到
目标文件夹未更改(文件名中的变量替换仍然适用)。在
作为其用法的完整示例,请参见startproject generator in textX-dev
project。
startproject
命令的模板是here。在
- 项目
标签: