metanorma-document 0.2.9 → 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 (390) 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/permission_model.rb +28 -0
  118. data/lib/metanorma/document/components/blocks/recommendation_model.rb +28 -0
  119. data/lib/metanorma/document/components/blocks/requirement_base.rb +30 -0
  120. data/lib/metanorma/document/components/blocks/requirement_classification.rb +20 -0
  121. data/lib/metanorma/document/components/blocks/requirement_description.rb +43 -0
  122. data/lib/metanorma/document/components/blocks/requirement_inherit.rb +24 -0
  123. data/lib/metanorma/document/components/blocks/requirement_model.rb +0 -131
  124. data/lib/metanorma/document/components/blocks.rb +8 -7
  125. data/lib/metanorma/document/components/id_elements/image.rb +2 -0
  126. data/lib/metanorma/document/components/inline/asciimath_element.rb +2 -0
  127. data/lib/metanorma/document/components/inline/attribution_element.rb +2 -0
  128. data/lib/metanorma/document/components/inline/bcp14_element.rb +2 -0
  129. data/lib/metanorma/document/components/inline/biblio_tag_element.rb +2 -0
  130. data/lib/metanorma/document/components/inline/br_element.rb +2 -0
  131. data/lib/metanorma/document/components/inline/comma_element.rb +2 -0
  132. data/lib/metanorma/document/components/inline/concept_element.rb +2 -0
  133. data/lib/metanorma/document/components/inline/display_text_element.rb +2 -0
  134. data/lib/metanorma/document/components/inline/em_raw_element.rb +2 -0
  135. data/lib/metanorma/document/components/inline/enum_comma_element.rb +2 -0
  136. data/lib/metanorma/document/components/inline/eref_element.rb +2 -0
  137. data/lib/metanorma/document/components/inline/fmt_admitted_element.rb +4 -0
  138. data/lib/metanorma/document/components/inline/fmt_annotation_body_element.rb +4 -0
  139. data/lib/metanorma/document/components/inline/fmt_annotation_end_element.rb +4 -0
  140. data/lib/metanorma/document/components/inline/fmt_annotation_start_element.rb +4 -0
  141. data/lib/metanorma/document/components/inline/fmt_concept_element.rb +4 -0
  142. data/lib/metanorma/document/components/inline/fmt_definition_element.rb +4 -0
  143. data/lib/metanorma/document/components/inline/fmt_fn_body_element.rb +4 -0
  144. data/lib/metanorma/document/components/inline/fmt_fn_label_element.rb +4 -0
  145. data/lib/metanorma/document/components/inline/fmt_footnote_container_element.rb +4 -0
  146. data/lib/metanorma/document/components/inline/fmt_identifier_element.rb +4 -0
  147. data/lib/metanorma/document/components/inline/fmt_name_element.rb +4 -0
  148. data/lib/metanorma/document/components/inline/fmt_preferred_element.rb +4 -0
  149. data/lib/metanorma/document/components/inline/fmt_sourcecode_element.rb +4 -0
  150. data/lib/metanorma/document/components/inline/fmt_stem_element.rb +10 -0
  151. data/lib/metanorma/document/components/inline/fmt_termsource_element.rb +4 -0
  152. data/lib/metanorma/document/components/inline/fmt_title_element.rb +4 -0
  153. data/lib/metanorma/document/components/inline/fmt_xref_element.rb +4 -0
  154. data/lib/metanorma/document/components/inline/fmt_xref_label_element.rb +4 -0
  155. data/lib/metanorma/document/components/inline/fn_element.rb +2 -0
  156. data/lib/metanorma/document/components/inline/link_element.rb +2 -0
  157. data/lib/metanorma/document/components/inline/localized_string_element.rb +2 -0
  158. data/lib/metanorma/document/components/inline/localized_strings_element.rb +2 -0
  159. data/lib/metanorma/document/components/inline/location_element.rb +24 -0
  160. data/lib/metanorma/document/components/inline/math_element.rb +2 -0
  161. data/lib/metanorma/document/components/inline/name_with_id_element.rb +4 -0
  162. data/lib/metanorma/document/components/inline/rendered_display.rb +23 -0
  163. data/lib/metanorma/document/components/inline/rendered_math_element.rb +21 -0
  164. data/lib/metanorma/document/components/inline/semantic_content.rb +51 -0
  165. data/lib/metanorma/document/components/inline/semantic_math_element.rb +20 -0
  166. data/lib/metanorma/document/components/inline/semx_child_element.rb +2 -0
  167. data/lib/metanorma/document/components/inline/semx_element.rb +13 -1
  168. data/lib/metanorma/document/components/inline/small_cap_element.rb +2 -0
  169. data/lib/metanorma/document/components/inline/span_element.rb +10 -15
  170. data/lib/metanorma/document/components/inline/stem_inline_element.rb +7 -1
  171. data/lib/metanorma/document/components/inline/strong_raw_element.rb +2 -0
  172. data/lib/metanorma/document/components/inline/sub_element.rb +2 -0
  173. data/lib/metanorma/document/components/inline/sup_element.rb +2 -0
  174. data/lib/metanorma/document/components/inline/tab_element.rb +2 -0
  175. data/lib/metanorma/document/components/inline/title_with_annotation_element.rb +4 -0
  176. data/lib/metanorma/document/components/inline/tt_element.rb +2 -0
  177. data/lib/metanorma/document/components/inline/variant_title_element.rb +2 -0
  178. data/lib/metanorma/document/components/inline/vocabulary.rb +184 -0
  179. data/lib/metanorma/document/components/inline/xref_element.rb +10 -0
  180. data/lib/metanorma/document/components/inline.rb +12 -0
  181. data/lib/metanorma/document/components/multi_paragraph/quote_author_element.rb +20 -0
  182. data/lib/metanorma/document/components/multi_paragraph/quote_block.rb +0 -29
  183. data/lib/metanorma/document/components/multi_paragraph.rb +2 -0
  184. data/lib/metanorma/document/components/reference_elements/source_element.rb +0 -31
  185. data/lib/metanorma/document/components/reference_elements/source_modification.rb +21 -0
  186. data/lib/metanorma/document/components/reference_elements/source_origin.rb +28 -0
  187. data/lib/metanorma/document/components/reference_elements.rb +2 -2
  188. data/lib/metanorma/document/components/tables/col_element.rb +18 -0
  189. data/lib/metanorma/document/components/tables/col_group_element.rb +18 -0
  190. data/lib/metanorma/document/components/tables/table_block.rb +0 -22
  191. data/lib/metanorma/document/components/tables/table_body_section.rb +16 -0
  192. data/lib/metanorma/document/components/tables/table_foot_section.rb +16 -0
  193. data/lib/metanorma/document/components/tables/table_head_section.rb +16 -0
  194. data/lib/metanorma/document/components/tables/table_section.rb +0 -25
  195. data/lib/metanorma/document/components/tables.rb +5 -3
  196. data/lib/metanorma/document/relaton/address.rb +0 -27
  197. data/lib/metanorma/document/relaton/bib_item_locality.rb +3 -12
  198. data/lib/metanorma/document/relaton/copyright_association.rb +0 -10
  199. data/lib/metanorma/document/relaton/copyright_owner.rb +16 -0
  200. data/lib/metanorma/document/relaton/edition.rb +4 -7
  201. data/lib/metanorma/document/relaton/formatted_address.rb +29 -0
  202. data/lib/metanorma/document/relaton/logo_element.rb +18 -0
  203. data/lib/metanorma/document/relaton/organization.rb +0 -14
  204. data/lib/metanorma/document/relaton/phone.rb +3 -9
  205. data/lib/metanorma/document/relaton/place_type.rb +0 -13
  206. data/lib/metanorma/document/relaton/price_type.rb +3 -9
  207. data/lib/metanorma/document/relaton/region_element.rb +18 -0
  208. data/lib/metanorma/document/relaton.rb +6 -1
  209. data/lib/metanorma/document/version.rb +1 -1
  210. data/lib/metanorma/document.rb +2 -0
  211. data/lib/metanorma/html/asset_pipeline.rb +1 -0
  212. data/lib/metanorma/html/base_renderer.rb +261 -1008
  213. data/lib/metanorma/html/bipm_renderer.rb +15 -144
  214. data/lib/metanorma/html/cc_renderer.rb +1 -45
  215. data/lib/metanorma/html/component/base.rb +2 -7
  216. data/lib/metanorma/html/component/index_section.rb +41 -43
  217. data/lib/metanorma/html/drops/admonition_drop.rb +1 -4
  218. data/lib/metanorma/html/drops/biblio_entry_drop.rb +50 -0
  219. data/lib/metanorma/html/drops/block_element_drop.rb +7 -2
  220. data/lib/metanorma/html/drops/example_drop.rb +1 -4
  221. data/lib/metanorma/html/drops/figure_drop.rb +31 -22
  222. data/lib/metanorma/html/drops/footnote_drop.rb +1 -1
  223. data/lib/metanorma/html/drops/formula_drop.rb +45 -16
  224. data/lib/metanorma/html/drops/note_drop.rb +9 -7
  225. data/lib/metanorma/html/drops/sourcecode_drop.rb +12 -5
  226. data/lib/metanorma/html/drops.rb +2 -0
  227. data/lib/metanorma/html/generator.rb +2 -2
  228. data/lib/metanorma/html/icc_renderer.rb +0 -39
  229. data/lib/metanorma/html/iec_renderer.rb +1 -44
  230. data/lib/metanorma/html/ieee_renderer.rb +1 -45
  231. data/lib/metanorma/html/ietf_renderer.rb +1 -48
  232. data/lib/metanorma/html/iho_renderer.rb +1 -46
  233. data/lib/metanorma/html/iso_renderer.rb +290 -343
  234. data/lib/metanorma/html/itu_renderer.rb +1 -45
  235. data/lib/metanorma/html/ogc_renderer.rb +15 -76
  236. data/lib/metanorma/html/oiml_renderer.rb +18 -38
  237. data/lib/metanorma/html/pdfa_renderer.rb +0 -39
  238. data/lib/metanorma/html/renderers/block_renderer.rb +372 -0
  239. data/lib/metanorma/html/renderers/inline_renderer.rb +655 -0
  240. data/lib/metanorma/html/renderers/pubid_renderer.rb +69 -0
  241. data/lib/metanorma/html/renderers/section_renderer.rb +193 -0
  242. data/lib/metanorma/html/renderers.rb +8 -0
  243. data/lib/metanorma/html/ribose_renderer.rb +1 -45
  244. data/lib/metanorma/html/standard_renderer.rb +341 -229
  245. data/lib/metanorma/html/templates/_audio.html.liquid +1 -0
  246. data/lib/metanorma/html/templates/_biblio_entry.html.liquid +1 -0
  247. data/lib/metanorma/html/templates/_bipm_cover.html.liquid +27 -0
  248. data/lib/metanorma/html/templates/_boilerplate.html.liquid +1 -0
  249. data/lib/metanorma/html/templates/_bookmark.html.liquid +1 -0
  250. data/lib/metanorma/html/templates/_br.html.liquid +1 -0
  251. data/lib/metanorma/html/templates/_definition_list.html.liquid +6 -0
  252. data/lib/metanorma/html/templates/_element.html.liquid +1 -0
  253. data/lib/metanorma/html/templates/_fn_marker.html.liquid +1 -0
  254. data/lib/metanorma/html/templates/_footnotes.html.liquid +6 -6
  255. data/lib/metanorma/html/templates/_formula.html.liquid +1 -1
  256. data/lib/metanorma/html/templates/_header.html.liquid +1 -1
  257. data/lib/metanorma/html/templates/_heading.html.liquid +1 -0
  258. data/lib/metanorma/html/templates/_image.html.liquid +1 -0
  259. data/lib/metanorma/html/templates/_inline_span.html.liquid +1 -0
  260. data/lib/metanorma/html/templates/_iso_cover.html.liquid +1 -1
  261. data/lib/metanorma/html/templates/_link.html.liquid +1 -0
  262. data/lib/metanorma/html/templates/_list.html.liquid +3 -0
  263. data/lib/metanorma/html/templates/_list_item.html.liquid +1 -0
  264. data/lib/metanorma/html/templates/_main_content.html.liquid +1 -0
  265. data/lib/metanorma/html/templates/_math_container.html.liquid +1 -0
  266. data/lib/metanorma/html/templates/_paragraph.html.liquid +1 -0
  267. data/lib/metanorma/html/templates/_prefatory_section.html.liquid +1 -0
  268. data/lib/metanorma/html/templates/_pubid_identifier.html.liquid +1 -0
  269. data/lib/metanorma/html/templates/_quote.html.liquid +4 -0
  270. data/lib/metanorma/html/templates/_ref_date.html.liquid +1 -0
  271. data/lib/metanorma/html/templates/_ref_title.html.liquid +1 -0
  272. data/lib/metanorma/html/templates/_section.html.liquid +5 -0
  273. data/lib/metanorma/html/templates/_standard_cover.html.liquid +31 -0
  274. data/lib/metanorma/html/templates/_standard_doc_title.html.liquid +3 -0
  275. data/lib/metanorma/html/templates/_stem_span.html.liquid +1 -0
  276. data/lib/metanorma/html/templates/_table.html.liquid +9 -0
  277. data/lib/metanorma/html/templates/_term_domain.html.liquid +1 -0
  278. data/lib/metanorma/html/templates/_term_example.html.liquid +1 -0
  279. data/lib/metanorma/html/templates/_term_note.html.liquid +1 -0
  280. data/lib/metanorma/html/templates/_term_number.html.liquid +1 -0
  281. data/lib/metanorma/html/templates/_term_source.html.liquid +1 -0
  282. data/lib/metanorma/html/templates/_term_text_note.html.liquid +1 -0
  283. data/lib/metanorma/html/templates/_video.html.liquid +1 -0
  284. data/lib/metanorma/html/templates/_wrapped_preface.html.liquid +1 -0
  285. data/lib/metanorma/html/templates/document.html.liquid +4 -0
  286. data/lib/metanorma/html/theme.rb +180 -107
  287. data/lib/metanorma/html.rb +13 -0
  288. data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +0 -25
  289. data/lib/metanorma/ietf_document/metadata/pi_settings.rb +32 -0
  290. data/lib/metanorma/ietf_document/metadata.rb +2 -0
  291. data/lib/metanorma/iso_document/metadata/doctype_element.rb +20 -0
  292. data/lib/metanorma/iso_document/metadata/iso_bib_data_extension_type.rb +0 -48
  293. data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +0 -72
  294. data/lib/metanorma/iso_document/metadata/iso_document_status.rb +0 -30
  295. data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +4 -1
  296. data/lib/metanorma/iso_document/metadata/language_element.rb +18 -0
  297. data/lib/metanorma/iso_document/metadata/project_number.rb +22 -0
  298. data/lib/metanorma/iso_document/metadata/script_element.rb +18 -0
  299. data/lib/metanorma/iso_document/metadata/stage_element.rb +26 -0
  300. data/lib/metanorma/iso_document/metadata/stagename_element.rb +18 -0
  301. data/lib/metanorma/iso_document/metadata/structured_identifier.rb +0 -17
  302. data/lib/metanorma/iso_document/metadata/title_collection.rb +1 -0
  303. data/lib/metanorma/iso_document/metadata.rb +9 -4
  304. data/lib/metanorma/iso_document/terms/iso_term.rb +0 -13
  305. data/lib/metanorma/iso_document/terms/term_domain_element.rb +18 -0
  306. data/lib/metanorma/iso_document/terms.rb +1 -0
  307. data/lib/metanorma/itu_document/metadata/itu_bib_data_extension_type.rb +0 -37
  308. data/lib/metanorma/itu_document/metadata/meeting_date.rb +18 -0
  309. data/lib/metanorma/itu_document/metadata/meeting_element.rb +18 -0
  310. data/lib/metanorma/itu_document/metadata/study_period.rb +18 -0
  311. data/lib/metanorma/itu_document/metadata.rb +3 -4
  312. data/lib/metanorma/mirror/default_registry.rb +170 -0
  313. data/lib/metanorma/mirror/handler_registry.rb +60 -0
  314. data/lib/metanorma/mirror/handler_result.rb +37 -0
  315. data/lib/metanorma/mirror/handlers/admonition.rb +18 -0
  316. data/lib/metanorma/mirror/handlers/example.rb +21 -0
  317. data/lib/metanorma/mirror/handlers/figure.rb +53 -0
  318. data/lib/metanorma/mirror/handlers/formula.rb +35 -0
  319. data/lib/metanorma/mirror/handlers/inline/rich_html_renderer.rb +159 -0
  320. data/lib/metanorma/mirror/handlers/inline/text_extractor.rb +116 -0
  321. data/lib/metanorma/mirror/handlers/inline.rb +225 -0
  322. data/lib/metanorma/mirror/handlers/list.rb +110 -0
  323. data/lib/metanorma/mirror/handlers/note.rb +26 -0
  324. data/lib/metanorma/mirror/handlers/paragraph.rb +19 -0
  325. data/lib/metanorma/mirror/handlers/quote.rb +16 -0
  326. data/lib/metanorma/mirror/handlers/review.rb +19 -0
  327. data/lib/metanorma/mirror/handlers/section.rb +149 -0
  328. data/lib/metanorma/mirror/handlers/sourcecode.rb +27 -0
  329. data/lib/metanorma/mirror/handlers/structural.rb +68 -0
  330. data/lib/metanorma/mirror/handlers/table.rb +81 -0
  331. data/lib/metanorma/mirror/handlers/term.rb +100 -0
  332. data/lib/metanorma/mirror/handlers.rb +60 -0
  333. data/lib/metanorma/mirror/id_strategy/positional.rb +166 -0
  334. data/lib/metanorma/mirror/id_strategy/preserve.rb +12 -0
  335. data/lib/metanorma/mirror/id_strategy.rb +34 -0
  336. data/lib/metanorma/mirror/math_util.rb +53 -0
  337. data/lib/metanorma/mirror/metadata.rb +37 -0
  338. data/lib/metanorma/mirror/metanorma_to_mirror.rb +101 -0
  339. data/lib/metanorma/mirror/model/container.rb +47 -0
  340. data/lib/metanorma/mirror/model/factory.rb +52 -0
  341. data/lib/metanorma/mirror/model/guide.rb +25 -0
  342. data/lib/metanorma/mirror/model/leaf.rb +17 -0
  343. data/lib/metanorma/mirror/model/mark.rb +53 -0
  344. data/lib/metanorma/mirror/model/node.rb +47 -0
  345. data/lib/metanorma/mirror/model/soft_break.rb +33 -0
  346. data/lib/metanorma/mirror/model/text.rb +34 -0
  347. data/lib/metanorma/mirror/model.rb +16 -0
  348. data/lib/metanorma/mirror/output/builder.rb +39 -0
  349. data/lib/metanorma/mirror/output/formats/base_format.rb +90 -0
  350. data/lib/metanorma/mirror/output/formats/inline_format.rb +81 -0
  351. data/lib/metanorma/mirror/output/formats.rb +53 -0
  352. data/lib/metanorma/mirror/output/html_renderer.rb +95 -0
  353. data/lib/metanorma/mirror/output/html_renderers/block_renderers.rb +178 -0
  354. data/lib/metanorma/mirror/output/html_renderers/inline_renderer.rb +61 -0
  355. data/lib/metanorma/mirror/output/html_renderers/list_renderers.rb +96 -0
  356. data/lib/metanorma/mirror/output/html_renderers/mark_renderers.rb +64 -0
  357. data/lib/metanorma/mirror/output/html_renderers/section_renderers.rb +129 -0
  358. data/lib/metanorma/mirror/output/html_renderers/structural_renderers.rb +80 -0
  359. data/lib/metanorma/mirror/output/html_renderers/table_renderers.rb +87 -0
  360. data/lib/metanorma/mirror/output/html_renderers.rb +76 -0
  361. data/lib/metanorma/mirror/output/pipeline.rb +92 -0
  362. data/lib/metanorma/mirror/output/pipeline_context.rb +22 -0
  363. data/lib/metanorma/mirror/output.rb +14 -0
  364. data/lib/metanorma/mirror/rewriter.rb +121 -0
  365. data/lib/metanorma/mirror/safe_attr.rb +16 -0
  366. data/lib/metanorma/mirror/serialization/json_serializer.rb +25 -0
  367. data/lib/metanorma/mirror/serialization/yaml_serializer.rb +20 -0
  368. data/lib/metanorma/mirror/serialization.rb +10 -0
  369. data/lib/metanorma/mirror/transformer.rb +22 -0
  370. data/lib/metanorma/mirror.rb +32 -0
  371. data/lib/metanorma/standard_document/annotation.rb +37 -0
  372. data/lib/metanorma/standard_document/block_attributes.rb +15 -2
  373. data/lib/metanorma/standard_document/blocks/block_source.rb +0 -23
  374. data/lib/metanorma/standard_document/blocks/source_origin_element.rb +23 -0
  375. data/lib/metanorma/standard_document/blocks.rb +1 -1
  376. data/lib/metanorma/standard_document/terms/term_expression.rb +0 -31
  377. data/lib/metanorma/standard_document/terms/term_name_element.rb +29 -0
  378. data/lib/metanorma/standard_document/terms.rb +1 -0
  379. data/script/render_both.rb +18 -0
  380. metadata +262 -13
  381. data/.github/workflows/rake.yml +0 -21
  382. data/.github/workflows/release.yml +0 -25
  383. data/.github/workflows/roundtrip-samples.yml +0 -132
  384. data/.gitignore +0 -19
  385. data/.rspec +0 -3
  386. data/.rubocop.yml +0 -22
  387. data/Gemfile +0 -28
  388. data/bin/console +0 -15
  389. data/bin/setup +0 -8
  390. data/metanorma-document.gemspec +0 -35
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IetfDocument
5
+ module Metadata
6
+ class PiSettings < Lutaml::Model::Serializable
7
+ attribute :toc, :string
8
+ attribute :tocdepth, :string
9
+ attribute :symrefs, :string
10
+ attribute :sortrefs, :string
11
+ attribute :compact, :string
12
+ attribute :subcompact, :string
13
+ attribute :strict, :string
14
+ attribute :comments, :string
15
+ attribute :notedraftinprogress, :string
16
+
17
+ xml do
18
+ element "pi"
19
+ map_element "toc", to: :toc
20
+ map_element "tocdepth", to: :tocdepth
21
+ map_element "symrefs", to: :symrefs
22
+ map_element "sortrefs", to: :sortrefs
23
+ map_element "compact", to: :compact
24
+ map_element "subcompact", to: :subcompact
25
+ map_element "strict", to: :strict
26
+ map_element "comments", to: :comments
27
+ map_element "notedraftinprogress", to: :notedraftinprogress
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -9,6 +9,8 @@ module Metanorma
9
9
  "metanorma/ietf_document/metadata/ietf_bibliographic_item"
