metanorma-document 0.2.4 → 0.2.6
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.
- checksums.yaml +4 -4
- data/lib/metanorma/document/version.rb +1 -1
- data/lib/metanorma/html/base_renderer.rb +58 -12
- data/lib/metanorma/html/drops/admonition_drop.rb +2 -1
- data/lib/metanorma/html/drops/example_drop.rb +2 -11
- data/lib/metanorma/html/drops/note_drop.rb +2 -3
- data/lib/metanorma/html/iso_renderer.rb +0 -2
- data/lib/metanorma/html/standard_renderer.rb +0 -2
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 27e82b07d3f2f3edd230cf27c0b18671597160bca302e2f06ac848210d2a667b
|
|
4
|
+
data.tar.gz: ebab43042eaadc336ad64bb5d46389ff0e82262bbd9ecfa1e7035ed369219023
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f99ecc2897bbfef8283a6bddf89bfdb0d5a95010e2158eec5a7bc874ff5cef73f87bd317c507c5610acb30461274ad58e32693b72ed829e0efc696fc12c49d9e
|
|
7
|
+
data.tar.gz: 9f1fdf2062229aa79771f4cddbe7146c399a86d0474e9bf4f3a72031e1337d51c156d87dc424c614a46d216294e68f0c07987dae2ce1ebb27e763a609142654b
|
|
@@ -94,7 +94,7 @@ module Metanorma
|
|
|
94
94
|
render_definition_list render_sourcecode render_table
|
|
95
95
|
render_figure render_quote render_formula render_note
|
|
96
96
|
render_image render_stem_content register_figure_entry
|
|
97
|
-
render_liquid
|
|
97
|
+
render_liquid render_block_children
|
|
98
98
|
].freeze
|
|
99
99
|
|
|
100
100
|
def initialize(renderer)
|
|
@@ -109,7 +109,7 @@ module Metanorma
|
|
|
109
109
|
|
|
110
110
|
def method_missing(method_name, *args, **kwargs, &block)
|
|
111
111
|
if DELEGATED_METHODS.include?(method_name)
|
|
112
|
-
@renderer.
|
|
112
|
+
@renderer.public_send(method_name, *args, **kwargs, &block)
|
|
113
113
|
else
|
|
114
114
|
super
|
|
115
115
|
end
|
|
@@ -476,7 +476,7 @@ module Metanorma
|
|
|
476
476
|
return escape_html(node) if node.is_a?(String)
|
|
477
477
|
|
|
478
478
|
method = lookup_dispatch(node.class, :render_registry)
|
|
479
|
-
method ?
|
|
479
|
+
method ? public_send(method, node, **) : ""
|
|
480
480
|
end
|
|
481
481
|
|
|
482
482
|
# Dispatch to the appropriate inline render method via type registry.
|
|
@@ -486,7 +486,7 @@ module Metanorma
|
|
|
486
486
|
|
|
487
487
|
method = lookup_dispatch(element.class, :inline_registry)
|
|
488
488
|
if method
|
|
489
|
-
|
|
489
|
+
public_send(method, element)
|
|
490
490
|
elsif element.is_a?(Lutaml::Model::Serializable) && element.mixed?
|
|
491
491
|
render_mixed_inline(element)
|
|
492
492
|
end
|
|
@@ -567,13 +567,11 @@ module Metanorma
|
|
|
567
567
|
register_inline_render Metanorma::Document::Components::Inline::FmtIdentifierElement, :render_mixed_inline
|
|
568
568
|
register_inline_render Metanorma::Document::Components::Inline::FmtSourcecodeElement, :render_mixed_inline
|
|
569
569
|
|
|
570
|
-
private
|
|
571
|
-
|
|
572
570
|
def lookup_dispatch(type_class, registry_method)
|
|
573
571
|
self.class.ancestors.each do |ancestor|
|
|
574
|
-
next unless ancestor.
|
|
572
|
+
next unless ancestor.is_a?(Class) && (ancestor == BaseRenderer || ancestor < BaseRenderer)
|
|
575
573
|
|
|
576
|
-
registry = ancestor.
|
|
574
|
+
registry = ancestor.public_send(registry_method)
|
|
577
575
|
method_name = registry[type_class]
|
|
578
576
|
return method_name if method_name
|
|
579
577
|
end
|
|
@@ -876,6 +874,51 @@ module Metanorma
|
|
|
876
874
|
@output << %(<a id="#{escape_html(safe_attr(bookmark, :id).to_s)}"></a>)
|
|
877
875
|
end
|
|
878
876
|
|
|
877
|
+
# Renders the typed child collections of a block element (paragraphs,
|
|
878
|
+
# lists, nested blocks) in a standard order. Used by Drops and section
|
|
879
|
+
# rendering to avoid duplicating the enumeration in each consumer.
|
|
880
|
+
#
|
|
881
|
+
# +children+ is a Hash mapping attr names to render-method symbols:
|
|
882
|
+
# { paragraphs: :render_paragraph, ul: :render_unordered_list, ... }
|
|
883
|
+
#
|
|
884
|
+
# Each key is sent to +model+ via safe_attr; non-nil results are
|
|
885
|
+
# dispatched to the corresponding render method.
|
|
886
|
+
def render_block_children(model, children:)
|
|
887
|
+
children.each do |attr, render_method|
|
|
888
|
+
values = safe_attr(model, attr)
|
|
889
|
+
next if values.nil?
|
|
890
|
+
|
|
891
|
+
Array(values).each { |v| public_send(render_method, v) }
|
|
892
|
+
end
|
|
893
|
+
end
|
|
894
|
+
|
|
895
|
+
# Standard child set for container blocks (example, note, etc.)
|
|
896
|
+
BLOCK_CHILDREN = {
|
|
897
|
+
paragraphs: :render_paragraph,
|
|
898
|
+
ul: :render_unordered_list,
|
|
899
|
+
ol: :render_ordered_list,
|
|
900
|
+
dl: :render_definition_list,
|
|
901
|
+
sourcecode: :render_sourcecode,
|
|
902
|
+
table: :render_table,
|
|
903
|
+
figure: :render_figure,
|
|
904
|
+
quote: :render_quote,
|
|
905
|
+
formula: :render_formula,
|
|
906
|
+
}.freeze
|
|
907
|
+
|
|
908
|
+
# Minimal child set for simple blocks (admonition, note with content only)
|
|
909
|
+
SIMPLE_CHILDREN = {
|
|
910
|
+
paragraphs: :render_paragraph,
|
|
911
|
+
}.freeze
|
|
912
|
+
|
|
913
|
+
# Note-style child set (paragraphs + lists + dl, no nested blocks)
|
|
914
|
+
NOTE_CHILDREN = {
|
|
915
|
+
paragraphs: :render_paragraph,
|
|
916
|
+
ul: :render_unordered_list,
|
|
917
|
+
ol: :render_ordered_list,
|
|
918
|
+
dl: :render_definition_list,
|
|
919
|
+
quote: :render_quote,
|
|
920
|
+
}.freeze
|
|
921
|
+
|
|
879
922
|
# --- Section rendering ---
|
|
880
923
|
|
|
881
924
|
def render_basic_section(section, level: 1, **_opts)
|
|
@@ -962,7 +1005,7 @@ module Metanorma
|
|
|
962
1005
|
# Apply optional filter (used by semx to skip semantic attrs)
|
|
963
1006
|
next if allow_filter && !allow_filter.include?(attr_name)
|
|
964
1007
|
|
|
965
|
-
coll = node.
|
|
1008
|
+
coll = node.public_send(attr_name)
|
|
966
1009
|
obj = if coll.is_a?(Array)
|
|
967
1010
|
idx = indices[attr_name]
|
|
968
1011
|
indices[attr_name] += 1
|
|
@@ -1056,8 +1099,9 @@ module Metanorma
|
|
|
1056
1099
|
|
|
1057
1100
|
def raw_content_node?(node)
|
|
1058
1101
|
node.is_a?(Lutaml::Model::Serializable) &&
|
|
1059
|
-
node.respond_to?(:content) &&
|
|
1060
1102
|
node.content.is_a?(String)
|
|
1103
|
+
rescue NoMethodError
|
|
1104
|
+
false
|
|
1061
1105
|
end
|
|
1062
1106
|
|
|
1063
1107
|
# Iterate element_order directly, preserving whitespace text nodes
|
|
@@ -1432,7 +1476,7 @@ module Metanorma
|
|
|
1432
1476
|
return stem.math.to_xml
|
|
1433
1477
|
rescue StandardError
|
|
1434
1478
|
math_items = Array(stem.math)
|
|
1435
|
-
return math_items.
|
|
1479
|
+
return math_items.join
|
|
1436
1480
|
end
|
|
1437
1481
|
end
|
|
1438
1482
|
if stem.asciimath
|
|
@@ -1494,7 +1538,9 @@ module Metanorma
|
|
|
1494
1538
|
end
|
|
1495
1539
|
|
|
1496
1540
|
def safe_attr(obj, method_name)
|
|
1497
|
-
obj.public_send(method_name)
|
|
1541
|
+
obj.public_send(method_name)
|
|
1542
|
+
rescue NoMethodError
|
|
1543
|
+
nil
|
|
1498
1544
|
end
|
|
1499
1545
|
|
|
1500
1546
|
def collect_index_term(element)
|
|
@@ -9,7 +9,8 @@ module Metanorma
|
|
|
9
9
|
id = renderer.safe_attr(admonition, :id)
|
|
10
10
|
|
|
11
11
|
content_html = renderer.capture_output do
|
|
12
|
-
|
|
12
|
+
renderer.render_block_children(admonition,
|
|
13
|
+
children: BaseRenderer::SIMPLE_CHILDREN)
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
new(
|
|
@@ -9,17 +9,8 @@ module Metanorma
|
|
|
9
9
|
label = renderer.extract_block_label(example, "EXAMPLE")
|
|
10
10
|
|
|
11
11
|
content_html = renderer.capture_output do
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
end
|
|
15
|
-
example.ul&.each { |ul| renderer.render_unordered_list(ul) }
|
|
16
|
-
example.ol&.each { |ol| renderer.render_ordered_list(ol) }
|
|
17
|
-
example.dl&.each { |dl| renderer.render_definition_list(dl) }
|
|
18
|
-
example.sourcecode&.each { |sc| renderer.render_sourcecode(sc) }
|
|
19
|
-
example.table&.each { |t| renderer.render_table(t) }
|
|
20
|
-
example.figure&.each { |f| renderer.render_figure(f) }
|
|
21
|
-
example.quote&.each { |q| renderer.render_quote(q) }
|
|
22
|
-
example.formula&.each { |f| renderer.render_formula(f) }
|
|
12
|
+
renderer.render_block_children(example,
|
|
13
|
+
children: BaseRenderer::BLOCK_CHILDREN)
|
|
23
14
|
end
|
|
24
15
|
|
|
25
16
|
new(
|
|
@@ -14,9 +14,8 @@ module Metanorma
|
|
|
14
14
|
else
|
|
15
15
|
renderer.render_mixed_inline(note)
|
|
16
16
|
end
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
note.dl&.then { |dl| renderer.render_definition_list(dl) }
|
|
17
|
+
renderer.render_block_children(note,
|
|
18
|
+
children: BaseRenderer::NOTE_CHILDREN)
|
|
20
19
|
end
|
|
21
20
|
|
|
22
21
|
new(
|
|
@@ -19,8 +19,6 @@ module Metanorma
|
|
|
19
19
|
register_render Metanorma::StandardDocument::Sections::FloatingTitle, :render_floating_title
|
|
20
20
|
register_render Metanorma::StandardDocument::Blocks::AmendBlock, :render_amend_block
|
|
21
21
|
|
|
22
|
-
private
|
|
23
|
-
|
|
24
22
|
# --- Top-level document rendering ---
|
|
25
23
|
|
|
26
24
|
def render_standard_document(doc, **_opts)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: metanorma-document
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-05-
|
|
11
|
+
date: 2026-05-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: lutaml-model
|