Class: Sourcerer::SourceSkim::TreeProcessorExtension

Inherits:
Asciidoctor::Extensions::TreeProcessor
  • Object
show all
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-forms

Comma-separated list of section shapes to emit. Recognized values: tree, flat. Default: tree.

source-skim-categories

Comma-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