10
10
  autoload :IetfEditorialGroup,
11
11
  "metanorma/ietf_document/metadata/ietf_editorial_group"
12
+ autoload :PiSettings,
13
+ "metanorma/ietf_document/metadata/pi_settings"
12
14
  end
13
15
  end
14
16
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IsoDocument
5
+ module Metadata
6
+ class DoctypeElement < Lutaml::Model::Serializable
7
+ attribute :language, :string
8
+ attribute :abbreviation, :string
9
+ attribute :value, :string
10
+
11
+ xml do
12
+ element "doctype"
13
+ map_attribute "language", to: :language, render_empty: true
14
+ map_attribute "abbreviation", to: :abbreviation
15
+ map_content to: :value
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -3,66 +3,18 @@
3
3
  module Metanorma
4
4
  module IsoDocument
5
5
  module Metadata
6
- # Extension point for bibliographical definitions of ISO/IEC documents.
7
- # Document type element with language attribute.
8
- class DoctypeElement < Lutaml::Model::Serializable
9
- attribute :language, :string
10
- attribute :abbreviation, :string
11
- attribute :value, :string
12
-
13
- xml do
14
- element "doctype"
15
- map_attribute "language", to: :language, render_empty: true
16
- map_attribute "abbreviation", to: :abbreviation
17
- map_content to: :value
18
- end
19
- end
20
-
21
- # Stage name element with abbreviation attribute.
22
- class StagenameElement < Lutaml::Model::Serializable
23
- attribute :abbreviation, :string
24
- attribute :value, :string
25
-
26
- xml do
27
- element "stagename"
28
- map_attribute "abbreviation", to: :abbreviation
29
- map_content to: :value
30
- end
31
- end
32
-
33
6
  class IsoBibDataExtensionType < Lutaml::Model::Serializable
