metanorma-document 0.2.5 → 0.2.7

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 (205) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +321 -45
  3. data/Gemfile +2 -0
  4. data/lib/metanorma/basic_document/ancillary_blocks/figure_block.rb +3 -1
  5. data/lib/metanorma/basic_document/blocks/basic_block.rb +5 -1
  6. data/lib/metanorma/basic_document/blocks/note_block.rb +5 -0
  7. data/lib/metanorma/basic_document/blocks.rb +3 -24
  8. data/lib/metanorma/basic_document/lists/list.rb +2 -1
  9. data/lib/metanorma/basic_document/lists/list_item.rb +17 -0
  10. data/lib/metanorma/basic_document/lists.rb +1 -0
  11. data/lib/metanorma/basic_document/paragraphs/paragraph_with_footnote.rb +3 -1
  12. data/lib/metanorma/basic_document/reference_elements/callout.rb +1 -1
  13. data/lib/metanorma/basic_document/reference_elements/footnote.rb +1 -1
  14. data/lib/metanorma/basic_document/text_elements/mathml.rb +1 -1
  15. data/lib/metanorma/bipm_document/root.rb +10 -50
  16. data/lib/metanorma/bipm_document.rb +0 -2
  17. data/lib/metanorma/bsi_document/metadata/bsi_bib_data_extension_type.rb +10 -0
  18. data/lib/metanorma/bsi_document/metadata/bsi_bibliographic_item.rb +15 -0
  19. data/lib/metanorma/bsi_document/metadata.rb +12 -0
  20. data/lib/metanorma/bsi_document/root.rb +29 -0
  21. data/lib/metanorma/bsi_document/sections/bsi_annex_section.rb +25 -0
  22. data/lib/metanorma/bsi_document/sections/bsi_clause_section.rb +25 -0
  23. data/lib/metanorma/bsi_document/sections/bsi_sections.rb +27 -0
  24. data/lib/metanorma/bsi_document/sections.rb +11 -0
  25. data/lib/metanorma/bsi_document.rb +11 -0
  26. data/lib/metanorma/cc_document/root.rb +10 -50
  27. data/lib/metanorma/cc_document.rb +0 -2
  28. data/lib/metanorma/collection.rb +0 -2
  29. data/lib/metanorma/document/components/ancillary_blocks/example_block.rb +3 -3
  30. data/lib/metanorma/document/components/ancillary_blocks/figure_block.rb +2 -0
  31. data/lib/metanorma/document/components/ancillary_blocks/sourcecode_block.rb +2 -0
  32. data/lib/metanorma/document/components/blocks/passthrough.rb +21 -0
  33. data/lib/metanorma/document/components/blocks/requirement_model.rb +159 -0
  34. data/lib/metanorma/document/components/blocks.rb +10 -0
  35. data/lib/metanorma/document/components/contrib_metadata/contribution_element_metadata.rb +3 -1
  36. data/lib/metanorma/document/components/id_elements/image.rb +2 -0
  37. data/lib/metanorma/document/components/inline/xref_element.rb +8 -0
  38. data/lib/metanorma/document/components/lists/definition_list.rb +6 -0
  39. data/lib/metanorma/document/components/lists/list_item.rb +1 -1
  40. data/lib/metanorma/document/components/lists/ordered_list.rb +6 -0
  41. data/lib/metanorma/document/components/lists/unordered_list.rb +8 -0
  42. data/lib/metanorma/document/components/multi_paragraph/admonition_block.rb +8 -0
  43. data/lib/metanorma/document/components/multi_paragraph/review_block.rb +3 -0
  44. data/lib/metanorma/document/components/paragraphs/paragraph_block.rb +6 -2
  45. data/lib/metanorma/document/components/reference_elements/source_element.rb +57 -0
  46. data/lib/metanorma/document/components/reference_elements.rb +6 -0
  47. data/lib/metanorma/document/components/sections/references_section.rb +1 -1
  48. data/lib/metanorma/document/components/tables/table_block.rb +10 -0
  49. data/lib/metanorma/document/components/tables/table_cell.rb +2 -1
  50. data/lib/metanorma/document/data_types.rb +0 -4
  51. data/lib/metanorma/document/elements/add.rb +18 -0
  52. data/lib/metanorma/document/elements/del.rb +18 -0
  53. data/lib/metanorma/document/elements.rb +10 -0
  54. data/lib/metanorma/document/relaton/address.rb +16 -0
  55. data/lib/metanorma/document/root.rb +1 -3
  56. data/lib/metanorma/document/version.rb +1 -1
  57. data/lib/metanorma/document.rb +11 -2
  58. data/lib/metanorma/gb_document/metadata/gb_bib_data_extension_type.rb +10 -0
  59. data/lib/metanorma/gb_document/metadata/gb_bibliographic_item.rb +15 -0
  60. data/lib/metanorma/gb_document/metadata.rb +12 -0
  61. data/lib/metanorma/gb_document/root.rb +29 -0
  62. data/lib/metanorma/gb_document.rb +10 -0
  63. data/lib/metanorma/generic_document/root.rb +31 -0
  64. data/lib/metanorma/generic_document.rb +7 -0
  65. data/lib/metanorma/html/base_renderer.rb +245 -113
  66. data/lib/metanorma/html/bipm_renderer.rb +16 -8
  67. data/lib/metanorma/html/cc_renderer.rb +0 -1
  68. data/lib/metanorma/html/component/base.rb +5 -1
  69. data/lib/metanorma/html/component/footnote_collector.rb +3 -3
  70. data/lib/metanorma/html/component/index_section.rb +27 -9
  71. data/lib/metanorma/html/component/index_term_collector.rb +8 -3
  72. data/lib/metanorma/html/component.rb +2 -1
  73. data/lib/metanorma/html/drops/admonition_drop.rb +2 -1
  74. data/lib/metanorma/html/drops/example_drop.rb +2 -11
  75. data/lib/metanorma/html/drops/figure_drop.rb +14 -5
  76. data/lib/metanorma/html/drops/formula_drop.rb +7 -2
  77. data/lib/metanorma/html/drops/note_drop.rb +2 -3
  78. data/lib/metanorma/html/drops/sourcecode_drop.rb +6 -2
  79. data/lib/metanorma/html/drops.rb +2 -1
  80. data/lib/metanorma/html/generator.rb +33 -16
  81. data/lib/metanorma/html/iec_renderer.rb +0 -1
  82. data/lib/metanorma/html/ieee_renderer.rb +0 -1
  83. data/lib/metanorma/html/ietf_renderer.rb +0 -1
  84. data/lib/metanorma/html/iho_renderer.rb +1 -2
  85. data/lib/metanorma/html/iso_renderer.rb +68 -23
  86. data/lib/metanorma/html/itu_renderer.rb +0 -1
  87. data/lib/metanorma/html/ogc_renderer.rb +0 -1
  88. data/lib/metanorma/html/oiml_renderer.rb +0 -1
  89. data/lib/metanorma/html/pdfa_renderer.rb +0 -1
  90. data/lib/metanorma/html/ribose_renderer.rb +0 -1
  91. data/lib/metanorma/html/standard_renderer.rb +61 -28
  92. data/lib/metanorma/html/theme.rb +2 -2
  93. data/lib/metanorma/html.rb +48 -1
  94. data/lib/metanorma/iec_document/root.rb +8 -47
  95. data/lib/metanorma/iec_document.rb +2 -3
  96. data/lib/metanorma/ieee_document/root.rb +14 -50
  97. data/lib/metanorma/ieee_document/sections/ieee_sections.rb +31 -0
  98. data/lib/metanorma/ieee_document/sections.rb +9 -0
  99. data/lib/metanorma/ieee_document.rb +3 -3
  100. data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +0 -2
  101. data/lib/metanorma/ietf_document/metadata/ietf_bibliographic_item.rb +0 -2
  102. data/lib/metanorma/ietf_document/root.rb +14 -50
  103. data/lib/metanorma/ietf_document/sections/ietf_annex_section.rb +26 -0
  104. data/lib/metanorma/ietf_document/sections/ietf_clause_section.rb +26 -0
  105. data/lib/metanorma/ietf_document/sections/ietf_content_section.rb +25 -0
  106. data/lib/metanorma/ietf_document/sections/ietf_sections.rb +35 -0
  107. data/lib/metanorma/ietf_document/sections.rb +4 -23
  108. data/lib/metanorma/ietf_document.rb +4 -3
  109. data/lib/metanorma/iho_document/metadata/iho_bib_data_extension_type.rb +0 -2
  110. data/lib/metanorma/iho_document/root.rb +10 -50
  111. data/lib/metanorma/iho_document.rb +0 -3
  112. data/lib/metanorma/iso_document/annotation_container.rb +1 -10
  113. data/lib/metanorma/iso_document/boilerplate.rb +1 -11
  114. data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +2 -2
  115. data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +4 -3
  116. data/lib/metanorma/iso_document/metadata/metanorma_extension.rb +1 -12
  117. data/lib/metanorma/iso_document/root.rb +7 -73
  118. data/lib/metanorma/iso_document/sections/colophon.rb +1 -16
  119. data/lib/metanorma/iso_document/sections/iso_annex_section.rb +11 -133
  120. data/lib/metanorma/iso_document/sections/iso_clause_section.rb +9 -166
  121. data/lib/metanorma/iso_document/sections/iso_foreword_section.rb +15 -89
  122. data/lib/metanorma/iso_document/sections/iso_preface.rb +15 -21
  123. data/lib/metanorma/iso_document/sections/iso_sections.rb +19 -29
  124. data/lib/metanorma/iso_document/sections/iso_terms_section.rb +6 -9
  125. data/lib/metanorma/iso_document/terms/term_expression.rb +2 -47
  126. data/lib/metanorma/iso_document/terms/term_origin.rb +2 -24
  127. data/lib/metanorma/iso_document/terms/term_source.rb +4 -32
  128. data/lib/metanorma/iso_document.rb +2 -2
  129. data/lib/metanorma/itu_document/root.rb +10 -50
  130. data/lib/metanorma/itu_document.rb +0 -2
  131. data/lib/metanorma/jis_document/metadata/jis_bib_data_extension_type.rb +10 -0
  132. data/lib/metanorma/jis_document/metadata/jis_bibliographic_item.rb +15 -0
  133. data/lib/metanorma/jis_document/metadata.rb +12 -0
  134. data/lib/metanorma/jis_document/root.rb +29 -0
  135. data/lib/metanorma/jis_document/sections/jis_annex_section.rb +20 -0
  136. data/lib/metanorma/jis_document/sections.rb +9 -0
  137. data/lib/metanorma/jis_document.rb +11 -0
  138. data/lib/metanorma/m3d_document/metadata/m3d_bib_data_extension_type.rb +10 -0
  139. data/lib/metanorma/m3d_document/metadata/m3d_bibliographic_item.rb +15 -0
  140. data/lib/metanorma/m3d_document/metadata.rb +12 -0
  141. data/lib/metanorma/m3d_document/root.rb +29 -0
  142. data/lib/metanorma/m3d_document.rb +10 -0
  143. data/lib/metanorma/nist_document/metadata/nist_bib_data_extension_type.rb +10 -0
  144. data/lib/metanorma/nist_document/metadata/nist_bibliographic_item.rb +15 -0
  145. data/lib/metanorma/nist_document/metadata.rb +12 -0
  146. data/lib/metanorma/nist_document/root.rb +29 -0
  147. data/lib/metanorma/nist_document/sections/errata.rb +16 -0
  148. data/lib/metanorma/nist_document/sections/errata_clause.rb +20 -0
  149. data/lib/metanorma/nist_document/sections/errata_row.rb +22 -0
  150. data/lib/metanorma/nist_document/sections/nist_preface.rb +30 -0
  151. data/lib/metanorma/nist_document/sections.rb +12 -0
  152. data/lib/metanorma/nist_document.rb +11 -0
  153. data/lib/metanorma/ogc_document/root.rb +10 -50
  154. data/lib/metanorma/ogc_document.rb +0 -2
  155. data/lib/metanorma/oiml_document/root.rb +8 -47
  156. data/lib/metanorma/oiml_document.rb +2 -3
  157. data/lib/metanorma/plateau_document/metadata/plateau_bibliographic_item.rb +13 -0
  158. data/lib/metanorma/plateau_document/metadata.rb +10 -0
  159. data/lib/metanorma/plateau_document/root.rb +29 -0
  160. data/lib/metanorma/plateau_document.rb +10 -0
  161. data/lib/metanorma/registers/setup.rb +162 -0
  162. data/lib/metanorma/registers.rb +7 -0
  163. data/lib/metanorma/ribose_document/root.rb +10 -52
  164. data/lib/metanorma/ribose_document.rb +0 -2
  165. data/lib/metanorma/standard_document/annotation_container.rb +14 -0
  166. data/lib/metanorma/standard_document/block_attributes.rb +226 -0
  167. data/lib/metanorma/standard_document/blocks/passthrough.rb +1 -18
  168. data/lib/metanorma/standard_document/blocks/requirement_model.rb +18 -163
  169. data/lib/metanorma/standard_document/boilerplate.rb +14 -0
  170. data/lib/metanorma/standard_document/elements/add.rb +1 -17
  171. data/lib/metanorma/standard_document/elements/del.rb +1 -17
  172. data/lib/metanorma/standard_document/metadata/metanorma_extension.rb +16 -0
  173. data/lib/metanorma/standard_document/metadata.rb +2 -0
  174. data/lib/metanorma/standard_document/refs/reference_to_term.rb +2 -1
  175. data/lib/metanorma/standard_document/root_attributes.rb +78 -0
  176. data/lib/metanorma/standard_document/sections/abstract.rb +1 -3
  177. data/lib/metanorma/standard_document/sections/acknowledgements.rb +1 -3
  178. data/lib/metanorma/standard_document/sections/annex_section.rb +81 -16
  179. data/lib/metanorma/standard_document/sections/bibliography_section.rb +1 -2
  180. data/lib/metanorma/standard_document/sections/clause_section.rb +102 -10
  181. data/lib/metanorma/standard_document/sections/colophon.rb +16 -0
  182. data/lib/metanorma/standard_document/sections/definition_section.rb +45 -42
  183. data/lib/metanorma/standard_document/sections/floating_section_title.rb +23 -0
  184. data/lib/metanorma/standard_document/sections/foreword.rb +1 -3
  185. data/lib/metanorma/standard_document/sections/introduction.rb +1 -4
  186. data/lib/metanorma/standard_document/sections/misc_container.rb +5 -2
  187. data/lib/metanorma/standard_document/sections/preface.rb +36 -0
  188. data/lib/metanorma/standard_document/sections/sections.rb +40 -0
  189. data/lib/metanorma/standard_document/sections/standard_content_section.rb +42 -9
  190. data/lib/metanorma/standard_document/sections/terms_section.rb +52 -10
  191. data/lib/metanorma/standard_document/sections.rb +6 -2
  192. data/lib/metanorma/standard_document/terms/designation.rb +1 -1
  193. data/lib/metanorma/standard_document/terms/term_expression.rb +51 -0
  194. data/lib/metanorma/standard_document/terms.rb +1 -0
  195. data/lib/metanorma/standard_document.rb +7 -2
  196. data/lib/metanorma/un_document/metadata/un_bib_data_extension_type.rb +10 -0
  197. data/lib/metanorma/un_document/metadata/un_bibliographic_item.rb +15 -0
  198. data/lib/metanorma/un_document/metadata.rb +12 -0
  199. data/lib/metanorma/un_document/root.rb +29 -0
  200. data/lib/metanorma/un_document/sections/un_preface.rb +23 -0
  201. data/lib/metanorma/un_document/sections/un_sections.rb +24 -0
  202. data/lib/metanorma/un_document/sections.rb +10 -0
  203. data/lib/metanorma/un_document.rb +11 -0
  204. metadata +77 -3
  205. data/lib/metanorma/html/whitespace_patch.rb +0 -47
