用于树叶的预处理器,以逃避/消除原始内容。

foliantcontrib.escapecode的Python项目详细描述


escapecode和unescapecode

escapecode和unescapecode预处理器成对工作。

escapecode在源标记内容中查找任何下一个预处理器都不应修改的部分。应该保留原始内容的示例:栅栏代码块、前置代码块、内联代码。

escapecode用unescapecode预处理器识别的伪xml标记替换这些原始内容部分。

escapecode将原始内容部分保存到文件中。稍后,unescapecode将从文件还原此内容。

另外,在替换之前,escapecode会规范化源标记内容,以统一和简化进一步的操作。预处理器用LF替换CRLF,删除多余的空白字符,提供尾随换行符等。

安装

要安装escapecode和unescapecode预处理器,请运行:

$ pip install foliantcontrib.includes

请参阅下面的详细信息。

与植物相结合,包括

您可以显式调用escapecode和unescapecode,但这些预处理器与foliant core(从1.0.10版开始)和includes预处理器(从1.1.1版开始)集成。

如果将escape_code项目的config选项设置为true,则提供在所有其他预处理器之前应用escapecode,在所有其他预处理器之后应用unescapecode。这个选项还告诉includes预处理器对每个包含的文件应用escapecode。

在此模式下,escapecode和unescapecode预处理器不推荐使用unescape预处理器。

>    **Note**
>
>    The preprocessor _unescape is a part of Foliant core. It allows to use pseudo-XML tags in code examples. If you want an opening tag not to be interpreted by any preprocessor, precede this tag with the `<` character. The preprocessor _unescape applies after all other preprocessors and removes such characters.

配置示例:

title:My Awesome Projectchapters:-index.md...escape_code:truepreprocessors:...- includes......

如果未使用escape_code选项或将其设置为false,则涉及向后兼容模式。在此模式下,不会自动应用escapecode和unescapecode,但会应用unescape预处理器。

包含escapecode和unescapecode预处理器的python包是自1.1.1版以来includes预处理器的依赖项。同时,这个包并不是叶核的依赖。要在foliant core中使用escape_codeconfig选项,必须分别安装带有escapecode和unescapecode预处理器的包。

显式启用

不能使用escape_code选项并显式调用预处理器:

preprocessors:-escapecode# usually the first list item...-unescapecode# usually the last list item

两个预处理器都允许重写用于存储临时文件的目录的路径:

preprocessors:-escapecode:cache_dir:!path.escapecodecache...-unescapecode:cache_dir:!path.escapecodecache

默认值如本例所示。escapecode和相关的unescapecode必须与同一个缓存目录一起工作。

请注意,如果使用includes预处理器,并且所包含的内容不属于当前叶类项目,则在应用includes预处理器之前,无法转义此内容的原始部分。

用法

下面您可以看到带有代码块和内联代码的标记内容示例。

# Heading

Text that contains some `inline code`.

Below is a fence code block, language is optional:

```python
import this
```

One more fence code block:

~~~
# This is a comment that should not be interpreted as a heading

print('Hello World')
~~~

And this is a pre code block:

    mov dx, hello;
    mov ah, 9;
    int 21h;

预处理器转义代码将执行以下替换:

# Heading

Text that contains some <escaped hash="2bb20aeb00314e915ecfefd86d26f46a"></escaped>.

Below is a fence code block, language is optional:

<escaped hash="15e1e46a75ef29eb760f392bb2df4ebb"></escaped>

One more fence code block:

<escaped hash="91c3d3da865e24c33c4b366760c99579"></escaped>

And this is a pre code block:

<escaped hash="a1e51c9ad3da841d393533f1522ab17e"></escaped>

转义的内容部分将保存到缓存目录中的文件中。文件名对应于hash属性的值。例如,这是文件的内容15e1e46a75ef29eb760f392bb2df4ebb.md

```python
import this
```

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

推荐PyPI第三方库


热门话题
具有作为接口的属性的java Hibernate实体类   在Java中检查int l,r的条件l+1<r的最快方法   java如何更新TornadFX ComboBox Kotlin   java Tomcat未调用控制器api   java在Android Studio中的alertdialog中打开新活动   xml VScode Java/Maven环境问题不同的计算机   java我需要修改循环中的一个文本字符串,这样程序就可以复制粘贴相同的字符串,但数字会增加   java如何从Twilio响应消息中获取内容   从Java5+diamond运算符开始初始化泛型集合的java方法   在java中循环,直到用户按下enter键   java如何找到组件属于哪个面板?   java我想计算一个代码需要的总迭代次数   <data 安卓:type=“*/*”/>不允许使用java字符串类型   解析我有一个带有开始日期和目标日期的字符串,我想在Java中获取日期并保存在变量中   在mongodb中使用ReflectionDBObject类插入java对象?