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
@@ -3,14 +3,9 @@
3
3
  require "liquid"
4
4
  require "nokogiri"
5
5
  require "cgi"
6
- require_relative "drops/footnote_drop"
7
6
 
8
7
  module Metanorma
9
8
  module Html
10
- TEMPLATES_ROOT = File.join(__dir__, "templates")
11
-
12
- Liquid::Environment.default.file_system = Liquid::LocalFileSystem.new(TEMPLATES_ROOT, "_%s.html.liquid")
13
-
14
9
  # Renders BasicDocument components to HTML.
15
10
  # Subclassed by StandardRenderer and flavor-specific renderers.
16
11
  # Owns the full HTML document generation pipeline: body content, header,
@@ -94,7 +89,7 @@ module Metanorma
94
89
  render_definition_list render_sourcecode render_table
95
90
  render_figure render_quote render_formula render_note
96
91
  render_image render_stem_content register_figure_entry
97
- render_liquid
92
+ render_liquid render_block_children
98
93
  ].freeze
99
94
 
100
95
  def initialize(renderer)
@@ -107,9 +102,9 @@ module Metanorma
107
102
 
108
103
  private
109
104
 
110
- def method_missing(method_name, *args, **kwargs, &block)
105
+ def method_missing(method_name, ...)
111
106
  if DELEGATED_METHODS.include?(method_name)
112
- @renderer.public_send(method_name, *args, **kwargs, &block)
107
+ @renderer.public_send(method_name, ...)
113
108
  else
114
109
  super
115
110
  end
@@ -249,7 +244,8 @@ module Metanorma
249
244
  svg = svg.sub(/<path[^>]*style="fill:#e3000f[^"]*"[^>]*\/>/, "")
250
245
  svg = svg.sub(/<svg\s/, '<svg class="header-logo" ')
251
246
  svg = if svg.match?(/<svg[^>]*\sheight="[^"]*"/)
252
- svg.sub(/(<svg[^>]*?)(\sheight="[^"]*")/, "\\1 height=\"#{height}\"")
247
+ svg.sub(/(<svg[^>]*?)(\sheight="[^"]*")/,
248
+ "\\1 height=\"#{height}\"")
253
249
  else
254
250
  svg.sub(/(<svg\b)/, "\\1 height=\"#{height}\"")
255
251
  end
@@ -325,23 +321,18 @@ module Metanorma
325
321
  end
326
322
 
327
323
  if node.is_a?(Lutaml::Model::Serializable)
328
- return true if begin
329
- node.fmt_title
330
- rescue StandardError
331
- nil
324
+ node_attrs = node.class.attributes
325
+ if node_attrs.key?(:fmt_title) && node.fmt_title
326
+ return true
332
327
  end
333
- return true if begin
334
- node.displayorder
335
- rescue StandardError
336
- nil
328
+ if node_attrs.key?(:displayorder) && node.displayorder
329
+ return true
337
330
  end
338
331
 
339
332
  %i[preface sections annex bibliography].each do |attr|
340
- val = begin
341
- node.public_send(attr)
342
- rescue StandardError
343
- nil
344
- end
333
+ next unless node_attrs.key?(attr)
334
+
335
+ val = node.public_send(attr)
345
336
  next unless val
346
337
 
347
338
  Array(val).each { |v| return true if check_presentation_markers(v) }
@@ -494,78 +485,148 @@ module Metanorma
494
485
 
495
486
  # --- Type registrations (class-level, evaluated at class load time) ---
496
487
 
