metanorma-document 0.2.12 → 0.2.13

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 (391) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/rake.yml +21 -0
  3. data/.github/workflows/release.yml +25 -0
  4. data/.github/workflows/roundtrip-samples.yml +132 -0
  5. data/.gitignore +19 -0
  6. data/.rspec +3 -0
  7. data/.rubocop.yml +22 -0
  8. data/.rubocop_todo.yml +66 -164
  9. data/CHANGELOG.md +1 -0
  10. data/Gemfile +32 -0
  11. data/README.adoc +0 -144
  12. data/Rakefile +2 -14
  13. data/bin/console +15 -0
  14. data/bin/setup +8 -0
  15. data/data/javascripts/components/mn-lightbox.js +2 -18
  16. data/data/javascripts/components/mn-shortcuts.js +0 -2
  17. data/data/javascripts/core/mn-navigation.js +0 -8
  18. data/data/javascripts/core/mn-theme.js +9 -9
  19. data/data/logos/pdfa-logo.svg +94 -31
  20. data/data/stylesheets/base/_layout.css +0 -3
  21. data/data/stylesheets/base/_reset.css +3 -3
  22. data/data/stylesheets/base/_typography.css +5 -0
  23. data/data/stylesheets/components/bibliography.css +3 -3
  24. data/data/stylesheets/components/cover.css +1 -3
  25. data/data/stylesheets/components/figure.css +1 -13
  26. data/data/stylesheets/components/footnote.css +5 -65
  27. data/data/stylesheets/components/formula.css +0 -44
  28. data/data/stylesheets/components/header.css +2 -17
  29. data/data/stylesheets/components/inline.css +1 -1
  30. data/data/stylesheets/components/table.css +2 -15
  31. data/data/stylesheets/components/term.css +1 -0
  32. data/lib/metanorma/bipm_document/metadata/bipm_bibliographic_item.rb +14 -0
  33. data/lib/metanorma/bipm_document/metadata.rb +1 -1
  34. data/lib/metanorma/document/components/ancillary_blocks/sourcecode_block.rb +65 -0
  35. data/lib/metanorma/document/components/ancillary_blocks.rb +0 -4
  36. data/lib/metanorma/document/components/bib_data/bib_data.rb +0 -7
  37. data/lib/metanorma/document/components/blocks/requirement_model.rb +131 -0
  38. data/lib/metanorma/document/components/blocks.rb +7 -8
  39. data/lib/metanorma/document/components/id_elements/image.rb +0 -2
  40. data/lib/metanorma/document/components/inline/asciimath_element.rb +0 -2
  41. data/lib/metanorma/document/components/inline/attribution_element.rb +0 -2
  42. data/lib/metanorma/document/components/inline/bcp14_element.rb +0 -2
  43. data/lib/metanorma/document/components/inline/biblio_tag_element.rb +0 -2
  44. data/lib/metanorma/document/components/inline/br_element.rb +0 -2
  45. data/lib/metanorma/document/components/inline/comma_element.rb +0 -2
  46. data/lib/metanorma/document/components/inline/concept_element.rb +0 -2
  47. data/lib/metanorma/document/components/inline/display_text_element.rb +0 -2
  48. data/lib/metanorma/document/components/inline/em_raw_element.rb +0 -2
  49. data/lib/metanorma/document/components/inline/enum_comma_element.rb +0 -2
  50. data/lib/metanorma/document/components/inline/eref_element.rb +0 -2
  51. data/lib/metanorma/document/components/inline/fmt_admitted_element.rb +0 -4
  52. data/lib/metanorma/document/components/inline/fmt_annotation_body_element.rb +0 -4
  53. data/lib/metanorma/document/components/inline/fmt_annotation_end_element.rb +0 -4
  54. data/lib/metanorma/document/components/inline/fmt_annotation_start_element.rb +0 -4
  55. data/lib/metanorma/document/components/inline/fmt_concept_element.rb +0 -4
  56. data/lib/metanorma/document/components/inline/fmt_definition_element.rb +0 -4
  57. data/lib/metanorma/document/components/inline/fmt_fn_body_element.rb +0 -4
  58. data/lib/metanorma/document/components/inline/fmt_fn_label_element.rb +0 -4
  59. data/lib/metanorma/document/components/inline/fmt_footnote_container_element.rb +0 -4
  60. data/lib/metanorma/document/components/inline/fmt_identifier_element.rb +0 -4
  61. data/lib/metanorma/document/components/inline/fmt_name_element.rb +0 -4
  62. data/lib/metanorma/document/components/inline/fmt_preferred_element.rb +0 -4
  63. data/lib/metanorma/document/components/inline/fmt_sourcecode_element.rb +0 -4
  64. data/lib/metanorma/document/components/inline/fmt_stem_element.rb +0 -10
  65. data/lib/metanorma/document/components/inline/fmt_termsource_element.rb +0 -4
  66. data/lib/metanorma/document/components/inline/fmt_title_element.rb +0 -4
  67. data/lib/metanorma/document/components/inline/fmt_xref_element.rb +0 -4
  68. data/lib/metanorma/document/components/inline/fmt_xref_label_element.rb +0 -4
  69. data/lib/metanorma/document/components/inline/fn_element.rb +0 -2
  70. data/lib/metanorma/document/components/inline/link_element.rb +0 -2
  71. data/lib/metanorma/document/components/inline/localized_string_element.rb +0 -2
  72. data/lib/metanorma/document/components/inline/localized_strings_element.rb +0 -2
  73. data/lib/metanorma/document/components/inline/math_element.rb +0 -2
  74. data/lib/metanorma/document/components/inline/name_with_id_element.rb +0 -4
  75. data/lib/metanorma/document/components/inline/semx_child_element.rb +0 -2
  76. data/lib/metanorma/document/components/inline/semx_element.rb +1 -13
  77. data/lib/metanorma/document/components/inline/small_cap_element.rb +0 -2
  78. data/lib/metanorma/document/components/inline/span_element.rb +15 -10
  79. data/lib/metanorma/document/components/inline/stem_inline_element.rb +1 -7
  80. data/lib/metanorma/document/components/inline/strong_raw_element.rb +0 -2
  81. data/lib/metanorma/document/components/inline/sub_element.rb +0 -2
  82. data/lib/metanorma/document/components/inline/sup_element.rb +0 -2
  83. data/lib/metanorma/document/components/inline/tab_element.rb +0 -2
  84. data/lib/metanorma/document/components/inline/title_with_annotation_element.rb +0 -4
  85. data/lib/metanorma/document/components/inline/tt_element.rb +0 -2
  86. data/lib/metanorma/document/components/inline/variant_title_element.rb +0 -2
  87. data/lib/metanorma/document/components/inline/xref_element.rb +0 -10
  88. data/lib/metanorma/document/components/inline.rb +0 -12
  89. data/lib/metanorma/document/components/multi_paragraph/quote_block.rb +29 -0
  90. data/lib/metanorma/document/components/multi_paragraph.rb +0 -2
  91. data/lib/metanorma/document/components/reference_elements/source_element.rb +31 -0
  92. data/lib/metanorma/document/components/reference_elements.rb +2 -2
  93. data/lib/metanorma/document/components/tables/table_block.rb +22 -0
  94. data/lib/metanorma/document/components/tables/table_section.rb +25 -0
  95. data/lib/metanorma/document/components/tables.rb +3 -5
  96. data/lib/metanorma/document/relaton/address.rb +27 -0
  97. data/lib/metanorma/document/relaton/bib_item_locality.rb +12 -3
  98. data/lib/metanorma/document/relaton/copyright_association.rb +10 -0
  99. data/lib/metanorma/document/relaton/edition.rb +7 -4
  100. data/lib/metanorma/document/relaton/organization.rb +14 -0
  101. data/lib/metanorma/document/relaton/phone.rb +9 -3
  102. data/lib/metanorma/document/relaton/place_type.rb +13 -0
  103. data/lib/metanorma/document/relaton/price_type.rb +9 -3
  104. data/lib/metanorma/document/relaton.rb +1 -6
  105. data/lib/metanorma/document/version.rb +1 -1
  106. data/lib/metanorma/document.rb +0 -2
  107. data/lib/metanorma/html/asset_pipeline.rb +0 -1
  108. data/lib/metanorma/html/base_renderer.rb +1008 -261
  109. data/lib/metanorma/html/bipm_renderer.rb +144 -15
  110. data/lib/metanorma/html/cc_renderer.rb +45 -1
  111. data/lib/metanorma/html/component/base.rb +7 -2
  112. data/lib/metanorma/html/component/index_section.rb +43 -41
  113. data/lib/metanorma/html/drops/admonition_drop.rb +4 -1
  114. data/lib/metanorma/html/drops/block_element_drop.rb +2 -7
  115. data/lib/metanorma/html/drops/example_drop.rb +4 -1
  116. data/lib/metanorma/html/drops/figure_drop.rb +22 -31
  117. data/lib/metanorma/html/drops/footnote_drop.rb +1 -1
  118. data/lib/metanorma/html/drops/formula_drop.rb +16 -45
  119. data/lib/metanorma/html/drops/note_drop.rb +7 -9
  120. data/lib/metanorma/html/drops/sourcecode_drop.rb +5 -12
  121. data/lib/metanorma/html/drops.rb +0 -2
  122. data/lib/metanorma/html/generator.rb +2 -2
  123. data/lib/metanorma/html/icc_renderer.rb +39 -0
  124. data/lib/metanorma/html/iec_renderer.rb +44 -1
  125. data/lib/metanorma/html/ieee_renderer.rb +45 -1
  126. data/lib/metanorma/html/ietf_renderer.rb +48 -1
  127. data/lib/metanorma/html/iho_renderer.rb +46 -1
  128. data/lib/metanorma/html/iso_renderer.rb +343 -290
  129. data/lib/metanorma/html/itu_renderer.rb +45 -1
  130. data/lib/metanorma/html/ogc_renderer.rb +76 -15
  131. data/lib/metanorma/html/oiml_renderer.rb +38 -18
  132. data/lib/metanorma/html/pdfa_renderer.rb +39 -0
  133. data/lib/metanorma/html/ribose_renderer.rb +45 -1
  134. data/lib/metanorma/html/standard_renderer.rb +229 -341
  135. data/lib/metanorma/html/templates/_footnotes.html.liquid +6 -6
  136. data/lib/metanorma/html/templates/_formula.html.liquid +1 -1
  137. data/lib/metanorma/html/templates/_header.html.liquid +1 -1
  138. data/lib/metanorma/html/templates/_iso_cover.html.liquid +1 -1
  139. data/lib/metanorma/html/templates/document.html.liquid +0 -4
  140. data/lib/metanorma/html/theme.rb +107 -180
  141. data/lib/metanorma/html.rb +3 -14
  142. data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +25 -0
  143. data/lib/metanorma/ietf_document/metadata.rb +0 -2
  144. data/lib/metanorma/iso_document/metadata/iso_bib_data_extension_type.rb +48 -0
  145. data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +72 -0
  146. data/lib/metanorma/iso_document/metadata/iso_document_status.rb +30 -0
  147. data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +1 -4
  148. data/lib/metanorma/iso_document/metadata/structured_identifier.rb +17 -0
  149. data/lib/metanorma/iso_document/metadata/title_collection.rb +0 -1
  150. data/lib/metanorma/iso_document/metadata.rb +4 -9
  151. data/lib/metanorma/iso_document/terms/iso_term.rb +13 -0
  152. data/lib/metanorma/iso_document/terms.rb +0 -1
  153. data/lib/metanorma/itu_document/metadata/itu_bib_data_extension_type.rb +37 -0
  154. data/lib/metanorma/itu_document/metadata.rb +4 -3
  155. data/lib/metanorma/standard_document/block_attributes.rb +9 -5
  156. data/lib/metanorma/standard_document/blocks/block_source.rb +23 -0
  157. data/lib/metanorma/standard_document/blocks.rb +1 -1
  158. data/lib/metanorma/standard_document/terms/term_expression.rb +31 -0
  159. data/lib/metanorma/standard_document/terms.rb +0 -1
  160. data/metanorma-document.gemspec +35 -0
  161. metadata +13 -262
  162. data/CLAUDE.md +0 -26
  163. data/TODO.finalize/01-split-multi-class-files.md +0 -8
  164. data/TODO.finalize/02-remove-data-dist-iso-document-frontend.md +0 -6
  165. data/TODO.finalize/03-align-frontend-iife-and-gha-build.md +0 -11
  166. data/TODO.finalize/04-theme-per-flavor-config-driven.md +0 -9
  167. data/TODO.finalize/05-migrate-all-html-to-liquid.md +0 -16
  168. data/TODO.finalize/06-integrate-pubid-library.md +0 -16
  169. data/TODO.finalize/07-replace-relaton-models-with-relaton-bib.md +0 -39
  170. data/TODO.finalize/08-refactor-renderer-architecture.md +0 -25
  171. data/TODO.finalize/09-eliminate-code-smells.md +0 -14
  172. data/TODO.finalize/10-comprehensive-spec-coverage.md +0 -24
  173. data/TODO.finalize/11-config-driven-flavor-metadata.md +0 -20
  174. data/TODO.finalize/12-add-frozen-string-literal.md +0 -6
  175. data/TODO.finalize/13-extract-composition-from-god-class.md +0 -96
  176. data/TODO.finalize/14-config-driven-section-ordering.md +0 -31
  177. data/TODO.finalize/15-theme-directories-per-flavor.md +0 -46
  178. data/TODO.finalize/16-theme-lutaml-model-schema.md +0 -44
  179. data/data/javascripts/components/mn-footnotes.js +0 -68
  180. data/data/logos/oiml-logo-full-dark.svg +0 -1
  181. data/data/logos/oiml-logo-full-light.svg +0 -1
  182. data/data/logos/oiml-logo-icon-dark.svg +0 -1
  183. data/data/logos/oiml-logo-icon-light.svg +0 -1
  184. data/data/logos/oiml-logo.svg +0 -1
  185. data/data/themes/bipm.yaml +0 -60
  186. data/data/themes/cc.yaml +0 -43
  187. data/data/themes/icc.yaml +0 -39
  188. data/data/themes/iec.yaml +0 -44
  189. data/data/themes/ieee.yaml +0 -43
  190. data/data/themes/ietf.yaml +0 -45
  191. data/data/themes/iho.yaml +0 -46
  192. data/data/themes/iso.yaml +0 -40
  193. data/data/themes/itu.yaml +0 -45
  194. data/data/themes/ogc.yaml +0 -51
  195. data/data/themes/oiml.yaml +0 -56
  196. data/data/themes/pdfa.yaml +0 -44
  197. data/data/themes/ribose.yaml +0 -43
  198. data/exe/metanorma-document +0 -11
  199. data/frontend/e2e/sample-html.test.ts +0 -256
  200. data/frontend/index.html +0 -12
  201. data/frontend/package-lock.json +0 -4725
  202. data/frontend/package.json +0 -32
  203. data/frontend/postcss.config.js +0 -6
  204. data/frontend/src/App.vue +0 -79
  205. data/frontend/src/app.ts +0 -21
  206. data/frontend/src/components/AppSidebar.vue +0 -77
  207. data/frontend/src/components/DocumentReader.vue +0 -180
  208. data/frontend/src/components/MirrorRenderer.vue +0 -23
  209. data/frontend/src/components/ReadingProgressBar.vue +0 -29
  210. data/frontend/src/components/TextRenderer.vue +0 -131
  211. data/frontend/src/components/TocItem.vue +0 -57
  212. data/frontend/src/components/TopBar.vue +0 -49
  213. data/frontend/src/components/__tests__/MirrorRenderer.test.ts +0 -178
  214. data/frontend/src/components/blocks/AdmonitionBlock.vue +0 -74
  215. data/frontend/src/components/blocks/ClauseBlock.vue +0 -53
  216. data/frontend/src/components/blocks/ExampleBlock.vue +0 -21
  217. data/frontend/src/components/blocks/FallbackBlock.vue +0 -18
  218. data/frontend/src/components/blocks/FigureBlock.vue +0 -26
  219. data/frontend/src/components/blocks/FootnotesBlock.vue +0 -25
  220. data/frontend/src/components/blocks/ListBlocks.vue +0 -62
  221. data/frontend/src/components/blocks/NoteBlock.vue +0 -21
  222. data/frontend/src/components/blocks/ParagraphBlock.vue +0 -25
  223. data/frontend/src/components/blocks/QuoteBlock.vue +0 -25
  224. data/frontend/src/components/blocks/ReviewBlock.vue +0 -39
  225. data/frontend/src/components/blocks/SourcecodeBlock.vue +0 -52
  226. data/frontend/src/components/blocks/TableBlock.vue +0 -48
  227. data/frontend/src/components/blocks/index.ts +0 -36
  228. data/frontend/src/stores/__tests__/documentStore.fixture.test.ts +0 -272
  229. data/frontend/src/stores/__tests__/documentStore.test.ts +0 -143
  230. data/frontend/src/stores/__tests__/ebookStore.test.ts +0 -145
  231. data/frontend/src/stores/__tests__/uiStore.test.ts +0 -42
  232. data/frontend/src/stores/documentStore.ts +0 -153
  233. data/frontend/src/stores/ebookStore.ts +0 -179
  234. data/frontend/src/stores/uiStore.ts +0 -32
  235. data/frontend/src/styles.css +0 -156
  236. data/frontend/src/types/__tests__/rendering-contract.test.ts +0 -172
  237. data/frontend/src/types/rendering-contract.ts +0 -209
  238. data/frontend/src/utils/__tests__/typeMetadata.test.ts +0 -102
  239. data/frontend/src/utils/typeMetadata.ts +0 -121
  240. data/frontend/tailwind.config.js +0 -18
  241. data/frontend/test/fixtures/iso-document.json +0 -271
  242. data/frontend/tmp/debug_e2e.cjs +0 -46
  243. data/frontend/tsconfig.json +0 -25
  244. data/frontend/tsconfig.node.json +0 -11
  245. data/frontend/vite.config.ts +0 -37
  246. data/frontend/vitest.e2e.config.ts +0 -9
  247. data/lib/metanorma/bipm_document/metadata/depiction_element.rb +0 -18
  248. data/lib/metanorma/document/cli.rb +0 -116
  249. data/lib/metanorma/document/components/ancillary_blocks/callout_annotation.rb +0 -27
  250. data/lib/metanorma/document/components/ancillary_blocks/sourcecode_body.rb +0 -18
  251. data/lib/metanorma/document/components/blocks/classification_value.rb +0 -21
  252. data/lib/metanorma/document/components/blocks/permission_model.rb +0 -28
  253. data/lib/metanorma/document/components/blocks/recommendation_model.rb +0 -28
  254. data/lib/metanorma/document/components/blocks/requirement_base.rb +0 -30
  255. data/lib/metanorma/document/components/blocks/requirement_classification.rb +0 -20
  256. data/lib/metanorma/document/components/blocks/requirement_description.rb +0 -43
  257. data/lib/metanorma/document/components/blocks/requirement_inherit.rb +0 -24
  258. data/lib/metanorma/document/components/inline/location_element.rb +0 -24
  259. data/lib/metanorma/document/components/inline/rendered_display.rb +0 -23
  260. data/lib/metanorma/document/components/inline/rendered_math_element.rb +0 -21
  261. data/lib/metanorma/document/components/inline/semantic_content.rb +0 -51
  262. data/lib/metanorma/document/components/inline/semantic_math_element.rb +0 -20
  263. data/lib/metanorma/document/components/inline/vocabulary.rb +0 -184
  264. data/lib/metanorma/document/components/multi_paragraph/quote_author_element.rb +0 -20
  265. data/lib/metanorma/document/components/reference_elements/source_modification.rb +0 -21
  266. data/lib/metanorma/document/components/reference_elements/source_origin.rb +0 -28
  267. data/lib/metanorma/document/components/tables/col_element.rb +0 -18
  268. data/lib/metanorma/document/components/tables/col_group_element.rb +0 -18
  269. data/lib/metanorma/document/components/tables/table_body_section.rb +0 -16
  270. data/lib/metanorma/document/components/tables/table_foot_section.rb +0 -16
  271. data/lib/metanorma/document/components/tables/table_head_section.rb +0 -16
  272. data/lib/metanorma/document/relaton/copyright_owner.rb +0 -16
  273. data/lib/metanorma/document/relaton/formatted_address.rb +0 -29
  274. data/lib/metanorma/document/relaton/logo_element.rb +0 -18
  275. data/lib/metanorma/document/relaton/region_element.rb +0 -18
  276. data/lib/metanorma/html/drops/biblio_entry_drop.rb +0 -50
  277. data/lib/metanorma/html/renderers/block_renderer.rb +0 -372
  278. data/lib/metanorma/html/renderers/inline_renderer.rb +0 -655
  279. data/lib/metanorma/html/renderers/pubid_renderer.rb +0 -69
  280. data/lib/metanorma/html/renderers/section_renderer.rb +0 -193
  281. data/lib/metanorma/html/renderers.rb +0 -8
  282. data/lib/metanorma/html/templates/_audio.html.liquid +0 -1
  283. data/lib/metanorma/html/templates/_biblio_entry.html.liquid +0 -1
  284. data/lib/metanorma/html/templates/_bipm_cover.html.liquid +0 -27
  285. data/lib/metanorma/html/templates/_boilerplate.html.liquid +0 -1
  286. data/lib/metanorma/html/templates/_bookmark.html.liquid +0 -1
  287. data/lib/metanorma/html/templates/_br.html.liquid +0 -1
  288. data/lib/metanorma/html/templates/_definition_list.html.liquid +0 -6
  289. data/lib/metanorma/html/templates/_element.html.liquid +0 -1
  290. data/lib/metanorma/html/templates/_fn_marker.html.liquid +0 -1
  291. data/lib/metanorma/html/templates/_heading.html.liquid +0 -1
  292. data/lib/metanorma/html/templates/_image.html.liquid +0 -1
  293. data/lib/metanorma/html/templates/_inline_span.html.liquid +0 -1
  294. data/lib/metanorma/html/templates/_link.html.liquid +0 -1
  295. data/lib/metanorma/html/templates/_list.html.liquid +0 -3
  296. data/lib/metanorma/html/templates/_list_item.html.liquid +0 -1
  297. data/lib/metanorma/html/templates/_main_content.html.liquid +0 -1
  298. data/lib/metanorma/html/templates/_math_container.html.liquid +0 -1
  299. data/lib/metanorma/html/templates/_paragraph.html.liquid +0 -1
  300. data/lib/metanorma/html/templates/_prefatory_section.html.liquid +0 -1
  301. data/lib/metanorma/html/templates/_pubid_identifier.html.liquid +0 -1
  302. data/lib/metanorma/html/templates/_quote.html.liquid +0 -4
  303. data/lib/metanorma/html/templates/_ref_date.html.liquid +0 -1
  304. data/lib/metanorma/html/templates/_ref_title.html.liquid +0 -1
  305. data/lib/metanorma/html/templates/_section.html.liquid +0 -5
  306. data/lib/metanorma/html/templates/_standard_cover.html.liquid +0 -31
  307. data/lib/metanorma/html/templates/_standard_doc_title.html.liquid +0 -3
  308. data/lib/metanorma/html/templates/_stem_span.html.liquid +0 -1
  309. data/lib/metanorma/html/templates/_table.html.liquid +0 -9
  310. data/lib/metanorma/html/templates/_term_domain.html.liquid +0 -1
  311. data/lib/metanorma/html/templates/_term_example.html.liquid +0 -1
  312. data/lib/metanorma/html/templates/_term_note.html.liquid +0 -1
  313. data/lib/metanorma/html/templates/_term_number.html.liquid +0 -1
  314. data/lib/metanorma/html/templates/_term_source.html.liquid +0 -1
  315. data/lib/metanorma/html/templates/_term_text_note.html.liquid +0 -1
  316. data/lib/metanorma/html/templates/_video.html.liquid +0 -1
  317. data/lib/metanorma/html/templates/_wrapped_preface.html.liquid +0 -1
  318. data/lib/metanorma/ietf_document/metadata/pi_settings.rb +0 -32
  319. data/lib/metanorma/iso_document/metadata/doctype_element.rb +0 -20
  320. data/lib/metanorma/iso_document/metadata/language_element.rb +0 -18
  321. data/lib/metanorma/iso_document/metadata/project_number.rb +0 -22
  322. data/lib/metanorma/iso_document/metadata/script_element.rb +0 -18
  323. data/lib/metanorma/iso_document/metadata/stage_element.rb +0 -26
  324. data/lib/metanorma/iso_document/metadata/stagename_element.rb +0 -18
  325. data/lib/metanorma/iso_document/terms/term_domain_element.rb +0 -18
  326. data/lib/metanorma/itu_document/metadata/meeting_date.rb +0 -18
  327. data/lib/metanorma/itu_document/metadata/meeting_element.rb +0 -18
  328. data/lib/metanorma/itu_document/metadata/study_period.rb +0 -18
  329. data/lib/metanorma/mirror/default_registry.rb +0 -170
  330. data/lib/metanorma/mirror/handler_registry.rb +0 -60
  331. data/lib/metanorma/mirror/handler_result.rb +0 -37
  332. data/lib/metanorma/mirror/handlers/admonition.rb +0 -18
  333. data/lib/metanorma/mirror/handlers/example.rb +0 -21
  334. data/lib/metanorma/mirror/handlers/figure.rb +0 -53
  335. data/lib/metanorma/mirror/handlers/formula.rb +0 -35
  336. data/lib/metanorma/mirror/handlers/inline/rich_html_renderer.rb +0 -159
  337. data/lib/metanorma/mirror/handlers/inline/text_extractor.rb +0 -116
  338. data/lib/metanorma/mirror/handlers/inline.rb +0 -225
  339. data/lib/metanorma/mirror/handlers/list.rb +0 -110
  340. data/lib/metanorma/mirror/handlers/note.rb +0 -26
  341. data/lib/metanorma/mirror/handlers/paragraph.rb +0 -19
  342. data/lib/metanorma/mirror/handlers/quote.rb +0 -16
  343. data/lib/metanorma/mirror/handlers/review.rb +0 -19
  344. data/lib/metanorma/mirror/handlers/section.rb +0 -149
  345. data/lib/metanorma/mirror/handlers/sourcecode.rb +0 -27
  346. data/lib/metanorma/mirror/handlers/structural.rb +0 -68
  347. data/lib/metanorma/mirror/handlers/table.rb +0 -81
  348. data/lib/metanorma/mirror/handlers/term.rb +0 -100
  349. data/lib/metanorma/mirror/handlers.rb +0 -60
  350. data/lib/metanorma/mirror/id_strategy/positional.rb +0 -166
  351. data/lib/metanorma/mirror/id_strategy/preserve.rb +0 -12
  352. data/lib/metanorma/mirror/id_strategy.rb +0 -34
  353. data/lib/metanorma/mirror/math_util.rb +0 -53
  354. data/lib/metanorma/mirror/metadata.rb +0 -37
  355. data/lib/metanorma/mirror/metanorma_to_mirror.rb +0 -101
  356. data/lib/metanorma/mirror/model/container.rb +0 -47
  357. data/lib/metanorma/mirror/model/factory.rb +0 -52
  358. data/lib/metanorma/mirror/model/guide.rb +0 -25
  359. data/lib/metanorma/mirror/model/leaf.rb +0 -17
  360. data/lib/metanorma/mirror/model/mark.rb +0 -53
  361. data/lib/metanorma/mirror/model/node.rb +0 -47
  362. data/lib/metanorma/mirror/model/soft_break.rb +0 -33
  363. data/lib/metanorma/mirror/model/text.rb +0 -34
  364. data/lib/metanorma/mirror/model.rb +0 -16
  365. data/lib/metanorma/mirror/output/builder.rb +0 -39
  366. data/lib/metanorma/mirror/output/formats/base_format.rb +0 -90
  367. data/lib/metanorma/mirror/output/formats/inline_format.rb +0 -81
  368. data/lib/metanorma/mirror/output/formats.rb +0 -53
  369. data/lib/metanorma/mirror/output/html_renderer.rb +0 -95
  370. data/lib/metanorma/mirror/output/html_renderers/block_renderers.rb +0 -178
  371. data/lib/metanorma/mirror/output/html_renderers/inline_renderer.rb +0 -61
  372. data/lib/metanorma/mirror/output/html_renderers/list_renderers.rb +0 -96
  373. data/lib/metanorma/mirror/output/html_renderers/mark_renderers.rb +0 -64
  374. data/lib/metanorma/mirror/output/html_renderers/section_renderers.rb +0 -129
  375. data/lib/metanorma/mirror/output/html_renderers/structural_renderers.rb +0 -80
  376. data/lib/metanorma/mirror/output/html_renderers/table_renderers.rb +0 -87
  377. data/lib/metanorma/mirror/output/html_renderers.rb +0 -76
  378. data/lib/metanorma/mirror/output/pipeline.rb +0 -92
  379. data/lib/metanorma/mirror/output/pipeline_context.rb +0 -22
  380. data/lib/metanorma/mirror/output.rb +0 -14
  381. data/lib/metanorma/mirror/rewriter.rb +0 -121
  382. data/lib/metanorma/mirror/safe_attr.rb +0 -16
  383. data/lib/metanorma/mirror/serialization/json_serializer.rb +0 -25
  384. data/lib/metanorma/mirror/serialization/yaml_serializer.rb +0 -20
  385. data/lib/metanorma/mirror/serialization.rb +0 -10
  386. data/lib/metanorma/mirror/transformer.rb +0 -22
  387. data/lib/metanorma/mirror.rb +0 -32
  388. data/lib/metanorma/standard_document/annotation.rb +0 -37
  389. data/lib/metanorma/standard_document/blocks/source_origin_element.rb +0 -23
  390. data/lib/metanorma/standard_document/terms/term_name_element.rb +0 -29
  391. data/script/render_both.rb +0 -18
