coradoc-adoc 2.0.23 → 2.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/lib/coradoc/asciidoc/builder/detection.rb +4 -4
  3. data/lib/coradoc/asciidoc/model/attribute_list/matchers.rb +4 -4
  4. data/lib/coradoc/asciidoc/model/base.rb +7 -0
  5. data/lib/coradoc/asciidoc/model/block/core.rb +1 -1
  6. data/lib/coradoc/asciidoc/model/content_list.rb +8 -8
  7. data/lib/coradoc/asciidoc/model/inline/bold.rb +1 -1
  8. data/lib/coradoc/asciidoc/model/inline/highlight.rb +1 -1
  9. data/lib/coradoc/asciidoc/model/inline/italic.rb +1 -1
  10. data/lib/coradoc/asciidoc/model/inline/monospace.rb +1 -1
  11. data/lib/coradoc/asciidoc/model/inline/strikethrough.rb +2 -2
  12. data/lib/coradoc/asciidoc/model/inline/subscript.rb +1 -1
  13. data/lib/coradoc/asciidoc/model/inline/superscript.rb +1 -1
  14. data/lib/coradoc/asciidoc/model/serialization/asciidoc_mapping.rb +3 -4
  15. data/lib/coradoc/asciidoc/model/text_element.rb +22 -0
  16. data/lib/coradoc/asciidoc/parser/block.rb +3 -3
  17. data/lib/coradoc/asciidoc/transform/element_transformers/admonition_styles.rb +6 -1
  18. data/lib/coradoc/asciidoc/transform/element_transformers/block_transformer.rb +39 -16
  19. data/lib/coradoc/asciidoc/transform/element_transformers/document_transformer.rb +2 -27
  20. data/lib/coradoc/asciidoc/transform/element_transformers/include_transformer.rb +2 -1
  21. data/lib/coradoc/asciidoc/transform/element_transformers/inline_transformer.rb +12 -6
  22. data/lib/coradoc/asciidoc/transform/element_transformers/list_transformer.rb +10 -4
  23. data/lib/coradoc/asciidoc/transform/element_transformers/other_transformer.rb +10 -5
  24. data/lib/coradoc/asciidoc/transform/element_transformers/table_transformer.rb +6 -3
  25. data/lib/coradoc/asciidoc/transform/from_core_model.rb +6 -30
  26. data/lib/coradoc/asciidoc/transform/inline_transform_visitor.rb +28 -5
  27. data/lib/coradoc/asciidoc/transform/to_core_model.rb +30 -6
  28. data/lib/coradoc/asciidoc/transformer/block_rules.rb +8 -2
  29. data/lib/coradoc/asciidoc/transformer/block_type_classifier.rb +10 -10
  30. data/lib/coradoc/asciidoc/transformer/header_rules.rb +9 -3
  31. data/lib/coradoc/asciidoc/transformer/inline_rules.rb +39 -15
  32. data/lib/coradoc/asciidoc/transformer/list_rules.rb +14 -4
  33. data/lib/coradoc/asciidoc/transformer/misc_rules.rb +14 -5
  34. data/lib/coradoc/asciidoc/transformer/source_line_extractor.rb +66 -0
  35. data/lib/coradoc/asciidoc/transformer/table_layout.rb +1 -3
  36. data/lib/coradoc/asciidoc/transformer/text_rules.rb +21 -6
  37. data/lib/coradoc/asciidoc/transformer.rb +30 -1
  38. data/lib/coradoc/asciidoc/version.rb +1 -1
  39. metadata +2 -1
@@ -33,6 +33,7 @@ module Coradoc
33
33
  autoload :BlockTypeClassifier, "#{__dir__}/transformer/block_type_classifier"
34
34
  autoload :TableLayout, "#{__dir__}/transformer/table_layout"
35
35
  autoload :TableCellBuilder, "#{__dir__}/transformer/table_cell_builder"
36
+ autoload :SourceLineExtractor, "#{__dir__}/transformer/source_line_extractor"
36
37
 
37
38
  # Apply all rule modules (triggers autoload)
38
39
  HeaderRules.apply(self)
@@ -139,7 +140,10 @@ module Coradoc
139
140
  text_content
140
141
  end
141
142
 
142
- Model::TextElement.new(content: transformed, line_break: line[:line_break])
143
+ Model::TextElement.new(
144
+ content: transformed,
145
+ line_break: line[:line_break]
146
+ )
143
147
  end
144
148
  end
145
149
 
@@ -148,6 +152,31 @@ module Coradoc
148
152
  def self.legacy_transform(syntax_tree)
149
153
  new.apply(syntax_tree)
150
154
  end
155
+
156
+ # Single deepening seam for source_line propagation. Parslet's
157
+ # transform pipeline funnels every rule block through
158
+ # +call_on_match(bindings, block)+; overriding it lets us post-
159
+ # process the block's result and inject +source_line+ from the
160
+ # matched bindings, so individual rules no longer need to call
161
+ # SourceLineExtractor.extract themselves (DRY — was 47 call
162
+ # sites across 7 rule files).
163
+ #
164
+ # Safety:
165
+ # * Only Model::Base results get an injection — Strings, Arrays,
166
+ # and intermediate hashes pass through unchanged.
167
+ # * Existing explicit source_line values are preserved — the
168
+ # injection is fill-in-the-blank, never overwrite.
169
+ # * No Slice in the bindings → SourceLineExtractor returns nil,
170
+ # no injection (synthetic transformations stay clean).
171
+ def call_on_match(bindings, block)
172
+ result = super
173
+ return result unless result.is_a?(Model::Base)
174
+ return result if result.source_line
175
+
176
+ line = self.class::SourceLineExtractor.extract(bindings)
177
+ result.source_line = line if line
178
+ result
179
+ end
151
180
  end
152
181
  end
153
182
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Coradoc
4
4
  module AsciiDoc
5
- VERSION = '2.0.23'
5
+ VERSION = '2.0.25'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coradoc-adoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.23
4
+ version: 2.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -343,6 +343,7 @@ files:
343
343
  - lib/coradoc/asciidoc/transformer/inline_rules.rb
344
344
  - lib/coradoc/asciidoc/transformer/list_rules.rb
345
345
  - lib/coradoc/asciidoc/transformer/misc_rules.rb
346
+ - lib/coradoc/asciidoc/transformer/source_line_extractor.rb
346
347
  - lib/coradoc/asciidoc/transformer/structural_rules.rb
347
348
  - lib/coradoc/asciidoc/transformer/table_cell_builder.rb
348
349
  - lib/coradoc/asciidoc/transformer/table_layout.rb