@@ -4,10 +4,11 @@ module Metanorma
4
4
  module Html
5
5
  module Component
6
6
  class IndexSection < Base
7
- def render(collector, **opts)
7
+ def render(collector, **_opts)
8
8
  return if collector.nil? || collector.empty?
9
9
 
10
- output << tag(:div, %( id="index" class="index-section" data-component="index")) do
10
+ output << tag(:div,
11
+ %( id="index" class="index-section" data-component="index")) do
11
12
  html = tag(:h2) { "Index" }
12
13
  html << render_quicknav(collector.sorted_groups)
13
14
  html << render_letter_groups(collector.sorted_groups)
@@ -31,7 +32,8 @@ module Metanorma
31
32
  end
32
33
 
33
34
  def render_letter_group(group)
34
- tag(:div, %( class="index-letter-group" id="index-letter-#{escape_html(group.letter)}")) do
35
+ tag(:div,
36
+ %( class="index-letter-group" id="index-letter-#{escape_html(group.letter)}")) do
35
37
  html = tag(:h3, %( class="index-letter")) { group.letter }
36
38
  html << group.entries.map { |e| render_entry(e, "primary") }.join
37
39
  html
@@ -41,32 +43,48 @@ module Metanorma
41
43
  def render_entry(entry, level)
42
44
  tag(:div, %( class="index-entry index-entry--#{level}")) do