34
- # The document is a horizontal standard.
35
7
  attribute :horizontal, :boolean
36
-
37
- # Editorial groups associated with the production of the document.
38
8
  attribute :editorial_group, IsoProjectGroup
39
-
40
- # Name of the publication stage of the document.
41
9
  attribute :stage_name, :string
42
-
43
- # Category of IEC Standard applicable.
44
10
  attribute :category, :string
45
-
46
- # Type of document being updated by this document, if it is an amendment or technical corrigendum.
47
11
  attribute :updates_document_type, :string
48
12
  attribute :semx_id, :string
49
-
50
- # Document type (e.g. "international-standard").
51
13
  attribute :doctype, DoctypeElement, collection: true
52
-
53
- # Document flavor (e.g. "iso").
54
14
  attribute :flavor, :string
55
-
56
- # ICS classification codes.
57
15
  attribute :ics, Ics, collection: true
58
-
59
- # Structured identifier (project number, part).
60
16
  attribute :structuredidentifier, StructuredIdentifier
61
-
62
- # Name of the publication stage.
63
17
  attribute :stagename, StagenameElement
64
-
65
- # Sub-document type.
66
18
  attribute :subdoctype, :string
67
19
 
68
20
  xml do
@@ -3,101 +3,34 @@
3
3
  module Metanorma
