metanorma-document 0.2.6 → 0.2.8

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 (202) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +41 -168
  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 +206 -120
  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/figure_drop.rb +14 -5
  74. data/lib/metanorma/html/drops/formula_drop.rb +7 -2
  75. data/lib/metanorma/html/drops/sourcecode_drop.rb +6 -2
  76. data/lib/metanorma/html/drops.rb +2 -1
  77. data/lib/metanorma/html/generator.rb +16 -6
  78. data/lib/metanorma/html/iec_renderer.rb +0 -1
  79. data/lib/metanorma/html/ieee_renderer.rb +0 -1
  80. data/lib/metanorma/html/ietf_renderer.rb +0 -1
  81. data/lib/metanorma/html/iho_renderer.rb +1 -2
  82. data/lib/metanorma/html/iso_renderer.rb +68 -23
  83. data/lib/metanorma/html/itu_renderer.rb +0 -1
  84. data/lib/metanorma/html/ogc_renderer.rb +0 -1
  85. data/lib/metanorma/html/oiml_renderer.rb +0 -1
  86. data/lib/metanorma/html/pdfa_renderer.rb +0 -1
  87. data/lib/metanorma/html/ribose_renderer.rb +0 -1
  88. data/lib/metanorma/html/standard_renderer.rb +61 -28
  89. data/lib/metanorma/html/theme.rb +2 -2
  90. data/lib/metanorma/html.rb +48 -1
  91. data/lib/metanorma/iec_document/root.rb +8 -47
  92. data/lib/metanorma/iec_document.rb +2 -3
  93. data/lib/metanorma/ieee_document/root.rb +14 -50
  94. data/lib/metanorma/ieee_document/sections/ieee_sections.rb +31 -0
  95. data/lib/metanorma/ieee_document/sections.rb +9 -0
  96. data/lib/metanorma/ieee_document.rb +3 -3
  97. data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +0 -2
  98. data/lib/metanorma/ietf_document/metadata/ietf_bibliographic_item.rb +0 -2
  99. data/lib/metanorma/ietf_document/root.rb +14 -50
  100. data/lib/metanorma/ietf_document/sections/ietf_annex_section.rb +26 -0
  101. data/lib/metanorma/ietf_document/sections/ietf_clause_section.rb +26 -0
  102. data/lib/metanorma/ietf_document/sections/ietf_content_section.rb +25 -0
  103. data/lib/metanorma/ietf_document/sections/ietf_sections.rb +35 -0
  104. data/lib/metanorma/ietf_document/sections.rb +4 -23
  105. data/lib/metanorma/ietf_document.rb +4 -3
  106. data/lib/metanorma/iho_document/metadata/iho_bib_data_extension_type.rb +0 -2
  107. data/lib/metanorma/iho_document/root.rb +10 -50
  108. data/lib/metanorma/iho_document.rb +0 -3
  109. data/lib/metanorma/iso_document/annotation_container.rb +1 -10
  110. data/lib/metanorma/iso_document/boilerplate.rb +1 -11
  111. data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +2 -2
  112. data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +4 -3
  113. data/lib/metanorma/iso_document/metadata/metanorma_extension.rb +1 -12
  114. data/lib/metanorma/iso_document/root.rb +7 -73
  115. data/lib/metanorma/iso_document/sections/colophon.rb +1 -16
  116. data/lib/metanorma/iso_document/sections/iso_annex_section.rb +11 -133
  117. data/lib/metanorma/iso_document/sections/iso_clause_section.rb +9 -166
  118. data/lib/metanorma/iso_document/sections/iso_foreword_section.rb +5 -90
  119. data/lib/metanorma/iso_document/sections/iso_preface.rb +15 -21
  120. data/lib/metanorma/iso_document/sections/iso_sections.rb +19 -29
  121. data/lib/metanorma/iso_document/sections/iso_terms_section.rb +9 -22
  122. data/lib/metanorma/iso_document/terms/term_expression.rb +2 -47
  123. data/lib/metanorma/iso_document/terms/term_origin.rb +2 -24
  124. data/lib/metanorma/iso_document/terms/term_source.rb +4 -32
  125. data/lib/metanorma/iso_document.rb +2 -2
  126. data/lib/metanorma/itu_document/root.rb +10 -50
  127. data/lib/metanorma/itu_document.rb +0 -2
  128. data/lib/metanorma/jis_document/metadata/jis_bib_data_extension_type.rb +10 -0
  129. data/lib/metanorma/jis_document/metadata/jis_bibliographic_item.rb +15 -0
  130. data/lib/metanorma/jis_document/metadata.rb +12 -0
  131. data/lib/metanorma/jis_document/root.rb +29 -0
  132. data/lib/metanorma/jis_document/sections/jis_annex_section.rb +20 -0
  133. data/lib/metanorma/jis_document/sections.rb +9 -0
  134. data/lib/metanorma/jis_document.rb +11 -0
  135. data/lib/metanorma/m3d_document/metadata/m3d_bib_data_extension_type.rb +10 -0
  136. data/lib/metanorma/m3d_document/metadata/m3d_bibliographic_item.rb +15 -0
  137. data/lib/metanorma/m3d_document/metadata.rb +12 -0
  138. data/lib/metanorma/m3d_document/root.rb +29 -0
  139. data/lib/metanorma/m3d_document.rb +10 -0
  140. data/lib/metanorma/nist_document/metadata/nist_bib_data_extension_type.rb +10 -0
  141. data/lib/metanorma/nist_document/metadata/nist_bibliographic_item.rb +15 -0
  142. data/lib/metanorma/nist_document/metadata.rb +12 -0
  143. data/lib/metanorma/nist_document/root.rb +29 -0
  144. data/lib/metanorma/nist_document/sections/errata.rb +16 -0
  145. data/lib/metanorma/nist_document/sections/errata_clause.rb +20 -0
  146. data/lib/metanorma/nist_document/sections/errata_row.rb +22 -0
  147. data/lib/metanorma/nist_document/sections/nist_preface.rb +30 -0
  148. data/lib/metanorma/nist_document/sections.rb +12 -0
  149. data/lib/metanorma/nist_document.rb +11 -0
  150. data/lib/metanorma/ogc_document/root.rb +10 -50
  151. data/lib/metanorma/ogc_document.rb +0 -2
  152. data/lib/metanorma/oiml_document/root.rb +8 -47
  153. data/lib/metanorma/oiml_document.rb +2 -3
  154. data/lib/metanorma/plateau_document/metadata/plateau_bibliographic_item.rb +13 -0
  155. data/lib/metanorma/plateau_document/metadata.rb +10 -0
  156. data/lib/metanorma/plateau_document/root.rb +29 -0
  157. data/lib/metanorma/plateau_document.rb +10 -0
  158. data/lib/metanorma/registers/setup.rb +162 -0
  159. data/lib/metanorma/registers.rb +7 -0
  160. data/lib/metanorma/ribose_document/root.rb +10 -52
  161. data/lib/metanorma/ribose_document.rb +0 -2
  162. data/lib/metanorma/standard_document/annotation_container.rb +14 -0
  163. data/lib/metanorma/standard_document/block_attributes.rb +268 -0
  164. data/lib/metanorma/standard_document/blocks/passthrough.rb +1 -18
  165. data/lib/metanorma/standard_document/blocks/requirement_model.rb +18 -163
  166. data/lib/metanorma/standard_document/boilerplate.rb +14 -0
  167. data/lib/metanorma/standard_document/elements/add.rb +1 -17
  168. data/lib/metanorma/standard_document/elements/del.rb +1 -17
  169. data/lib/metanorma/standard_document/metadata/metanorma_extension.rb +16 -0
  170. data/lib/metanorma/standard_document/metadata.rb +2 -0
  171. data/lib/metanorma/standard_document/refs/reference_to_term.rb +2 -1
  172. data/lib/metanorma/standard_document/root_attributes.rb +78 -0
  173. data/lib/metanorma/standard_document/sections/abstract.rb +1 -3
  174. data/lib/metanorma/standard_document/sections/acknowledgements.rb +1 -3
  175. data/lib/metanorma/standard_document/sections/annex_section.rb +56 -19
  176. data/lib/metanorma/standard_document/sections/bibliography_section.rb +1 -2
  177. data/lib/metanorma/standard_document/sections/clause_section.rb +75 -13
  178. data/lib/metanorma/standard_document/sections/colophon.rb +16 -0
  179. data/lib/metanorma/standard_document/sections/definition_section.rb +43 -46
  180. data/lib/metanorma/standard_document/sections/floating_section_title.rb +23 -0
  181. data/lib/metanorma/standard_document/sections/foreword.rb +1 -3
  182. data/lib/metanorma/standard_document/sections/introduction.rb +1 -4
  183. data/lib/metanorma/standard_document/sections/misc_container.rb +5 -2
  184. data/lib/metanorma/standard_document/sections/preface.rb +36 -0
  185. data/lib/metanorma/standard_document/sections/sections.rb +40 -0
  186. data/lib/metanorma/standard_document/sections/standard_content_section.rb +26 -12
  187. data/lib/metanorma/standard_document/sections/terms_section.rb +45 -13
  188. data/lib/metanorma/standard_document/sections.rb +6 -2
  189. data/lib/metanorma/standard_document/terms/designation.rb +1 -1
  190. data/lib/metanorma/standard_document/terms/term_expression.rb +51 -0
  191. data/lib/metanorma/standard_document/terms.rb +1 -0
  192. data/lib/metanorma/standard_document.rb +10 -2
  193. data/lib/metanorma/un_document/metadata/un_bib_data_extension_type.rb +10 -0
  194. data/lib/metanorma/un_document/metadata/un_bibliographic_item.rb +15 -0
  195. data/lib/metanorma/un_document/metadata.rb +12 -0
  196. data/lib/metanorma/un_document/root.rb +29 -0
  197. data/lib/metanorma/un_document/sections/un_preface.rb +23 -0
  198. data/lib/metanorma/un_document/sections/un_sections.rb +24 -0
  199. data/lib/metanorma/un_document/sections.rb +10 -0
  200. data/lib/metanorma/un_document.rb +11 -0
  201. metadata +77 -3
  202. data/lib/metanorma/html/whitespace_patch.rb +0 -47