@@ -3,11 +3,41 @@
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
+
6
27
  class IsoDocumentStatus < Lutaml::Model::Serializable
28
+ # Publication stage of the ISO/IEC document, expressed as an International Harmonized Stage Code.
7
29
  attribute :stage, StageElement, collection: true
30
+
31
+ # Standard abbreviation of the publication stage.
8
32
  attribute :stage_abbreviation, :string
33
+
34
+ # Substage code for the ISO/IEC document.
9
35
  attribute :substage, IsoDocumentSubstageCodes
36
+
37
+ # Standard abbreviation of the publication substage.
10
38
  attribute :substage_abbreviation, :string
39
+
40
+ # Number of the iteration of the publication stage that the document is in.
11
41
  attribute :iteration, :integer
12
42
  attribute :semx_id, :string
13
43
 
@@ -32,9 +32,6 @@ 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
-
38
35
  # Compose all parts into a single title string
39
36
  def to_s
40
37
  parts = []
@@ -53,7 +50,7 @@ module Metanorma
53
50
  end
54
51
  return parts.join(" — ") unless parts.empty?
55
52
 
56
- content.to_s
53
+ ""
57
54
  end
58
55
  end
59
56
  end
@@ -3,6 +3,23 @@
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).
6
23
  class StructuredIdentifier < Lutaml::Model::Serializable
