metanorma-document 0.2.8 → 0.2.12

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 (418) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +164 -66
  3. data/CLAUDE.md +26 -0
  4. data/README.adoc +144 -0
  5. data/Rakefile +14 -2
  6. data/TODO.finalize/01-split-multi-class-files.md +8 -0
  7. data/TODO.finalize/02-remove-data-dist-iso-document-frontend.md +6 -0
  8. data/TODO.finalize/03-align-frontend-iife-and-gha-build.md +11 -0
  9. data/TODO.finalize/04-theme-per-flavor-config-driven.md +9 -0
  10. data/TODO.finalize/05-migrate-all-html-to-liquid.md +16 -0
  11. data/TODO.finalize/06-integrate-pubid-library.md +16 -0
  12. data/TODO.finalize/07-replace-relaton-models-with-relaton-bib.md +39 -0
  13. data/TODO.finalize/08-refactor-renderer-architecture.md +25 -0
  14. data/TODO.finalize/09-eliminate-code-smells.md +14 -0
  15. data/TODO.finalize/10-comprehensive-spec-coverage.md +24 -0
  16. data/TODO.finalize/11-config-driven-flavor-metadata.md +20 -0
  17. data/TODO.finalize/12-add-frozen-string-literal.md +6 -0
  18. data/TODO.finalize/13-extract-composition-from-god-class.md +96 -0
  19. data/TODO.finalize/14-config-driven-section-ordering.md +31 -0
  20. data/TODO.finalize/15-theme-directories-per-flavor.md +46 -0
  21. data/TODO.finalize/16-theme-lutaml-model-schema.md +44 -0
  22. data/data/javascripts/components/mn-footnotes.js +68 -0
  23. data/data/javascripts/components/mn-lightbox.js +18 -2
  24. data/data/javascripts/components/mn-shortcuts.js +2 -0
  25. data/data/javascripts/core/mn-navigation.js +8 -0
  26. data/data/javascripts/core/mn-theme.js +9 -9
  27. data/data/logos/oiml-logo-full-dark.svg +1 -0
  28. data/data/logos/oiml-logo-full-light.svg +1 -0
  29. data/data/logos/oiml-logo-icon-dark.svg +1 -0
  30. data/data/logos/oiml-logo-icon-light.svg +1 -0
  31. data/data/logos/oiml-logo.svg +1 -0
  32. data/data/logos/pdfa-logo.svg +31 -94
  33. data/data/stylesheets/base/_layout.css +3 -0
  34. data/data/stylesheets/base/_reset.css +3 -3
  35. data/data/stylesheets/base/_typography.css +0 -5
  36. data/data/stylesheets/components/bibliography.css +3 -3
  37. data/data/stylesheets/components/cover.css +3 -1
  38. data/data/stylesheets/components/figure.css +13 -1
  39. data/data/stylesheets/components/footnote.css +65 -5
  40. data/data/stylesheets/components/formula.css +44 -0
  41. data/data/stylesheets/components/header.css +17 -2
  42. data/data/stylesheets/components/inline.css +1 -1
  43. data/data/stylesheets/components/table.css +15 -2
  44. data/data/stylesheets/components/term.css +0 -1
  45. data/data/themes/bipm.yaml +60 -0
  46. data/data/themes/cc.yaml +43 -0
  47. data/data/themes/icc.yaml +39 -0
  48. data/data/themes/iec.yaml +44 -0
  49. data/data/themes/ieee.yaml +43 -0
  50. data/data/themes/ietf.yaml +45 -0
  51. data/data/themes/iho.yaml +46 -0
  52. data/data/themes/iso.yaml +40 -0
  53. data/data/themes/itu.yaml +45 -0
  54. data/data/themes/ogc.yaml +51 -0
  55. data/data/themes/oiml.yaml +56 -0
  56. data/data/themes/pdfa.yaml +44 -0
  57. data/data/themes/ribose.yaml +43 -0
  58. data/exe/metanorma-document +11 -0
  59. data/frontend/e2e/sample-html.test.ts +256 -0
  60. data/frontend/index.html +12 -0
  61. data/frontend/package-lock.json +4725 -0
  62. data/frontend/package.json +32 -0
  63. data/frontend/postcss.config.js +6 -0
  64. data/frontend/src/App.vue +79 -0
  65. data/frontend/src/app.ts +21 -0
  66. data/frontend/src/components/AppSidebar.vue +77 -0
  67. data/frontend/src/components/DocumentReader.vue +180 -0
  68. data/frontend/src/components/MirrorRenderer.vue +23 -0
  69. data/frontend/src/components/ReadingProgressBar.vue +29 -0
  70. data/frontend/src/components/TextRenderer.vue +131 -0
  71. data/frontend/src/components/TocItem.vue +57 -0
  72. data/frontend/src/components/TopBar.vue +49 -0
  73. data/frontend/src/components/__tests__/MirrorRenderer.test.ts +178 -0
  74. data/frontend/src/components/blocks/AdmonitionBlock.vue +74 -0
  75. data/frontend/src/components/blocks/ClauseBlock.vue +53 -0
  76. data/frontend/src/components/blocks/ExampleBlock.vue +21 -0
  77. data/frontend/src/components/blocks/FallbackBlock.vue +18 -0
  78. data/frontend/src/components/blocks/FigureBlock.vue +26 -0
  79. data/frontend/src/components/blocks/FootnotesBlock.vue +25 -0
  80. data/frontend/src/components/blocks/ListBlocks.vue +62 -0
  81. data/frontend/src/components/blocks/NoteBlock.vue +21 -0
  82. data/frontend/src/components/blocks/ParagraphBlock.vue +25 -0
  83. data/frontend/src/components/blocks/QuoteBlock.vue +25 -0
  84. data/frontend/src/components/blocks/ReviewBlock.vue +39 -0
  85. data/frontend/src/components/blocks/SourcecodeBlock.vue +52 -0
  86. data/frontend/src/components/blocks/TableBlock.vue +48 -0
  87. data/frontend/src/components/blocks/index.ts +36 -0
  88. data/frontend/src/stores/__tests__/documentStore.fixture.test.ts +272 -0
  89. data/frontend/src/stores/__tests__/documentStore.test.ts +143 -0
  90. data/frontend/src/stores/__tests__/ebookStore.test.ts +145 -0
  91. data/frontend/src/stores/__tests__/uiStore.test.ts +42 -0
  92. data/frontend/src/stores/documentStore.ts +153 -0
  93. data/frontend/src/stores/ebookStore.ts +179 -0
  94. data/frontend/src/stores/uiStore.ts +32 -0
  95. data/frontend/src/styles.css +156 -0
  96. data/frontend/src/types/__tests__/rendering-contract.test.ts +172 -0
  97. data/frontend/src/types/rendering-contract.ts +209 -0
  98. data/frontend/src/utils/__tests__/typeMetadata.test.ts +102 -0
  99. data/frontend/src/utils/typeMetadata.ts +121 -0
  100. data/frontend/tailwind.config.js +18 -0
  101. data/frontend/test/fixtures/iso-document.json +271 -0
  102. data/frontend/tmp/debug_e2e.cjs +46 -0
  103. data/frontend/tsconfig.json +25 -0
  104. data/frontend/tsconfig.node.json +11 -0
  105. data/frontend/vite.config.ts +37 -0
  106. data/frontend/vitest.e2e.config.ts +9 -0
  107. data/lib/metanorma/bipm_document/metadata/bipm_bibliographic_item.rb +0 -14
  108. data/lib/metanorma/bipm_document/metadata/depiction_element.rb +18 -0
  109. data/lib/metanorma/bipm_document/metadata.rb +1 -1
  110. data/lib/metanorma/document/cli.rb +116 -0
  111. data/lib/metanorma/document/components/ancillary_blocks/callout_annotation.rb +27 -0
  112. data/lib/metanorma/document/components/ancillary_blocks/sourcecode_block.rb +0 -65
  113. data/lib/metanorma/document/components/ancillary_blocks/sourcecode_body.rb +18 -0
  114. data/lib/metanorma/document/components/ancillary_blocks.rb +4 -0
  115. data/lib/metanorma/document/components/bib_data/bib_data.rb +7 -0
  116. data/lib/metanorma/document/components/blocks/classification_value.rb +21 -0
  117. data/lib/metanorma/document/components/blocks/note_block.rb +1 -1
  118. data/lib/metanorma/document/components/blocks/permission_model.rb +28 -0
  119. data/lib/metanorma/document/components/blocks/recommendation_model.rb +28 -0
  120. data/lib/metanorma/document/components/blocks/requirement_base.rb +30 -0
  121. data/lib/metanorma/document/components/blocks/requirement_classification.rb +20 -0
  122. data/lib/metanorma/document/components/blocks/requirement_description.rb +43 -0
  123. data/lib/metanorma/document/components/blocks/requirement_inherit.rb +24 -0
  124. data/lib/metanorma/document/components/blocks/requirement_model.rb +0 -131
  125. data/lib/metanorma/document/components/blocks.rb +8 -7
  126. data/lib/metanorma/document/components/id_elements/image.rb +2 -0
  127. data/lib/metanorma/document/components/inline/asciimath_element.rb +2 -0
  128. data/lib/metanorma/document/components/inline/attribution_element.rb +2 -0
  129. data/lib/metanorma/document/components/inline/bcp14_element.rb +2 -0
  130. data/lib/metanorma/document/components/inline/biblio_tag_element.rb +2 -0
  131. data/lib/metanorma/document/components/inline/br_element.rb +2 -0
  132. data/lib/metanorma/document/components/inline/comma_element.rb +2 -0
  133. data/lib/metanorma/document/components/inline/concept_element.rb +2 -0
  134. data/lib/metanorma/document/components/inline/display_text_element.rb +2 -0
  135. data/lib/metanorma/document/components/inline/em_raw_element.rb +2 -0
  136. data/lib/metanorma/document/components/inline/enum_comma_element.rb +2 -0
  137. data/lib/metanorma/document/components/inline/eref_element.rb +3 -1
  138. data/lib/metanorma/document/components/inline/fmt_admitted_element.rb +4 -0
  139. data/lib/metanorma/document/components/inline/fmt_annotation_body_element.rb +4 -0
  140. data/lib/metanorma/document/components/inline/fmt_annotation_end_element.rb +4 -0
  141. data/lib/metanorma/document/components/inline/fmt_annotation_start_element.rb +4 -0
  142. data/lib/metanorma/document/components/inline/fmt_concept_element.rb +4 -0
  143. data/lib/metanorma/document/components/inline/fmt_definition_element.rb +4 -0
  144. data/lib/metanorma/document/components/inline/fmt_fn_body_element.rb +4 -0
  145. data/lib/metanorma/document/components/inline/fmt_fn_label_element.rb +4 -0
  146. data/lib/metanorma/document/components/inline/fmt_footnote_container_element.rb +4 -0
  147. data/lib/metanorma/document/components/inline/fmt_identifier_element.rb +4 -0
  148. data/lib/metanorma/document/components/inline/fmt_name_element.rb +4 -0
  149. data/lib/metanorma/document/components/inline/fmt_preferred_element.rb +4 -0
  150. data/lib/metanorma/document/components/inline/fmt_sourcecode_element.rb +4 -0
  151. data/lib/metanorma/document/components/inline/fmt_stem_element.rb +10 -0
  152. data/lib/metanorma/document/components/inline/fmt_termsource_element.rb +4 -0
  153. data/lib/metanorma/document/components/inline/fmt_title_element.rb +4 -0
  154. data/lib/metanorma/document/components/inline/fmt_xref_element.rb +4 -0
  155. data/lib/metanorma/document/components/inline/fmt_xref_label_element.rb +4 -0
  156. data/lib/metanorma/document/components/inline/fn_element.rb +3 -1
  157. data/lib/metanorma/document/components/inline/link_element.rb +2 -0
  158. data/lib/metanorma/document/components/inline/localized_string_element.rb +2 -0
  159. data/lib/metanorma/document/components/inline/localized_strings_element.rb +2 -0
  160. data/lib/metanorma/document/components/inline/location_element.rb +24 -0
  161. data/lib/metanorma/document/components/inline/math_element.rb +2 -0
  162. data/lib/metanorma/document/components/inline/name_with_id_element.rb +4 -0
  163. data/lib/metanorma/document/components/inline/rendered_display.rb +23 -0
  164. data/lib/metanorma/document/components/inline/rendered_math_element.rb +21 -0
  165. data/lib/metanorma/document/components/inline/semantic_content.rb +51 -0
  166. data/lib/metanorma/document/components/inline/semantic_math_element.rb +20 -0
  167. data/lib/metanorma/document/components/inline/semx_child_element.rb +2 -0
  168. data/lib/metanorma/document/components/inline/semx_element.rb +13 -1
  169. data/lib/metanorma/document/components/inline/small_cap_element.rb +2 -0
  170. data/lib/metanorma/document/components/inline/span_element.rb +10 -15
  171. data/lib/metanorma/document/components/inline/stem_inline_element.rb +7 -1
  172. data/lib/metanorma/document/components/inline/strong_raw_element.rb +2 -0
  173. data/lib/metanorma/document/components/inline/sub_element.rb +2 -0
  174. data/lib/metanorma/document/components/inline/sup_element.rb +2 -0
  175. data/lib/metanorma/document/components/inline/tab_element.rb +2 -0
  176. data/lib/metanorma/document/components/inline/title_with_annotation_element.rb +4 -0
  177. data/lib/metanorma/document/components/inline/tt_element.rb +2 -0
  178. data/lib/metanorma/document/components/inline/variant_title_element.rb +2 -0
  179. data/lib/metanorma/document/components/inline/vocabulary.rb +184 -0
  180. data/lib/metanorma/document/components/inline/xref_element.rb +10 -0
  181. data/lib/metanorma/document/components/inline.rb +12 -0
  182. data/lib/metanorma/document/components/lists/unordered_list.rb +2 -2
  183. data/lib/metanorma/document/components/multi_paragraph/admonition_block.rb +5 -2
  184. data/lib/metanorma/document/components/multi_paragraph/quote_author_element.rb +20 -0
  185. data/lib/metanorma/document/components/multi_paragraph/quote_block.rb +0 -29
  186. data/lib/metanorma/document/components/multi_paragraph.rb +2 -0
  187. data/lib/metanorma/document/components/paragraphs/paragraph_block.rb +2 -2
  188. data/lib/metanorma/document/components/reference_elements/source_element.rb +0 -31
  189. data/lib/metanorma/document/components/reference_elements/source_modification.rb +21 -0
  190. data/lib/metanorma/document/components/reference_elements/source_origin.rb +28 -0
  191. data/lib/metanorma/document/components/reference_elements.rb +2 -2
  192. data/lib/metanorma/document/components/tables/col_element.rb +18 -0
  193. data/lib/metanorma/document/components/tables/col_group_element.rb +18 -0
  194. data/lib/metanorma/document/components/tables/table_block.rb +0 -22
  195. data/lib/metanorma/document/components/tables/table_body_section.rb +16 -0
  196. data/lib/metanorma/document/components/tables/table_foot_section.rb +16 -0
  197. data/lib/metanorma/document/components/tables/table_head_section.rb +16 -0
  198. data/lib/metanorma/document/components/tables/table_section.rb +0 -25
  199. data/lib/metanorma/document/components/tables.rb +5 -3
  200. data/lib/metanorma/document/relaton/address.rb +0 -27
  201. data/lib/metanorma/document/relaton/bib_item_locality.rb +3 -12
  202. data/lib/metanorma/document/relaton/copyright_association.rb +0 -10
  203. data/lib/metanorma/document/relaton/copyright_owner.rb +16 -0
  204. data/lib/metanorma/document/relaton/edition.rb +4 -7
  205. data/lib/metanorma/document/relaton/formatted_address.rb +29 -0
  206. data/lib/metanorma/document/relaton/logo_element.rb +18 -0
  207. data/lib/metanorma/document/relaton/organization.rb +0 -14
  208. data/lib/metanorma/document/relaton/phone.rb +3 -9
  209. data/lib/metanorma/document/relaton/place_type.rb +0 -13
  210. data/lib/metanorma/document/relaton/price_type.rb +3 -9
  211. data/lib/metanorma/document/relaton/region_element.rb +18 -0
  212. data/lib/metanorma/document/relaton.rb +6 -1
  213. data/lib/metanorma/document/version.rb +1 -1
  214. data/lib/metanorma/document.rb +2 -0
  215. data/lib/metanorma/html/asset_pipeline.rb +1 -0
  216. data/lib/metanorma/html/base_renderer.rb +261 -1008
  217. data/lib/metanorma/html/bipm_renderer.rb +15 -144
  218. data/lib/metanorma/html/cc_renderer.rb +1 -45
  219. data/lib/metanorma/html/component/base.rb +2 -7
  220. data/lib/metanorma/html/component/index_section.rb +41 -43
  221. data/lib/metanorma/html/drops/admonition_drop.rb +1 -4
  222. data/lib/metanorma/html/drops/biblio_entry_drop.rb +50 -0
  223. data/lib/metanorma/html/drops/block_element_drop.rb +7 -2
  224. data/lib/metanorma/html/drops/example_drop.rb +1 -4
  225. data/lib/metanorma/html/drops/figure_drop.rb +31 -22
  226. data/lib/metanorma/html/drops/footnote_drop.rb +1 -1
  227. data/lib/metanorma/html/drops/formula_drop.rb +45 -16
  228. data/lib/metanorma/html/drops/note_drop.rb +9 -7
  229. data/lib/metanorma/html/drops/sourcecode_drop.rb +12 -5
  230. data/lib/metanorma/html/drops.rb +2 -0
  231. data/lib/metanorma/html/generator.rb +2 -2
  232. data/lib/metanorma/html/icc_renderer.rb +0 -39
  233. data/lib/metanorma/html/iec_renderer.rb +1 -44
  234. data/lib/metanorma/html/ieee_renderer.rb +1 -45
  235. data/lib/metanorma/html/ietf_renderer.rb +1 -48
  236. data/lib/metanorma/html/iho_renderer.rb +1 -46
  237. data/lib/metanorma/html/iso_renderer.rb +291 -321
  238. data/lib/metanorma/html/itu_renderer.rb +1 -45
  239. data/lib/metanorma/html/ogc_renderer.rb +15 -76
  240. data/lib/metanorma/html/oiml_renderer.rb +18 -38
  241. data/lib/metanorma/html/pdfa_renderer.rb +0 -39
  242. data/lib/metanorma/html/renderers/block_renderer.rb +372 -0
  243. data/lib/metanorma/html/renderers/inline_renderer.rb +655 -0
  244. data/lib/metanorma/html/renderers/pubid_renderer.rb +69 -0
  245. data/lib/metanorma/html/renderers/section_renderer.rb +193 -0
  246. data/lib/metanorma/html/renderers.rb +8 -0
  247. data/lib/metanorma/html/ribose_renderer.rb +1 -45
  248. data/lib/metanorma/html/standard_renderer.rb +341 -229
  249. data/lib/metanorma/html/templates/_audio.html.liquid +1 -0
  250. data/lib/metanorma/html/templates/_biblio_entry.html.liquid +1 -0
  251. data/lib/metanorma/html/templates/_bipm_cover.html.liquid +27 -0
  252. data/lib/metanorma/html/templates/_boilerplate.html.liquid +1 -0
  253. data/lib/metanorma/html/templates/_bookmark.html.liquid +1 -0
  254. data/lib/metanorma/html/templates/_br.html.liquid +1 -0
  255. data/lib/metanorma/html/templates/_definition_list.html.liquid +6 -0
  256. data/lib/metanorma/html/templates/_element.html.liquid +1 -0
  257. data/lib/metanorma/html/templates/_fn_marker.html.liquid +1 -0
  258. data/lib/metanorma/html/templates/_footnotes.html.liquid +6 -6
  259. data/lib/metanorma/html/templates/_formula.html.liquid +1 -1
  260. data/lib/metanorma/html/templates/_header.html.liquid +1 -1
  261. data/lib/metanorma/html/templates/_heading.html.liquid +1 -0
  262. data/lib/metanorma/html/templates/_image.html.liquid +1 -0
  263. data/lib/metanorma/html/templates/_inline_span.html.liquid +1 -0
  264. data/lib/metanorma/html/templates/_iso_cover.html.liquid +1 -1
  265. data/lib/metanorma/html/templates/_link.html.liquid +1 -0
  266. data/lib/metanorma/html/templates/_list.html.liquid +3 -0
  267. data/lib/metanorma/html/templates/_list_item.html.liquid +1 -0
  268. data/lib/metanorma/html/templates/_main_content.html.liquid +1 -0
  269. data/lib/metanorma/html/templates/_math_container.html.liquid +1 -0
  270. data/lib/metanorma/html/templates/_paragraph.html.liquid +1 -0
  271. data/lib/metanorma/html/templates/_prefatory_section.html.liquid +1 -0
  272. data/lib/metanorma/html/templates/_pubid_identifier.html.liquid +1 -0
  273. data/lib/metanorma/html/templates/_quote.html.liquid +4 -0
  274. data/lib/metanorma/html/templates/_ref_date.html.liquid +1 -0
  275. data/lib/metanorma/html/templates/_ref_title.html.liquid +1 -0
  276. data/lib/metanorma/html/templates/_section.html.liquid +5 -0
  277. data/lib/metanorma/html/templates/_standard_cover.html.liquid +31 -0
  278. data/lib/metanorma/html/templates/_standard_doc_title.html.liquid +3 -0
  279. data/lib/metanorma/html/templates/_stem_span.html.liquid +1 -0
  280. data/lib/metanorma/html/templates/_table.html.liquid +9 -0
  281. data/lib/metanorma/html/templates/_term_domain.html.liquid +1 -0
  282. data/lib/metanorma/html/templates/_term_example.html.liquid +1 -0
  283. data/lib/metanorma/html/templates/_term_note.html.liquid +1 -0
  284. data/lib/metanorma/html/templates/_term_number.html.liquid +1 -0
  285. data/lib/metanorma/html/templates/_term_source.html.liquid +1 -0
  286. data/lib/metanorma/html/templates/_term_text_note.html.liquid +1 -0
  287. data/lib/metanorma/html/templates/_video.html.liquid +1 -0
  288. data/lib/metanorma/html/templates/_wrapped_preface.html.liquid +1 -0
  289. data/lib/metanorma/html/templates/document.html.liquid +4 -0
  290. data/lib/metanorma/html/theme.rb +180 -107
  291. data/lib/metanorma/html.rb +13 -0
  292. data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +0 -25
  293. data/lib/metanorma/ietf_document/metadata/pi_settings.rb +32 -0
  294. data/lib/metanorma/ietf_document/metadata.rb +2 -0
  295. data/lib/metanorma/ietf_document/sections/ietf_annex_section.rb +1 -1
  296. data/lib/metanorma/ietf_document/sections/ietf_clause_section.rb +1 -1
  297. data/lib/metanorma/ietf_document/sections/ietf_content_section.rb +1 -1
  298. data/lib/metanorma/iso_document/metadata/doc_identifier.rb +1 -1
  299. data/lib/metanorma/iso_document/metadata/doctype_element.rb +20 -0
  300. data/lib/metanorma/iso_document/metadata/iso_bib_data_extension_type.rb +0 -48
  301. data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +0 -72
  302. data/lib/metanorma/iso_document/metadata/iso_document_status.rb +0 -30
  303. data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +4 -1
  304. data/lib/metanorma/iso_document/metadata/language_element.rb +18 -0
  305. data/lib/metanorma/iso_document/metadata/project_number.rb +22 -0
  306. data/lib/metanorma/iso_document/metadata/script_element.rb +18 -0
  307. data/lib/metanorma/iso_document/metadata/stage_element.rb +26 -0
  308. data/lib/metanorma/iso_document/metadata/stagename_element.rb +18 -0
  309. data/lib/metanorma/iso_document/metadata/structured_identifier.rb +0 -17
  310. data/lib/metanorma/iso_document/metadata/title_collection.rb +1 -0
  311. data/lib/metanorma/iso_document/metadata.rb +9 -4
  312. data/lib/metanorma/iso_document/sections/iso_terms_section.rb +4 -3
  313. data/lib/metanorma/iso_document/terms/iso_term.rb +0 -13
  314. data/lib/metanorma/iso_document/terms/term_domain_element.rb +18 -0
  315. data/lib/metanorma/iso_document/terms/term_example.rb +2 -1
  316. data/lib/metanorma/iso_document/terms/term_note.rb +2 -1
  317. data/lib/metanorma/iso_document/terms/verbal_definition.rb +2 -1
  318. data/lib/metanorma/iso_document/terms.rb +1 -0
  319. data/lib/metanorma/iso_document.rb +0 -1
  320. data/lib/metanorma/itu_document/metadata/itu_bib_data_extension_type.rb +0 -37
  321. data/lib/metanorma/itu_document/metadata/meeting_date.rb +18 -0
  322. data/lib/metanorma/itu_document/metadata/meeting_element.rb +18 -0
  323. data/lib/metanorma/itu_document/metadata/study_period.rb +18 -0
  324. data/lib/metanorma/itu_document/metadata.rb +3 -4
  325. data/lib/metanorma/jis_document/sections/jis_annex_section.rb +1 -1
  326. data/lib/metanorma/mirror/default_registry.rb +170 -0
  327. data/lib/metanorma/mirror/handler_registry.rb +60 -0
  328. data/lib/metanorma/mirror/handler_result.rb +37 -0
  329. data/lib/metanorma/mirror/handlers/admonition.rb +18 -0
  330. data/lib/metanorma/mirror/handlers/example.rb +21 -0
  331. data/lib/metanorma/mirror/handlers/figure.rb +53 -0
  332. data/lib/metanorma/mirror/handlers/formula.rb +35 -0
  333. data/lib/metanorma/mirror/handlers/inline/rich_html_renderer.rb +159 -0
  334. data/lib/metanorma/mirror/handlers/inline/text_extractor.rb +116 -0
  335. data/lib/metanorma/mirror/handlers/inline.rb +225 -0
  336. data/lib/metanorma/mirror/handlers/list.rb +110 -0
  337. data/lib/metanorma/mirror/handlers/note.rb +26 -0
  338. data/lib/metanorma/mirror/handlers/paragraph.rb +19 -0
  339. data/lib/metanorma/mirror/handlers/quote.rb +16 -0
  340. data/lib/metanorma/mirror/handlers/review.rb +19 -0
  341. data/lib/metanorma/mirror/handlers/section.rb +149 -0
  342. data/lib/metanorma/mirror/handlers/sourcecode.rb +27 -0
  343. data/lib/metanorma/mirror/handlers/structural.rb +68 -0
  344. data/lib/metanorma/mirror/handlers/table.rb +81 -0
  345. data/lib/metanorma/mirror/handlers/term.rb +100 -0
  346. data/lib/metanorma/mirror/handlers.rb +60 -0
  347. data/lib/metanorma/mirror/id_strategy/positional.rb +166 -0
  348. data/lib/metanorma/mirror/id_strategy/preserve.rb +12 -0
  349. data/lib/metanorma/mirror/id_strategy.rb +34 -0
  350. data/lib/metanorma/mirror/math_util.rb +53 -0
  351. data/lib/metanorma/mirror/metadata.rb +37 -0
  352. data/lib/metanorma/mirror/metanorma_to_mirror.rb +101 -0
  353. data/lib/metanorma/mirror/model/container.rb +47 -0
  354. data/lib/metanorma/mirror/model/factory.rb +52 -0
  355. data/lib/metanorma/mirror/model/guide.rb +25 -0
  356. data/lib/metanorma/mirror/model/leaf.rb +17 -0
  357. data/lib/metanorma/mirror/model/mark.rb +53 -0
  358. data/lib/metanorma/mirror/model/node.rb +47 -0
  359. data/lib/metanorma/mirror/model/soft_break.rb +33 -0
  360. data/lib/metanorma/mirror/model/text.rb +34 -0
  361. data/lib/metanorma/mirror/model.rb +16 -0
  362. data/lib/metanorma/mirror/output/builder.rb +39 -0
  363. data/lib/metanorma/mirror/output/formats/base_format.rb +90 -0
  364. data/lib/metanorma/mirror/output/formats/inline_format.rb +81 -0
  365. data/lib/metanorma/mirror/output/formats.rb +53 -0
  366. data/lib/metanorma/mirror/output/html_renderer.rb +95 -0
  367. data/lib/metanorma/mirror/output/html_renderers/block_renderers.rb +178 -0
  368. data/lib/metanorma/mirror/output/html_renderers/inline_renderer.rb +61 -0
  369. data/lib/metanorma/mirror/output/html_renderers/list_renderers.rb +96 -0
  370. data/lib/metanorma/mirror/output/html_renderers/mark_renderers.rb +64 -0
  371. data/lib/metanorma/mirror/output/html_renderers/section_renderers.rb +129 -0
  372. data/lib/metanorma/mirror/output/html_renderers/structural_renderers.rb +80 -0
  373. data/lib/metanorma/mirror/output/html_renderers/table_renderers.rb +87 -0
  374. data/lib/metanorma/mirror/output/html_renderers.rb +76 -0
  375. data/lib/metanorma/mirror/output/pipeline.rb +92 -0
  376. data/lib/metanorma/mirror/output/pipeline_context.rb +22 -0
  377. data/lib/metanorma/mirror/output.rb +14 -0
  378. data/lib/metanorma/mirror/rewriter.rb +121 -0
  379. data/lib/metanorma/mirror/safe_attr.rb +16 -0
  380. data/lib/metanorma/mirror/serialization/json_serializer.rb +25 -0
  381. data/lib/metanorma/mirror/serialization/yaml_serializer.rb +20 -0
  382. data/lib/metanorma/mirror/serialization.rb +10 -0
  383. data/lib/metanorma/mirror/transformer.rb +22 -0
  384. data/lib/metanorma/mirror.rb +32 -0
  385. data/lib/metanorma/standard_document/annotation.rb +37 -0
  386. data/lib/metanorma/standard_document/annotation_container.rb +25 -2
  387. data/lib/metanorma/standard_document/block_attributes.rb +15 -2
  388. data/lib/metanorma/standard_document/blocks/amend_content_block.rb +21 -3
  389. data/lib/metanorma/standard_document/blocks/block_source.rb +0 -23
  390. data/lib/metanorma/standard_document/blocks/source_origin_element.rb +23 -0
  391. data/lib/metanorma/standard_document/blocks/standard_block_no_notes.rb +2 -2
  392. data/lib/metanorma/standard_document/blocks.rb +1 -1
  393. data/lib/metanorma/standard_document/boilerplate.rb +20 -2
  394. data/lib/metanorma/standard_document/sections/annex_section.rb +2 -2
  395. data/lib/metanorma/standard_document/sections/clause_hierarchical_section.rb +1 -1
  396. data/lib/metanorma/standard_document/sections/clause_section.rb +2 -2
  397. data/lib/metanorma/standard_document/sections/definition_section.rb +2 -2
  398. data/lib/metanorma/standard_document/sections/standard_content_section.rb +2 -2
  399. data/lib/metanorma/standard_document/sections/standard_hierarchical_section.rb +1 -1
  400. data/lib/metanorma/standard_document/sections/standard_references_section.rb +2 -2
  401. data/lib/metanorma/standard_document/sections/standard_section.rb +1 -1
  402. data/lib/metanorma/standard_document/sections/terms_section.rb +2 -2
  403. data/lib/metanorma/standard_document/terms/term_expression.rb +0 -31
  404. data/lib/metanorma/standard_document/terms/term_name_element.rb +29 -0
  405. data/lib/metanorma/standard_document/terms.rb +1 -0
  406. data/script/render_both.rb +18 -0
  407. metadata +262 -14
  408. data/.github/workflows/rake.yml +0 -21
  409. data/.github/workflows/release.yml +0 -25
  410. data/.github/workflows/roundtrip-samples.yml +0 -132
  411. data/.gitignore +0 -19
  412. data/.rspec +0 -3
  413. data/.rubocop.yml +0 -22
  414. data/Gemfile +0 -28
  415. data/bin/console +0 -15
  416. data/bin/setup +0 -8
  417. data/lib/metanorma/iso_document/raw_paragraph.rb +0 -23
  418. data/metanorma-document.gemspec +0 -35