@@ -5,19 +5,31 @@ module Metanorma
5
5
  # Renders StandardDocument components to HTML.
6
6
  # Extends BaseRenderer with terms, bibliography, and standard sections.
7
7
  class StandardRenderer < BaseRenderer
8
- register_render Metanorma::StandardDocument::Root, :render_standard_document
8
+ register_render Metanorma::StandardDocument::Root,
9
+ :render_standard_document
9
10
  register_render Metanorma::StandardDocument::Terms::Term, :render_term
10
- register_render Metanorma::StandardDocument::Sections::TermsSection, :render_terms_section
11
- register_render Metanorma::StandardDocument::Sections::StandardReferencesSection, :render_references_section
12
- register_render Metanorma::StandardDocument::Sections::BibliographySection, :render_bibliography
13
- register_render Metanorma::StandardDocument::Sections::ClauseSection, :render_clause_section
14
- register_render Metanorma::StandardDocument::Sections::AnnexSection, :render_annex_section
15
- register_render Metanorma::StandardDocument::Sections::StandardSection, :render_standard_section
16
- register_render Metanorma::StandardDocument::Sections::Abstract, :render_abstract_section
17
- register_render Metanorma::StandardDocument::Sections::Foreword, :render_foreword_section
18
- register_render Metanorma::StandardDocument::Sections::Introduction, :render_introduction_section
19
- register_render Metanorma::StandardDocument::Sections::FloatingTitle, :render_floating_title
20
- register_render Metanorma::StandardDocument::Blocks::AmendBlock, :render_amend_block
11
+ register_render Metanorma::StandardDocument::Sections::TermsSection,
12
+ :render_terms_section
13
+ register_render Metanorma::StandardDocument::Sections::StandardReferencesSection,
14
+ :render_references_section
15
+ register_render Metanorma::StandardDocument::Sections::BibliographySection,
16
+ :render_bibliography
17
+ register_render Metanorma::StandardDocument::Sections::ClauseSection,
18
+ :render_clause_section
19
+ register_render Metanorma::StandardDocument::Sections::AnnexSection,
20
+ :render_annex_section
21
+ register_render Metanorma::StandardDocument::Sections::StandardSection,
22
+ :render_standard_section
23
+ register_render Metanorma::StandardDocument::Sections::Abstract,
24
+ :render_abstract_section
25
+ register_render Metanorma::StandardDocument::Sections::Foreword,
26
+ :render_foreword_section
27
+ register_render Metanorma::StandardDocument::Sections::Introduction,
28
+ :render_introduction_section
29
+ register_render Metanorma::StandardDocument::Sections::FloatingTitle,
30
+ :render_floating_title
31
+ register_render Metanorma::StandardDocument::Blocks::AmendBlock,
32
+ :render_amend_block
21
33
 