4
4
  module IsoDocument
5
5
  module Metadata
6
- # The bibliographical description of an ISO/IEC document.
7
- # Language element with current attribute.
8
- class LanguageElement < Lutaml::Model::Serializable
9
- attribute :current, :string
10
- attribute :value, :string
11
-
12
- xml do
13
- element "language"
14
- map_attribute "current", to: :current
15
- map_content to: :value
16
- end
17
- end
18
-
19
- # Script element with current attribute.
20
- class ScriptElement < Lutaml::Model::Serializable
21
- attribute :current, :string
22
- attribute :value, :string
23
-
24
- xml do
25
- element "script"
26
- map_attribute "current", to: :current
27
- map_content to: :value
28
- end
29
- end
30
-
31
6
  class IsoBibliographicItem < Lutaml::Model::Serializable
32
- # Identifier of the document.
33
7
  attribute :doc_identifier, DocIdentifier, collection: true
34
-
35
- # Collection of all title elements, grouped by language via consolidation mapping.
36
- # Access: titles.items (raw), titles.per_language (grouped), titles.for_language("en")
37
8
  attribute :titles, AbstractTitle, collection: TitleCollection
38
-
39
- # Type of the document.
40
9
  attribute :type, :string
41
-
42
- # Fetched date
43
10
  attribute :fetched, Metanorma::Document::Relaton::DateTime