@@ -0,0 +1,184 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module Inline
7
+ # Shared vocabulary of inline child elements that may appear in any
8
+ # general-purpose inline-content container. Including this module
9
+ # in a `Lutaml::Model::Serializable` subclass declares every inline
10
+ # element type as a collection attribute, so that no inline child
11
+ # encountered during parsing is silently dropped.
12
+ #
13
+ # Use together with `VocabularyXmlMapping.apply_inline_mappings`
14
+ # inside the class's `xml do ... end` block.
15
+ #
16
+ # Restricted child sets (e.g. `XrefElement` with only `<location>`
17
+ # children) intentionally do NOT include this module — they have
18
+ # semantic reasons to exclude the general vocabulary.
19
+ module Vocabulary
20
+ def self.included(base)
21
+ declare_text_attributes_on(base)
22
+ declare_formatting_attributes_on(base)
23
+ declare_cross_reference_attributes_on(base)
24
+ declare_structural_attributes_on(base)
25
+ declare_rendered_display_attributes_on(base)
26
+ end
27
+
28
+ class << self
29
+ def declare_text_attributes_on(base)
30
+ base.attribute :text, :string, collection: true
31
+ base.attribute :semx,
32
+ Metanorma::Document::Components::Inline::SemxElement,
33
+ collection: true
34
+ end
35
+
36
+ def declare_formatting_attributes_on(base)
37
+ base.attribute :em,
38
+ Metanorma::Document::Components::Inline::EmRawElement,
39
+ collection: true
40
+ base.attribute :strong,
41
+ Metanorma::Document::Components::Inline::StrongRawElement,
42
+ collection: true
43
+ base.attribute :sub,
44
+ Metanorma::Document::Components::Inline::SubElement,
45
+ collection: true
46
+ base.attribute :sup,
47
+ Metanorma::Document::Components::Inline::SupElement,
48
+ collection: true
49
+ base.attribute :tt,
50
+ Metanorma::Document::Components::Inline::TtElement,
51
+ collection: true
52
+ base.attribute :underline,
53
+ Metanorma::Document::Components::TextElements::UnderlineElement,
54
+ collection: true
55
+ base.attribute :strike,
56
+ Metanorma::Document::Components::TextElements::StrikeElement,
57
+ collection: true
58
+ base.attribute :smallcap,
59
+ Metanorma::Document::Components::Inline::SmallCapElement,
60
+ collection: true
61
+ end
62
+
63
+ def declare_cross_reference_attributes_on(base)
64
+ base.attribute :xref,
65
+ Metanorma::Document::Components::Inline::XrefElement,
66
+ collection: true
67
+ base.attribute :eref,
68
+ Metanorma::Document::Components::Inline::ErefElement,
69
+ collection: true
70
+ base.attribute :link,
71
+ Metanorma::Document::Components::Inline::LinkElement,
72
+ collection: true
73
+ base.attribute :span,
74
+ Metanorma::Document::Components::Inline::SpanElement,
75
+ collection: true
76
+ end
77
+
78
+ def declare_structural_attributes_on(base)
79
+ base.attribute :stem,
80
+ Metanorma::Document::Components::Inline::StemInlineElement,
81
+ collection: true
82
+ base.attribute :concept,
83
+ Metanorma::Document::Components::Inline::ConceptElement,
84
+ collection: true
85
+ base.attribute :fn,
86
+ Metanorma::Document::Components::Inline::FnElement,
87
+ collection: true
88
+ base.attribute :bcp14,
89
+ Metanorma::Document::Components::Inline::Bcp14Element,
90
+ collection: true
91
+ base.attribute :br,
92
+ Metanorma::Document::Components::Inline::BrElement,
93
+ collection: true
94
+ base.attribute :tab,
95
+ Metanorma::Document::Components::Inline::TabElement,
96
+ collection: true
97
+ base.attribute :bookmark,
98
+ Metanorma::Document::Components::IdElements::Bookmark,
99
+ collection: true
100
+ base.attribute :image,
101
+ Metanorma::Document::Components::IdElements::Image,
102
+ collection: true
103
+ base.attribute :index,
104
+ Metanorma::Document::Components::EmptyElements::IndexElement,
105
+ collection: true
106
+ base.attribute :add, "Metanorma::Document::Elements::Add",
107
+ collection: true
108
+ base.attribute :del, "Metanorma::Document::Elements::Del",
109
+ collection: true
110
+ end
111
+
112
+ def declare_rendered_display_attributes_on(base)
113
+ base.attribute :fmt_stem,
114
+ Metanorma::Document::Components::Inline::FmtStemElement,
115
+ collection: true
116
+ base.attribute :fmt_concept,
117
+ Metanorma::Document::Components::Inline::FmtConceptElement,
118
+ collection: true
119
+ base.attribute :fmt_fn_label,
120
+ Metanorma::Document::Components::Inline::FmtFnLabelElement,
121
+ collection: true
122
+ base.attribute :fmt_annotation_start,
123
+ Metanorma::Document::Components::Inline::FmtAnnotationStartElement,
124
+ collection: true
125
+ base.attribute :fmt_annotation_end,
126
+ Metanorma::Document::Components::Inline::FmtAnnotationEndElement,
127
+ collection: true
128
+ end
129
+ end
130
+
131
+ # Adds the `map_element` calls corresponding to every vocabulary
132
+ # attribute. Call inside an `xml do ... end` block:
133
+ #
134
+ # xml do
135
+ # element "span"
136
+ # mixed_content
137
+ # map_attribute "class", to: :class_attr
138
+ # map_content to: :text
139
+ # VocabularyXmlMapping.apply_inline_mappings(self)
140
+ # end
141
+ module VocabularyXmlMapping
142
+ INLINE_MAPPINGS = {
143
+ "semx" => :semx,
144
+ "em" => :em,
145
+ "strong" => :strong,
146
+ "sub" => :sub,
147
+ "sup" => :sup,
148
+ "tt" => :tt,
149
+ "underline" => :underline,
150
+ "strike" => :strike,
151
+ "smallcap" => :smallcap,
152
+ "br" => :br,
153
+ "tab" => :tab,
154
+ "xref" => :xref,
155
+ "eref" => :eref,
156
+ "link" => :link,
157
+ "span" => :span,
158
+ "stem" => :stem,
159
+ "concept" => :concept,
160
+ "fn" => :fn,
161
+ "bcp14" => :bcp14,
162
+ "bookmark" => :bookmark,
163
+ "image" => :image,
164
+ "index" => :index,
165
+ "add" => :add,
166
+ "del" => :del,
167
+ "fmt-stem" => :fmt_stem,
168
+ "fmt-concept" => :fmt_concept,
169
+ "fmt-fn-label" => :fmt_fn_label,
170
+ "fmt-annotation-start" => :fmt_annotation_start,
171
+ "fmt-annotation-end" => :fmt_annotation_end,
172
+ }.freeze
173
+
174
+ def self.apply_inline_mappings(mapping)
175
+ INLINE_MAPPINGS.each do |element_name, attr_name|
176
+ mapping.map_element(element_name, to: attr_name)
177
+ end
178
+ end
179
+ end
180
+ end
181
+ end
182
+ end
183
+ end
184
+ end
@@ -1,7 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Metanorma
2
4
  module Document