22
34
  # --- Top-level document rendering ---
23
35
 
@@ -48,9 +60,7 @@ module Metanorma
48
60
  end
49
61
 
50
62
  # Index section from indexsect element (presentation XML)
51
- if doc.is_a?(Metanorma::IsoDocument::Root) && doc.indexsect
52
- render(doc.indexsect)
53
- end
63
+ render(doc.indexsect) if doc.indexsect
54
64
 
55
65
  # Footnotes section
56
66
  render_footnotes_section
@@ -117,7 +127,8 @@ module Metanorma
117
127
 
118
128
  # --- Section rendering ---
119
129
 
120
- def render_section(section, level: 1, title_class: nil, with_subsections: false, with_terms: false)
130
+ def render_section(section, level: 1, title_class: nil,
131
+ with_subsections: false, with_terms: false)
121
132
  attrs = element_attrs(id: safe_attr(section, :id))
122
133
  tag("div", attrs) do
123
134
  if title_class
@@ -184,12 +195,22 @@ module Metanorma
184
195
 
185
196
  # Domain
186
197
  if term.domain
187
- domain_text = term.domain.is_a?(String) ? term.domain : safe_attr(term.domain, :text).to_s
198
+ domain_text = if term.domain.is_a?(String)
199
+ term.domain
200
+ else
201
+ safe_attr(
202
+ term.domain, :text
203
+ ).to_s
204
+ end
188
205
  @output << "<p class=\"term-domain\">&lt;#{escape_html(domain_text)}&gt;</p>" unless domain_text.to_s.empty?