497
- register_render Metanorma::Document::Components::Paragraphs::ParagraphBlock, :render_paragraph
498
- register_render Metanorma::Document::Components::Tables::TableBlock, :render_table
499
- register_render Metanorma::Document::Components::Lists::UnorderedList, :render_unordered_list
500
- register_render Metanorma::Document::Components::Lists::OrderedList, :render_ordered_list
501
- register_render Metanorma::Document::Components::Lists::DefinitionList, :render_definition_list
502
- register_render Metanorma::Document::Components::AncillaryBlocks::FigureBlock, :render_figure
503
- register_render Metanorma::Document::Components::Blocks::NoteBlock, :render_note
504
- register_render Metanorma::Document::Components::AncillaryBlocks::ExampleBlock, :render_example
505
- register_render Metanorma::Document::Components::AncillaryBlocks::SourcecodeBlock, :render_sourcecode
506
- register_render Metanorma::Document::Components::AncillaryBlocks::FormulaBlock, :render_formula
507
- register_render Metanorma::Document::Components::MultiParagraph::QuoteBlock, :render_quote
508
- register_render Metanorma::Document::Components::MultiParagraph::AdmonitionBlock, :render_admonition
509
- register_render Metanorma::Document::Components::Sections::HierarchicalSection, :render_hierarchical_section
510
- register_render Metanorma::Document::Components::Sections::BasicSection, :render_basic_section
511
- register_render Metanorma::Document::Components::Sections::ContentSection, :render_content_section
512
- register_render Metanorma::Document::Components::EmptyElements::PageBreakElement, :render_noop
513
- register_render Metanorma::Document::Components::IdElements::Bookmark, :render_bookmark
514
- register_render Metanorma::Document::Components::Inline::SemxElement, :render_semx_content
515
-
516
- register_inline_render Metanorma::Document::Components::Inline::EmRawElement, :render_em
517
- register_inline_render Metanorma::Document::Components::Inline::StrongRawElement, :render_strong
518
- register_inline_render Metanorma::Document::Components::Inline::TtElement, :render_tt
519
- register_inline_render Metanorma::Document::Components::Inline::SubElement, :render_sub
520
- register_inline_render Metanorma::Document::Components::Inline::SupElement, :render_sup
521
- register_inline_render Metanorma::Document::Components::Inline::SmallCapElement, :render_small_caps
522
- register_inline_render Metanorma::Document::Components::TextElements::UnderlineElement, :render_underline
523
- register_inline_render Metanorma::Document::Components::TextElements::StrikeElement, :render_strike
524
- register_inline_render Metanorma::Document::Components::Inline::BrElement, :render_br
525
- register_inline_render Metanorma::Document::Components::Inline::TabElement, :render_tab
526
- register_inline_render Metanorma::Document::Components::Inline::LinkElement, :render_link
527
- register_inline_render Metanorma::Document::Components::Inline::XrefElement, :render_noop_inline
528
- register_inline_render Metanorma::Document::Components::Inline::ErefElement, :render_noop_inline
529
- register_inline_render Metanorma::Document::Components::Inline::SpanElement, :render_span
530
- register_inline_render Metanorma::Document::Components::Inline::FnElement, :render_fn_inline
531
- register_inline_render Metanorma::Document::Components::Inline::ConceptElement, :render_concept
532
- register_inline_render Metanorma::Document::Components::Inline::StemInlineElement, :render_noop_inline
533
- register_inline_render Metanorma::Document::Components::TextElements::StemElement, :render_stem
534
- register_inline_render Metanorma::Document::Components::Inline::SemxElement, :render_semx_inline
535
- register_inline_render Metanorma::Document::Components::Inline::FmtXrefElement, :render_fmt_xref
536
- register_inline_render Metanorma::Document::Components::Inline::FmtStemElement, :render_fmt_stem
537
- register_inline_render Metanorma::Document::Components::Inline::CommaElement, :render_comma
538
- register_inline_render Metanorma::Document::Components::Inline::EnumCommaElement, :render_comma
539
- register_inline_render Metanorma::Document::Components::IdElements::Bookmark, :render_bookmark
540
- register_inline_render Metanorma::Document::Components::IdElements::Image, :render_image
541
- register_inline_render Metanorma::Document::Components::Inline::MathElement, :render_math
542
- register_inline_render Metanorma::Document::Components::Inline::AsciimathElement, :render_asciimath
543
- register_inline_render Metanorma::Document::Components::EmptyElements::IndexElement, :render_index
544
- register_inline_render Metanorma::Document::Components::ReferenceElements::IndexXrefElement, :render_index
545
- register_inline_render Metanorma::Document::Components::Blocks::NoteBlock, :render_note_inline
488
+ register_render Metanorma::Document::Components::Paragraphs::ParagraphBlock,
489
+ :render_paragraph
490
+ register_render Metanorma::Document::Components::Tables::TableBlock,
491
+ :render_table
492
+ register_render Metanorma::Document::Components::Lists::UnorderedList,
493
+ :render_unordered_list
494
+ register_render Metanorma::Document::Components::Lists::OrderedList,
495
+ :render_ordered_list
496
+ register_render Metanorma::Document::Components::Lists::DefinitionList,
497
+ :render_definition_list
498
+ register_render Metanorma::Document::Components::AncillaryBlocks::FigureBlock,
499
+ :render_figure
500
+ register_render Metanorma::Document::Components::Blocks::NoteBlock,
501
+ :render_note
502
+ register_render Metanorma::Document::Components::AncillaryBlocks::ExampleBlock,
503
+ :render_example
504
+ register_render Metanorma::Document::Components::AncillaryBlocks::SourcecodeBlock,
505
+ :render_sourcecode
506
+ register_render Metanorma::Document::Components::AncillaryBlocks::FormulaBlock,
507
+ :render_formula
508
+ register_render Metanorma::Document::Components::MultiParagraph::QuoteBlock,
509
+ :render_quote
510
+ register_render Metanorma::Document::Components::MultiParagraph::AdmonitionBlock,
511
+ :render_admonition
512
+ register_render Metanorma::Document::Components::Sections::HierarchicalSection,
513
+ :render_hierarchical_section
514
+ register_render Metanorma::Document::Components::Sections::BasicSection,
515
+ :render_basic_section
516
+ register_render Metanorma::Document::Components::Sections::ContentSection,
517
+ :render_content_section
518
+ register_render Metanorma::Document::Components::EmptyElements::PageBreakElement,
519
+ :render_noop
520
+ register_render Metanorma::Document::Components::IdElements::Bookmark,
521
+ :render_bookmark
522
+ register_render Metanorma::Document::Components::Inline::SemxElement,
523
+ :render_semx_content
524
+
525
+ register_inline_render Metanorma::Document::Components::Inline::EmRawElement,
526
+ :render_em
527
+ register_inline_render Metanorma::Document::Components::Inline::StrongRawElement,
528
+ :render_strong
529
+ register_inline_render Metanorma::Document::Components::Inline::TtElement,
530
+ :render_tt
531
+ register_inline_render Metanorma::Document::Components::Inline::SubElement,
532
+ :render_sub
533
+ register_inline_render Metanorma::Document::Components::Inline::SupElement,
534
+ :render_sup
535
+ register_inline_render Metanorma::Document::Components::Inline::SmallCapElement,
536
+ :render_small_caps
537
+ register_inline_render Metanorma::Document::Components::TextElements::UnderlineElement,
538
+ :render_underline
539
+ register_inline_render Metanorma::Document::Components::TextElements::StrikeElement,
540
+ :render_strike
541
+ register_inline_render Metanorma::Document::Components::Inline::BrElement,
542
+ :render_br
543
+ register_inline_render Metanorma::Document::Components::Inline::TabElement,
544
+ :render_tab
545
+ register_inline_render Metanorma::Document::Components::Inline::LinkElement,
546
+ :render_link
547
+ register_inline_render Metanorma::Document::Components::Inline::XrefElement,
548
+ :render_noop_inline
549
+ register_inline_render Metanorma::Document::Components::Inline::ErefElement,
550
+ :render_noop_inline
551
+ register_inline_render Metanorma::Document::Components::Inline::SpanElement,
552
+ :render_span
553
+ register_inline_render Metanorma::Document::Components::Inline::FnElement,
554
+ :render_fn_inline
555
+ register_inline_render Metanorma::Document::Components::Inline::ConceptElement,
556
+ :render_concept
557
+ register_inline_render Metanorma::Document::Components::Inline::StemInlineElement,
558
+ :render_noop_inline
559
+ register_inline_render Metanorma::Document::Components::TextElements::StemElement,
560
+ :render_stem
561
+ register_inline_render Metanorma::Document::Components::Inline::SemxElement,
562
+ :render_semx_inline
563
+ register_inline_render Metanorma::Document::Components::Inline::FmtXrefElement,
564
+ :render_fmt_xref
565
+ register_inline_render Metanorma::Document::Components::Inline::FmtStemElement,
566
+ :render_fmt_stem
567
+ register_inline_render Metanorma::Document::Components::Inline::CommaElement,
568
+ :render_comma
569
+ register_inline_render Metanorma::Document::Components::Inline::EnumCommaElement,
570
+ :render_comma
571
+ register_inline_render Metanorma::Document::Components::IdElements::Bookmark,
572
+ :render_bookmark
573
+ register_inline_render Metanorma::Document::Components::IdElements::Image,
574
+ :render_image
575
+ register_inline_render Metanorma::Document::Components::Inline::MathElement,
576
+ :render_math
577
+ register_inline_render Metanorma::Document::Components::Inline::AsciimathElement,
578
+ :render_asciimath
579
+ register_inline_render Metanorma::Document::Components::EmptyElements::IndexElement,
580
+ :render_index
581
+ register_inline_render Metanorma::Document::Components::ReferenceElements::IndexXrefElement,
582
+ :render_index
583
+ register_inline_render Metanorma::Document::Components::Blocks::NoteBlock,
584
+ :render_note_inline
546
585
  # All Fmt* elements delegate to render_mixed_inline