3
5
  module Components
4
6
  module Inline
7
+ # A cross-reference to another part of the document.
8
+ #
9
+ # Multi-target cross-references carry one or more `<location>`
10
+ # children — secondary targets joined by connectives
11
+ # (e.g. "see Figure 4, 5.1.6 and 5.1.7"). The primary target is
12
+ # in the `target` attribute; secondary targets are in `location`.
5
13
  class XrefElement < Lutaml::Model::Serializable
6
14
  attribute :id, :string
7
15
  attribute :target, :string
@@ -12,6 +20,7 @@ module Metanorma
12
20
  attribute :nopage, :string
13
21
  attribute :alt, :string
14
22
  attribute :text, :string, collection: true
23
+ attribute :location, LocationElement, collection: true
15
24
 
16
25
  xml do
17
26
  element "xref"
@@ -24,6 +33,7 @@ module Metanorma
24
33
  map_attribute "nopage", to: :nopage
25
34
  map_attribute "alt", to: :alt
26
35
  map_content to: :text
36
+ map_element "location", to: :location
27
37
  end
28
38
  end
29
39
  end
@@ -94,6 +94,18 @@ module Metanorma
94
94
  "metanorma/document/components/inline/display_text_element"
95
95
  autoload :Bcp14Element,
96
96
  "metanorma/document/components/inline/bcp14_element"