189
206
  end
190
207
 
191
208
  # Definitions
192
- Array(term.definition).each { |defn| render_term_definition(defn) } if term.definition
209
+ if term.definition
210
+ Array(term.definition).each do |defn|
211
+ render_term_definition(defn)
212
+ end
213
+ end
193
214
 
194
215
  # Notes (mapped from <termnote>)
195
216
  term.note&.each_with_index do |note, i|
@@ -222,10 +243,10 @@ module Metanorma
222
243
  def extract_designation_name(designation)
223
244
  if designation.is_a?(Metanorma::StandardDocument::Terms::Designation) && designation.expression
224
245
  expr = designation.expression
225
- if expr.is_a?(Metanorma::IsoDocument::Terms::TermExpression) && expr.name
246
+ if expr.is_a?(Metanorma::StandardDocument::Terms::TermExpression) && expr.name
226
247
  Array(expr.name).join
227
248
  end
228
- elsif designation.is_a?(Metanorma::IsoDocument::Terms::TermExpression) && designation.name
249
+ elsif designation.is_a?(Metanorma::StandardDocument::Terms::TermExpression) && designation.name
229
250
  Array(designation.name).join
230
251
  else
231
252
  extract_text_value(designation)
@@ -313,7 +334,9 @@ module Metanorma
313
334
 
314
335
  def render_bibliography(bib, level: 1, **_opts)
315
336
  tag("div", "") do
316
- bib.references&.each { |ref| render_references_section(ref, level: level) }
337
+ bib.references&.each do |ref|
338
+ render_references_section(ref, level: level)
339
+ end
317
340
  bib.clause&.each { |cl| render(cl, level: level) }
318
341
  end
319
342
  end
@@ -322,10 +345,13 @@ module Metanorma
322
345
  is_normative = safe_attr(section, :normative) == "true"
323
346
  attrs = element_attrs(id: safe_attr(section, :id))
324
347
  tag("div", attrs) do
325
- render_standard_title(section, level, default_class: is_normative ? "" : "section-sub")
348
+ render_standard_title(section, level,
349
+ default_class: is_normative ? "" : "section-sub")
326
350
  section.p&.each { |para| render_paragraph(para) }
327
351
  section.note&.each { |note| render_paragraph(note) }
328
- section.references&.each_with_index { |bibitem, i| render_bibitem(bibitem, i + 1, normative: is_normative) }
352
+ section.references&.each_with_index do |bibitem, i|
353
+ render_bibitem(bibitem, i + 1, normative: is_normative)
354
+ end
329
355
  section.table&.each { |t| render_table(t) }
330
356
  end
331
357
  end
@@ -365,7 +391,9 @@ module Metanorma
365
391
  return preferred.content.to_s if preferred && !preferred.content.to_s.empty?
366
392
 
367
393
  # Fallback: first non-RSS link
368
- non_rss = links.find { |l| !l.content.to_s.include?(".rss") && !l.content.to_s.empty? }
394
+ non_rss = links.find do |l|
395
+ !l.content.to_s.include?(".rss") && !l.content.to_s.empty?
396
+ end
369
397
  non_rss&.content&.to_s
370
398
  end
371
399
 
@@ -403,7 +431,9 @@ module Metanorma
403
431
 
404
432
  if item.title && !item.title.empty?
405
433
  titles = Array(item.title)
406
- main_title = titles.find { |t| safe_attr(t, :type) == "main" } || titles.first
434
+ main_title = titles.find do |t|
435
+ safe_attr(t, :type) == "main"
436
+ end || titles.first
407
437
  if main_title
408
438
  @output << ", <i>"
409
439
  render_mixed_inline(main_title)
@@ -415,7 +445,8 @@ module Metanorma
415
445
  # --- Standard section helpers ---
416
446
 
417
447
  def render_standard_title(section, level, default_class: "")
418
- title_element = safe_attr(section, :fmt_title) || safe_attr(section, :title)
448
+ title_element = safe_attr(section,
449
+ :fmt_title) || safe_attr(section, :title)
419
450
  return unless title_element
