Class: Sourcerer::SourceSkim::Skimmer Private
- Inherits:
-
Object
- Object
- Sourcerer::SourceSkim::Skimmer
- Defined in:
- lib/sourcerer/source_skim/skimmer.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Traverses a parsed Asciidoctor document and produces a JSON-ready skim hash.
A new instance should be created per-document call; instance variables accumulate state during a single process pass.
This class is an internal implementation detail. External callers should use the Sourcerer::SourceSkim module-level methods rather than instantiating Skimmer directly.
Constant Summary collapse
- INCLUDE_DIRECTIVE_PATTERN =
This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.
Scan listing/literal block source for include directives that remain as raw text (i.e., were not resolved by the parser).
/include::[^\[]+\[[^\]]*\]/
Instance Method Summary collapse
Instance Method Details
#process(document, config: Config.new) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/sourcerer/source_skim/skimmer.rb', line 19 def process document, config: Config.new @config = config @main_file = document.attr('docfile') @definition_lists = [] @code_blocks = [] @literal_blocks = [] @examples = [] @sidebars = [] @tables = [] @admonitions = [] @quotes = [] @images = [] process_blocks(document.blocks, 0, nil) tree = build_sections_tree(document.sections) doc_end = line_count_for(@main_file) assign_line_ends(tree, doc_end) result = { title: document.doctitle, lines: doc_end } if @config.include?(:attributes_custom) result[:attributes_custom] = Sourcerer::AsciiDoc::AttributesFilter.user_attributes(document) end if @config.include?(:attributes_builtin) result[:attributes_builtin] = Sourcerer::AsciiDoc::AttributesFilter.builtin_attributes(document) end result[:sections_tree] = tree if @config.tree? result[:sections_flat] = flatten_sections(tree) if @config.flat? result[:definition_lists] = @definition_lists if @config.include?(:definition_lists) result[:code_blocks] = @code_blocks if @config.include?(:code_blocks) result[:literal_blocks] = @literal_blocks if @config.include?(:literal_blocks) result[:examples] = @examples if @config.include?(:examples) result[:sidebars] = @sidebars if @config.include?(:sidebars) result[:tables] = @tables if @config.include?(:tables) result[:admonitions] = @admonitions if @config.include?(:admonitions) result[:quotes] = @quotes if @config.include?(:quotes) result[:images] = @images if @config.include?(:images) result end |