547
- register_inline_render Metanorma::Document::Components::Inline::FmtNameElement, :render_mixed_inline
548
- register_inline_render Metanorma::Document::Components::Inline::FmtTitleElement, :render_mixed_inline
549
- register_inline_render Metanorma::Document::Components::Inline::FmtXrefLabelElement, :render_mixed_inline
550
- register_inline_render Metanorma::Document::Components::Inline::FmtFnLabelElement, :render_mixed_inline
551
- register_inline_render Metanorma::Document::Components::Inline::FmtConceptElement, :render_mixed_inline
552
- register_inline_render Metanorma::Document::Components::Inline::FmtAnnotationStartElement, :render_mixed_inline
553
- register_inline_render Metanorma::Document::Components::Inline::FmtAnnotationEndElement, :render_mixed_inline
554
- register_inline_render Metanorma::Document::Components::Inline::FmtAnnotationBodyElement, :render_mixed_inline
555
- register_inline_render Metanorma::Document::Components::Inline::VariantTitleElement, :render_mixed_inline
556
- register_inline_render Metanorma::Document::Components::Inline::LocalizedStringElement, :render_mixed_inline
557
- register_inline_render Metanorma::Document::Components::Inline::TitleWithAnnotationElement, :render_mixed_inline
558
- register_inline_render Metanorma::Document::Components::Inline::BiblioTagElement, :render_mixed_inline
559
- register_inline_render Metanorma::Document::Components::Inline::NameWithIdElement, :render_mixed_inline
560
- register_inline_render Metanorma::Document::Components::Inline::DisplayTextElement, :render_mixed_inline
561
- register_inline_render Metanorma::Document::Components::Inline::FmtFootnoteContainerElement, :render_mixed_inline
562
- register_inline_render Metanorma::Document::Components::Inline::FmtFnBodyElement, :render_mixed_inline
563
- register_inline_render Metanorma::Document::Components::Inline::FmtPreferredElement, :render_mixed_inline
564
- register_inline_render Metanorma::Document::Components::Inline::FmtDefinitionElement, :render_mixed_inline
565
- register_inline_render Metanorma::Document::Components::Inline::FmtTermsourceElement, :render_mixed_inline
566
- register_inline_render Metanorma::Document::Components::Inline::FmtAdmittedElement, :render_mixed_inline
567
- register_inline_render Metanorma::Document::Components::Inline::FmtIdentifierElement, :render_mixed_inline
568
- register_inline_render Metanorma::Document::Components::Inline::FmtSourcecodeElement, :render_mixed_inline
586
+ register_inline_render Metanorma::Document::Components::Inline::FmtNameElement,
587
+ :render_mixed_inline
588
+ register_inline_render Metanorma::Document::Components::Inline::FmtTitleElement,
589
+ :render_mixed_inline
590
+ register_inline_render Metanorma::Document::Components::Inline::FmtXrefLabelElement,
591
+ :render_mixed_inline
592
+ register_inline_render Metanorma::Document::Components::Inline::FmtFnLabelElement,
593
+ :render_mixed_inline
594
+ register_inline_render Metanorma::Document::Components::Inline::FmtConceptElement,
595
+ :render_mixed_inline
596
+ register_inline_render Metanorma::Document::Components::Inline::FmtAnnotationStartElement,
597
+ :render_mixed_inline
598
+ register_inline_render Metanorma::Document::Components::Inline::FmtAnnotationEndElement,
599
+ :render_mixed_inline
600
+ register_inline_render Metanorma::Document::Components::Inline::FmtAnnotationBodyElement,
601
+ :render_mixed_inline
602
+ register_inline_render Metanorma::Document::Components::Inline::VariantTitleElement,
603
+ :render_mixed_inline
604
+ register_inline_render Metanorma::Document::Components::Inline::LocalizedStringElement,
605
+ :render_mixed_inline
606
+ register_inline_render Metanorma::Document::Components::Inline::TitleWithAnnotationElement,
607
+ :render_mixed_inline
608
+ register_inline_render Metanorma::Document::Components::Inline::BiblioTagElement,
609
+ :render_mixed_inline
610
+ register_inline_render Metanorma::Document::Components::Inline::NameWithIdElement,
611
+ :render_mixed_inline
612
+ register_inline_render Metanorma::Document::Components::Inline::DisplayTextElement,
613
+ :render_mixed_inline
614
+ register_inline_render Metanorma::Document::Components::Inline::FmtFootnoteContainerElement,
615
+ :render_mixed_inline
616
+ register_inline_render Metanorma::Document::Components::Inline::FmtFnBodyElement,
617
+ :render_mixed_inline
618
+ register_inline_render Metanorma::Document::Components::Inline::FmtPreferredElement,
619
+ :render_mixed_inline
620
+ register_inline_render Metanorma::Document::Components::Inline::FmtDefinitionElement,
621
+ :render_mixed_inline
622
+ register_inline_render Metanorma::Document::Components::Inline::FmtTermsourceElement,
623
+ :render_mixed_inline
624
+ register_inline_render Metanorma::Document::Components::Inline::FmtAdmittedElement,
625
+ :render_mixed_inline
626
+ register_inline_render Metanorma::Document::Components::Inline::FmtIdentifierElement,
627
+ :render_mixed_inline
628
+ register_inline_render Metanorma::Document::Components::Inline::FmtSourcecodeElement,
629
+ :render_mixed_inline
569
630
 
