Class: Metanorma::Plugin::Datastruct::SourceExtractor
- Inherits:
-
Object
- Object
- Metanorma::Plugin::Datastruct::SourceExtractor
- Defined in:
- lib/metanorma/plugin/datastruct/source_extractor.rb
Constant Summary collapse
- ANCHOR_REGEX_1 =
example:
- [[abc]]
/^\[\[(?<id>[^\]]*)\]\]\s*$/.freeze
- ANCHOR_REGEX_2 =
examples:
- [#abc] - [source#abc,ruby]
/^\[[^#,]*#(?<id>[^,\]]*)[,\]]/.freeze
- ANCHOR_REGEX_3 =
examples:
- [id=abc] - [source,id="abc"]
/^\[(?:.+,)?id=['"]?(?<id>[^,\]'"]*)['"]?[,\]]/.freeze
Class Method Summary collapse
Instance Method Summary collapse
-
#extract ⇒ Object
rubocop:disable Metrics/AbcSize.
-
#initialize(document, input_lines) ⇒ SourceExtractor
constructor
A new instance of SourceExtractor.
Constructor Details
#initialize(document, input_lines) ⇒ SourceExtractor
Returns a new instance of SourceExtractor.
19 20 21 22 23 24 |
# File 'lib/metanorma/plugin/datastruct/source_extractor.rb', line 19 def initialize(document, input_lines) @document = document @input_lines = input_lines @document.attributes["source_blocks"] ||= {} end |
Class Method Details
.extract(document, input_lines) ⇒ Object
26 27 28 |
# File 'lib/metanorma/plugin/datastruct/source_extractor.rb', line 26 def self.extract(document, input_lines) new(document, input_lines).extract end |
Instance Method Details
#extract ⇒ Object
rubocop:disable Metrics/AbcSize
30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/metanorma/plugin/datastruct/source_extractor.rb', line 30 def extract # rubocop:disable Metrics/AbcSize lines = @input_lines.to_enum loop do line = lines.next if /^embed::|^include::/.match?(line.strip) file_lines = read(filename(@document, 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 |