44
-
45
- # URIs associated with the document.
46
11
  attribute :uri, Metanorma::Document::Relaton::TypedUri, collection: true
47
-
48
- # Link/source
49
12
  attribute :source, :string, collection: true
50
-
51
- # Document number
52
13
  attribute :docnumber, :string
53
-
54
- # Contributors
55
14
  attribute :contributor, Metanorma::Document::Relaton::ContributionInfo,
56
15
  collection: true
57
-
58
- # Edition
59
16
  attribute :edition, Metanorma::Document::Relaton::Edition,
60
17
  collection: true
61
-
62
- # Version
63
18
  attribute :version, Metanorma::Document::Relaton::VersionInfo
64
-
65
- # Notes
66
19
  attribute :note, Metanorma::Document::Relaton::TypedNote,
67
20
  collection: true
68
-
69
- # Language codes
70
21
  attribute :language, LanguageElement, collection: true
71
-
72
- # Script codes
73
22
  attribute :script, ScriptElement, collection: true
74
-
75
- # Abstract of the document.
76
23
  attribute :abstract, Metanorma::Document::Components::DataTypes::FormattedString,
77
24
  collection: true
78
-
79
- # Publication status of the document.
80
25
  attribute :status, IsoDocumentStatus
81
-
82
- # Copyright information
83
26
  attribute :copyright, Metanorma::Document::Relaton::CopyrightAssociation,
