Class: Sourcerer::SourceSkim::TreeProcessorExtension
- Inherits:
-
Asciidoctor::Extensions::TreeProcessor
- Object
- Asciidoctor::Extensions::TreeProcessor
- Sourcerer::SourceSkim::TreeProcessorExtension
- Defined in:
- lib/asciidoctor/extensions/source-skim-tree-processor/extension.rb
Overview
Asciidoctor TreeProcessor extension that runs a SourceSkim pass on the
document immediately after parsing and stores the result as the document
attribute source-skim-result.
The skim is keyed by symbol (+:title+, :sections_tree, etc.) so it is
ready for direct use in Ruby without a JSON round-trip.
Configuration via document attributes
source-skim-formsComma-separated list of section shapes to emit. Recognized values:
tree,flat. Default:tree.source-skim-categoriesComma-separated list of element categories to include. Omit to use the default set (everything except
attributes_builtin).
Usage
API
require 'asciidoctor/extensions/source-skim-tree-processor/extension'
Asciidoctor::Extensions.register Sourcerer::SourceSkim::TreeProcessorExtension
doc = Asciidoctor.load_file('my.adoc', safe: :safe, sourcemap: true)
skim = doc.attr('source-skim-result')
With asciidoctor CLI
asciidoctor -r ./lib/asciidoctor/extensions/source-skim-tree-processor/extension.rb
-a source-skim-forms=tree,flat
-a source-skim-categories=sections,code_blocks,admonitions
my.adoc
Instance Method Summary collapse
Instance Method Details
#process(document) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/asciidoctor/extensions/source-skim-tree-processor/extension.rb', line 41 def process document raw_forms = document.attr('source-skim-forms', 'tree') forms = raw_forms.split(',').map { |f| f.strip.to_sym } raw_cats = document.attr('source-skim-categories') categories = raw_cats&.split(',')&.map { |c| c.strip.to_sym } config = Config.new(forms: forms, categories: categories) skim = Skimmer.new.process(document, config: config) document.set_attr('source-skim-result', skim) nil end |