扩展是 AsciiDoc 成功的关键,因为它们使得这种语言能够应对新的使用案例。Asciidoctor 提供了一个[扩展 API^]{url-api-gems}/asciidoctor/{release-version}/Asciidoctor/Extensions,它提供了一组超集的扩展点。因此,Asciidoctor 中的扩展既容易编写,又强大,而且分发简单。

Asciidoctor 还允许使用完整的编程语言(无论是 Ruby、Java、Groovy 还是 JavaScript)编写扩展。你无需为了获得你想要的功能而去做无谓的工作,而且你可以使用像 gems 或 JARs 这样的事实标准包装机制来分发扩展。

可用扩展点

Asciidoctor 提供了以下扩展点:

预处理器

处理原始源代码行,在它们被传递给解析器之前。参见preprocessor.html

树处理器

解析完成后处理[.class]Asciidoctor::Document(抽象语法树)。请参阅tree-processor.html

后处理器

在文档转换后处理输出,但在写入磁盘之前。请参阅postprocessor.html

文档信息处理器

在生成的文档的头部或尾部区域添加额外的内容。参见docinfo-processor.html

块处理器

处理用自定义区块样式(比如 [custom])标记的内容块。(类似于AsciiDoc过滤器)请参见block-processor.html

复合块处理器

注册一个名为`collapsible`的自定义块,它可以将一个列表块转换成一个复合块。参见 compound-block-processor.html

块宏处理器

注册一个自定义的块宏并处理它(例如,gist::12345[])。参见block-macro-processor.html

内联宏处理器

注册一个自定义的内联宏并处理它(例如,btn:[Save])。请参阅inline-macro-processor.html

包括处理器

处理 include::<filename>[] 指令。参见 include-processor.html

在https://github.com/asciidoctor/asciidoctor-extensions-lab[Asciidoctor扩展实验室^]中有更多的扩展示例。