97
+ autoload :Vocabulary,
98
+ "metanorma/document/components/inline/vocabulary"
99
+ autoload :RenderedDisplay,
100
+ "metanorma/document/components/inline/rendered_display"
101
+ autoload :SemanticContent,
102
+ "metanorma/document/components/inline/semantic_content"
103
+ autoload :LocationElement,
104
+ "metanorma/document/components/inline/location_element"
105
+ autoload :SemanticMathElement,
106
+ "metanorma/document/components/inline/semantic_math_element"
107
+ autoload :RenderedMathElement,
108
+ "metanorma/document/components/inline/rendered_math_element"
97
109
  end
98
110
  end
99
111
  end
@@ -9,10 +9,10 @@ module Metanorma
9
9
  attribute :id, :string
10
10
  attribute :semx_id, :string
11
11
  attribute :original_id, :string
12
- attribute :nobullet, :string
12
+ attribute :nobullet, :boolean
13
13
  attribute :spacing, :string
14
14
  attribute :indent, :string
15
- attribute :bare, :string
15
+ attribute :bare, :boolean
16
16
  attribute :json_type, :string
17
17
 
18
18
  def json_type
@@ -10,7 +10,10 @@ module Metanorma
10
10
  # Subclass of admonition determining how it is to be rendered; e.g.
