metanorma-document 0.5.0 → 0.5.2.pre.alpha.1

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 (543) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +81 -0
  3. data/Rakefile +3 -7
  4. data/data/stylesheets/base/_dark.css +3 -3
  5. data/data/stylesheets/base/_print.css +1 -1
  6. data/data/stylesheets/components/term.css +4 -2
  7. data/data/themes/ogc.yaml +5 -0
  8. data/lib/metanorma/basic_document/ancillary_blocks/figure_block.rb +2 -2
  9. data/lib/metanorma/basic_document/multi_paragraph/admonition_block.rb +2 -2
  10. data/lib/metanorma/document/cli.rb +134 -0
  11. data/lib/metanorma/document/components/ancillary_blocks/figure_block.rb +5 -0
  12. data/lib/metanorma/document/components/ancillary_blocks/fmt_figure_element.rb +47 -0
  13. data/lib/metanorma/document/components/ancillary_blocks/formula_block.rb +2 -0
  14. data/lib/metanorma/document/components/ancillary_blocks/imagemap_element.rb +73 -0
  15. data/lib/metanorma/document/components/ancillary_blocks/literal_block.rb +2 -0
  16. data/lib/metanorma/document/components/ancillary_blocks/sourcecode_block.rb +2 -0
  17. data/lib/metanorma/document/components/ancillary_blocks/svg_target_element.rb +27 -0
  18. data/lib/metanorma/document/components/ancillary_blocks/svgmap_element.rb +28 -0
  19. data/lib/metanorma/document/components/ancillary_blocks.rb +4 -0
  20. data/lib/metanorma/document/components/bib_data/bibliographic_item.rb +4 -0
  21. data/lib/metanorma/document/components/blocks/fmt_provision.rb +25 -0
  22. data/lib/metanorma/document/components/blocks/note_block.rb +8 -0
  23. data/lib/metanorma/document/components/blocks/permission_model.rb +9 -0
  24. data/lib/metanorma/document/components/blocks/recommendation_model.rb +9 -0
  25. data/lib/metanorma/document/components/blocks/requirement_base.rb +12 -0
  26. data/lib/metanorma/document/components/blocks/requirement_import.rb +23 -0
  27. data/lib/metanorma/document/components/blocks/requirement_measurement_target.rb +23 -0
  28. data/lib/metanorma/document/components/blocks/requirement_model.rb +9 -0
  29. data/lib/metanorma/document/components/blocks/requirement_specification.rb +23 -0
  30. data/lib/metanorma/document/components/blocks/requirement_verification.rb +23 -0
  31. data/lib/metanorma/document/components/blocks.rb +8 -0
  32. data/lib/metanorma/document/components/data_types/formatted_string.rb +9 -0
  33. data/lib/metanorma/document/components/id_elements/image.rb +4 -0
  34. data/lib/metanorma/document/components/inline/columnbreak_element.rb +17 -0
  35. data/lib/metanorma/document/components/inline/concept_element.rb +18 -0
  36. data/lib/metanorma/document/components/inline/date_element.rb +29 -0
  37. data/lib/metanorma/document/components/inline/display_text_element.rb +2 -0
  38. data/lib/metanorma/document/components/inline/em_raw_element.rb +6 -7
  39. data/lib/metanorma/document/components/inline/eref_element.rb +48 -22
  40. data/lib/metanorma/document/components/inline/eref_stack.rb +23 -0
  41. data/lib/metanorma/document/components/inline/error_message.rb +28 -0
  42. data/lib/metanorma/document/components/inline/fmt_date_element.rb +28 -0
  43. data/lib/metanorma/document/components/inline/fmt_date_inline_element.rb +26 -0
  44. data/lib/metanorma/document/components/inline/fmt_eref_element.rb +25 -0
  45. data/lib/metanorma/document/components/inline/fmt_origin_element.rb +24 -0
  46. data/lib/metanorma/document/components/inline/fmt_preferred_element.rb +3 -0
  47. data/lib/metanorma/document/components/inline/fmt_source_element.rb +31 -0
  48. data/lib/metanorma/document/components/inline/fn_element.rb +11 -0
  49. data/lib/metanorma/document/components/inline/link_element.rb +8 -0
  50. data/lib/metanorma/document/components/inline/name_with_id_element.rb +2 -0
  51. data/lib/metanorma/document/components/inline/refterm_element.rb +21 -0
  52. data/lib/metanorma/document/components/inline/semx_element.rb +22 -0
  53. data/lib/metanorma/document/components/inline/sourcelocality_stack_element.rb +27 -0
  54. data/lib/metanorma/document/components/inline/span_element.rb +2 -0
  55. data/lib/metanorma/document/components/inline/stem_inline_element.rb +2 -0
  56. data/lib/metanorma/document/components/inline/strong_raw_element.rb +6 -9
  57. data/lib/metanorma/document/components/inline/sub_element.rb +2 -0
  58. data/lib/metanorma/document/components/inline/termref_element.rb +24 -0
  59. data/lib/metanorma/document/components/inline/title_with_annotation_element.rb +10 -31
  60. data/lib/metanorma/document/components/inline/variant_title_element.rb +2 -0
  61. data/lib/metanorma/document/components/inline/vocabulary.rb +36 -0
  62. data/lib/metanorma/document/components/inline.rb +23 -0
  63. data/lib/metanorma/document/components/lists/dd_element.rb +6 -1
  64. data/lib/metanorma/document/components/lists/definition.rb +2 -0
  65. data/lib/metanorma/document/components/lists/definition_list.rb +3 -0
  66. data/lib/metanorma/document/components/lists/dt_element.rb +3 -0
  67. data/lib/metanorma/document/components/lists/fmt_list_element.rb +73 -0
  68. data/lib/metanorma/document/components/lists/list_item.rb +3 -0
  69. data/lib/metanorma/document/components/lists/ordered_list.rb +4 -2
  70. data/lib/metanorma/document/components/lists/unordered_list.rb +2 -0
  71. data/lib/metanorma/document/components/lists.rb +2 -0
  72. data/lib/metanorma/document/components/multi_paragraph/quote_block.rb +16 -0
  73. data/lib/metanorma/document/components/multi_paragraph/review_block.rb +2 -2
  74. data/lib/metanorma/document/components/paragraphs/paragraph_block.rb +15 -0
  75. data/lib/metanorma/document/components/reference_elements/citation.rb +7 -0
  76. data/lib/metanorma/document/components/reference_elements/source_element.rb +4 -0
  77. data/lib/metanorma/document/components/semantic/node.rb +46 -0
  78. data/lib/metanorma/document/components/semantic.rb +11 -0
  79. data/lib/metanorma/document/components/tables/header_table_cell.rb +1 -0
  80. data/lib/metanorma/document/components/tables/table_cell.rb +70 -44
  81. data/lib/metanorma/document/components/tables/text_table_cell.rb +1 -0
  82. data/lib/metanorma/document/components/tables/text_table_row.rb +2 -0
  83. data/lib/metanorma/document/components/text_elements/ruby_annotation_element.rb +26 -0
  84. data/lib/metanorma/document/components/text_elements/ruby_element.rb +41 -6
  85. data/lib/metanorma/document/components/text_elements/ruby_pronunciation_element.rb +25 -0
  86. data/lib/metanorma/document/components/text_elements/strike_element.rb +3 -0
  87. data/lib/metanorma/document/components/text_elements/underline_element.rb +3 -0
  88. data/lib/metanorma/document/components/text_elements.rb +2 -0
  89. data/lib/metanorma/document/components.rb +1 -0
  90. data/lib/metanorma/document/grammar_vocabulary.rb +109 -0
  91. data/lib/metanorma/document/mirror_seed.rb +253 -0
  92. data/lib/metanorma/document/mko/collection.rb +168 -0
  93. data/lib/metanorma/document/mko/exporter.rb +17 -0
  94. data/lib/metanorma/document/mko/project.rb +1110 -0
  95. data/lib/metanorma/document/mko.rb +122 -0
  96. data/lib/metanorma/document/model_access.rb +44 -0
  97. data/lib/metanorma/document/native_models.rb +319 -0
  98. data/lib/metanorma/document/plain_text.rb +39 -0
  99. data/lib/metanorma/document/relaton/version_info.rb +4 -0
  100. data/lib/metanorma/document/version.rb +1 -1
  101. data/lib/metanorma/document.rb +19 -26
  102. data/lib/metanorma/{collection → document_collection}/directive.rb +1 -1
  103. data/lib/metanorma/{collection → document_collection}/doc_container.rb +6 -2
  104. data/lib/metanorma/{collection → document_collection}/entry.rb +2 -2
  105. data/lib/metanorma/{collection → document_collection}/root.rb +2 -2
  106. data/lib/metanorma/document_collection.rb +10 -0
  107. data/lib/metanorma/html/base_renderer.rb +105 -28
  108. data/lib/metanorma/html/component/footnote_collector.rb +21 -20
  109. data/lib/metanorma/html/concerns/metadata_extraction.rb +8 -3
  110. data/lib/metanorma/html/concerns/presentation_validation.rb +1 -2
  111. data/lib/metanorma/html/concerns/text_extraction.rb +154 -35
  112. data/lib/metanorma/html/concerns.rb +19 -0
  113. data/lib/metanorma/html/drops/admonition_drop.rb +1 -1
  114. data/lib/metanorma/html/drops/example_drop.rb +8 -1
  115. data/lib/metanorma/html/drops/footnote_drop.rb +1 -1
  116. data/lib/metanorma/html/drops/note_drop.rb +31 -4
  117. data/lib/metanorma/html/drops/sourcecode_drop.rb +22 -4
  118. data/lib/metanorma/html/generator.rb +11 -187
  119. data/lib/metanorma/html/renderer_delegation.rb +2 -2
  120. data/lib/metanorma/html/renderers/block_renderer.rb +246 -51
  121. data/lib/metanorma/html/renderers/inline_renderer.rb +144 -17
  122. data/lib/metanorma/html/renderers/section_renderer.rb +12 -2
  123. data/lib/metanorma/html/renderers/semantic_renderer.rb +487 -0
  124. data/lib/metanorma/html/renderers.rb +2 -0
  125. data/lib/metanorma/html/standard_renderer.rb +743 -81
  126. data/lib/metanorma/html/templates/_agency_cover.html.liquid +30 -0
  127. data/lib/metanorma/html/templates/_columnbreak.html.liquid +1 -0
  128. data/lib/metanorma/html/templates/_cover.html.liquid +3 -0
  129. data/lib/metanorma/html/templates/_example.html.liquid +1 -1
  130. data/lib/metanorma/html/templates/_main_content.html.liquid +1 -1
  131. data/lib/metanorma/html/templates/_note.html.liquid +1 -1
  132. data/lib/metanorma/html/templates/_paragraph.html.liquid +1 -1
  133. data/lib/metanorma/html/templates/_ruby.html.liquid +1 -0
  134. data/lib/metanorma/html/templates/_sourcecode.html.liquid +4 -3
  135. data/lib/metanorma/html/templates/_standard_cover.html.liquid +54 -3
  136. data/lib/metanorma/html/templates/_term_number.html.liquid +1 -1
  137. data/lib/metanorma/html.rb +30 -15
  138. data/tasks/flavors.rake +116 -0
  139. data/tasks/grammar.rake +28 -0
  140. data/tasks/roundtrip_samples.rake +48 -34
  141. metadata +121 -416
  142. data/frontend/dist/app.css +0 -1
  143. data/frontend/dist/app.iife.js +0 -24
  144. data/lib/metanorma/bipm_document/metadata/bipm_bib_data_extension_type.rb +0 -20
  145. data/lib/metanorma/bipm_document/metadata/bipm_bibliographic_item.rb +0 -17
  146. data/lib/metanorma/bipm_document/metadata/bipm_structured_identifier.rb +0 -21
  147. data/lib/metanorma/bipm_document/metadata/depiction_element.rb +0 -18
  148. data/lib/metanorma/bipm_document/metadata.rb +0 -15
  149. data/lib/metanorma/bipm_document/root.rb +0 -25
  150. data/lib/metanorma/bipm_document.rb +0 -8
  151. data/lib/metanorma/bsi_document/metadata/bsi_bib_data_extension_type.rb +0 -10
  152. data/lib/metanorma/bsi_document/metadata/bsi_bibliographic_item.rb +0 -15
  153. data/lib/metanorma/bsi_document/metadata.rb +0 -12
  154. data/lib/metanorma/bsi_document/root.rb +0 -29
  155. data/lib/metanorma/bsi_document/sections/bsi_annex_section.rb +0 -25
  156. data/lib/metanorma/bsi_document/sections/bsi_clause_section.rb +0 -25
  157. data/lib/metanorma/bsi_document/sections/bsi_sections.rb +0 -27
  158. data/lib/metanorma/bsi_document/sections.rb +0 -11
  159. data/lib/metanorma/bsi_document.rb +0 -11
  160. data/lib/metanorma/cc_document/metadata/cc_bib_data_extension_type.rb +0 -12
  161. data/lib/metanorma/cc_document/metadata/cc_bibliographic_item.rb +0 -17
  162. data/lib/metanorma/cc_document/metadata.rb +0 -11
  163. data/lib/metanorma/cc_document/root.rb +0 -25
  164. data/lib/metanorma/cc_document.rb +0 -8
  165. data/lib/metanorma/collection.rb +0 -10
  166. data/lib/metanorma/csa_document/root.rb +0 -27
  167. data/lib/metanorma/csa_document.rb +0 -9
  168. data/lib/metanorma/gb_document/metadata/gb_bib_data_extension_type.rb +0 -10
  169. data/lib/metanorma/gb_document/metadata/gb_bibliographic_item.rb +0 -15
  170. data/lib/metanorma/gb_document/metadata.rb +0 -12
  171. data/lib/metanorma/gb_document/root.rb +0 -29
  172. data/lib/metanorma/gb_document.rb +0 -10
  173. data/lib/metanorma/generic_document/root.rb +0 -31
  174. data/lib/metanorma/generic_document.rb +0 -7
  175. data/lib/metanorma/html/bipm_renderer.rb +0 -23
  176. data/lib/metanorma/html/cc_renderer.rb +0 -9
  177. data/lib/metanorma/html/csa_renderer.rb +0 -9
  178. data/lib/metanorma/html/flavor.rb +0 -50
  179. data/lib/metanorma/html/flavor_registry.rb +0 -49
  180. data/lib/metanorma/html/icc_renderer.rb +0 -10
  181. data/lib/metanorma/html/iec_renderer.rb +0 -9
  182. data/lib/metanorma/html/ieee_renderer.rb +0 -9
  183. data/lib/metanorma/html/ietf_renderer.rb +0 -9
  184. data/lib/metanorma/html/iho_renderer.rb +0 -9
  185. data/lib/metanorma/html/iso_renderer.rb +0 -535
  186. data/lib/metanorma/html/itu_renderer.rb +0 -9
  187. data/lib/metanorma/html/ogc_renderer.rb +0 -23
  188. data/lib/metanorma/html/pdfa_renderer.rb +0 -10
  189. data/lib/metanorma/html/ribose_renderer.rb +0 -9
  190. data/lib/metanorma/html/templates/_bipm_cover.html.liquid +0 -27
  191. data/lib/metanorma/html/templates/_iso_cover.html.liquid +0 -31
  192. data/lib/metanorma/html/templates/_iso_doc_title.html.liquid +0 -3
  193. data/lib/metanorma/iec_document/root.rb +0 -27
  194. data/lib/metanorma/iec_document.rb +0 -9
  195. data/lib/metanorma/ieee_document/metadata/ieee_bib_data_extension_type.rb +0 -18
  196. data/lib/metanorma/ieee_document/metadata/ieee_bibliographic_item.rb +0 -20
  197. data/lib/metanorma/ieee_document/metadata/ieee_structured_identifier.rb +0 -25
  198. data/lib/metanorma/ieee_document/metadata.rb +0 -14
  199. data/lib/metanorma/ieee_document/root.rb +0 -29
  200. data/lib/metanorma/ieee_document/sections/ieee_sections.rb +0 -31
  201. data/lib/metanorma/ieee_document/sections.rb +0 -9
  202. data/lib/metanorma/ieee_document.rb +0 -11
  203. data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +0 -31
  204. data/lib/metanorma/ietf_document/metadata/ietf_bibliographic_item.rb +0 -51
  205. data/lib/metanorma/ietf_document/metadata/ietf_editorial_group.rb +0 -17
  206. data/lib/metanorma/ietf_document/metadata/pi_settings.rb +0 -32
  207. data/lib/metanorma/ietf_document/metadata.rb +0 -16
  208. data/lib/metanorma/ietf_document/root.rb +0 -30
  209. data/lib/metanorma/ietf_document/sections/ietf_annex_section.rb +0 -26
  210. data/lib/metanorma/ietf_document/sections/ietf_clause_section.rb +0 -26
  211. data/lib/metanorma/ietf_document/sections/ietf_content_section.rb +0 -25
  212. data/lib/metanorma/ietf_document/sections/ietf_sections.rb +0 -35
  213. data/lib/metanorma/ietf_document/sections.rb +0 -12
  214. data/lib/metanorma/ietf_document.rb +0 -11
  215. data/lib/metanorma/iho_document/metadata/iho_bib_data_extension_type.rb +0 -23
  216. data/lib/metanorma/iho_document/metadata/iho_bibliographic_item.rb +0 -20
  217. data/lib/metanorma/iho_document/metadata/iho_editorial_group.rb +0 -19
  218. data/lib/metanorma/iho_document/metadata/iho_series.rb +0 -22
  219. data/lib/metanorma/iho_document/metadata/iho_sub_group.rb +0 -18
  220. data/lib/metanorma/iho_document/metadata.rb +0 -15
  221. data/lib/metanorma/iho_document/root.rb +0 -25
  222. data/lib/metanorma/iho_document.rb +0 -8
  223. data/lib/metanorma/iso_document/annotation_container.rb +0 -7
  224. data/lib/metanorma/iso_document/blocks/iso_admonition_block.rb +0 -27
  225. data/lib/metanorma/iso_document/blocks/iso_admonition_type.rb +0 -25
  226. data/lib/metanorma/iso_document/blocks.rb +0 -12
  227. data/lib/metanorma/iso_document/boilerplate.rb +0 -7
  228. data/lib/metanorma/iso_document/metadata/abstract_title.rb +0 -36
  229. data/lib/metanorma/iso_document/metadata/doc_identifier.rb +0 -26
  230. data/lib/metanorma/iso_document/metadata/doctype_element.rb +0 -20
  231. data/lib/metanorma/iso_document/metadata/ics.rb +0 -19
  232. data/lib/metanorma/iso_document/metadata/iec_document_category.rb +0 -23
  233. data/lib/metanorma/iso_document/metadata/iso_bib_data_extension_type.rb +0 -38
  234. data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +0 -103
  235. data/lib/metanorma/iso_document/metadata/iso_document_id.rb +0 -46
  236. data/lib/metanorma/iso_document/metadata/iso_document_stage_codes.rb +0 -26
  237. data/lib/metanorma/iso_document/metadata/iso_document_status.rb +0 -26
  238. data/lib/metanorma/iso_document/metadata/iso_document_substage_codes.rb +0 -26
  239. data/lib/metanorma/iso_document/metadata/iso_document_type.rb +0 -25
  240. data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +0 -61
  241. data/lib/metanorma/iso_document/metadata/iso_project_group.rb +0 -32
  242. data/lib/metanorma/iso_document/metadata/iso_sub_group.rb +0 -38
  243. data/lib/metanorma/iso_document/metadata/language_element.rb +0 -18
  244. data/lib/metanorma/iso_document/metadata/metanorma_extension.rb +0 -9
  245. data/lib/metanorma/iso_document/metadata/project_number.rb +0 -22
  246. data/lib/metanorma/iso_document/metadata/script_element.rb +0 -18
  247. data/lib/metanorma/iso_document/metadata/stage_element.rb +0 -26
  248. data/lib/metanorma/iso_document/metadata/stagename_element.rb +0 -18
  249. data/lib/metanorma/iso_document/metadata/structured_identifier.rb +0 -16
  250. data/lib/metanorma/iso_document/metadata/title_amd.rb +0 -12
  251. data/lib/metanorma/iso_document/metadata/title_amendment_prefix.rb +0 -12
  252. data/lib/metanorma/iso_document/metadata/title_collection.rb +0 -47
  253. data/lib/metanorma/iso_document/metadata/title_full.rb +0 -12
  254. data/lib/metanorma/iso_document/metadata/title_intro.rb +0 -12
  255. data/lib/metanorma/iso_document/metadata/title_main.rb +0 -12
  256. data/lib/metanorma/iso_document/metadata/title_part.rb +0 -12
  257. data/lib/metanorma/iso_document/metadata/title_part_prefix.rb +0 -12
  258. data/lib/metanorma/iso_document/metadata.rb +0 -44
  259. data/lib/metanorma/iso_document/root.rb +0 -26
  260. data/lib/metanorma/iso_document/sections/colophon.rb +0 -3
  261. data/lib/metanorma/iso_document/sections/iso_abstract_section.rb +0 -15
  262. data/lib/metanorma/iso_document/sections/iso_amendment_clause.rb +0 -24
  263. data/lib/metanorma/iso_document/sections/iso_annex_section.rb +0 -50
  264. data/lib/metanorma/iso_document/sections/iso_clause_section.rb +0 -49
  265. data/lib/metanorma/iso_document/sections/iso_foreword_section.rb +0 -33
  266. data/lib/metanorma/iso_document/sections/iso_preface.rb +0 -51
  267. data/lib/metanorma/iso_document/sections/iso_sections.rb +0 -51
  268. data/lib/metanorma/iso_document/sections/iso_terms_section.rb +0 -76
  269. data/lib/metanorma/iso_document/sections.rb +0 -17
  270. data/lib/metanorma/iso_document/terms/iso_term.rb +0 -71
  271. data/lib/metanorma/iso_document/terms/iso_term_collection.rb +0 -20
  272. data/lib/metanorma/iso_document/terms/term_definition.rb +0 -30
  273. data/lib/metanorma/iso_document/terms/term_designation.rb +0 -44
  274. data/lib/metanorma/iso_document/terms/term_domain_element.rb +0 -18
  275. data/lib/metanorma/iso_document/terms/term_example.rb +0 -40
  276. data/lib/metanorma/iso_document/terms/term_expression.rb +0 -10
  277. data/lib/metanorma/iso_document/terms/term_note.rb +0 -42
  278. data/lib/metanorma/iso_document/terms/term_origin.rb +0 -4
  279. data/lib/metanorma/iso_document/terms/term_source.rb +0 -21
  280. data/lib/metanorma/iso_document/terms/verbal_definition.rb +0 -42
  281. data/lib/metanorma/iso_document/terms.rb +0 -21
  282. data/lib/metanorma/iso_document.rb +0 -15
  283. data/lib/metanorma/itu_document/metadata/itu_bib_data_extension_type.rb +0 -26
  284. data/lib/metanorma/itu_document/metadata/itu_bibliographic_item.rb +0 -21
  285. data/lib/metanorma/itu_document/metadata/itu_series.rb +0 -22
  286. data/lib/metanorma/itu_document/metadata/itu_structured_identifier.rb +0 -23
  287. data/lib/metanorma/itu_document/metadata/meeting_date.rb +0 -18
  288. data/lib/metanorma/itu_document/metadata/meeting_element.rb +0 -18
  289. data/lib/metanorma/itu_document/metadata/study_period.rb +0 -18
  290. data/lib/metanorma/itu_document/metadata.rb +0 -18
  291. data/lib/metanorma/itu_document/root.rb +0 -25
  292. data/lib/metanorma/itu_document.rb +0 -8
  293. data/lib/metanorma/jis_document/metadata/jis_bib_data_extension_type.rb +0 -10
  294. data/lib/metanorma/jis_document/metadata/jis_bibliographic_item.rb +0 -15
  295. data/lib/metanorma/jis_document/metadata.rb +0 -12
  296. data/lib/metanorma/jis_document/root.rb +0 -29
  297. data/lib/metanorma/jis_document/sections/jis_annex_section.rb +0 -20
  298. data/lib/metanorma/jis_document/sections.rb +0 -9
  299. data/lib/metanorma/jis_document.rb +0 -11
  300. data/lib/metanorma/m3d_document/metadata/m3d_bib_data_extension_type.rb +0 -10
  301. data/lib/metanorma/m3d_document/metadata/m3d_bibliographic_item.rb +0 -15
  302. data/lib/metanorma/m3d_document/metadata.rb +0 -12
  303. data/lib/metanorma/m3d_document/root.rb +0 -29
  304. data/lib/metanorma/m3d_document.rb +0 -10
  305. data/lib/metanorma/mirror/default_registry.rb +0 -191
  306. data/lib/metanorma/mirror/handler_registry.rb +0 -60
  307. data/lib/metanorma/mirror/handler_result.rb +0 -37
  308. data/lib/metanorma/mirror/handlers/admonition.rb +0 -18
  309. data/lib/metanorma/mirror/handlers/example.rb +0 -21
  310. data/lib/metanorma/mirror/handlers/figure.rb +0 -53
  311. data/lib/metanorma/mirror/handlers/formula.rb +0 -35
  312. data/lib/metanorma/mirror/handlers/inline/catalog.rb +0 -52
  313. data/lib/metanorma/mirror/handlers/inline/rich_html_renderer.rb +0 -158
  314. data/lib/metanorma/mirror/handlers/inline/text_extractor.rb +0 -116
  315. data/lib/metanorma/mirror/handlers/inline.rb +0 -226
  316. data/lib/metanorma/mirror/handlers/list.rb +0 -110
  317. data/lib/metanorma/mirror/handlers/note.rb +0 -26
  318. data/lib/metanorma/mirror/handlers/paragraph.rb +0 -19
  319. data/lib/metanorma/mirror/handlers/quote.rb +0 -16
  320. data/lib/metanorma/mirror/handlers/review.rb +0 -19
  321. data/lib/metanorma/mirror/handlers/section.rb +0 -149
  322. data/lib/metanorma/mirror/handlers/sourcecode.rb +0 -27
  323. data/lib/metanorma/mirror/handlers/structural.rb +0 -68
  324. data/lib/metanorma/mirror/handlers/table.rb +0 -81
  325. data/lib/metanorma/mirror/handlers/term.rb +0 -100
  326. data/lib/metanorma/mirror/handlers.rb +0 -60
  327. data/lib/metanorma/mirror/id_strategy/positional.rb +0 -166
  328. data/lib/metanorma/mirror/id_strategy/preserve.rb +0 -12
  329. data/lib/metanorma/mirror/id_strategy.rb +0 -34
  330. data/lib/metanorma/mirror/math_util.rb +0 -53
  331. data/lib/metanorma/mirror/metadata.rb +0 -37
  332. data/lib/metanorma/mirror/model/container.rb +0 -47
  333. data/lib/metanorma/mirror/model/factory.rb +0 -52
  334. data/lib/metanorma/mirror/model/guide.rb +0 -26
  335. data/lib/metanorma/mirror/model/leaf.rb +0 -17
  336. data/lib/metanorma/mirror/model/mark.rb +0 -53
  337. data/lib/metanorma/mirror/model/node.rb +0 -47
  338. data/lib/metanorma/mirror/model/soft_break.rb +0 -33
  339. data/lib/metanorma/mirror/model/text.rb +0 -34
  340. data/lib/metanorma/mirror/model.rb +0 -16
  341. data/lib/metanorma/mirror/output/builder.rb +0 -39
  342. data/lib/metanorma/mirror/output/formats/base_format.rb +0 -90
  343. data/lib/metanorma/mirror/output/formats/inline_format.rb +0 -142
  344. data/lib/metanorma/mirror/output/formats.rb +0 -53
  345. data/lib/metanorma/mirror/output/pipeline.rb +0 -93
  346. data/lib/metanorma/mirror/output/pipeline_context.rb +0 -22
  347. data/lib/metanorma/mirror/output.rb +0 -12
  348. data/lib/metanorma/mirror/rewriter.rb +0 -123
  349. data/lib/metanorma/mirror/safe_attr.rb +0 -16
  350. data/lib/metanorma/mirror/serialization/json_serializer.rb +0 -25
  351. data/lib/metanorma/mirror/serialization/yaml_serializer.rb +0 -20
  352. data/lib/metanorma/mirror/serialization.rb +0 -10
  353. data/lib/metanorma/mirror/transformer.rb +0 -110
  354. data/lib/metanorma/mirror.rb +0 -31
  355. data/lib/metanorma/nist_document/metadata/nist_bib_data_extension_type.rb +0 -10
  356. data/lib/metanorma/nist_document/metadata/nist_bibliographic_item.rb +0 -15
  357. data/lib/metanorma/nist_document/metadata.rb +0 -12
  358. data/lib/metanorma/nist_document/root.rb +0 -29
  359. data/lib/metanorma/nist_document/sections/errata.rb +0 -16
  360. data/lib/metanorma/nist_document/sections/errata_clause.rb +0 -20
  361. data/lib/metanorma/nist_document/sections/errata_row.rb +0 -22
  362. data/lib/metanorma/nist_document/sections/nist_preface.rb +0 -30
  363. data/lib/metanorma/nist_document/sections.rb +0 -12
  364. data/lib/metanorma/nist_document.rb +0 -11
  365. data/lib/metanorma/ogc_document/metadata/ogc_bib_data_extension_type.rb +0 -12
  366. data/lib/metanorma/ogc_document/metadata/ogc_bibliographic_item.rb +0 -19
  367. data/lib/metanorma/ogc_document/metadata.rb +0 -12
  368. data/lib/metanorma/ogc_document/root.rb +0 -25
  369. data/lib/metanorma/ogc_document.rb +0 -8
  370. data/lib/metanorma/plateau_document/metadata/plateau_bibliographic_item.rb +0 -13
  371. data/lib/metanorma/plateau_document/metadata.rb +0 -10
  372. data/lib/metanorma/plateau_document/root.rb +0 -29
  373. data/lib/metanorma/plateau_document.rb +0 -10
  374. data/lib/metanorma/registers/setup.rb +0 -166
  375. data/lib/metanorma/registers.rb +0 -7
  376. data/lib/metanorma/ribose_document/metadata/ribose_bib_data_extension_type.rb +0 -20
  377. data/lib/metanorma/ribose_document/metadata/ribose_bibliographic_item.rb +0 -18
  378. data/lib/metanorma/ribose_document/metadata.rb +0 -12
  379. data/lib/metanorma/ribose_document/root.rb +0 -26
  380. data/lib/metanorma/ribose_document.rb +0 -8
  381. data/lib/metanorma/standard_document/annotation_container.rb +0 -39
  382. data/lib/metanorma/standard_document/block_attributes.rb +0 -281
  383. data/lib/metanorma/standard_document/blocks/amend_block.rb +0 -50
  384. data/lib/metanorma/standard_document/blocks/amend_content_block.rb +0 -35
  385. data/lib/metanorma/standard_document/blocks/auto_number.rb +0 -20
  386. data/lib/metanorma/standard_document/blocks/block_source.rb +0 -22
  387. data/lib/metanorma/standard_document/blocks/change_type.rb +0 -21
  388. data/lib/metanorma/standard_document/blocks/element_name.rb +0 -22
  389. data/lib/metanorma/standard_document/blocks/form.rb +0 -38
  390. data/lib/metanorma/standard_document/blocks/image_map_area_type.rb +0 -24
  391. data/lib/metanorma/standard_document/blocks/image_map_area_type_type.rb +0 -21
  392. data/lib/metanorma/standard_document/blocks/image_map_block.rb +0 -32
  393. data/lib/metanorma/standard_document/blocks/image_map_coords.rb +0 -19
  394. data/lib/metanorma/standard_document/blocks/image_map_radius.rb +0 -19
  395. data/lib/metanorma/standard_document/blocks/multilingual_rendering_type.rb +0 -21
  396. data/lib/metanorma/standard_document/blocks/passthrough.rb +0 -3
  397. data/lib/metanorma/standard_document/blocks/requirement_model.rb +0 -20
  398. data/lib/metanorma/standard_document/blocks/source_origin_element.rb +0 -23
  399. data/lib/metanorma/standard_document/blocks/standard_admonition_block.rb +0 -32
  400. data/lib/metanorma/standard_document/blocks/standard_block.rb +0 -28
  401. data/lib/metanorma/standard_document/blocks/standard_block_no_notes.rb +0 -34
  402. data/lib/metanorma/standard_document/blocks/standard_example_block.rb +0 -30
  403. data/lib/metanorma/standard_document/blocks/standard_figure_block.rb +0 -32
  404. data/lib/metanorma/standard_document/blocks/standard_formula_block.rb +0 -30
  405. data/lib/metanorma/standard_document/blocks/standard_note_block.rb +0 -64
  406. data/lib/metanorma/standard_document/blocks/standard_paragraph_block.rb +0 -25
  407. data/lib/metanorma/standard_document/blocks/standard_quote_block.rb +0 -29
  408. data/lib/metanorma/standard_document/blocks/standard_sourcecode_block.rb +0 -32
  409. data/lib/metanorma/standard_document/blocks/standard_table_block.rb +0 -39
  410. data/lib/metanorma/standard_document/blocks/svg_map_block.rb +0 -23
  411. data/lib/metanorma/standard_document/blocks/svg_target_type.rb +0 -20
  412. data/lib/metanorma/standard_document/blocks/table_col.rb +0 -16
  413. data/lib/metanorma/standard_document/blocks/to_c.rb +0 -17
  414. data/lib/metanorma/standard_document/blocks.rb +0 -60
  415. data/lib/metanorma/standard_document/boilerplate.rb +0 -32
  416. data/lib/metanorma/standard_document/elements/add.rb +0 -3
  417. data/lib/metanorma/standard_document/elements/del.rb +0 -3
  418. data/lib/metanorma/standard_document/elements/form_input.rb +0 -27
  419. data/lib/metanorma/standard_document/elements/input.rb +0 -12
  420. data/lib/metanorma/standard_document/elements/input_type.rb +0 -27
  421. data/lib/metanorma/standard_document/elements/label.rb +0 -19
  422. data/lib/metanorma/standard_document/elements/option.rb +0 -27
  423. data/lib/metanorma/standard_document/elements/orientation_type.rb +0 -27
  424. data/lib/metanorma/standard_document/elements/select.rb +0 -32
  425. data/lib/metanorma/standard_document/elements/standard_page_break_element.rb +0 -22
  426. data/lib/metanorma/standard_document/elements/textarea.rb +0 -25
  427. data/lib/metanorma/standard_document/elements.rb +0 -20
  428. data/lib/metanorma/standard_document/lists/standard_definition.rb +0 -24
  429. data/lib/metanorma/standard_document/lists/standard_definition_list.rb +0 -30
  430. data/lib/metanorma/standard_document/lists/standard_definition_term.rb +0 -27
  431. data/lib/metanorma/standard_document/lists/standard_unordered_list.rb +0 -28
  432. data/lib/metanorma/standard_document/lists/unordered_checkable_list_item.rb +0 -26
  433. data/lib/metanorma/standard_document/lists.rb +0 -17
  434. data/lib/metanorma/standard_document/metadata/editorial_group_type.rb +0 -25
  435. data/lib/metanorma/standard_document/metadata/ics_type.rb +0 -26
  436. data/lib/metanorma/standard_document/metadata/metanorma_extension.rb +0 -26
  437. data/lib/metanorma/standard_document/metadata/presentation_metadata.rb +0 -107
  438. data/lib/metanorma/standard_document/metadata/semantic_metadata.rb +0 -18
  439. data/lib/metanorma/standard_document/metadata/standard_bib_data.rb +0 -25
  440. data/lib/metanorma/standard_document/metadata/standard_bib_data_extension_type.rb +0 -37
  441. data/lib/metanorma/standard_document/metadata/structured_identifier_type.rb +0 -48
  442. data/lib/metanorma/standard_document/metadata/technical_committee_type.rb +0 -27
  443. data/lib/metanorma/standard_document/metadata/unitsml/amount_of_substance.rb +0 -19
  444. data/lib/metanorma/standard_document/metadata/unitsml/base_quantity.rb +0 -34
  445. data/lib/metanorma/standard_document/metadata/unitsml/dimension.rb +0 -39
  446. data/lib/metanorma/standard_document/metadata/unitsml/dimension_set.rb +0 -19
  447. data/lib/metanorma/standard_document/metadata/unitsml/electric_current.rb +0 -19
  448. data/lib/metanorma/standard_document/metadata/unitsml/enumerated_root_unit.rb +0 -23
  449. data/lib/metanorma/standard_document/metadata/unitsml/length.rb +0 -19
  450. data/lib/metanorma/standard_document/metadata/unitsml/luminous_intensity.rb +0 -19
  451. data/lib/metanorma/standard_document/metadata/unitsml/mass.rb +0 -19
  452. data/lib/metanorma/standard_document/metadata/unitsml/namespace.rb +0 -17
  453. data/lib/metanorma/standard_document/metadata/unitsml/plane_angle.rb +0 -19
  454. data/lib/metanorma/standard_document/metadata/unitsml/prefix.rb +0 -30
  455. data/lib/metanorma/standard_document/metadata/unitsml/prefix_name.rb +0 -21
  456. data/lib/metanorma/standard_document/metadata/unitsml/prefix_set.rb +0 -19
  457. data/lib/metanorma/standard_document/metadata/unitsml/prefix_symbol.rb +0 -21
  458. data/lib/metanorma/standard_document/metadata/unitsml/quantity.rb +0 -28
  459. data/lib/metanorma/standard_document/metadata/unitsml/quantity_name.rb +0 -21
  460. data/lib/metanorma/standard_document/metadata/unitsml/quantity_set.rb +0 -19
  461. data/lib/metanorma/standard_document/metadata/unitsml/root_units.rb +0 -19
  462. data/lib/metanorma/standard_document/metadata/unitsml/thermodynamic_temperature.rb +0 -19
  463. data/lib/metanorma/standard_document/metadata/unitsml/time.rb +0 -19
  464. data/lib/metanorma/standard_document/metadata/unitsml/unit.rb +0 -32
  465. data/lib/metanorma/standard_document/metadata/unitsml/unit_name.rb +0 -21
  466. data/lib/metanorma/standard_document/metadata/unitsml/unit_set.rb +0 -19
  467. data/lib/metanorma/standard_document/metadata/unitsml/unit_symbol.rb +0 -36
  468. data/lib/metanorma/standard_document/metadata/unitsml/unit_system.rb +0 -23
  469. data/lib/metanorma/standard_document/metadata/unitsml/unitsml_root.rb +0 -28
  470. data/lib/metanorma/standard_document/metadata/unitsml.rb +0 -39
  471. data/lib/metanorma/standard_document/metadata.rb +0 -23
  472. data/lib/metanorma/standard_document/namespace.rb +0 -11
  473. data/lib/metanorma/standard_document/refs/reference_to_term.rb +0 -26
  474. data/lib/metanorma/standard_document/refs/reference_to_termbase.rb +0 -27
  475. data/lib/metanorma/standard_document/refs/standoc_locality_stack.rb +0 -24
  476. data/lib/metanorma/standard_document/refs/standoc_reference_to_citation_element.rb +0 -27
  477. data/lib/metanorma/standard_document/refs/standoc_reference_to_id_element.rb +0 -36
  478. data/lib/metanorma/standard_document/refs/xref_case_type.rb +0 -27
  479. data/lib/metanorma/standard_document/refs/xref_connective_type.rb +0 -27
  480. data/lib/metanorma/standard_document/refs/xref_target_type.rb +0 -25
  481. data/lib/metanorma/standard_document/refs.rb +0 -18
  482. data/lib/metanorma/standard_document/root.rb +0 -10
  483. data/lib/metanorma/standard_document/root_attributes.rb +0 -78
  484. data/lib/metanorma/standard_document/sections/abstract.rb +0 -19
  485. data/lib/metanorma/standard_document/sections/acknowledgements.rb +0 -19
  486. data/lib/metanorma/standard_document/sections/annex_section.rb +0 -69
  487. data/lib/metanorma/standard_document/sections/bibliography_section.rb +0 -20
  488. data/lib/metanorma/standard_document/sections/boilerplate_type.rb +0 -32
  489. data/lib/metanorma/standard_document/sections/clause_hierarchical_section.rb +0 -32
  490. data/lib/metanorma/standard_document/sections/clause_section.rb +0 -91
  491. data/lib/metanorma/standard_document/sections/colophon.rb +0 -16
  492. data/lib/metanorma/standard_document/sections/definition_section.rb +0 -72
  493. data/lib/metanorma/standard_document/sections/floating_section_title.rb +0 -23
  494. data/lib/metanorma/standard_document/sections/floating_title.rb +0 -27
  495. data/lib/metanorma/standard_document/sections/foreword.rb +0 -19
  496. data/lib/metanorma/standard_document/sections/introduction.rb +0 -20
  497. data/lib/metanorma/standard_document/sections/misc_container.rb +0 -31
  498. data/lib/metanorma/standard_document/sections/normative_type.rb +0 -29
  499. data/lib/metanorma/standard_document/sections/preface.rb +0 -36
  500. data/lib/metanorma/standard_document/sections/sections.rb +0 -47
  501. data/lib/metanorma/standard_document/sections/standard_content_section.rb +0 -41
  502. data/lib/metanorma/standard_document/sections/standard_hierarchical_section.rb +0 -30
  503. data/lib/metanorma/standard_document/sections/standard_references_section.rb +0 -74
  504. data/lib/metanorma/standard_document/sections/standard_section.rb +0 -39
  505. data/lib/metanorma/standard_document/sections/terms_section.rb +0 -61
  506. data/lib/metanorma/standard_document/sections.rb +0 -34
  507. data/lib/metanorma/standard_document/standard_document_type.rb +0 -15
  508. data/lib/metanorma/standard_document/terms/abbreviation_type.rb +0 -27
  509. data/lib/metanorma/standard_document/terms/concept.rb +0 -42
  510. data/lib/metanorma/standard_document/terms/definition_collection.rb +0 -24
  511. data/lib/metanorma/standard_document/terms/designation.rb +0 -31
  512. data/lib/metanorma/standard_document/terms/expression_designation.rb +0 -38
  513. data/lib/metanorma/standard_document/terms/expression_type.rb +0 -27
  514. data/lib/metanorma/standard_document/terms/grammar_gender.rb +0 -27
  515. data/lib/metanorma/standard_document/terms/grammar_info.rb +0 -36
  516. data/lib/metanorma/standard_document/terms/graphical_symbol_designation.rb +0 -25
  517. data/lib/metanorma/standard_document/terms/letter_symbol_designation.rb +0 -27
  518. data/lib/metanorma/standard_document/terms/non_verbal_representation.rb +0 -33
  519. data/lib/metanorma/standard_document/terms/related_term.rb +0 -31
  520. data/lib/metanorma/standard_document/terms/related_term_type.rb +0 -28
  521. data/lib/metanorma/standard_document/terms/term.rb +0 -66
  522. data/lib/metanorma/standard_document/terms/term_collection.rb +0 -24
  523. data/lib/metanorma/standard_document/terms/term_definition.rb +0 -29
  524. data/lib/metanorma/standard_document/terms/term_expression.rb +0 -20
  525. data/lib/metanorma/standard_document/terms/term_name_element.rb +0 -29
  526. data/lib/metanorma/standard_document/terms/term_source.rb +0 -29
  527. data/lib/metanorma/standard_document/terms/term_source_status.rb +0 -29
  528. data/lib/metanorma/standard_document/terms/term_source_type.rb +0 -21
  529. data/lib/metanorma/standard_document/terms/verbal_expression.rb +0 -35
  530. data/lib/metanorma/standard_document/terms.rb +0 -33
  531. data/lib/metanorma/standard_document.rb +0 -27
  532. data/lib/metanorma/un_document/blocks/un_admonition_block.rb +0 -86
  533. data/lib/metanorma/un_document/blocks.rb +0 -9
  534. data/lib/metanorma/un_document/metadata/un_bib_data_extension_type.rb +0 -10
  535. data/lib/metanorma/un_document/metadata/un_bibliographic_item.rb +0 -15
  536. data/lib/metanorma/un_document/metadata.rb +0 -12
  537. data/lib/metanorma/un_document/root.rb +0 -37
  538. data/lib/metanorma/un_document/sections/un_abstract_section.rb +0 -48
  539. data/lib/metanorma/un_document/sections/un_preface.rb +0 -40
  540. data/lib/metanorma/un_document/sections/un_sections.rb +0 -24
  541. data/lib/metanorma/un_document/sections.rb +0 -11
  542. data/lib/metanorma/un_document/un_text_element.rb +0 -116
  543. data/lib/metanorma/un_document.rb +0 -13