420
451
 
421
452
  section_id = safe_attr(section, :id)
@@ -457,14 +488,16 @@ module Metanorma
457
488
  end
458
489
 
459
490
  # Block elements
460
- %i[tables figures formulas examples notes admonitions sourcecode_blocks quote_blocks].each do |attr|
491
+ %i[tables figures formulas examples notes admonitions sourcecode_blocks
492
+ quote_blocks].each do |attr|
461
493
  values = safe_attr(section, attr)
462
494
  Array(values).each { |v| render(v, level: level + 1) } if values
463
495
  end
464
496
  end
465
497
 
466
498
  def render_subsections(section, level)
467
- clauses = safe_attr(section, :clause) || safe_attr(section, :subsections)
499
+ clauses = safe_attr(section,
500
+ :clause) || safe_attr(section, :subsections)
468
501
  Array(clauses).each { |cl| render(cl, level: level + 1) } if clauses
469
502
  end
470
503
 
@@ -82,7 +82,7 @@ module Metanorma
82
82
  @example_bg = "rgba(232, 248, 245, 0.6)"
83
83
  @example_border = "#0d9488"
84
84
  @admonition_color = "#b8860b"
85
- @admonition_bg = "rgba(255, 252, 245, 0.8)"
85
+ @admonition_bg = "rgba(255, 252, 245, 0.8)"
86
86
  @admonition_border = "#e8a820"
87
87
  @footer_border_color = nil
88
88
  @cover_separator_color = nil
@@ -92,7 +92,7 @@ module Metanorma
92
92
  @cover_after_bg = nil
93
93
  @cover_before_bg = nil
94
94
  @progress_bar_color = nil
95
- @extra_css = nil
95
+ @extra_css = nil
96
96
 
97
97
  # Dark mode defaults
98
98
  @dark_bg = "#0f1118"
@@ -1,9 +1,56 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/html/whitespace_patch"
3
+ require "liquid"
4
+ require "nokogiri"
4
5
 
5
6
  module Metanorma
6
7
  module Html
8
+ unless defined?(TEMPLATES_ROOT)
9
+ TEMPLATES_ROOT = File.join(__dir__, "html", "templates")
10
+
11
+ Liquid::Environment.default.file_system = Liquid::LocalFileSystem.new(
12
+ TEMPLATES_ROOT, "_%s.html.liquid"
13
+ )
14
+
15
+ Moxml::Adapter::Nokogiri.class_eval do
16
+ class << self
17
+ alias_method :_original_children_patched, :children
18
+ remove_method :children
19
+ end
20
+
21
+ def self.children(node)
22
+ node.children.to_a
23
+ end
24
+ end
25
+
26
+ Lutaml::Xml::XmlElement.class_eval do
27
+ remove_method :order
28
+
29
+ def order
30
+ return @order_cache if @order_cache
31
+
32
+ @order_cache = children.filter_map do |child|
33
+ if child.text?
34
+ Lutaml::Xml::Element.new("Text", "text",
35
+ text_content: child.text,
36
+ node_type: :text)
37
+ elsif child.cdata?
38
+ Lutaml::Xml::Element.new("Text", "#cdata-section",
39
+ text_content: child.text,
40
+ node_type: :cdata)
41
+ elsif child.comment?
42
+ nil
43
+ else
44
+ Lutaml::Xml::Element.new("Element", child.unprefixed_name,
45
+ node_type: :element,
46
+ namespace_uri: child.namespace_uri,
47
+ namespace_prefix: child.namespace_prefix)
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+
7
54
  autoload :BaseRenderer, "metanorma/html/base_renderer"
8
55
  autoload :Generator, "metanorma/html/generator"
9
56
  autoload :Theme, "metanorma/html/theme"
@@ -1,65 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/standard_document"
4
- require "metanorma/iso_document"
5
-
6
3
  module Metanorma
7
4
  module IecDocument
8
- class Root < Metanorma::StandardDocument::Root
9
- attribute :version, :string
10
- attribute :type, :string
11
- attribute :schema_version, :string
12
- attribute :flavor, :string
5
+ class Root < Lutaml::Model::Serializable
6
+ include Metanorma::StandardDocument::RootAttributes
7
+
8
+ def self.lutaml_default_register
9
+ :iec_document
10
+ end
13
11
 
14
12
  attribute :bibdata,
15
13
  Metanorma::IsoDocument::Metadata::IsoBibliographicItem
16
-
17
- attribute :term_sources,
18
- Metanorma::Document::Components::ReferenceElements::Citation,
19
- collection: true
20
-
21
14
  attribute :preface, Metanorma::IsoDocument::Sections::IsoPreface