570
631
  def lookup_dispatch(type_class, registry_method)
571
632
  self.class.ancestors.each do |ancestor|
@@ -589,7 +650,10 @@ module Metanorma
589
650
  # --- Block-level rendering ---
590
651
 
591
652
  def render_paragraph(p, **_opts)
592
- attrs = element_attrs(id: safe_attr(p, :id), style: alignment_style(safe_attr(p, :alignment)))
653
+ attrs = element_attrs(id: safe_attr(p, :id),
654
+ style: alignment_style(safe_attr(
655
+ p, :alignment
656
+ )))
593
657
  tag("p", attrs) { render_mixed_inline(p) }
594
658
  end
595
659
 
@@ -641,8 +705,12 @@ module Metanorma
641
705
 
642
706
  sec.tr.each do |tr|
643
707
  cols = 0
644
- Array(tr.th).each { |th| cols += th.colspan && th.colspan > 1 ? th.colspan : 1 }
645
- Array(tr.td).each { |td| cols += td.colspan && td.colspan > 1 ? td.colspan : 1 }
708
+ Array(tr.th).each do |th|
709
+ cols += th.colspan && th.colspan > 1 ? th.colspan : 1
710
+ end
711
+ Array(tr.td).each do |td|
712
+ cols += td.colspan && td.colspan > 1 ? td.colspan : 1
713
+ end
646
714
  max_cols = cols if cols > max_cols