@@ -1,535 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "stringio"
4
-
5
- module Metanorma
6
- module Html
7
- # Renders IsoDocument components to HTML.
8
- # Extends StandardRenderer with ISO-specific cover page, boilerplate,
9
- # foreword, introduction, annex formatting, and ISO term entries.
10
- class IsoRenderer < StandardRenderer
11
- # --- Public hooks for flavor customization ---
12
-
13
- register_render Metanorma::IsoDocument::Root, :render_document
14
- register_render Metanorma::IsoDocument::Sections::IsoPreface,
15
- :render_preface
16
- register_render Metanorma::IsoDocument::Sections::IsoSections,
17
- :render_sections
18
- register_render Metanorma::IsoDocument::Sections::IsoClauseSection,
19
- :render_clause
20
- register_render Metanorma::IsoDocument::Sections::IsoAnnexSection,
21
- :render_annex
22
- register_render Metanorma::IsoDocument::Sections::IsoTermsSection,
23
- :render_terms_section
24
- register_render Metanorma::IsoDocument::Sections::IsoForewordSection,
25
- :render_foreword
26
- register_render Metanorma::IsoDocument::Sections::IsoAbstractSection,
27
- :render_abstract
28
- register_render Metanorma::IsoDocument::Terms::IsoTerm, :render_term
29
- register_render Metanorma::IsoDocument::Terms::TermNote, :render_term_note
30
- register_render Metanorma::IsoDocument::Terms::TermExample,
31
- :render_term_example
32
- register_render Metanorma::IsoDocument::Boilerplate, :render_boilerplate
33
-
34
- register_inline_render Metanorma::IsoDocument::Terms::TermOrigin,
35
- :render_term_origin
36
-
37
- def render_term_origin(element)
38
- text = extract_text_value(element)
39
- return nil unless text
40
-
41
- render_liquid("_inline_span.html.liquid", {
42
- "attrs" => " class=\"term-source\"",
43
- "content" => escape_html(text),
44
- })
45
- end
46
-
47
- def extract_display_title(bibdata)
48
- titles = bibdata.titles
49
- return nil unless titles
50
-
51
- en_title = bibdata.title_for("en")
52
- result = en_title&.to_s
53
- return result if result && !result.empty?
54
-
55
- if titles.is_a?(Metanorma::IsoDocument::Metadata::TitleCollection) && !titles.items.empty?
56
- raw = titles.items.find do |t|
57
- t.language == "en"
58
- end || titles.items.first
59
- return raw.value.to_s if raw&.value
60
- end
61
- nil
62
- end
63
-
64
- # Format doc identifier with publisher prefix (e.g. "OGC 00-027").
65
- def formatted_doc_id(bibdata)
66
- identifiers = bibdata.doc_identifier
67
- return nil unless identifiers && !identifiers.empty?
68
-
69
- raw_id = extract_text_value(identifiers.first).to_s.strip
70
- return nil if raw_id.empty?
71
-
72
- raw_id = strip_doc_id_prefix(raw_id)
73
- pub = flavor_publisher_name
74
- if pub && !raw_id.start_with?(pub)
75
- "#{pub} #{raw_id}"
76
- else
77
- raw_id
78
- end
79
- end
80
-
81
- def strip_doc_id_prefix(raw_id)
82
- prefix = theme.doc_id_strip_prefix
83
- return raw_id unless prefix
84
-
85
- raw_id.to_s.gsub(/\A#{Regexp.escape(prefix)}\s+/, "").strip
86
- end
87
-
88
- def extract_stage(bibdata)
89
- return nil unless bibdata.status&.stage
90
-
91
- stages = Array(bibdata.status.stage)
92
- return nil if stages.empty?
93
-
94
- en_stage = stages.find do |s|
95
- lang = safe_attr(s, :language)
96
- lang == "en" if lang
97
- end
98
- return Array(en_stage.value).join.strip if en_stage&.value
99
-
100
- seen = Set.new
101
- stage_text = stages.filter_map do |s|
102
- val = Array(s.value).join.strip
103
- down = val.downcase
104
- next if seen.include?(down)
105
-
106
- seen << down
107
- val.empty? ? nil : val
108
- end.compact.join(" ")
109
- stage_text.empty? ? nil : stage_text
110
- end
111
-
112
- def extract_doctype(bibdata)
113
- return nil unless bibdata.is_a?(Metanorma::IsoDocument::Metadata::IsoBibliographicItem)
114
-
115
- ext = bibdata.ext
116
- return nil unless ext
117
-
118
- doctypes = ext.doctype
119
- return nil unless doctypes && !doctypes.empty?
120
-
121
- en_dt = doctypes.find do |d|
122
- lang = safe_attr(d, :language)
123
- lang == "en" if lang
124
- end
125
- return en_dt.value.to_s if en_dt&.value
126
-
127
- dt = doctypes.first
128
- val = dt&.value.to_s
129
- val.strip.empty? ? nil : val
130
- end
131
-
132
- # --- Top-level document rendering ---
133
-
134
- def render_document(doc, **_opts)
135
- parts = []
136
- parts << (render_coverpage(doc) || "")
137
- parts << (render_boilerplate_section(doc) || "")
138
-
139
- parts << (render(doc.preface) || "") if doc.preface
140
- parts << (render_doc_title(doc) || "")
141
-
142
- all_items = collect_document_children(doc)
143
- all_items.each do |node|
144
- next if node.is_a?(String)
145
- next if is_title_element?(node, doc.sections)
146
-
147
- parts << (render(node) || "")
148
- end
149
-
150
- parts << (render_footnotes_section || "")
151
-
152
- render_liquid("_main_content.html.liquid", {
153
- "content" => parts.join,
154
- })
155
- end
156
-
157
- # --- Cover page ---
158
-
159
- def render_coverpage(doc)
160
- bibdata = doc.bibdata
161
- return "" unless bibdata
162
-
163
- logos = publisher_logos_html(doc) || []
164
- doc_id = formatted_doc_id(bibdata)
165
-
166
- pub_date = nil
167
- bibdata.date&.each do |date|
168
- date_type = extract_text_value(safe_attr(date,
169
- :type_attr) || safe_attr(
170
- date, :type
171
- ))
172
- date_val = extract_text_value(date.is_a?(Metanorma::Document::Relaton::BibliographicDate) ? date.on : safe_attr(
173
- date, :text
174
- ))
175
- if date_type == "published" && date_val
176
- pub_date = date_val
177
- end
178
- end
179
-
180
- doctype = extract_doctype(bibdata)
181
-
182
- title_text = nil
183
- if bibdata.titles
184
- en_title = bibdata.title_for("en")
185
- if en_title
186
- title_text = if en_title.is_a?(Metanorma::IsoDocument::Metadata::AbstractTitle) && en_title.value
187
- en_title.value.to_s
188
- else
189
- en_title.to_s
190
- end
191
- end
192
- end
193
-
194
- stage_text = extract_stage(bibdata)
195
-
196
- render_liquid("_standard_cover.html.liquid", {
197
- "publisher_logos" => logos,
198
- "doc_id" => doc_id,
199
- "pub_date" => pub_date,
200
- "doctype" => doctype,
201
- "title" => title_text,
202
- "stage" => stage_text,
203
- })
204
- end
205
-
206
- def render_doc_title(doc)
207
- bibdata = doc.bibdata
208
- return nil unless bibdata
209
-
210
- titles = bibdata.titles
211
- return nil unless titles
212
-
213
- en_title = bibdata.title_for("en")
214
- return nil unless en_title
215
-
216
- render_liquid("_standard_doc_title.html.liquid", {
217
- "title" => en_title.to_s,
218
- })
219
- end
220
-
221
- def render_boilerplate_section(doc)
222
- return nil unless doc.boilerplate
223
-
224
- content = render(doc.boilerplate)
225
- render_liquid("_prefatory_section.html.liquid", {
226
- "content" => content,
227
- })
228
- end
229
-
230
- def render_foreword(fw, level: 1, **_opts)
231
- attrs = element_attrs(id: safe_attr(fw, :id))
232
- title = safe_attr(fw, :fmt_title) || safe_attr(fw, :title)
233
- parts = []
234
- if title
235
- fw_id = safe_attr(fw, :id)
236
- title_content = render_mixed_inline(title)
237
- register_toc_entry(id: fw_id, level: level,
238
- text: extract_plain_text(title))
239
- parts << render_liquid("_heading.html.liquid", {
240
- "tag" => "h1",
241
- "class_attr" => " class=\"foreword-title\"",
242
- "content" => title_content,
243
- })
244
- end
245
- parts << (render_ordered_content(fw) || "")
246
- render_liquid("_element.html.liquid", "tag" => "div",
247
- "extra_attrs" => attrs, "content" => parts.join)
248
- end
249
-
250
- def render_abstract(section, level: 1, **_opts)
251
- attrs = element_attrs(id: safe_attr(section, :id))
252
- title = safe_attr(section, :fmt_title) || safe_attr(section, :title)
253
- parts = []
254
- if title
255
- sec_id = safe_attr(section, :id)
256
- title_content = render_mixed_inline(title)
257
- register_toc_entry(id: sec_id, level: level,
258
- text: extract_plain_text(title))
259
- parts << render_liquid("_heading.html.liquid", {
260
- "tag" => "h1",
261
- "class_attr" => " class=\"intro-title\"",
262
- "content" => title_content,
263
- })
264
- end
265
- parts << (render_ordered_content(section) || "")
266
- render_liquid("_element.html.liquid", "tag" => "div",
267
- "extra_attrs" => attrs, "content" => parts.join)
268
- end
269
-
270
- # --- Main sections rendering ---
271
-
272
- def render_sections(sections, **_opts)
273
- children = collect_ordered_children(sections)
274
- parts = []
275
- children.each do |node|
276
- next if node.is_a?(String)
277
- next if is_title_element?(node, sections)
278
-
279
- parts << (render(node, level: 1) || "")
280
- end
281
- parts.join
282
- end
283
-
284
- # --- Clause rendering ---
285
-
286
- def render_clause(clause, level: 1, **_opts)
287
- attrs = element_attrs(id: safe_attr(clause, :id))
288
- title = render_title(clause, level)
289
- content = render_ordered_content(clause, level)
290
- render_liquid("_element.html.liquid", "tag" => "div",
291
- "extra_attrs" => attrs, "content" => "#{title}#{content}")
292
- end
293
-
294
- # --- Annex rendering ---
295
-
296
- def render_annex(annex, level: 1, **_opts)
297
- attrs = element_attrs(id: safe_attr(annex, :id), class: "section-sub")
298
- title = render_annex_title(annex, level)
299
- content = render_ordered_content(annex, level)
300
- render_liquid("_element.html.liquid", "tag" => "div",
301
- "extra_attrs" => attrs, "content" => "#{title}#{content}")
302
- end
303
-
304
- def render_annex_title(annex, level)
305
- title_element = safe_attr(annex, :fmt_title) || safe_attr(annex, :title)
306
- return nil unless title_element
307
-
308
- annex_id = safe_attr(annex, :id)
309
- title_content = render_mixed_inline(title_element)
310
- register_toc_entry(id: annex_id, level: level,
311
- text: extract_plain_text(title_element))
312
-
313
- h = "h#{[[level, 6].min, 1].max}"
314
- render_liquid("_heading.html.liquid", {
315
- "tag" => h,
316
- "class_attr" => " class=\"annex-title\"",
317
- "content" => title_content,
318
- })
319
- end
320
-
321
- # --- Terms section rendering ---
322
-
323
- def render_terms_section(terms, level: 1, **_opts)
324
- attrs = element_attrs(id: safe_attr(terms, :id))
325
- title = render_title(terms, level)
326
- content = render_ordered_content(terms, level)
327
- render_liquid("_element.html.liquid", "tag" => "div",
328
- "extra_attrs" => attrs, "content" => "#{title}#{content}")
329
- end
330
-
331
- # --- ISO Term rendering ---
332
-
333
- def render_term_designation(designation, type)
334
- css_class = type == "deprecated" ? "term-deprecated" : "term-name"
335
- name = extract_designation_name(designation)
336
- inner = if name
337
- escape_html(name)
338
- else
339
- render_mixed_inline(designation) || ""
340
- end
341
-
342
- dfn_content = render_liquid("_element.html.liquid",
343
- { "tag" => "dfn", "extra_attrs" => "",
344
- "content" => inner })
345
- b_content = render_liquid("_element.html.liquid",
346
- { "tag" => "b", "extra_attrs" => "",
347
- "content" => dfn_content })
348
-
349
- if type == "deprecated"
350
- b_content = render_liquid("_element.html.liquid",
351
- { "tag" => "del", "extra_attrs" => "",
352
- "content" => b_content })
353
- end
354
-
355
- render_liquid("_element.html.liquid", {
356
- "tag" => "p",
357
- "extra_attrs" => " class=\"#{css_class}\" style=\"text-align:left;\"",
358
- "content" => b_content,
359
- })
360
- end
361
-
362
- def extract_designation_name(designation)
363
- expr = designation.expression
364
- if expr.is_a?(Metanorma::IsoDocument::Terms::TermExpression) && expr.name
365
- names = Array(expr.name)
366
- text = names.map { |n| extract_name_text(n) }.join
367
- return text unless text.strip.empty?
368
- end
369
-
370
- texts = safe_attr(designation, :text)
371
- if texts
372
- joined = texts.is_a?(Array) ? texts.join : texts.to_s
373
- return joined unless joined.strip.empty?
374
- end
375
-
376
- nil
377
- end
378
-
379
- def extract_name_text(name_el)
380
- return name_el.to_s unless name_el.is_a?(Lutaml::Model::Serializable)
381
-
382
- texts = safe_attr(name_el, :text)
383
- if texts
384
- joined = texts.is_a?(Array) ? texts.join : texts.to_s
385
- return joined unless joined.strip.empty?
386
- end
387
-
388
- ""
389
- end
390
-
391
- def render_term_definition(definition)
392
- return nil unless definition
393
-
394
- parts = []
395
- rendered = false
396
-
397
- vd = safe_attr(definition,
398
- :verbal_definition) || safe_attr(definition,
399
- :verbalexpression)
400
- if vd
401
- vd_p = safe_attr(vd, :p) || safe_attr(vd, :paragraph)
402
- vd_p&.each { |para| parts << (render_paragraph(para) || "") }
403
- vd.ul&.each { |ul| parts << (render_unordered_list(ul) || "") }
404
- vd.ol&.each { |ol| parts << (render_ordered_list(ol) || "") }
405
- rendered = true
406
- end
407
-
408
- p_children = safe_attr(definition, :p)
409
- if !rendered && p_children && !p_children.empty?
410
- p_children.each { |para| parts << (render_paragraph(para) || "") }
411
- rendered = true
412
- end
413
-
414
- unless rendered
415
- parts << (render_ordered_content(definition) || "")
416
- end
417
- parts.join
418
- end
419
-
420
- # --- Boilerplate rendering ---
421
-
422
- def render_boilerplate(boilerplate, **_opts)
423
- return nil unless boilerplate
424
-
425
- parts = []
426
- parts << (render_boilerplate_items(boilerplate.copyright_statement) || "")
427
- parts << (render_boilerplate_items(boilerplate.license_statement) || "")
428
- parts << (render_boilerplate_items(boilerplate.legal_statement) || "")
429
- parts << (render_boilerplate_items(boilerplate.feedback_statement) || "")
430
- parts << (render_boilerplate_items(boilerplate.clause) || "")
431
-
432
- render_liquid("_boilerplate.html.liquid", content: parts.join)
433
- end
434
-
435
- def render_boilerplate_items(items)
436
- return nil unless items
437
-
438
- Array(items).filter_map { |item| render_boilerplate_clause(item) }.join
439
- end
440
-
441
- def render_boilerplate_clause(item)
442
- return nil unless item
443
- return nil unless item.is_a?(Lutaml::Model::Serializable)
444
-
445
- inner = safe_attr(item, :subsection)
446
- targets = if inner && !Array(inner).empty?
447
- Array(inner)
448
- else
449
- [item]
450
- end
451
-
452
- targets.filter_map do |section|
453
- render_boilerplate_clause_content(section)
454
- end.join
455
- end
456
-
457
- def render_boilerplate_clause_content(section)
458
- fmt_title = safe_attr(section, :fmt_title)
459
- parts = []
460
- section.each_mixed_content do |child|
461
- next if child.is_a?(String)
462
- next if is_title_element?(child, section)
463
- next if child.equal?(fmt_title)
464
-
465
- parts << (render(child) || "")
466
- end
467
- parts.join
468
- end
469
-
470
- # --- Helpers ---
471
-
472
- def render_title(section, level)
473
- title_element = safe_attr(section,
474
- :fmt_title) || safe_attr(section, :title)
475
- return nil unless title_element
476
-
477
- section_id = safe_attr(section, :id)
478
- title_content = render_mixed_inline(title_element)
479
- register_toc_entry(id: section_id, level: level,
480
- text: extract_plain_text(title_element))
481
-
482
- h = "h#{[[level, 6].min, 1].max}"
483
- render_liquid("_heading.html.liquid", tag: h, class_attr: "",
484
- content: title_content)
485
- end
486
-
487
- def collect_document_children(doc)
488
- items = []
489
-
490
- if doc.sections
491
- section_children = collect_ordered_children(doc.sections)
492
- section_children.reject! do |node|
493
- node.is_a?(Metanorma::Document::Components::Paragraphs::ParagraphBlock)
494
- end
495
- items.concat(section_children)
496
- end
497
-
498
- doc.bibliography&.references&.each { |r| items << r }
499
- doc.annex&.each { |a| items << a }
500
-
501
- items.compact!
502
- sort_by_displayorder(items)
503
- end
504
-
505
- def publisher_logos_html(_doc)
506
- publishers = flavor_publishers(extract_primary_doc_id)
507
- logo_map = publisher_logo_map
508
- return [] if publishers.empty? && logo_map.empty?
509
-
510
- dark_logo_map = theme.logos_dark
511
- display_pubs = publishers.empty? ? logo_map.keys : publishers
512
- display_pubs.filter_map do |pub|
513
- filename = logo_map[pub]
514
- next unless filename
515
-
516
- svg = load_logo_svg(filename, height: 48)
517
- next unless svg
518
-
519
- light_span = "<span class=\"cover-logo cover-logo-light\">#{svg}</span>"
520
-
521
- dark_span = ""
522
- dark_filename = dark_logo_map[pub]
523
- if dark_filename
524
- dark_svg = load_logo_svg(dark_filename, height: 48)
525
- if dark_svg
526
- dark_span = "<span class=\"cover-logo cover-logo-dark\">#{dark_svg}</span>"
527
- end
528
- end
529
-
530
- dark_span.empty? ? light_span : "#{light_span}\n#{dark_span}"
531
- end
532
- end
533
- end
534
- end
535
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Metanorma
4
- module Html
5
- class ItuRenderer < IsoRenderer
6
- register_render Metanorma::ItuDocument::Root, :render_document
7
- end
8
- end
9
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Metanorma
4
- module Html
5
- class OgcRenderer < IsoRenderer
6
- register_render Metanorma::OgcDocument::Root, :render_document
7
- register_render Metanorma::StandardDocument::Sections::Preface,
8
- :render_preface
9
- register_render Metanorma::StandardDocument::Sections::ClauseSection,
10
- :render_clause
11
- register_render Metanorma::StandardDocument::Sections::AnnexSection,
12
- :render_annex
13
- register_render Metanorma::StandardDocument::Sections::ContentSection,
14
- :render_clause
15
- register_render Metanorma::StandardDocument::Sections::TermsSection,
16
- :render_terms_section
17
- register_render Metanorma::StandardDocument::Sections::BibliographySection,
18
- :render_clause
19
- register_render Metanorma::StandardDocument::Sections::DefinitionSection,
20
- :render_clause
21
- end
22
- end
23
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Metanorma
4
- module Html
5
- # Renders PDF Association (PDFA) taste documents to HTML.
6
- # PDFA brand: #cf9c1d gold + #d03544 red + #4992b2 steel blue from logo
7
- class PdfaRenderer < IsoRenderer
8
- end
9
- end
10
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Metanorma
4
- module Html
5
- class RiboseRenderer < IsoRenderer
6
- register_render Metanorma::RiboseDocument::Root, :render_document
7
- end
8
- end
9
- end
@@ -1,27 +0,0 @@
1
- <div class="title-section">
2
- <div class="cover-grid">
3
- <div class="cover-meta">
4
- {% if logos %}
5
- <div class="cover-publishers">
6
- {% for svg in logos %}
7
- {{ svg }}
8
- {% endfor %}
9
- </div>
10
- {% endif %}
11
- {% for id in doc_ids %}
12
- <p class="cover-doc-id">{{ id }}</p>
13
- {% endfor %}
14
- {% if date %}
15
- <p class="cover-date">{{ date }}</p>
16
- {% endif %}
17
- </div>
18
- <div class="cover-body">
19
- {% if title %}
20
- <div class="cover-title"><span>{{ title }}</span></div>
21
- {% endif %}
22
- {% if stage %}
23
- <div class="cover-stage"><p>{{ stage }}</p></div>
24
- {% endif %}
25
- </div>
26
- </div>
27
- </div><hr class="cover-separator" />
@@ -1,31 +0,0 @@
1
- <div class="title-section">
2
- <div class="cover-grid">
3
- <div class="cover-meta">
4
- {% if publisher_logos %}
5
- <div class="cover-publishers">
6
- {% for logo in publisher_logos %}
7
- {{ logo }}
8
- {% endfor %}
9
- </div>
10
- {% endif %}
11
- {% if doc_id %}
12
- <p class="cover-doc-id">{{ doc_id | escape }}</p>
13
- {% endif %}
14
- {% if pub_date %}
15
- <p class="cover-date">{{ pub_date | escape }}</p>
16
- {% endif %}
17
- </div>
18
- <div class="cover-body">
19
- {% if doctype %}
20
- <p class="cover-doctype">{{ doctype | escape }}</p>
21
- {% endif %}
22
- {% if title %}
23
- <div class="cover-title"><span>{{ title | escape }}</span></div>
24
- {% endif %}
25
- {% if stage %}
26
- <div class="cover-stage"><p>{{ stage | escape }}</p></div>
27
- {% endif %}
28
- </div>
29
- </div>
30
- </div>
31
- <hr class="cover-separator" />
@@ -1,3 +0,0 @@
1
- <p class="doc-title">
2
- <span class="title-text">{{ title | escape }}</span>
3
- </p>
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Metanorma
4
- module IecDocument
5
- class Root < Lutaml::Model::Serializable
6
- include Metanorma::StandardDocument::RootAttributes
7
-
8
- def self.lutaml_default_register
9
- :iec_document
10
- end
11
-
12
- attribute :bibdata,
13
- Metanorma::IsoDocument::Metadata::IsoBibliographicItem
14
- attribute :preface, Metanorma::IsoDocument::Sections::IsoPreface
15
- attribute :sections, Metanorma::IsoDocument::Sections::IsoSections
16
- attribute :annex, Metanorma::IsoDocument::Sections::IsoAnnexSection,
17
- collection: true
18
-
19
- xml do
20
- element "metanorma"
21
- namespace Metanorma::StandardDocument::Namespace
22
-
23
- Metanorma::StandardDocument::RootXmlMapping.apply(self)
24
- end
25
- end
26
- end
27
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Metanorma
4
- module IecDocument
5
- autoload :Root, "metanorma/iec_document/root"
6
- end
7
- end
8
-
9
- Metanorma::Registers::Setup.setup_iec_register