84
27
  collection: true
85
-
86
- # Relations to other documents
87
28
  attribute :relation, Metanorma::Document::Relaton::DocumentRelation,
88
29
  collection: true
89
-
90
- # Formatted reference
91
30
  attribute :formattedref, Metanorma::Document::Components::DataTypes::FormattedString
92
-
93
- # Dates
94
31
  attribute :date, Metanorma::Document::Relaton::BibliographicDate,
95
32
  collection: true
96
-
97
- # Place of publication
98
33
  attribute :place, :string, collection: true
99
-
100
- # Extension point of the bibliographical description.
101
34
  attribute :ext, IsoBibDataExtensionType
102
35
  attribute :keyword, Metanorma::Document::Relaton::KeywordType,
103
36
  collection: true
@@ -105,8 +38,6 @@ module Metanorma
105
38
  collection: true
106
39
  attribute :editorialgroup, Metanorma::StandardDocument::Metadata::EditorialGroupType
107
40
  attribute :semx_id, :string
108
-
109
- # Schema version (used by collection/entry bibdata, e.g. "v1.2.9").
110
41
  attribute :schema_version, :string
111
42
 
112
43
  xml do
@@ -150,8 +81,6 @@ module Metanorma
150
81
  map "ext", to: :ext
151
82
  end
152
83
 
153
- # Returns the title for a given language (defaults to English)
154
- # Uses consolidation-mapped per_language grouping for efficiency
155
84
  def title_for(language = "en")
156
85
  return nil unless titles
157
86
 
@@ -165,7 +94,6 @@ module Metanorma
165
94
  end
166
95
  end
167
96
 
168
- # Primary title (English by default)
169
97
  def title
170
98
  @title ||= title_for("en")
171
99
  end
@@ -3,41 +3,11 @@
3
3
  module Metanorma
4
4
  module IsoDocument
5
5
  module Metadata
6
- # Publication status of an ISO/IEC document.
7
- # Stage element in presentation XML: <stage abbreviation="..." language="..." type="...">value</stage>
8
- class StageElement < Lutaml::Model::Serializable
9
- attribute :abbreviation, :string
10
- attribute :language, :string
11
- attribute :type, :string
12
- attribute :value, :string, collection: true
13
- attribute :br, Metanorma::Document::Components::Inline::BrElement,
14
- collection: true
15
-
16
- xml do
17
- element "stage"
18
- mixed_content
19
- map_attribute "abbreviation", to: :abbreviation
20
- map_attribute "language", to: :language, render_empty: true
21
- map_attribute "type", to: :type
22
- map_content to: :value
23
- map_element "br", to: :br
24
- end
25
- end
26
-
27
6
  class IsoDocumentStatus < Lutaml::Model::Serializable
28
- # Publication stage of the ISO/IEC document, expressed as an International Harmonized Stage Code.
29
7
  attribute :stage, StageElement, collection: true
30
-
31
- # Standard abbreviation of the publication stage.
32
8
  attribute :stage_abbreviation, :string
33
-
34
- # Substage code for the ISO/IEC document.
35
9
  attribute :substage, IsoDocumentSubstageCodes
36
-
37
- # Standard abbreviation of the publication substage.
38
10
  attribute :substage_abbreviation, :string
39
-
40
- # Number of the iteration of the publication stage that the document is in.
41
11
  attribute :iteration, :integer
42
12
  attribute :semx_id, :string
43
13
 
@@ -32,6 +32,9 @@ module Metanorma
32
32
  attribute :title_amendment_prefix, AbstractTitle
33
33
  attribute :semx_id, :string
34
34
 