43
45
  html = +""
44
- html << tag(:span, %( class="index-term")) { escape_html(entry.term) }
46
+ html << tag(:span, %( class="index-term")) do
47
+ escape_html(entry.term)
48
+ end
45
49
  html << render_locators(entry.locators)
46
50
  html << render_see(entry.see) if entry.see
47
51
  html << render_see_also(entry.see_also_entries) unless entry.see_also_entries.empty?
48
- html << entry.children.map { |c| render_entry(c, next_level(level)) }.join unless entry.children.empty?
52
+ unless entry.children.empty?
53
+ html << entry.children.map { |c|
54
+ render_entry(c, next_level(level))
55
+ }.join
56
+ end
49
57
  html
50
58
  end
51
59
  end
52
60
 
53
61
  def render_locators(locators)
54
62
  links = locators.map do |loc|
55
- tag(:a, %( href="##{escape_html(loc.id)}")) { escape_html(loc.text) }
63
+ tag(:a, %( href="##{escape_html(loc.id)}")) do
64
+ escape_html(loc.text)
65
+ end
56
66
  end
57
67
  tag(:span, %( class="index-locator")) { links.join(", ") }
58
68
  end
59
69
 
60
70
  def render_see(term)
61
- tag(:div, %( class="index-see")) { "<em>see</em> #{escape_html(term)}" }
71
+ tag(:div, %( class="index-see")) do
72
+ "<em>see</em> #{escape_html(term)}"
73
+ end
62
74
  end
