Class: Metanorma::Plugin::Lutaml::BasePreprocessor

Inherits:
Asciidoctor::Extensions::Preprocessor
  • Object
show all
Includes:
Utils
Defined in:
lib/metanorma/plugin/lutaml/base_preprocessor.rb

Overview

Base preprocessor for LutaML format-specific preprocessors.

Subclasses must implement:

- #lutaml_liquid?(line) — match the macro header line
- #load_lutaml_file(document, file_path, options)
  parse format-specific input

Subclasses may override:

- #index_type_name — human-readable format name for error messages
- #update_repo(options, repo) — transform parsed repo before rendering
- #template(lines) — parse Liquid template lines
- #reorder_schemas(repo_liquid, options) — reorder/filter schemas

Direct Known Subclasses

LutamlPreprocessor, LutamlXsdPreprocessor

Constant Summary

Constants included from Utils

Utils::LUTAML_EXP_IDX_TAG

Instance Method Summary collapse

Methods included from Utils

create_liquid_environment, error_signature, load_express_from_folder, load_express_from_index, load_express_repo_from_cache, load_express_repo_from_path, load_express_repositories, notify_render_errors, parse_document_express_indexes, processed_lines, relative_file_path, render_liquid_string, save_express_repo_to_cache

Instance Method Details

#process(document, reader) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/metanorma/plugin/lutaml/base_preprocessor.rb', line 27

def process(document, reader)
  input_lines = Asciidoctor::PreprocessorNoIfdefsReader
    .new(document, reader.lines).readlines.to_enum

  express_indexes = Utils.parse_document_express_indexes(
    document, input_lines
  )

  result_content = process_input_lines(
    document: document,
    input_lines: input_lines,
    express_indexes: express_indexes,
  )

  Asciidoctor::PreprocessorNoIfdefsReader.new(document, result_content)
end