7
24
  attribute :project_number, ProjectNumber
8
25
 
@@ -31,7 +31,6 @@ 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
35
34
  end
36
35
  end
37
36
  map_attribute "semx-id", to: :semx_id
@@ -5,7 +5,6 @@ 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"
9
8
  autoload :IecDocumentCategory, "#{__dir__}/metadata/iec_document_category"
10
9
  autoload :IsoBibDataExtensionType,
11
10
  "#{__dir__}/metadata/iso_bib_data_extension_type"
@@ -22,14 +21,6 @@ module Metanorma
22
21
  autoload :TitleCollection, "#{__dir__}/metadata/title_collection"
23
22
  autoload :IsoProjectGroup, "#{__dir__}/metadata/iso_project_group"
24
23
  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"
33
24
  autoload :TitleFull, "#{__dir__}/metadata/title_full"
34
25
  autoload :TitleIntro, "#{__dir__}/metadata/title_intro"
35
26
  autoload :TitleMain, "#{__dir__}/metadata/title_main"
@@ -39,6 +30,10 @@ module Metanorma
39
30
  autoload :TitleAmendmentPrefix,
40
31
  "#{__dir__}/metadata/title_amendment_prefix"
41
32
  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"
42
37
  end
43
38
  end
44
39
  end
@@ -3,6 +3,19 @@
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.
6
19
  class IsoTerm < Lutaml::Model::Serializable