63
75
 
64
76
  def render_see_also(terms)
65
- tag(:div, %( class="index-see-also")) { "<em>see also</em> #{terms.map { |t| escape_html(t) }.join(', ')}" }
77
+ tag(:div,
78
+ %( class="index-see-also")) do
79
+ "<em>see also</em> #{terms.map do |t|
80
+ escape_html(t)
81
+ end.join(', ')}"
82
+ end
66
83
  end
67
84
 
68
85
  def next_level(level)
69
- { "primary" => "secondary", "secondary" => "tertiary" }[level] || "tertiary"
86
+ { "primary" => "secondary",
87
+ "secondary" => "tertiary" }[level] || "tertiary"
70
88
  end
71
89
  end
72
90
  end
@@ -17,7 +17,7 @@ module Metanorma
17
17
  see: see,
18
18
  see_also: see_also,
19
19
  target_id: target_id,
20
- target_text: target_text
20
+ target_text: target_text,
21
21
  )
22
22
  end
23
23
 
@@ -67,7 +67,7 @@ module Metanorma
67
67
  keyword_init: true)
68
68
 
69
69
  IndexEntry = Struct.new(:term, :locators, :see, :see_also_entries, :children,
70
- keyword_init: true) do
70
+ keyword_init: true) do
71
71
  def initialize(*)
72
72
  super
73
73
  self.locators ||= []
@@ -76,7 +76,12 @@ module Metanorma
76
76
  end
77
77
 
78
78
  def add_locator(id, text)
79
- locators << IndexLocator.new(id: id, text: text) if id && !locators.any? { |l| l.id == id }
79
+ if id && locators.none? do |l|
80
+ l.id == id
81
+ end
82
+ locators << IndexLocator.new(id: id,
83
+ text: text)
84
+ end
80
85
  end
