叶素模板分析器预处理器。

foliantcontrib.templateparser的Python项目详细描述


叶素的模板分析器预处理器

允许在叶源文件中使用模板的预处理器。预处理器现在只支持Jinja2模板引擎,但可以轻松添加更多模板引擎。

安装

$ pip install foliantcontrib.templateparser

配置

在foliant.yml中声明的所有参数都被视为全局参数。所有这些都可以在具有更高优先级的模板标记选项中重写。

preprocessors:-templateparser:engine:jinja2engine_params:root:'/usr/src/app'context:param1:1008param2:'Kittens'ext_context:context.ymlparam3:'Puppies'

engine :将用于处理模板的模板引擎的名称。现在支持的引擎:jinja2

engine_params :包含将传输到模板引擎的参数的字典。

context :包含变量的字典,这些变量将重定向到模板。

ext_context :带有上下文字典的yaml或json文件的路径。(相对于当前MD文件)

具有其他名称的所有参数也将被传输到模板,就像它们出现在context字典中一样。(param3在上面的示例中)

Please note that even if this may seem convenient, it is preferred to include template variables in the context dictionary, as in future more reserved parameters may be added which may conflict with your stray variables.

如果这些方法之间有一些变量名重叠以提供上下文,则预处理器使用此优先级顺序:

  1. 上下文词典。
  2. 杂散变量。
  3. 外部上下文文件。

用法

要在标记文件中使用模板,只需插入模板引擎名称的标记,例如:

This is ordinary markdown text.
<jinja2>
This is a Jinja2 template:
I can count to five!
{% for i in range(5) %}{{ i + 1 }}{% endfor %}
</jinja2>

制作带有叶子的文档后,该文档将转换为:

This is ordinary markdown text.

This is a Jinja2 template:
I can count to five!
12345

您还可以使用常规的<template>标记,但在这种情况下,必须在engine参数中指定要使用的引擎:

This is ordinary markdown text.
<templateengine="jinja2">
This is a Jinja2 template:
I can count to five!
{% for i in range(5) %}{{ i + 1 }}{% endfor %}
</template>

将变量发送到模板

要将变量发送到模板,请将它们添加到context选项中。此选项接受yaml字典格式。

Please note that foliant doesn't support multiline tag options yet, so use one-line dictionary format {'key1': value1, ...}

<jinja2context="{'name': Andy, 'age': 8}">
Hi, my name is {{name}}!
I am {{age}} years old.
{% for prev in range(age - 1, 0, -1) %}
The year before I was {{prev}} years old.
{% endfor %}
</jinja2>

结果:

Hi, my name is Andy!
I am 8 years old.

The year before I was 7 years old.

The year before I was 6 years old.

The year before I was 5 years old.

The year before I was 4 years old.

The year before I was 3 years old.

The year before I was 2 years old.

The year before I was 1 years old.

扩展并包含

扩展并包括模板中的工作。扩展包含文件的路径相对于模板所在的标记文件。

在jinja2引擎中,可以使用root引擎参数覆盖包含的扩展文件的路径。请注意,此参数是相对于项目根的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何通过InjectMocks注释注入真实对象   多线程如何减少Java parallelStream中的#个线程?   java检测所有安卓摄像头   java中多个构造函数的参数   Spark SQL load json抛出错误java。lang.NoClassDefFoundError:scala/collection/GenTraversableOnce$class   java如何在ServerSocket中获得挂起的请求数或接受请求而不阻塞?   java JaxWsPortProxyFactoryBean查询超时   java Spring MVC LightAdmin配置   java类类型列表不一致性   安卓自定义视图,以在Java中动态插入到布局中   如果我使用安卓,java如何使用replace()方法。支持v4。应用程序。碎片   为什么Java中的数组不能使用类型擦除?   基于java JBoss EJB的Web服务日期格式   如何在java中实现负载均衡器   java OSGI OBR存储库托管?