11
11
  # Warning, Note, Tip.
12
12
  # Distinct admonition types are often associated with distinct icons or rendering.
13
- attribute :type, :string
13
+ attribute :type, :string,
14
+ values: %w[danger caution warning important
15
+ safety\ precautions editorial tip note
16
+ commentary]
14
17
 
15
18
  # Caption of admonition.
16
19
  attribute :name, Metanorma::Document::Components::TextElements::TextElement,
@@ -28,7 +31,7 @@ module Metanorma
28
31
  attribute :target, :string
29
32
 
30
33
  # Whether the admonition is excluded from automatic numbering (UN).
31
- attribute :unnumbered, :string
34
+ attribute :unnumbered, :boolean
32
35
 
33
36
  # Paragraphs within the admonition.
34
37
  attribute :paragraphs,
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module MultiParagraph
7
+ class QuoteAuthorElement < Lutaml::Model::Serializable
8
+ attribute :id, :string
9
+ attribute :text, :string
10
+
11
+ xml do
12
+ element "author"
13
+ map_attribute "id", to: :id
14
+ map_content to: :text
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -4,46 +4,17 @@ module Metanorma
4
4
  module Document
5
5
  module Components
6
6
  module MultiParagraph
7
- # Author element inside a quote: <author id="...">text</author>
8
- class QuoteAuthorElement < Lutaml::Model::Serializable
9
- attribute :id, :string
10
- attribute :text, :string
11
-
12
- xml do
13
- element "author"
14
- map_attribute "id", to: :id
15
- map_content to: :text
16
- end
17
- end
18
-
19
- # Block quotation, containing extensive textual content originally authored outside of the current
20
- # document.
21
7
  class QuoteBlock < ParagraphsBlock