35
+ # Fallback for plain titles without structured parts
36
+ attribute :content, :string
37
+
35
38
  # Compose all parts into a single title string
36
39
  def to_s
37
40
  parts = []
@@ -50,7 +53,7 @@ module Metanorma
50
53
  end
51
54
  return parts.join(" — ") unless parts.empty?
52
55
 
53
- ""
56
+ content.to_s
54
57
  end
55
58
  end
56
59
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IsoDocument
5
+ module Metadata
6
+ class LanguageElement < Lutaml::Model::Serializable
7
+ attribute :current, :string
8
+ attribute :value, :string
9
+
10
+ xml do
11
+ element "language"
12
+ map_attribute "current", to: :current
13
+ map_content to: :value
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IsoDocument
5
+ module Metadata
6
+ class ProjectNumber < Lutaml::Model::Serializable
7
+ attribute :part, :string
8
+ attribute :amendment, :string
9
+ attribute :origyr, :string
10
+ attribute :value, :string
11
+
12
+ xml do
13
+ element "project-number"
14
+ map_attribute "part", to: :part
15
+ map_attribute "amendment", to: :amendment
16
+ map_attribute "origyr", to: :origyr
17
+ map_content to: :value
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IsoDocument
5
+ module Metadata
6
+ class ScriptElement < Lutaml::Model::Serializable
7
+ attribute :current, :string
8
+ attribute :value, :string
9
+
10
+ xml do
11
+ element "script"
12
+ map_attribute "current", to: :current
13
+ map_content to: :value
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IsoDocument
5
+ module Metadata
6
+ class StageElement < Lutaml::Model::Serializable
7
+ attribute :abbreviation, :string
8
+ attribute :language, :string
9
+ attribute :type, :string
10
+ attribute :value, :string, collection: true
11
+ attribute :br, Metanorma::Document::Components::Inline::BrElement,
12
+ collection: true
13
+
14
+ xml do
15
+ element "stage"
16
+ mixed_content
17
+ map_attribute "abbreviation", to: :abbreviation
18
+ map_attribute "language", to: :language, render_empty: true
19
+ map_attribute "type", to: :type
20
+ map_content to: :value
21
+ map_element "br", to: :br
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IsoDocument
5
+ module Metadata
6
+ class StagenameElement < Lutaml::Model::Serializable
7
+ attribute :abbreviation, :string
8
+ attribute :value, :string
9
+
10
+ xml do
11
+ element "stagename"
12
+ map_attribute "abbreviation", to: :abbreviation
13
+ map_content to: :value
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -3,23 +3,6 @@
3
3
  module Metanorma
4
4
  module IsoDocument
5
5
  module Metadata
6
- # Project number with optional part attribute.
7
- class ProjectNumber < Lutaml::Model::Serializable
8
- attribute :part, :string
9
- attribute :amendment, :string
10
- attribute :origyr, :string
11
- attribute :value, :string
12
-
13
- xml do
14
- element "project-number"
15
- map_attribute "part", to: :part
16
- map_attribute "amendment", to: :amendment
17
- map_attribute "origyr", to: :origyr
18
- map_content to: :value
19
- end
20
- end
21
-
22
- # Structured identifier for an ISO document (project number, part, etc).
23
6
  class StructuredIdentifier < Lutaml::Model::Serializable
24
7
  attribute :project_number, ProjectNumber
25
8
 
@@ -31,6 +31,7 @@ module Metanorma
31
31
  route "title-amd" => :title_amd
32
32
  route "title-amendment-prefix" => :title_amendment_prefix
33
33
  route "title-abbrev" => :title_full
34
+ route nil => :title_full
34
35
  end
35
36
  end
36
37
  map_attribute "semx-id", to: :semx_id
@@ -5,6 +5,7 @@ module Metanorma
5
5
  module Metadata
6
6
  autoload :AbstractTitle, "#{__dir__}/metadata/abstract_title"
7
7
  autoload :DocIdentifier, "#{__dir__}/metadata/doc_identifier"
8
+ autoload :DoctypeElement, "#{__dir__}/metadata/doctype_element"
8
9
  autoload :IecDocumentCategory, "#{__dir__}/metadata/iec_document_category"
9
10
  autoload :IsoBibDataExtensionType,
10
11
  "#{__dir__}/metadata/iso_bib_data_extension_type"
@@ -21,6 +22,14 @@ module Metanorma
21
22
  autoload :TitleCollection, "#{__dir__}/metadata/title_collection"
22
23
  autoload :IsoProjectGroup, "#{__dir__}/metadata/iso_project_group"
23
24
  autoload :IsoSubGroup, "#{__dir__}/metadata/iso_sub_group"
25
+ autoload :LanguageElement, "#{__dir__}/metadata/language_element"
26
+ autoload :MetanormaExtension, "#{__dir__}/metadata/metanorma_extension"
27
+ autoload :ProjectNumber, "#{__dir__}/metadata/project_number"
28
+ autoload :ScriptElement, "#{__dir__}/metadata/script_element"
29
+ autoload :StagenameElement, "#{__dir__}/metadata/stagename_element"
30
+ autoload :StageElement, "#{__dir__}/metadata/stage_element"
31
+ autoload :StructuredIdentifier,
32
+ "#{__dir__}/metadata/structured_identifier"
24
33
  autoload :TitleFull, "#{__dir__}/metadata/title_full"
25
34
  autoload :TitleIntro, "#{__dir__}/metadata/title_intro"
26
35
  autoload :TitleMain, "#{__dir__}/metadata/title_main"