22
15
  attribute :sections, Metanorma::IsoDocument::Sections::IsoSections
23
16
  attribute :annex, Metanorma::IsoDocument::Sections::IsoAnnexSection,
24
17
  collection: true
25
- attribute :bibliography,
26
- Metanorma::StandardDocument::Sections::BibliographySection
27
- attribute :boilerplate, Metanorma::IsoDocument::Boilerplate
28
- attribute :metanorma_extension,
29
- Metanorma::IsoDocument::Metadata::MetanormaExtension
30
- attribute :annotation_container, Metanorma::IsoDocument::AnnotationContainer
31
- attribute :indexsect,
32
- Metanorma::Document::Components::Sections::BasicSection
33
- attribute :autonum, :string
34
- attribute :fmt_xref_label, :string
35
- attribute :localized_strings,
36
- Metanorma::Document::Components::Inline::LocalizedStringsElement
37
- attribute :fmt_footnote_container,
38
- Metanorma::Document::Components::Inline::FmtFootnoteContainerElement
39
- attribute :colophon, Metanorma::IsoDocument::Sections::Colophon
40
18
 
41
19
  xml do
42
20
  element "metanorma"
43
21
  namespace Metanorma::StandardDocument::Namespace
44
- map_attribute "type", to: :type
45
- map_attribute "version", to: :version
46
- map_attribute "schema-version", to: :schema_version
47
- map_attribute "flavor", to: :flavor
48
- map_element "bibdata", to: :bibdata
49
- map_element "termdocsource", to: :term_sources
50
- map_element "metanorma-extension", to: :metanorma_extension
51
- map_element "boilerplate", to: :boilerplate
52
- map_element "preface", to: :preface
53
- map_element "sections", to: :sections
54
- map_element "annex", to: :annex
55
- map_element "bibliography", to: :bibliography
56
- map_element "annotation-container", to: :annotation_container
57
- map_element "indexsect", to: :indexsect
58
- map_element "localized-strings", to: :localized_strings
59
- map_element "fmt-footnote-container", to: :fmt_footnote_container
60
- map_element "colophon", to: :colophon
61
- map_attribute "autonum", to: :autonum
62
- map_attribute "fmt-xref-label", to: :fmt_xref_label
22
+
23
+ Metanorma::StandardDocument::RootXmlMapping.apply(self)
63
24
  end
64
25
  end
65
26
  end
@@ -1,10 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/standard_document"
4
- require "metanorma/iso_document"
5
-
6
3
  module Metanorma
7
4
  module IecDocument
8
5
  autoload :Root, "metanorma/iec_document/root"
9
6
  end
10
7
  end
8
+
9
+ Metanorma::Registers::Setup.setup_iec_register
@@ -1,64 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/standard_document"
4
- require "metanorma/iso_document"
5
-
6
3
  module Metanorma
7
4
  module IeeeDocument
8
- class Root < Metanorma::StandardDocument::Root
9
- attribute :version, :string
10
- attribute :type, :string
11
- attribute :schema_version, :string
12
- attribute :flavor, :string
13
-
14
- attribute :bibdata, Metadata::IeeeBibliographicItem
5
+ class Root < Lutaml::Model::Serializable
6
+ include Metanorma::StandardDocument::RootAttributes
15
7
 
16
- attribute :term_sources,
17
- Metanorma::Document::Components::ReferenceElements::Citation,
18
- collection: true
8
+ def self.lutaml_default_register
9
+ :ieee_document
10
+ end
19
11
 
20
- attribute :preface, Metanorma::IsoDocument::Sections::IsoPreface
21
- attribute :sections, Metanorma::IsoDocument::Sections::IsoSections
22
- attribute :annex, Metanorma::IsoDocument::Sections::IsoAnnexSection,
12
+ attribute :bibdata, Metadata::IeeeBibliographicItem
13
+ attribute :preface,
14
+ Metanorma::StandardDocument::Sections::Preface
15
+ attribute :sections,
16
+ IeeeDocument::Sections::IeeeSections
17
+ attribute :annex,
18
+ Metanorma::StandardDocument::Sections::AnnexSection,
23
19
  collection: true
24
- attribute :bibliography,
25
- Metanorma::StandardDocument::Sections::BibliographySection
26
- attribute :boilerplate, Metanorma::IsoDocument::Boilerplate
27
- attribute :metanorma_extension,
28
- Metanorma::IsoDocument::Metadata::MetanormaExtension
29
- attribute :annotation_container, Metanorma::IsoDocument::AnnotationContainer
30
- attribute :indexsect,
31
- Metanorma::Document::Components::Sections::BasicSection
32
- attribute :autonum, :string
33
- attribute :fmt_xref_label, :string
34
- attribute :localized_strings,
35
- Metanorma::Document::Components::Inline::LocalizedStringsElement
36
- attribute :fmt_footnote_container,
37
- Metanorma::Document::Components::Inline::FmtFootnoteContainerElement
38
- attribute :colophon, Metanorma::IsoDocument::Sections::Colophon
39
20
 