22
- # Bibliographic citation for the quotation.
23
8
  attribute :source, Metanorma::Document::Components::ReferenceElements::ReferenceToCitationElement
24
-
25
- # Author of the quotation. The `author` attribute of the quotation is redundant with the citation,
26
- # since it restates information about the author that should be recoverable from the citation itself.
27
- # It is included for convenience, in case processing the citation to extract the author is prohibitive
28
- # for rendering tools.
29
9
  attribute :author, QuoteAuthorElement
30
-
31
- # Paragraphs within the quote.
32
10
  attribute :paragraphs,
33
11
  Metanorma::Document::Components::Paragraphs::ParagraphBlock,
34
12
  collection: true
35
-
36
- # Unordered lists within the quote.
37
13
  attribute :ul, Metanorma::Document::Components::Lists::UnorderedList,
38
14
  collection: true
39
-
40
- # Ordered lists within the quote.
41
15
  attribute :ol, Metanorma::Document::Components::Lists::OrderedList,
42
16
  collection: true
43
-
44
- # Attribution for the quotation (presentation XML).
45
17
  attribute :attribution, "Metanorma::Document::Components::Inline::AttributionElement"
46
-
47
18
  attribute :json_type, :string
48
19
 
49
20
  def json_type
@@ -8,6 +8,8 @@ module Metanorma
8
8
  autoload :AdmonitionType, "#{__dir__}/multi_paragraph/admonition_type"