647
715
  end
648
716
  end
@@ -699,7 +767,8 @@ module Metanorma
699
767
  end
700
768
 
701
769
  def render_ordered_list(ol, **_opts)
702
- attrs = element_attrs(id: safe_attr(ol, :id), start: safe_attr(ol, :start), type: safe_attr(ol, :type_attr))
770
+ attrs = element_attrs(id: safe_attr(ol, :id),
771
+ start: safe_attr(ol, :start), type: safe_attr(ol, :type_attr))
703
772
  tag("ol", attrs) do
704
773
  ol.listitem&.each { |li| render_list_item(li) }
705
774
  end
@@ -771,11 +840,10 @@ module Metanorma
771
840
 
772
841
  def sort_by_displayorder(children)
773
842
  children.sort_by do |node|
774
- order = begin
775
- node.displayorder
776
- rescue StandardError
777
- nil
778
- end
843
+ order = if node.is_a?(Lutaml::Model::Serializable) &&
844
+ node.class.attributes.key?(:displayorder)
845
+ node.displayorder
846
+ end
779
847
  order &&= order.to_i
780
848
  order || Float::INFINITY
781
849
  end
@@ -837,7 +905,8 @@ module Metanorma
837
905
  end
838
906
 
839
907
  def render_example(example, **_opts)
