Class: Metanorma::Plugin::Datastruct::SourceExtractor
- Inherits:
-
Object
- Object
- Metanorma::Plugin::Datastruct::SourceExtractor
- Includes:
- PathResolver
- Defined in:
- lib/metanorma/plugin/datastruct/source_extractor.rb
Constant Summary collapse
- ANCHOR_PATTERNS =
[ /^\[\[(?<id>[^\]]*)\]\]\s*$/, /^\[[^#,]*#(?<id>[^,\]]*)[,\]]/, /^\[(?:.+,)?id=['"]?(?<id>[^,\]'"]*)['"]?[,\]]/, ].freeze
Class Method Summary collapse
Instance Method Summary collapse
- #extract ⇒ Object
-
#initialize(document, input_lines) ⇒ SourceExtractor
constructor
A new instance of SourceExtractor.
Methods included from PathResolver
Constructor Details
#initialize(document, input_lines) ⇒ SourceExtractor
Returns a new instance of SourceExtractor.
17 18 19 20 21 22 |
# File 'lib/metanorma/plugin/datastruct/source_extractor.rb', line 17 def initialize(document, input_lines) @document = document @input_lines = input_lines @document.attributes["source_blocks"] ||= {} end |
Class Method Details
.extract(document, input_lines) ⇒ Object
24 25 26 |
# File 'lib/metanorma/plugin/datastruct/source_extractor.rb', line 24 def self.extract(document, input_lines) new(document, input_lines).extract end |
Instance Method Details
#extract ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/metanorma/plugin/datastruct/source_extractor.rb', line 28 def extract lines = @input_lines.to_enum loop do line = lines.next if /^embed::|^include::/.match?(line.strip) file_lines = read(filename(line)) or next SourceExtractor.extract(@document, file_lines) elsif m = match_anchor(line) @document.attributes["source_blocks"][m[:id]] = read_section(lines) end end end |