7
20
  attribute :id, :string
8
21
  attribute :anchor, :string
@@ -7,7 +7,6 @@ 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"
11
10
  autoload :TermExpression, "#{__dir__}/terms/term_expression"
12
11
  autoload :TermDefinition, "#{__dir__}/terms/term_definition"
13
12
  autoload :VerbalDefinition, "#{__dir__}/terms/verbal_definition"
@@ -3,6 +3,43 @@
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.
6
43
  class ItuBibDataExtensionType < Metanorma::IsoDocument::Metadata::IsoBibDataExtensionType
7
44
  attribute :structuredidentifier, ItuStructuredIdentifier
8
45
  attribute :ip_notice_received, :string
@@ -10,9 +10,10 @@ 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/study_period"
14
- autoload :MeetingDate, "#{__dir__}/metadata/meeting_date"
15
- autoload :MeetingElement, "#{__dir__}/metadata/meeting_element"
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"
16
17
  end
17
18
  end
18
19
  end
@@ -52,13 +52,15 @@ module Metanorma
52
52
  end
53
53
 
54
54
  # Provides `blocks` method for ordered-content section types.
55
- # Returns child block-level nodes in document order via `each_mixed_content`,
56
- # excluding metadata/inline elements like titles and annotations.
55
+ # Returns child nodes in document order via `each_mixed_content`.
57
56
  module OrderedContent