40
21
  xml do
41
22
  element "metanorma"
42
23
  namespace Metanorma::StandardDocument::Namespace
43
- map_attribute "type", to: :type
44
- map_attribute "version", to: :version
45
- map_attribute "schema-version", to: :schema_version
46
- map_attribute "flavor", to: :flavor
47
- map_element "bibdata", to: :bibdata
48
- map_element "termdocsource", to: :term_sources
49
- map_element "metanorma-extension", to: :metanorma_extension
50
- map_element "boilerplate", to: :boilerplate
51
- map_element "preface", to: :preface
52
- map_element "sections", to: :sections
53
- map_element "annex", to: :annex
54
- map_element "bibliography", to: :bibliography
55
- map_element "annotation-container", to: :annotation_container
56
- map_element "indexsect", to: :indexsect
57
- map_element "localized-strings", to: :localized_strings
58
- map_element "fmt-footnote-container", to: :fmt_footnote_container
59
- map_element "colophon", to: :colophon
60
- map_attribute "autonum", to: :autonum
61
- map_attribute "fmt-xref-label", to: :fmt_xref_label
24
+
25
+ Metanorma::StandardDocument::RootXmlMapping.apply(self)
62
26
  end
63
27
  end
64
28
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IeeeDocument
5
+ module Sections
6
+ # IEEE sections container.
7
+ # Corresponds to ieee.rnc:
8
+ # sections = element sections {
9
+ # note?,
10
+ # ( clause | terms | term-clause | definitions | floating-title )+
11
+ # }
12
+ #
13
+ # Differs from isodoc default by adding an optional leading note.
14
+ class IeeeSections < Metanorma::StandardDocument::Sections::Sections
15
+ attribute :note,
16
+ Metanorma::Document::Components::Blocks::NoteBlock
17
+
18
+ xml do
19
+ element "sections"
20
+ ordered
21
+
22
+ map_element "note", to: :note
23
+
24
+ Metanorma::StandardDocument::SectionXmlMapping.apply_sections_elements(self)
25
+
26
+ Metanorma::StandardDocument::SectionXmlMapping.apply_sections_attributes(self)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IeeeDocument
5
+ module Sections
6
+ autoload :IeeeSections, "#{__dir__}/sections/ieee_sections"
7
+ end
8
+ end
9
+ end
@@ -1,11 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/standard_document"
4
- require "metanorma/iso_document"
5
-
6
3
  module Metanorma
7
4
  module IeeeDocument
8
5
  autoload :Metadata, "metanorma/ieee_document/metadata"
9
6
  autoload :Root, "metanorma/ieee_document/root"
7
+ autoload :Sections, "metanorma/ieee_document/sections"
10
8
  end
11
9
  end
10
+
11
+ Metanorma::Registers::Setup.setup_ieee_register
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "lutaml/model"
4
-
5
3
  module Metanorma
6
4
  module IetfDocument
7
5
  module Metadata
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/document"
4
-
5
3
  module Metanorma
6
4
  module IetfDocument
7
5
  module Metadata
@@ -1,65 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/standard_document"
4
- require "metanorma/iso_document"
5
- require_relative "metadata"
6
- require_relative "sections"
7
-
8
3
  module Metanorma
9
4
  module IetfDocument
10
- class Root < Metanorma::StandardDocument::Root
11
- attribute :version, :string
12
- attribute :type, :string
13
- attribute :schema_version, :string
14
- attribute :flavor, :string
5
+ class Root < Lutaml::Model::Serializable
6
+ include Metanorma::StandardDocument::RootAttributes
7
+
8
+ def self.lutaml_default_register
9
+ :ietf_document
10
+ end
15
11
 
16
12
  attribute :bibdata,
17
13
  Metanorma::IetfDocument::Metadata::IetfBibliographicItem
18
-
19
- attribute :term_sources,
20
- Metanorma::Document::Components::ReferenceElements::Citation,
14
+ attribute :preface,
15
+ Metanorma::StandardDocument::Sections::Preface
16
+ attribute :sections,
17
+ Metanorma::IetfDocument::Sections::IetfSections
18
+ attribute :annex,
19
+ Metanorma::IetfDocument::Sections::IetfAnnexSection,
21
20
  collection: true
22
21
 