81
86
 
82
87
  def add_see_also(term)
@@ -4,7 +4,8 @@ module Metanorma
4
4
  module Html
5
5
  module Component
6
6
  autoload :Base, "metanorma/html/component/base"
7
- autoload :IndexTermCollector, "metanorma/html/component/index_term_collector"
7
+ autoload :IndexTermCollector,
8
+ "metanorma/html/component/index_term_collector"
8
9
  autoload :IndexSection, "metanorma/html/component/index_section"
9
10
  autoload :FootnoteCollector, "metanorma/html/component/footnote_collector"
10
11
  end
@@ -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
- admonition.paragraphs&.each { |para| renderer.render_paragraph(para) }
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
- if example.paragraphs && !example.paragraphs.empty?
13
- example.paragraphs.each { |para| renderer.render_paragraph(para) }
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(
@@ -8,9 +8,13 @@ module Metanorma
8
8
 
9
9
  def self.from_model(figure, renderer:)
10
10
  id = renderer.safe_attr(figure, :id)
11
- fig_name = renderer.safe_attr(figure, :fmt_name) || renderer.safe_attr(figure, :name)
11
+ fig_name = renderer.safe_attr(figure,
12
+ :fmt_name) || renderer.safe_attr(
13
+ figure, :name
14
+ )
12
15
  if id && fig_name
13
- renderer.register_figure_entry(id: id, text: renderer.extract_plain_text(fig_name))
16
+ renderer.register_figure_entry(id: id,
17
+ text: renderer.extract_plain_text(fig_name))
14
18
  end
15
19
 
16
20
  image_html = renderer.capture_output do
@@ -24,7 +28,8 @@ module Metanorma
24
28
 
25
29
  caption_html = if fig_name || renderer.safe_attr(figure, :name)
26
30
  renderer.capture_output do
27
- el = renderer.safe_attr(figure, :fmt_name) || figure.name
31
+ el = renderer.safe_attr(figure,
32
+ :fmt_name) || figure.name
28
33
  renderer.render_inline_element(el)
29
34
  end
30
35
  end
@@ -34,8 +39,12 @@ module Metanorma
34
39
  end
35
40
 
36
41
  key_html = renderer.capture_output do
37
- renderer.safe_attr(figure, :note)&.each { |n| renderer.render_note(n) }
38
- renderer.safe_attr(figure, :dl)&.then { |dl| renderer.render_definition_list(dl) }
42
+ renderer.safe_attr(figure, :note)&.each do |n|
43
+ renderer.render_note(n)
44
+ end
45
+ renderer.safe_attr(figure, :dl)&.then do |dl|
46
+ renderer.render_definition_list(dl)
47
+ end
39
48
  end
40
49
 
41
50
  new(
@@ -25,9 +25,14 @@ module Metanorma
25
25
  formula.dl&.then { |dl| renderer.render_definition_list(dl) }
26
26
  end
27
27
 
28
- name_el = renderer.safe_attr(formula, :fmt_name) || renderer.safe_attr(formula, :name)
28
+ name_el = renderer.safe_attr(formula,
29
+ :fmt_name) || renderer.safe_attr(
30
+ formula, :name
31
+ )
29
32
  number_html = if name_el
30
- renderer.capture_output { renderer.render_inline_element(name_el) }
33
+ renderer.capture_output do
34
+ renderer.render_inline_element(name_el)
35
+ end
31
36
  end
32
37
 
33
38
  new(
@@ -14,9 +14,8 @@ module Metanorma
14
14
  else
15
15
  renderer.render_mixed_inline(note)
16
16
  end
17
- note.ul&.each { |ul| renderer.render_unordered_list(ul) }
18
- note.ol&.each { |ol| renderer.render_ordered_list(ol) }
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(
@@ -11,7 +11,9 @@ module Metanorma
11
11
  lang = renderer.safe_attr(sc, :lang)
12
12
 
13
13
  name_html = if sc.name
14
- renderer.capture_output { renderer.render_inline_element(sc.name) }
14
+ renderer.capture_output do
15
+ renderer.render_inline_element(sc.name)
16
+ end
15
17
  end
16
18
 
17
19
  code_text = if sc.body&.content
@@ -21,7 +23,9 @@ module Metanorma
21
23
  else
22
24
  ""
23
25
  end
24
- raw_text = code_text.gsub("&lt;", "<").gsub("&gt;", ">").gsub("&amp;", "&").gsub("&quot;", "\"")
26
+ raw_text = code_text.gsub("&lt;", "<").gsub("&gt;", ">").gsub("&amp;", "&").gsub(
27
+ "&quot;", "\""
28
+ )
25
29
 
26
30
  new(
27
31
  id: id,
@@ -12,7 +12,8 @@ module Metanorma
12
12
  autoload :FormulaDrop, "metanorma/html/drops/formula_drop"
13
13
  autoload :FigureDrop, "metanorma/html/drops/figure_drop"
14
14
  autoload :TocEntryDrop, "metanorma/html/drops/toc_entry_drop"
15
- autoload :FigureListEntryDrop, "metanorma/html/drops/figure_list_entry_drop"
15
+ autoload :FigureListEntryDrop,
16
+ "metanorma/html/drops/figure_list_entry_drop"
16
17
  end
17
18
  end
18
19
  end
@@ -19,7 +19,7 @@ module Metanorma
19
19
  @tastes << [model_class, publisher_abbrev, renderer_class]
20
20
  end
21
21
 
22
- def generate(document, **options)
22
+ def generate(document, **_options)
23
23
  setup! unless @setup
24
24
  renderer_for(document).new.generate_full_document(document)
25
25
  end
@@ -43,7 +43,8 @@ module Metanorma
43
43
  def find_taste(document)
44
44
  @tastes.each do |model_class, publisher_abbrev, renderer_class|
45
45
  next unless document.is_a?(model_class)
46
- return renderer_class if taste_publisher?(document, publisher_abbrev)
46
+ return renderer_class if taste_publisher?(document,
47
+ publisher_abbrev)
47
48
  end
48
49
  nil
49
50
  end
@@ -51,25 +52,39 @@ module Metanorma
51
52
  def taste_publisher?(document, abbrev)
52
53
  bibdata = document.bibdata if document.is_a?(Lutaml::Model::Serializable)
53
54
  return false unless bibdata
55
+
54
56
  contributors = bibdata.contributor
55
57
  return false unless contributors
56
- contributors.any? do |c|
57
- next false unless c.role&.any? { |r| r&.type == "author" } rescue false
58
- org = c.organization
59
- next false unless org
60
- org_abbrev = org.abbreviation
61
- if org_abbrev.is_a?(String)
62
- org_abbrev == abbrev
63
- elsif org_abbrev.is_a?(Lutaml::Model::Serializable)
64
- safe_attr(org_abbrev, :content) == abbrev
65
- else
66
- org_abbrev.to_s == abbrev
58
+
59
+ begin
60
+ contributors.any? do |c|
61
+ begin
62
+ next false unless c.role&.any? do |r|
63
+ r&.type == "author"
64
+ end
65
+ rescue StandardError
66
+ false
67
+ end
68
+ org = c.organization
69
+ next false unless org
70
+
71
+ org_abbrev = org.abbreviation
72
+ if org_abbrev.is_a?(String)
73
+ org_abbrev == abbrev
74
+ elsif org_abbrev.is_a?(Lutaml::Model::Serializable)
75
+ safe_attr(org_abbrev, :content) == abbrev
76
+ else
77
+ org_abbrev.to_s == abbrev
78
+ end
67
79
  end
68
- end rescue false
80
+ rescue StandardError
81
+ false
82
+ end
69
83
  end
70
84
 
71
85
  def setup!
72
86
  return if @setup
87
+
73
88
  @setup = true
74
89
 
75
90
  # Trigger autoloads by referencing constants
@@ -105,8 +120,10 @@ module Metanorma
105
120
  register Metanorma::RiboseDocument::Root, RiboseRenderer
106
121
 
107
122
  # Register tastes (publisher-based dispatch within same model)
108
- register_taste Metanorma::IsoDocument::Root, "ICC", IccRenderer
109
- register_taste Metanorma::RiboseDocument::Root, "PDF Association", PdfaRenderer
123
+ register_taste Metanorma::IsoDocument::Root, "ICC",
124
+ IccRenderer
125
+ register_taste Metanorma::RiboseDocument::Root, "PDF Association",
126
+ PdfaRenderer
110
127
  end
111
128
  end
112
129
  end
@@ -4,7 +4,6 @@ module Metanorma
4
4
  module Html
5
5
  # IEC brand: #0061a9 blue from logo
6
6
  class IecRenderer < IsoRenderer
7
-
8
7
  def flavor_publishers(_doc_id)
9
8
  ["IEC"]
10
9
  end
@@ -5,7 +5,6 @@ module Metanorma
5
5
  # Renders IeeeDocument components to HTML.
6
6
  # Extends IsoRenderer with IEEE branding.
7
7
  class IeeeRenderer < IsoRenderer
8
-
9
8
  def flavor_publishers(_doc_id)
10
9
  ["IEEE"]
11
10
  end
@@ -5,7 +5,6 @@ module Metanorma
5
5
  # Renders IetfDocument components to HTML.
6
6
  # Extends IsoRenderer with IETF/RFC branding.
7
7
  class IetfRenderer < IsoRenderer
8
-
9
8
  def flavor_publishers(_doc_id)
10
9
  ["IETF"]
11
10
  end
@@ -4,7 +4,6 @@ module Metanorma
4
4
  module Html
5
5
  # IHO brand: #00AAA9 teal + #05164D navy + #FEDC5B gold from logo
6
6
  class IhoRenderer < IsoRenderer
7
-
8
7
  def flavor_publishers(_doc_id)
9
8
  ["IHO"]
10
9
  end
@@ -44,7 +43,7 @@ module Metanorma
44
43
  t.example_bg = "#eaf5f5"
45
44
  t.example_color = "#008887"
46
45
  t.admonition_border = "#FEDC5B"
47
- t.admonition_bg = "#fff9e6"
46
+ t.admonition_bg = "#fff9e6"
48
47
  t.admonition_color = "#b8860b"
49
48
  t.footer_border_color = "#00AAA9"
50
49
  t.cover_separator_color = "rgba(0,170,169,0.3)"
@@ -52,19 +52,28 @@ module Metanorma
52
52
  end
53
53
 
54
54
  register_render Metanorma::IsoDocument::Root, :render_document
55
- register_render Metanorma::IsoDocument::Sections::IsoPreface, :render_preface
56
- register_render Metanorma::IsoDocument::Sections::IsoSections, :render_sections
57
- register_render Metanorma::IsoDocument::Sections::IsoClauseSection, :render_clause
58
- register_render Metanorma::IsoDocument::Sections::IsoAnnexSection, :render_annex
59
- register_render Metanorma::IsoDocument::Sections::IsoTermsSection, :render_terms_section
60
- register_render Metanorma::IsoDocument::Sections::IsoForewordSection, :render_foreword
61
- register_render Metanorma::IsoDocument::Sections::IsoAbstractSection, :render_abstract
55
+ register_render Metanorma::IsoDocument::Sections::IsoPreface,
56
+ :render_preface
57
+ register_render Metanorma::IsoDocument::Sections::IsoSections,
58
+ :render_sections
59
+ register_render Metanorma::IsoDocument::Sections::IsoClauseSection,
60
+ :render_clause
61
+ register_render Metanorma::IsoDocument::Sections::IsoAnnexSection,
62
+ :render_annex
63
+ register_render Metanorma::IsoDocument::Sections::IsoTermsSection,
64
+ :render_terms_section
65
+ register_render Metanorma::IsoDocument::Sections::IsoForewordSection,
66
+ :render_foreword
67
+ register_render Metanorma::IsoDocument::Sections::IsoAbstractSection,
68
+ :render_abstract
62
69
  register_render Metanorma::IsoDocument::Terms::IsoTerm, :render_term
63
70
  register_render Metanorma::IsoDocument::Terms::TermNote, :render_term_note
64
- register_render Metanorma::IsoDocument::Terms::TermExample, :render_term_example
71
+ register_render Metanorma::IsoDocument::Terms::TermExample,
72
+ :render_term_example
65
73
  register_render Metanorma::IsoDocument::Boilerplate, :render_boilerplate
66
74
 
67
- register_inline_render Metanorma::IsoDocument::Terms::TermOrigin, :render_term_origin
75
+ register_inline_render Metanorma::IsoDocument::Terms::TermOrigin,
76
+ :render_term_origin
68
77
 
69
78
  def render_term_origin(element)
70
79
  text = extract_text_value(element)
@@ -82,7 +91,9 @@ module Metanorma
82
91
  return result if result && !result.empty?
83
92
 
84
93
  if titles.is_a?(Metanorma::IsoDocument::Metadata::TitleCollection) && !titles.items.empty?
85
- raw = titles.items.find { |t| t.language == "en" } || titles.items.first
94
+ raw = titles.items.find do |t|
95
+ t.language == "en"
96
+ end || titles.items.first
86
97
  return raw.value.to_s if raw&.value
87
98
  end
88
99
  nil
@@ -195,8 +206,13 @@ module Metanorma
195
206
 
196
207
  pub_date = nil
197
208
  bibdata.date&.each do |date|
198
- date_type = extract_text_value(safe_attr(date, :type_attr) || safe_attr(date, :type))
199
- date_val = extract_text_value(date.is_a?(Metanorma::Document::Relaton::BibliographicDate) ? date.on : safe_attr(date, :text))
209
+ date_type = extract_text_value(safe_attr(date,
210
+ :type_attr) || safe_attr(
211
+ date, :type
212
+ ))
213
+ date_val = extract_text_value(date.is_a?(Metanorma::Document::Relaton::BibliographicDate) ? date.on : safe_attr(
214
+ date, :text
215
+ ))
200
216
  if date_type == "published" && date_val
201
217
  pub_date = date_val
202
218
  end
@@ -350,8 +366,14 @@ module Metanorma
350
366
  term_name = extract_term_name(term)
351
367
  term_def = extract_term_definition(term)
352
368
  data_attrs = {}
353
- data_attrs["data-term-name"] = term_name if term_name && !term_name.empty?
354
- data_attrs["data-term-definition"] = term_def if term_def && !term_def.empty?
369
+ if term_name && !term_name.empty?
370
+ data_attrs["data-term-name"] =
371
+ term_name
372
+ end
373
+ if term_def && !term_def.empty?
374
+ data_attrs["data-term-definition"] =
375
+ term_def
376
+ end
355
377
  attrs = element_attrs(id: safe_attr(term, :id), **data_attrs)
356
378
  tag("div", attrs) do
357
379
  # In presentation mode, use fmt_* elements
@@ -372,23 +394,37 @@ module Metanorma
372
394
 
373
395
  # Preferred designations — use fmt-preferred if available
374
396
  if term.fmt_preferred && !term.fmt_preferred.empty?
375
- term.fmt_preferred.each { |fp| fp.p&.each { |para| render_paragraph(para) } }
397
+ term.fmt_preferred.each do |fp|
398
+ fp.p&.each do |para|
399
+ render_paragraph(para)
400
+ end
401
+ end
376
402
  elsif term.preferred && !term.preferred.empty?
377
- term.preferred&.each { |designation| render_term_designation(designation, "preferred") }
403
+ term.preferred&.each do |designation|
404
+ render_term_designation(designation, "preferred")
405
+ end
378
406
  end
379
407
 
380
408
  # Admitted designations — use fmt-admitted if available
381
409
  if term.fmt_admitted && !term.fmt_admitted.empty?
382
- term.fmt_admitted.each { |fa| fa.p&.each { |para| render_paragraph(para) } }
410
+ term.fmt_admitted.each do |fa|
411
+ fa.p&.each do |para|
412
+ render_paragraph(para)
413
+ end
414
+ end
383
415
  elsif term.admitted && !term.admitted.empty?
384
- term.admitted&.each { |designation| render_term_designation(designation, "admitted") }
416
+ term.admitted&.each do |designation|
417
+ render_term_designation(designation, "admitted")
418
+ end
385
419
  end
386
420
 
387
421
  # Deprecated designations — use fmt-deprecates if available
388
422
  if term.fmt_deprecates
389
423
  term.fmt_deprecates.p&.each { |para| render_paragraph(para) }
390
424
  elsif term.deprecates && !term.deprecates.empty?
391
- term.deprecates&.each { |designation| render_term_designation(designation, "deprecated") }
425
+ term.deprecates&.each do |designation|
426
+ render_term_designation(designation, "deprecated")
427
+ end
392
428
  end
393
429
 
394
430
  # Domain — only render separately when fmt-definition is absent
@@ -450,11 +486,17 @@ module Metanorma
450
486
 
451
487
  def extract_term_definition(term)
452
488
  if term.fmt_definition
453
- rendered = capture_output { render_ordered_content(term.fmt_definition) }
489
+ rendered = capture_output do
490
+ render_ordered_content(term.fmt_definition)
491
+ end
454
492
  return strip_html(rendered).gsub(/\s+/, " ").strip
455
493
  end
456
494
  if term.p && !term.p.empty?
457
- rendered = capture_output { term.p.each { |para| render_paragraph(para) } }
495
+ rendered = capture_output do
496
+ term.p.each do |para|
497
+ render_paragraph(para)
498
+ end
499
+ end
458
500
  return strip_html(rendered).gsub(/\s+/, " ").strip
459
501
  end
460
502
  nil
@@ -564,7 +606,9 @@ module Metanorma
564
606
  # Remap XML class names to HTML-specific class names
565
607
  boilerplate_doc = Nokogiri::HTML::DocumentFragment.parse(clean)
566
608
  boilerplate_doc.css("[class]").each do |el|
567
- el["class"] = el["class"].split(/\s+/).map { |c| html_class_for_span(c) }.join(" ")
609
+ el["class"] = el["class"].split(/\s+/).map do |c|
610
+ html_class_for_span(c)
611
+ end.join(" ")
568
612
  end
569
613
 
570
614
  @output << boilerplate_doc.inner_html.strip
@@ -603,7 +647,8 @@ module Metanorma
603
647
  # --- Helpers ---
604
648
 
605
649
  def render_title(section, level)
606
- title_element = safe_attr(section, :fmt_title) || safe_attr(section, :title)
650
+ title_element = safe_attr(section,
651
+ :fmt_title) || safe_attr(section, :title)
607
652
  return unless title_element
608
653
 
609
654
  section_id = safe_attr(section, :id)
@@ -4,7 +4,6 @@ module Metanorma
4
4
  module Html
5
5
  # ITU brand: #0e99d5 blue from logo
6
6
  class ItuRenderer < IsoRenderer
7
-
8
7
  def flavor_publishers(_doc_id)
9
8
  ["ITU"]
10
9
  end
@@ -5,7 +5,6 @@ module Metanorma
5
5
  # Renders OgcDocument components to HTML.
6
6
  # Extends IsoRenderer with OGC-specific branding (geospatial, OGC cyan-blue #00b1ff).
7
7
  class OgcRenderer < IsoRenderer
8
-
9
8
  def flavor_publishers(_doc_id)
10
9
  ["OGC"]
11
10
  end
@@ -5,7 +5,6 @@ module Metanorma
5
5
  # Renders OimlDocument (OIML) components to HTML.
6
6
  # Extends IsoRenderer with OIML branding.
7
7
  class OimlRenderer < IsoRenderer
8
-
9
8
  def flavor_publishers(_doc_id)
10
9
  ["OIML"]
11
10
  end
@@ -5,7 +5,6 @@ module Metanorma
5
5
  # Renders PDF Association (PDFA) taste documents to HTML.
6
6
  # PDFA brand: #cf9c1d gold + #d03544 red + #4992b2 steel blue from logo
7
7
  class PdfaRenderer < IsoRenderer
8
-
9
8
  def flavor_publishers(_doc_id)
10
9
  ["PDF Association"]
11
10
  end
@@ -5,7 +5,6 @@ module Metanorma
5
5
  # Renders RiboseDocument components to HTML.
6
6
  # Extends IsoRenderer with Ribose branding.
7
7
  class RiboseRenderer < IsoRenderer
8
-
9
8
  def flavor_publishers(_doc_id)
10
9
  ["Ribose"]
11
10
  end