840
- drop = Drops::ExampleDrop.from_model(example, renderer: renderer_context)
908
+ drop = Drops::ExampleDrop.from_model(example,
909
+ renderer: renderer_context)
841
910
  @output << render_liquid("_example.html.liquid", { "block" => drop })
842
911
  end
843
912
 
@@ -847,7 +916,8 @@ module Metanorma
847
916
  end
848
917
 
849
918
  def render_formula(formula, **_opts)
850
- drop = Drops::FormulaDrop.from_model(formula, renderer: renderer_context)
919
+ drop = Drops::FormulaDrop.from_model(formula,
920
+ renderer: renderer_context)
851
921
  @output << render_liquid("_formula.html.liquid", { "block" => drop })
852
922
  end
853
923
 
@@ -866,7 +936,8 @@ module Metanorma
866
936
  end
867
937
 
868
938
  def render_admonition(admonition, **_opts)
869
- drop = Drops::AdmonitionDrop.from_model(admonition, renderer: renderer_context)
939
+ drop = Drops::AdmonitionDrop.from_model(admonition,
940
+ renderer: renderer_context)
870
941
  @output << render_liquid("_admonition.html.liquid", { "block" => drop })
871
942
  end
872
943
 
@@ -874,6 +945,51 @@ module Metanorma
874
945
  @output << %(<a id="#{escape_html(safe_attr(bookmark, :id).to_s)}"></a>)
875
946
  end
876
947
 
948
+ # Renders the typed child collections of a block element (paragraphs,
949
+ # lists, nested blocks) in a standard order. Used by Drops and section
950
+ # rendering to avoid duplicating the enumeration in each consumer.
951
+ #
952
+ # +children+ is a Hash mapping attr names to render-method symbols:
953
+ # { paragraphs: :render_paragraph, ul: :render_unordered_list, ... }
954
+ #
955
+ # Each key is sent to +model+ via safe_attr; non-nil results are
956
+ # dispatched to the corresponding render method.
957
+ def render_block_children(model, children:)
958
+ children.each do |attr, render_method|
959
+ values = safe_attr(model, attr)
960
+ next if values.nil?
961
+
962
+ Array(values).each { |v| public_send(render_method, v) }
963
+ end
964
+ end
965
+
966
+ # Standard child set for container blocks (example, note, etc.)
967
+ BLOCK_CHILDREN = {
968
+ paragraphs: :render_paragraph,
969
+ ul: :render_unordered_list,
970
+ ol: :render_ordered_list,
971
+ dl: :render_definition_list,
972
+ sourcecode: :render_sourcecode,
973
+ table: :render_table,
974
+ figure: :render_figure,
975
+ quote: :render_quote,
976
+ formula: :render_formula,
977
+ }.freeze
978
+
979
+ # Minimal child set for simple blocks (admonition, note with content only)
980
+ SIMPLE_CHILDREN = {
981
+ paragraphs: :render_paragraph,
982
+ }.freeze
983
+
984
+ # Note-style child set (paragraphs + lists + dl, no nested blocks)
985
+ NOTE_CHILDREN = {
986
+ paragraphs: :render_paragraph,
987
+ ul: :render_unordered_list,
988
+ ol: :render_ordered_list,
989
+ dl: :render_definition_list,
990
+ quote: :render_quote,
991
+ }.freeze
992
+
877
993
  # --- Section rendering ---
878
994
 
879
995
  def render_basic_section(section, level: 1, **_opts)
@@ -1212,7 +1328,8 @@ module Metanorma
1212
1328
  stem_child figure_child formula_child sourcecode_child]
1213
1329
  label_stripped = false
1214
1330
 
1215
- walked = walk_ordered(element, allow_filter: display_attrs) do |type, obj|
1331
+ walked = walk_ordered(element,
1332
+ allow_filter: display_attrs) do |type, obj|
1216
1333
  case type
1217
1334
  when :text
1218
1335
  text = obj
@@ -1263,7 +1380,9 @@ module Metanorma
1263
1380
  end
1264
1381
 
1265
1382
  def render_inline_tag(tag_name, element, **extra_attrs)
1266
- tag(tag_name, element_attrs(**extra_attrs)) { render_mixed_inline(element) }
1383
+ tag(tag_name, element_attrs(**extra_attrs)) do
1384
+ render_mixed_inline(element)
1385
+ end
1267
1386
  end
1268
1387
 
1269
1388
  # Process raw XML content from map_all_content models (e.g. RawParagraph).