23
- attribute :preface, Metanorma::IsoDocument::Sections::IsoPreface
24
- attribute :sections, Metanorma::IetfDocument::Sections::IetfSections
25
- attribute :annex, Metanorma::IsoDocument::Sections::IsoAnnexSection,
26
- collection: true
27
- attribute :bibliography,
28
- Metanorma::StandardDocument::Sections::BibliographySection
29
- attribute :boilerplate, Metanorma::IsoDocument::Boilerplate
30
- attribute :metanorma_extension,
31
- Metanorma::IsoDocument::Metadata::MetanormaExtension
32
- attribute :annotation_container, Metanorma::IsoDocument::AnnotationContainer
33
- attribute :indexsect,
34
- Metanorma::Document::Components::Sections::BasicSection
35
- attribute :localized_strings,
36
- Metanorma::Document::Components::Inline::LocalizedStringsElement
37
- attribute :fmt_footnote_container,
38
- Metanorma::Document::Components::Inline::FmtFootnoteContainerElement
39
- attribute :colophon, Metanorma::IsoDocument::Sections::Colophon
40
-
41
22
  xml do
42
23
  element "metanorma"
43
24
  namespace Metanorma::StandardDocument::Namespace
44
- map_attribute "type", to: :type
45
- map_attribute "version", to: :version
46
- map_attribute "schema-version", to: :schema_version
47
- map_attribute "flavor", to: :flavor
48
- map_element "bibdata", to: :bibdata
49
- map_element "termdocsource", to: :term_sources
50
- map_element "metanorma-extension", to: :metanorma_extension
51
- map_element "boilerplate", to: :boilerplate
52
- map_element "preface", to: :preface
53
- map_element "sections", to: :sections
54
- map_element "annex", to: :annex
55
- map_element "bibliography", to: :bibliography
56
- map_element "annotation-container", to: :annotation_container
57
- map_element "indexsect", to: :indexsect
58
- map_element "localized-strings", to: :localized_strings
59
- map_element "fmt-footnote-container", to: :fmt_footnote_container
60
- map_element "colophon", to: :colophon
61
- map_attribute "autonum", to: :autonum
62
- map_attribute "fmt-xref-label", to: :fmt_xref_label
25
+
26
+ Metanorma::StandardDocument::RootXmlMapping.apply(self)
63
27
  end
64
28
  end
65
29
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IetfDocument
5
+ module Sections
6
+ class IetfAnnexSection < Metanorma::StandardDocument::Sections::AnnexSection
7
+ # IETF-specific attributes
8
+ attribute :numbered, :string
9
+ attribute :remove_in_rfc, :string
10
+
11
+ # Sub-clauses within IETF annex use IetfClauseSection
12
+ attribute :clause, IetfClauseSection, collection: true
13
+
14
+ xml do
15
+ element "annex"
16
+ ordered
17
+
18
+ Metanorma::StandardDocument::SectionXmlMapping.apply_annex_attributes(self)
19
+ map_attribute "numbered", to: :numbered
20
+ map_attribute "removeInRFC", to: :remove_in_rfc
21
+ Metanorma::StandardDocument::SectionXmlMapping.apply_annex_elements(self)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IetfDocument
5
+ module Sections
6
+ class IetfClauseSection < Metanorma::StandardDocument::Sections::ClauseSection
7
+ # IETF-specific attributes
8
+ attribute :numbered, :string
9
+ attribute :remove_in_rfc, :string
10
+
11
+ # Recursive IETF sub-clauses
12
+ attribute :clause, IetfClauseSection, collection: true
13
+
14
+ xml do
15
+ element "clause"
16
+ ordered
17
+
18
+ Metanorma::StandardDocument::SectionXmlMapping.apply_clause_attributes(self)
19
+ map_attribute "numbered", to: :numbered
20
+ map_attribute "removeInRFC", to: :remove_in_rfc
21
+ Metanorma::StandardDocument::SectionXmlMapping.apply_clause_elements(self)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IetfDocument
5
+ module Sections
6
+ class IetfContentSection < Metanorma::StandardDocument::Sections::ContentSection
7
+ attribute :numbered, :string
8
+ attribute :remove_in_rfc, :string
9
+
10
+ # Recursive IETF sub-clauses
11
+ attribute :subsection, IetfContentSection, collection: true
12
+
13
+ xml do
14
+ element "clause"
15
+ ordered
16
+
17
+ Metanorma::StandardDocument::SectionXmlMapping.apply_content_section_attributes(self)
18
+ map_attribute "numbered", to: :numbered
19
+ map_attribute "removeInRFC", to: :remove_in_rfc
20
+ Metanorma::StandardDocument::SectionXmlMapping.apply_content_section_elements(self)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end