生成 HTML 目录
Asciidoctor 的 HTML5 转换器有一个内置方法用于生成 HTML TOC。此 TOC 生成器也可作为通用 API 使用。此逻辑可通过 HTML5 转换器上的 convert_outline 方法(即 outline 节点的 convert 方法)获得。
用法
convert_outline 方法接受一个 Document 对象和一个可选的 Options Hash,并返回 HTML。可以使用以下代码片段将其解析并调用为通用方法:
document = Asciidoctor.load_file 'document-with-sections.adoc', safe: :safe
html_toc = (Asciidoctor::Converter.create 'html5').convert_outline document
puts html_toc
以下是此方法生成内容的示例:
<ul class="sectlevel1">
<li><a href="#_section_a">Section A</a></li>
<li><a href="#_section_b">Section B</a>
<ul class="sectlevel2">
<li><a href="#_subsection">Subsection</a></li>
</ul>
</li>
<li><a href="#_section_c">Section C</a></li>
</ul>
您还可以通过 Document API 访问转换器实例上的 convert_outline 方法:
document = Asciidoctor.load_file 'document-with-sections.adoc', safe: :safe
html_toc = document.converter.convert_outline document
如果您使用的是复合转换器,则可以使用通用的 convert 方法来确保调用通过转换器链运行。为此,请调用 convert 方法并传入 Document 对象和节点名称 outline。这将依次调用链中响应此方法的转换器上的 convert_outline。
document = Asciidoctor.load_file 'document-with-sections.adoc', safe: :safe
html_doc = document.converter.convert document, 'outline'
您还可以将此方法用于任何转换器模板(例如 Slim、Haml 或 ERB)中,以生成和嵌入 TOC:
= converter.convert document, 'outline'