@@ -30,10 +39,6 @@ module Metanorma
30
39
  autoload :TitleAmendmentPrefix,
31
40
  "#{__dir__}/metadata/title_amendment_prefix"
32
41
  autoload :Ics, "#{__dir__}/metadata/ics"
33
- autoload :StructuredIdentifier,
34
- "#{__dir__}/metadata/structured_identifier"
35
- autoload :ProjectNumber, "#{__dir__}/metadata/structured_identifier"
36
- autoload :MetanormaExtension, "#{__dir__}/metadata/metanorma_extension"
37
42
  end
38
43
  end
39
44
  end
@@ -3,19 +3,6 @@
3
3
  module Metanorma
4
4
  module IsoDocument
5
5
  module Terms
6
- # Domain element with id attribute.
7
- class TermDomainElement < Lutaml::Model::Serializable
8
- attribute :id, :string
9
- attribute :text, :string
10
-
11
- xml do
12
- element "domain"
13
- map_attribute "id", to: :id
14
- map_content to: :text
15
- end
16
- end
17
-
18
- # Term subclause specific to ISO/IEC documents.
19
6
  class IsoTerm < Lutaml::Model::Serializable
20
7
  attribute :id, :string
21
8
  attribute :anchor, :string
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IsoDocument
5
+ module Terms
6
+ class TermDomainElement < Lutaml::Model::Serializable
7
+ attribute :id, :string
8
+ attribute :text, :string
9
+
10
+ xml do
11
+ element "domain"
12
+ map_attribute "id", to: :id
13
+ map_content to: :text
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -7,6 +7,7 @@ module Metanorma
7
7
  "#{__dir__}/terms/iso_term_collection"
8
8
  autoload :IsoTerm, "#{__dir__}/terms/iso_term"
9
9
  autoload :TermDesignation, "#{__dir__}/terms/term_designation"
10
+ autoload :TermDomainElement, "#{__dir__}/terms/term_domain_element"
10
11
  autoload :TermExpression, "#{__dir__}/terms/term_expression"
11
12
  autoload :TermDefinition, "#{__dir__}/terms/term_definition"
12
13
  autoload :VerbalDefinition, "#{__dir__}/terms/verbal_definition"
@@ -3,43 +3,6 @@
3
3
  module Metanorma
4
4
  module ItuDocument
5
5
  module Metadata
6
- # Study period element with start/end years.
7
- class StudyPeriod < Lutaml::Model::Serializable
8
- attribute :start, :string
9
- attribute :end_year, :string
10
-
11
- xml do
12
- element "studyperiod"
13
- map_element "start", to: :start
14
- map_element "end", to: :end_year
15
- end
16
- end
17
-
18
- # Meeting date with from/to children.
19
- class MeetingDate < Lutaml::Model::Serializable
20
- attribute :from, :string
21
- attribute :to, :string
22
-
23
- xml do
24
- element "meeting-date"
25
- map_element "from", to: :from
26
- map_element "to", to: :to
27
- end
28
- end
29
-
30
- # Meeting element with acronym attribute.
31
- class MeetingElement < Lutaml::Model::Serializable
32
- attribute :acronym, :string
33
- attribute :text, :string
34
-
35
- xml do
36
- element "meeting"
37
- map_attribute "acronym", to: :acronym
38
- map_content to: :text
39
- end
40
- end
41
-
42
- # Extension point for bibliographical definitions of ITU documents.
43
6
  class ItuBibDataExtensionType < Metanorma::IsoDocument::Metadata::IsoBibDataExtensionType
44
7
  attribute :structuredidentifier, ItuStructuredIdentifier
45
8
  attribute :ip_notice_received, :string
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module ItuDocument
5
+ module Metadata
6
+ class MeetingDate < Lutaml::Model::Serializable
7
+ attribute :from, :string
8
+ attribute :to, :string
9
+
10
+ xml do
11
+ element "meeting-date"
12
+ map_element "from", to: :from
13
+ map_element "to", to: :to
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 ItuDocument
5
+ module Metadata
6
+ class MeetingElement < Lutaml::Model::Serializable
7
+ attribute :acronym, :string
8
+ attribute :text, :string
9
+
10
+ xml do
11
+ element "meeting"
12
+ map_attribute "acronym", to: :acronym
13
+ map_content to: :text
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 ItuDocument
5
+ module Metadata
6
+ class StudyPeriod < Lutaml::Model::Serializable
7
+ attribute :start, :string
8
+ attribute :end_year, :string
9
+
10
+ xml do
11
+ element "studyperiod"
12
+ map_element "start", to: :start
13
+ map_element "end", to: :end_year
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -10,10 +10,9 @@ module Metanorma
10
10
  autoload :ItuSeries, "#{__dir__}/metadata/itu_series"
11
11
  autoload :ItuStructuredIdentifier,
12
12
  "#{__dir__}/metadata/itu_structured_identifier"
13
- autoload :StudyPeriod, "#{__dir__}/metadata/itu_bib_data_extension_type"
14
- autoload :MeetingDate, "#{__dir__}/metadata/itu_bib_data_extension_type"
15
- autoload :MeetingElement,
16
- "#{__dir__}/metadata/itu_bib_data_extension_type"
13
+ autoload :StudyPeriod, "#{__dir__}/metadata/study_period"
14
+ autoload :MeetingDate, "#{__dir__}/metadata/meeting_date"
15
+ autoload :MeetingElement, "#{__dir__}/metadata/meeting_element"
17
16
  end
18
17
  end
19
18
  end