58
- NON_BLOCK_TYPES = [
57
+ # Section metadata mapped by SectionXmlMapping (title machinery
58
+ # and annotation markers) precedes the content alternation in
59
+ # the grammar — `blocks` answers content children only.
60
+ SECTION_METADATA_ELEMENTS = [
59
61
  Metanorma::Document::Components::Inline::TitleWithAnnotationElement,
60
- Metanorma::Document::Components::Inline::FmtTitleElement,
61
62
  Metanorma::Document::Components::Inline::VariantTitleElement,
63
+ Metanorma::Document::Components::Inline::FmtTitleElement,
62
64
  Metanorma::Document::Components::Inline::FmtXrefLabelElement,
63
65
  Metanorma::Document::Components::Inline::FmtAnnotationStartElement,
64
66
  Metanorma::Document::Components::Inline::FmtAnnotationEndElement,
@@ -70,7 +72,9 @@ module Metanorma
70
72
  result = []
71
73
  each_mixed_content do |node|
72
74
  next if node.is_a?(String)
73
- next if NON_BLOCK_TYPES.any? { |t| node.is_a?(t) }
75
+ next if SECTION_METADATA_ELEMENTS.any? do |klass|
76
+ node.is_a?(klass)
77
+ end
74
78
 
75
79
  result << node
76
80
  end
@@ -3,6 +3,29 @@
3
3
  module Metanorma
4
4
  module StandardDocument
5
5
  module Blocks
6
+ # Reference origin within a block source: <origin bibitemid="..." citeas="...">
7
+ # Schema: isodoc.rnc — origin = element origin { erefType | termref }
8
+ class SourceOriginElement < Lutaml::Model::Serializable
9
+ attribute :bibitemid, :string
10
+ attribute :type, :string
11
+ attribute :citeas, :string
12
+ attribute :locality_stack, Metanorma::Document::Relaton::LocalityStack,
13
+ collection: true
14
+
15
+ xml do
16
+ element "origin"
17
+ map_attribute "bibitemid", to: :bibitemid
18
+ map_attribute "type", to: :type
19
+ map_attribute "citeas", to: :citeas
20
+ map_element "localityStack", to: :locality_stack
21
+ end
22
+ end
23
+
24
+ # Bibliographic source for a block: <source status="..." type="...">
25
+ # <origin bibitemid="..." citeas="..."/>
26
+ # <modification>...</modification>?
27
+ # </source>
28
+ # Schema: isodoc.rnc BlockSource = source*
6
29
  class BlockSourceElement < Lutaml::Model::Serializable
7
30
  attribute :status, :string
8
31
  attribute :type, :string
@@ -6,7 +6,7 @@ module Metanorma
6
6
  autoload :AmendBlock, "#{__dir__}/blocks/amend_block"
7
7
  autoload :AmendContentBlock, "#{__dir__}/blocks/amend_content_block"
8
8
  autoload :BlockSourceElement, "#{__dir__}/blocks/block_source"
9
- autoload :SourceOriginElement, "#{__dir__}/blocks/source_origin_element"
9
+ autoload :SourceOriginElement, "#{__dir__}/blocks/block_source"
10
10
  autoload :AutoNumber, "#{__dir__}/blocks/auto_number"
11
11
  autoload :ChangeType, "#{__dir__}/blocks/change_type"
12
12
  autoload :ElementName, "#{__dir__}/blocks/element_name"
@@ -3,6 +3,37 @@
3
3
  module Metanorma
4
4
  module StandardDocument
5
5
  module Terms
6
+ class TermNameElement < Lutaml::Model::Serializable
7
+ attribute :id, :string
8
+ attribute :semx_id, :string
9
+ attribute :lang, :string
10
+ attribute :text, :string, collection: true
11
+ attribute :strike, Metanorma::Document::Components::TextElements::StrikeElement,
12
+ collection: true
13
+ attribute :em, Metanorma::Document::Components::Inline::EmRawElement,
14
+ collection: true
15
+ attribute :strong, Metanorma::Document::Components::Inline::StrongRawElement,
16
+ collection: true
17
+ attribute :sup, Metanorma::Document::Components::Inline::SupElement,
18
+ collection: true
19
+ attribute :sub, Metanorma::Document::Components::Inline::SubElement,
20
+ collection: true
21
+
22
+ xml do
23
+ element "name"
24
+ map_attribute "id", to: :id
25
+ map_attribute "semx-id", to: :semx_id
26
+ map_attribute "lang", to: :lang
27
+ mixed_content
28
+ map_content to: :text
29
+ map_element "strike", to: :strike
30
+ map_element "em", to: :em
31
+ map_element "strong", to: :strong
32
+ map_element "sup", to: :sup
33
+ map_element "sub", to: :sub
34
+ end
35
+ end
36
+
6
37
  class TermExpression < Lutaml::Model::Serializable
7
38
  attribute :name, TermNameElement, collection: true
8
39
  attribute :usage, :string
@@ -23,7 +23,6 @@ module Metanorma
23
23
  autoload :TermCollection, "#{__dir__}/terms/term_collection"
24
24
  autoload :TermDefinition, "#{__dir__}/terms/term_definition"
25
25
  autoload :TermExpression, "#{__dir__}/terms/term_expression"
26
- autoload :TermNameElement, "#{__dir__}/terms/term_name_element"
27
26
  autoload :TermSource, "#{__dir__}/terms/term_source"
28
27
  autoload :TermSourceStatus, "#{__dir__}/terms/term_source_status"
29
28
  autoload :TermSourceType, "#{__dir__}/terms/term_source_type"
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/metanorma/document/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "metanorma-document"
7
+ spec.version = Metanorma::Document::VERSION
8
+ spec.authors = ["Ribose Inc."]
9
+ spec.email = ["open.source@ribose.com"]
10
+
11
+ spec.summary = "Library for Metanorma document XML"
12
+ spec.description = "A Ruby library for representing and processing Metanorma document XML, providing a comprehensive model for standards documents with support for various metadata, content blocks, and structured markup."
13
+ spec.homepage = "https://github.com/metanorma/metanorma-document"
14
+ spec.license = "BSD-2-Clause"
15
+ spec.required_ruby_version = ">= 3.1"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/metanorma/metanorma-document"
19
+ spec.metadata["changelog_uri"] = "https://github.com/metanorma/metanorma-document/blob/main/CHANGELOG.md"
20
+ spec.metadata["rubygems_mfa_required"] = "true"
21
+
22
+ # Specify which files should be added to the gem when it is released.
23
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
24
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
25
+ `git ls-files -z`.split("\x0").reject do |f|
26
+ f.match(%r{\A(?:test|spec|features)/})
27
+ end
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ # Uncomment to register a new dependency of your gem
34
+ spec.add_dependency "lutaml-model", "~> 0.8.0"
35
+ end