9
9
  autoload :ParagraphsBlock, "#{__dir__}/multi_paragraph/paragraphs_block"
10
10
  autoload :QuoteBlock, "#{__dir__}/multi_paragraph/quote_block"
11
+ autoload :QuoteAuthorElement,
12
+ "#{__dir__}/multi_paragraph/quote_author_element"
11
13
  autoload :ReviewBlock, "#{__dir__}/multi_paragraph/review_block"
12
14
  end
13
15
  end
@@ -11,8 +11,8 @@ module Metanorma
11
11
  attribute :alignment, :string
12
12
  attribute :semx_id, :string
13
13
  attribute :original_id, :string
14
- attribute :keep_with_next, :string
15
- attribute :keep_with_previous, :string
14
+ attribute :keep_with_next, :boolean
15
+ attribute :keep_with_previous, :boolean
16
16
  attribute :indent, :string
17
17
  attribute :class_attr, :string
18
18
  attribute :type_attr, :string
@@ -4,37 +4,6 @@ module Metanorma
4
4
  module Document
5
5
  module Components
6
6
  module ReferenceElements
7
- class SourceOrigin < Lutaml::Model::Serializable
8
- attribute :bibitemid, :string
9
- attribute :type, :string
10
- attribute :citeas, :string
11
- attribute :locality_stack, Metanorma::Document::Relaton::LocalityStack,
12
- collection: true
13
- attribute :display_text,
14
- Metanorma::Document::Components::Inline::DisplayTextElement
15
-
16
- xml do
17
- element "origin"
18
- map_attribute "bibitemid", to: :bibitemid
19
- map_attribute "type", to: :type
20
- map_attribute "citeas", to: :citeas
21
- map_element "localityStack", to: :locality_stack
22
- map_element "display-text", to: :display_text
23
- end
24
- end
25
-
26
- class SourceModification < Lutaml::Model::Serializable
27
- attribute :id, :string
28
- attribute :p, Metanorma::Document::Components::Paragraphs::ParagraphBlock,
29
- collection: true
30
-
31
- xml do
32
- element "modification"
33
- map_attribute "id", to: :id
34
- map_element "p", to: :p
35
- end
36
- end
37
-
38
7
  class SourceElement < Lutaml::Model::Serializable
