Class: Metanorma::Plugin::Lutaml::LutamlPreprocessor

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

Overview

Class for processing Lutaml files

Constant Summary collapse

REMARKS_ATTRIBUTE =
"remarks"
EXPRESS_PREPROCESSOR_REGEX =
%r{
  ^                            # Start of line
  \[                           # Opening bracket
  (?:\blutaml\b|               # Match lutaml or
    \blutaml_express\b|        # lutaml_express or
    \blutaml_express_liquid\b) # lutaml_express_liquid
  ,                            # Comma separator
  (?<index_names>[^,]+)?       # Optional index names
  ,?                           # Optional comma
  (?<context_name>[^,]+)?      # Optional context name
  (?<options>,.*)?             # Optional options
  \]                           # Closing bracket
}x.freeze

Constants included from Utils

Utils::LUTAML_EXP_IDX_TAG

Instance Method Summary collapse

Methods included from Utils

create_liquid_environment, 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

rubocop:disable Metrics/MethodLength



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/metanorma/plugin/lutaml/lutaml_preprocessor.rb', line 33

def process(document, reader) # rubocop:disable Metrics/MethodLength
  r = Asciidoctor::PreprocessorNoIfdefsReader.new(document,
                                                  reader.lines)
  input_lines = r.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