@@ -1304,13 +1423,17 @@ module Metanorma
1304
1423
  end
1305
1424
  # Remap XML class names to HTML-specific class names
1306
1425
  doc.css("[class]").each do |el|
1307
- el["class"] = el["class"].split(/\s+/).map { |c| html_class_for_span(c) }.join(" ")
1426
+ el["class"] = el["class"].split(/\s+/).map do |c|
1427
+ html_class_for_span(c)
1428
+ end.join(" ")
1308
1429
  end
1309
1430
  doc.inner_html
1310
1431
  end
1311
1432
 
1312
1433
  def deduplicate_semx_label(source_node, semx_node)
1313
- first_text = semx_node.children.find { |c| c.text? && !c.text.strip.empty? }
1434
+ first_text = semx_node.children.find do |c|
1435
+ c.text? && !c.text.strip.empty?
1436
+ end
1314
1437
  return unless first_text
1315
1438
 
1316
1439
  semx_prefix = first_text.text[/\A(\s*\S+)/, 1]
@@ -1324,7 +1447,9 @@ module Metanorma
1324
1447
  return unless prev_text.end_with?(label)
1325
1448
 
1326
1449
  prev.content = prev_text.sub(/#{Regexp.escape(label)}\s*\z/, "")
1327
- first_text.content = first_text.text.sub(/\A\s*#{Regexp.escape(label)}\s*/, "")
1450
+ first_text.content = first_text.text.sub(
1451
+ /\A\s*#{Regexp.escape(label)}\s*/, ""
1452
+ )
1328
1453
  end
1329
1454
 
1330
1455
  def render_link(link)
@@ -1343,7 +1468,9 @@ module Metanorma
1343
1468
 
1344
1469
  def render_xref(xref)
1345
1470
  target = safe_attr(xref, :target) || safe_attr(xref, :to_attr)
1346
- attrs = element_attrs(href: "##{escape_html(target)}", id: safe_attr(xref, :id))
1471
+ attrs = element_attrs(href: "##{escape_html(target)}",
1472
+ id: safe_attr(xref,
1473
+ :id))
1347
1474
  tag("a", attrs) { render_mixed_inline(xref) }
1348
1475
  end
1349
1476
 
@@ -1431,7 +1558,7 @@ module Metanorma
1431
1558
  return stem.math.to_xml
1432
1559
  rescue StandardError
1433
1560
  math_items = Array(stem.math)
1434
- return math_items.map { |m| m.is_a?(Lutaml::Model::Serializable) ? m.content.to_s : m.to_s }.join
1561
+ return math_items.join
1435
1562
  end
1436
1563
  end
1437
1564
  if stem.asciimath
@@ -1493,6 +1620,10 @@ module Metanorma
1493
1620
  end
1494
1621
 
1495
1622
  def safe_attr(obj, method_name)
1623
+ if obj.is_a?(Lutaml::Model::Serializable) && !obj.class.attributes.key?(method_name)
1624
+ return nil
1625
+ end
1626
+
1496
1627
  obj.public_send(method_name)
1497
1628
  rescue NoMethodError
1498
1629
  nil
@@ -1591,7 +1722,8 @@ module Metanorma
1591
1722
  Drops::FootnoteDrop.new(entry, content_html)
1592
1723
  end
1593
1724
 
1594
- @output << render_liquid("_footnotes.html.liquid", { "footnotes" => drops })
1725
+ @output << render_liquid("_footnotes.html.liquid",
1726
+ { "footnotes" => drops })
1595
1727
  end
1596
1728
 
1597
1729
  def capture_output
@@ -5,7 +5,6 @@ module Metanorma
5
5
  # Renders BipmDocument components to HTML.
6
6
  # Extends IsoRenderer with BIPM-specific branding (institutional navy, scientific precision).
7
7
  class BipmRenderer < IsoRenderer
8
-
9
8
  def flavor_publishers(_doc_id)
10
9
  ["BIPM"]
11
10
  end
@@ -27,7 +26,7 @@ module Metanorma
27
26
  # BIPM logo: white fill for dark header
28
27
  def load_logo_svg(filename, **opts)
29
28
  svg = super
30
- svg = svg.gsub(/fill:#0f3c80/, "fill:white") if svg
29
+ svg = svg.gsub("fill:#0f3c80", "fill:white") if svg
31
30
  svg
32
31
  end
33
32
 
@@ -50,12 +49,16 @@ module Metanorma
50
49
  logos = publisher_logos_html(doc)
51
50
  if logos && !logos.empty?
52
51
  @output << "<div class=\"cover-publishers\">"
53
- logos.each { |svg| @output << "<span class=\"cover-logo\">#{svg}</span>" }
52
+ logos.each do |svg|
53
+ @output << "<span class=\"cover-logo\">#{svg}</span>"
54
+ end
54
55
  @output << "</div>"
55
56
  end
56
57
 
57
58
  identifiers = Array(bibdata.doc_identifier).compact
58
- cover_ids = identifiers.select { |di| safe_attr(di, :type) == "iso-reference" }
59
+ cover_ids = identifiers.select do |di|
60
+ safe_attr(di, :type) == "iso-reference"
61
+ end
59
62
  cover_ids = [identifiers.first].compact if cover_ids.empty?
60
63
 
61
64
  cover_ids.each do |di|
@@ -66,8 +69,13 @@ module Metanorma
66
69
  end
67
70
 
68
71
  bibdata.date&.each do |date|
69
- date_type = extract_text_value(safe_attr(date, :type_attr) || safe_attr(date, :type))
70
- date_val = extract_text_value(date.is_a?(Metanorma::Document::Relaton::BibliographicDate) ? date.on : safe_attr(date, :text))
72
+ date_type = extract_text_value(safe_attr(date,
73
+ :type_attr) || safe_attr(
74
+ date, :type
75
+ ))
76
+ date_val = extract_text_value(date.is_a?(Metanorma::Document::Relaton::BibliographicDate) ? date.on : safe_attr(
77
+ date, :text
78
+ ))
71
79
  if date_type == "published" && date_val
72
80
  @output << "<p class=\"cover-date\">#{escape_html(date_val)}</p>"
73
81
  end
@@ -81,7 +89,7 @@ module Metanorma
81
89
  @output << "<div class=\"cover-title\"><span>#{escape_html(title_text)}</span></div>"
82
90
  end
83
91
 
84
- if bibdata.status && bibdata.status.stage
92
+ if bibdata.status&.stage
85
93
  stages = Array(bibdata.status.stage)
86
94
  stage_text = stages.map { |s| Array(s.value).join }.join(" ")
87
95
  unless stage_text.empty?
@@ -121,7 +129,7 @@ module Metanorma
121
129
  t.example_bg = "#f5f0e8"
122
130
  t.example_color = "#7a6952"
123
131
  t.admonition_border = "#7a6952"
124
- t.admonition_bg = "#f5f0e8"
132
+ t.admonition_bg = "#f5f0e8"
125
133
  t.admonition_color = "#7a6952"
126
134
  t.footer_border_color = "#3d7ec7"
127
135
  t.cover_separator_color = "rgba(61,126,199,0.25)"
@@ -5,7 +5,6 @@ module Metanorma
5
5
  # Renders CcDocument (CalConnect) components to HTML.
6
6
  # Extends IsoRenderer with CalConnect branding.
7
7
  class CcRenderer < IsoRenderer
8
-
9
8
  def flavor_publishers(_doc_id)
10
9
  ["CalConnect"]
11
10
  end
@@ -50,7 +50,11 @@ module Metanorma
50
50
  def safe_attr(obj, method_name) = renderer.safe_attr(obj, method_name)
51
51
  def extract_plain_text(node) = renderer.extract_plain_text(node)
52
52
  def extract_text_value(val) = renderer.extract_text_value(val)
53
- def extract_block_label(block, default) = renderer.extract_block_label(block, default)
53
+
54
+ def extract_block_label(block,
55
+ default)
56
+ renderer.extract_block_label(block, default)
57
+ end
54
58
 
55
59
  def self.register_in(registry)
56
60
  handled_classes.each do |klass|
@@ -32,7 +32,7 @@ module Metanorma
32
32
  number: number,
33
33
  reference: ref,
34
34
  content: fn.p,
35
- fmt_label: fn.fmt_fn_label
35
+ fmt_label: fn.fmt_fn_label,
36
36
  )
37
37
  number
38
38
  end
@@ -41,8 +41,8 @@ module Metanorma
41
41
  @footnotes.empty?
42
42
  end
43
43
 
44
- def each(&blk)
45
- @footnotes.each(&blk)
44
+ def each(&)
45
+ @footnotes.each(&)
46
46
  end
47
47
 
48
48
  def to_a