39
8
  attribute :id, :string
40
9
  attribute :status, :string
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module ReferenceElements
7
+ class SourceModification < Lutaml::Model::Serializable
8
+ attribute :id, :string
9
+ attribute :p, Metanorma::Document::Components::Paragraphs::ParagraphBlock,
10
+ collection: true
11
+
12
+ xml do
13
+ element "modification"
14
+ map_attribute "id", to: :id
15
+ map_element "p", to: :p
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module ReferenceElements
7
+ class SourceOrigin < Lutaml::Model::Serializable
8
+ attribute :bibitemid, :string
9
+ attribute :type, :string
10
+ attribute :citeas, :string
11
+ attribute :locality_stack, Metanorma::Document::Relaton::LocalityStack,
12
+ collection: true
13
+ attribute :display_text,
14
+ Metanorma::Document::Components::Inline::DisplayTextElement
15
+
16
+ xml do
17
+ element "origin"
18
+ map_attribute "bibitemid", to: :bibitemid
19
+ map_attribute "type", to: :type
20
+ map_attribute "citeas", to: :citeas
21
+ map_element "localityStack", to: :locality_stack
22
+ map_element "display-text", to: :display_text
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -24,9 +24,9 @@ module Metanorma
24
24
  autoload :SourceElement,
25
25
  "#{__dir__}/reference_elements/source_element"
26
26
  autoload :SourceModification,
27
- "#{__dir__}/reference_elements/source_element"
27
+ "#{__dir__}/reference_elements/source_modification"
28
28
  autoload :SourceOrigin,
29
- "#{__dir__}/reference_elements/source_element"
29
+ "#{__dir__}/reference_elements/source_origin"
30
30
  end
31
31
  end
32
32
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module Tables
7
+ class ColElement < Lutaml::Model::Serializable
8
+ attribute :width, :string
9
+
10
+ xml do
11
+ element "col"
12
+ map_attribute "width", to: :width
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module Tables
7
+ class ColGroupElement < Lutaml::Model::Serializable
8
+ attribute :col, ColElement, collection: true
9
+
10
+ xml do
11
+ element "colgroup"
12
+ map_element "col", to: :col
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -4,27 +4,6 @@ module Metanorma
4
4
  module Document
5
5
  module Components
6
6
  module Tables
7
- # Column element within colgroup.
8
- class ColElement < Lutaml::Model::Serializable
9
- attribute :width, :string
10
-
11
- xml do
12
- element "col"
13
- map_attribute "width", to: :width
14
- end
15
- end
16
-
17
- # Column group element for table column width specifications.
18
- class ColGroupElement < Lutaml::Model::Serializable
19
- attribute :col, ColElement, collection: true
20
-
21
- xml do
22
- element "colgroup"
23
- map_element "col", to: :col
24
- end
25
- end
26
-
27
- # Tabular arrangement of text
28
7
  class TableBlock < Metanorma::Document::Components::Blocks::BasicBlock
29
8
  attribute :id, :string
30
9
  attribute :anchor, :string
@@ -52,7 +31,6 @@ module Metanorma
52
31
  collection: true
53
32
  attribute :colgroup, ColGroupElement
54
33
 
55
- # Presentation-specific elements
56
34
  attribute :fmt_name, Metanorma::Document::Components::Inline::FmtNameElement
57
35
  attribute :fmt_xref_label,
58
36
  Metanorma::Document::Components::Inline::FmtXrefLabelElement, collection: true
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module Tables
7
+ class TableBodySection < TableSection
8
+ xml do
9
+ element "tbody"
10
+ map_element "tr", to: :tr
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module Tables
7
+ class TableFootSection < TableSection
8
+ xml do
9
+ element "tfoot"
10
+ map_element "tr", to: :tr
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module Document
5
+ module Components
6
+ module Tables
7
+ class TableHeadSection < TableSection
8
+ xml do
9
+ element "thead"
10
+ map_element "tr", to: :tr
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -4,7 +4,6 @@ module Metanorma
4
4
  module Document
5
5
  module Components
6
6
  module Tables
7
- # Base class for table sections (thead, tbody, tfoot) wrapping rows.
8
7
  class TableSection < Lutaml::Model::Serializable
9
8
  attribute :tr, TextTableRow, collection: true
10
9
 
@@ -12,30 +11,6 @@ module Metanorma
12
11
  map_element "tr", to: :tr
13
12
  end
14
13
  end
15
-
16
- # Table header section wrapping <thead> rows.
17
- class TableHeadSection < TableSection
18
- xml do
19
- element "thead"
20
- map_element "tr", to: :tr
21
- end
22
- end
23
-
24
- # Table body section wrapping <tbody> rows.
25
- class TableBodySection < TableSection
26
- xml do
27
- element "tbody"
28
- map_element "tr", to: :tr
29
- end
30
- end
31
-
32
- # Table footer section wrapping <tfoot> rows.
33
- class TableFootSection < TableSection
34
- xml do
35
- element "tfoot"
36
- map_element "tr", to: :tr
37
- end
38
- end
39
14
  end
40
15
  end
41
16
  end
@@ -4,13 +4,15 @@ module Metanorma
4
4
  module Document
5
5
  module Components
6
6
  module Tables
7
+ autoload :ColElement, "#{__dir__}/tables/col_element"
8
+ autoload :ColGroupElement, "#{__dir__}/tables/col_group_element"
7
9
  autoload :HeaderTableCell, "#{__dir__}/tables/header_table_cell"
8
10
  autoload :ParagraphTableCell, "#{__dir__}/tables/paragraph_table_cell"
9
11
  autoload :TableBlock, "#{__dir__}/tables/table_block"
10
12
  autoload :TableCell, "#{__dir__}/tables/table_cell"
11
- autoload :TableHeadSection, "#{__dir__}/tables/table_section"
12
- autoload :TableBodySection, "#{__dir__}/tables/table_section"
13
- autoload :TableFootSection, "#{__dir__}/tables/table_section"
13
+ autoload :TableHeadSection, "#{__dir__}/tables/table_head_section"
14
+ autoload :TableBodySection, "#{__dir__}/tables/table_body_section"
15
+ autoload :TableFootSection, "#{__dir__}/tables/table_foot_section"
14
16
  autoload :TableSection, "#{__dir__}/tables/table_section"
15
17
  autoload :TextAlignment, "#{__dir__}/tables/text_alignment"
16
18
  autoload :TextTableCell, "#{__dir__}/tables/text_table_cell"