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,60 @@
1
+ primary: "#0f3c80"
2
+ accent: "#3d7ec7"
3
+ accent_deep: "#1a5a9e"
4
+ gradient: "linear-gradient(135deg, #082247 0%, #0f3c80 50%, #1a5a9e 100%)"
5
+ primary_light: "#edf1f7"
6
+ accent_light: "#e8f0fa"
7
+ warm: "#7a6952"
8
+ warm_light: "#f5f0e8"
9
+ sidebar_bg: "#f4f6fa"
10
+ font_body: '"Crimson Pro", "Georgia", "Times New Roman", serif'
11
+ font_sans: '"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif'
12
+ font_mono: '"IBM Plex Mono", "Fira Code", "Courier New", monospace'
13
+ font_url: "https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono:wght@400;500&display=swap"
14
+ header_background: "linear-gradient(135deg, #082247 0%, #0f3c80 50%, #1a5a9e 100%)"
15
+ cover_background: "linear-gradient(175deg, #04122a 0%, #0a2e5c 25%, #0f3c80 55%, #1a5a9e 80%, #3d7ec7 100%)"
16
+ cover_before_bg: "background: radial-gradient(ellipse at 25% 15%, rgba(61,126,199,0.15) 0%, transparent 50%), radial-gradient(ellipse at 75% 85%, rgba(15,60,128,0.18) 0%, transparent 40%), radial-gradient(circle at 50% 50%, rgba(255,255,255,0.02) 0%, transparent 70%)"
17
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #3d7ec7 20%, #0f3c80 50%, #3d7ec7 80%, transparent)"
18
+ progress_bar_color: "#3d7ec7"
19
+ note_border: "#3d7ec7"
20
+ note_bg: "#edf1f7"
21
+ note_color: "#3d7ec7"
22
+ example_border: "#0f3c80"
23
+ example_bg: "#f5f0e8"
24
+ example_color: "#7a6952"
25
+ admonition_border: "#7a6952"
26
+ admonition_bg: "#f5f0e8"
27
+ admonition_color: "#7a6952"
28
+ footer_border_color: "#3d7ec7"
29
+ cover_separator_color: "rgba(61,126,199,0.25)"
30
+ dark_note_bg: "#0d1520"
31
+ dark_example_bg: "#14100e"
32
+ dark_admonition_bg: "#141210"
33
+ extra_css: |
34
+ .sourcecode pre { background: #0a1628; border-color: #1a2d4a; }
35
+ .reading-progress { box-shadow: 0 0 10px rgba(61,126,199,0.4); }
36
+ mark.search-match { background: #edf1f7; box-shadow: 0 0 0 1px rgba(15,60,128,0.25); }
37
+ mark.search-match.search-current { background: #3d7ec7; color: #fff; }
38
+ [data-theme="dark"] .sourcecode pre { background: #060a14; border-color: #1a2040; }
39
+ [data-theme="dark"] mark.search-match { background: #0d1a30; box-shadow: 0 0 0 1px rgba(61,126,199,0.4); }
40
+ [data-theme="dark"] mark.search-match.search-current { background: #1a5a9e; }
41
+
42
+ # Document identifier formatting
43
+ doc_id_strip_prefix: "BIPM"
44
+
45
+ # Publisher metadata
46
+ publishers:
47
+ - "BIPM"
48
+ publisher_name: "BIPM"
49
+ logos_light:
50
+ "BIPM": "bipm-logo.svg"
51
+
52
+ # Section ordering
53
+ preface_order:
54
+ - foreword
55
+ - introduction
56
+ - abstract
57
+ - clause
58
+ - acknowledgements
59
+ - executivesummary
60
+ toc_filter_types: []
@@ -0,0 +1,43 @@
1
+ primary: "#003d7c"
2
+ accent: "#0078d4"
3
+ accent_deep: "#005fa3"
4
+ gradient: "linear-gradient(135deg, #002244 0%, #003d7c 50%, #0078d4 100%)"
5
+ primary_light: "#edf3fa"
6
+ accent_light: "#e0effc"
7
+ warm: "#c9982e"
8
+ warm_light: "#fdf8ec"
9
+ font_body: '"Lora", "Georgia", serif'
10
+ font_sans: '"Karla", "Helvetica Neue", Arial, sans-serif'
11
+ font_mono: '"JetBrains Mono", "Fira Code", monospace'
12
+ font_url: "https://fonts.googleapis.com/css2?family=Lora:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Karla:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
13
+ header_background: "linear-gradient(135deg, #002244 0%, #003d7c 50%, #0078d4 100%)"
14
+ cover_background: "linear-gradient(175deg, #001a33 0%, #003d7c 40%, #0078d4 80%, #0092d6 100%)"
15
+ cover_before_bg: "background: radial-gradient(ellipse at 25% 15%, rgba(0,120,212,0.2) 0%, transparent 50%), radial-gradient(ellipse at 75% 85%, rgba(201,152,46,0.15) 0%, transparent 40%)"
16
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #c9982e, transparent)"
17
+ progress_bar_color: "#0078d4"
18
+ note_border: "#0078d4"
19
+ note_bg: "#e0effc"
20
+ note_color: "#0078d4"
21
+ example_border: "#003d7c"
22
+ example_bg: "#edf3fa"
23
+ example_color: "#003d7c"
24
+ admonition_border: "#c9982e"
25
+ admonition_color: "#c9982e"
26
+ footer_border_color: "#0078d4"
27
+ cover_separator_color: "rgba(0,120,212,0.25)"
28
+
29
+ # Publisher metadata
30
+ publishers:
31
+ - "CalConnect"
32
+ publisher_name: "CalConnect"
33
+ logos_light: {}
34
+
35
+ # Section ordering
36
+ preface_order:
37
+ - foreword
38
+ - introduction
39
+ - abstract
40
+ - clause
41
+ - acknowledgements
42
+ - executivesummary
43
+ toc_filter_types: []
@@ -0,0 +1,39 @@
1
+ primary: "#3a3f47"
2
+ accent: "#4a90c4"
3
+ accent_deep: "#3a78a8"
4
+ gradient: "linear-gradient(135deg, #2a2e34 0%, #3a3f47 50%, #4a5464 100%)"
5
+ primary_light: "#eef0f2"
6
+ accent_light: "#e4eef6"
7
+ warm: "#c4956a"
8
+ warm_light: "#faf3ec"
9
+ header_background: "linear-gradient(135deg, #2a2e34 0%, #3a3f47 40%, #4a5464 100%)"
10
+ cover_background: "linear-gradient(175deg, #1e2126 0%, #2a2e34 25%, #3a3f47 55%, #4a5464 85%, #4a90c4 100%)"
11
+ cover_before_bg: "background: radial-gradient(ellipse at 30% 20%, rgba(74,144,196,0.15) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(196,149,106,0.1) 0%, transparent 40%)"
12
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #4a90c4, #c4956a, transparent)"
13
+ progress_bar_color: "#4a90c4"
14
+ note_border: "#4a90c4"
15
+ note_bg: "#e4eef6"
16
+ note_color: "#4a90c4"
17
+ example_border: "#3a3f47"
18
+ example_bg: "#eef0f2"
19
+ example_color: "#3a3f47"
20
+ admonition_border: "#c4956a"
21
+ admonition_color: "#c4956a"
22
+ footer_border_color: "#4a90c4"
23
+ cover_separator_color: "rgba(74,144,196,0.25)"
24
+
25
+ # Publisher metadata
26
+ publishers:
27
+ - "ICC"
28
+ publisher_name: "ICC"
29
+ logos_light: {}
30
+
31
+ # Section ordering
32
+ preface_order:
33
+ - foreword
34
+ - introduction
35
+ - abstract
36
+ - clause
37
+ - acknowledgements
38
+ - executivesummary
39
+ toc_filter_types: []
@@ -0,0 +1,44 @@
1
+ primary: "#004a83"
2
+ accent: "#0061a9"
3
+ accent_deep: "#004a83"
4
+ gradient: "linear-gradient(135deg, #00305a 0%, #004a83 50%, #0061a9 100%)"
5
+ primary_light: "#ebf3f9"
6
+ accent_light: "#d9ecf7"
7
+ warm: "#d4a017"
8
+ warm_light: "#fdf6e8"
9
+ font_body: '"Crimson Pro", "Georgia", "Times New Roman", serif'
10
+ font_sans: '"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif'
11
+ font_mono: '"IBM Plex Mono", "Fira Code", monospace'
12
+ font_url: "https://fonts.googleapis.com/css2?family=Crimson+Pro:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap"
13
+ header_background: "linear-gradient(135deg, #00305a 0%, #004a83 40%, #0061a9 100%)"
14
+ cover_background: "linear-gradient(175deg, #001f3d 0%, #00305a 25%, #004a83 55%, #0061a9 85%, #3391c4 100%)"
15
+ cover_before_bg: "background: radial-gradient(ellipse at 20% 10%, rgba(0,97,169,0.2) 0%, transparent 50%), radial-gradient(ellipse at 80% 90%, rgba(212,160,23,0.1) 0%, transparent 40%)"
16
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #0061a9, #d4a017, transparent)"
17
+ progress_bar_color: "#0061a9"
18
+ note_border: "#0061a9"
19
+ note_bg: "#d9ecf7"
20
+ note_color: "#0061a9"
21
+ example_border: "#004a83"
22
+ example_bg: "#ebf3f9"
23
+ example_color: "#004a83"
24
+ admonition_border: "#d4a017"
25
+ admonition_color: "#b8860b"
26
+ footer_border_color: "#0061a9"
27
+ cover_separator_color: "rgba(0,97,169,0.25)"
28
+
29
+ # Publisher metadata
30
+ publishers:
31
+ - "IEC"
32
+ publisher_name: "IEC"
33
+ logos_light:
34
+ "IEC": "iec-logo.svg"
35
+
36
+ # Section ordering
37
+ preface_order:
38
+ - foreword
39
+ - introduction
40
+ - abstract
41
+ - clause
42
+ - acknowledgements
43
+ - executivesummary
44
+ toc_filter_types: []
@@ -0,0 +1,43 @@
1
+ primary: "#006699"
2
+ accent: "#0099cc"
3
+ accent_deep: "#007ab3"
4
+ gradient: "linear-gradient(135deg, #003d5c 0%, #006699 50%, #0099cc 100%)"
5
+ primary_light: "#edf5fa"
6
+ accent_light: "#e0f2fc"
7
+ warm: "#c9982e"
8
+ warm_light: "#fdf8ec"
9
+ font_body: '"Source Serif 4", "Georgia", serif'
10
+ font_sans: '"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif'
11
+ font_mono: '"IBM Plex Mono", "Fira Code", monospace'
12
+ font_url: "https://fonts.googleapis.com/css2?family=Source+Serif+4:ital,opsz,wght@0,8..60,300..700;1,8..60,300..700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap"
13
+ header_background: "linear-gradient(135deg, #003d5c 0%, #006699 50%, #0099cc 100%)"
14
+ cover_background: "linear-gradient(175deg, #002640 0%, #003d5c 30%, #006699 65%, #0099cc 100%)"
15
+ cover_before_bg: "background: radial-gradient(ellipse at 25% 15%, rgba(0,153,204,0.2) 0%, transparent 50%), radial-gradient(ellipse at 75% 85%, rgba(201,152,46,0.15) 0%, transparent 40%)"
16
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #c9982e, transparent)"
17
+ progress_bar_color: "#0099cc"
18
+ note_border: "#0099cc"
19
+ note_bg: "#e0f2fc"
20
+ note_color: "#0099cc"
21
+ example_border: "#006699"
22
+ example_bg: "#edf5fa"
23
+ example_color: "#006699"
24
+ admonition_border: "#c9982e"
25
+ admonition_color: "#c9982e"
26
+ footer_border_color: "#0099cc"
27
+ cover_separator_color: "rgba(0,153,204,0.25)"
28
+
29
+ # Publisher metadata
30
+ publishers:
31
+ - "IEEE"
32
+ publisher_name: "IEEE"
33
+ logos_light: {}
34
+
35
+ # Section ordering
36
+ preface_order:
37
+ - foreword
38
+ - introduction
39
+ - abstract
40
+ - clause
41
+ - acknowledgements
42
+ - executivesummary
43
+ toc_filter_types: []
@@ -0,0 +1,45 @@
1
+ primary: "#333"
2
+ accent: "#c44536"
3
+ accent_deep: "#a3362b"
4
+ gradient: "linear-gradient(135deg, #1a1a1a 0%, #333 50%, #4d4d4d 100%)"
5
+ primary_light: "#f5f5f5"
6
+ accent_light: "#fdf0ee"
7
+ warm: "#c9982e"
8
+ warm_light: "#fdf8ec"
9
+ font_body: '"Roboto Slab", "Georgia", serif'
10
+ font_sans: '"Inter", "Helvetica Neue", Arial, sans-serif'
11
+ font_mono: '"JetBrains Mono", "Fira Code", monospace'
12
+ font_url: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Roboto+Slab:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
13
+ header_background: "linear-gradient(135deg, #1a1a1a 0%, #333 50%, #4d4d4d 100%)"
14
+ cover_background: "linear-gradient(175deg, #0d0d0d 0%, #1a1a1a 30%, #333 65%, #4d4d4d 100%)"
15
+ cover_before_bg: "background: radial-gradient(ellipse at 30% 20%, rgba(196,69,54,0.15) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(77,77,77,0.2) 0%, transparent 40%)"
16
+ cover_after_bg: "height: 2px; background: linear-gradient(90deg, transparent, #c44536, transparent)"
17
+ progress_bar_color: "#c44536"
18
+ note_border: "#c44536"
19
+ note_bg: "#fdf0ee"
20
+ note_color: "#c44536"
21
+ example_border: "#333"
22
+ example_bg: "#f5f5f5"
23
+ example_color: "#333"
24
+ admonition_border: "#c9982e"
25
+ admonition_color: "#c9982e"
26
+ footer_border_color: "#c44536"
27
+ cover_separator_color: "rgba(196,69,54,0.25)"
28
+ extra_css: |
29
+ .sourcecode pre { background: #1a1a1a; border-color: #333; color: #e0e0e0; }
30
+
31
+ # Publisher metadata
32
+ publishers:
33
+ - "IETF"
34
+ publisher_name: "IETF"
35
+ logos_light: {}
36
+
37
+ # Section ordering
38
+ preface_order:
39
+ - foreword
40
+ - introduction
41
+ - abstract
42
+ - clause
43
+ - acknowledgements
44
+ - executivesummary
45
+ toc_filter_types: []
@@ -0,0 +1,46 @@
1
+ primary: "#05164D"
2
+ accent: "#00AAA9"
3
+ accent_deep: "#008887"
4
+ gradient: "linear-gradient(135deg, #03103a 0%, #05164D 50%, #00AAA9 100%)"
5
+ primary_light: "#eaf5f5"
6
+ accent_light: "#e0f7f6"
7
+ warm: "#FEDC5B"
8
+ warm_light: "#fff9e6"
9
+ sidebar_bg: "#f0f5f8"
10
+ font_body: '"Source Serif 4", "Georgia", serif'
11
+ font_sans: '"Source Sans 3", "Helvetica Neue", Arial, sans-serif'
12
+ font_mono: '"Source Code Pro", "Menlo", monospace'
13
+ font_url: "https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Source+Serif+4:ital,wght@0,400;0,500;0,600;1,400&family=Source+Code+Pro:wght@400;500&display=swap"
14
+ header_background: "linear-gradient(135deg, #03103a 0%, #05164D 40%, #00AAA9 100%)"
15
+ cover_background: "linear-gradient(175deg, #020a20 0%, #03103a 25%, #05164D 55%, #008887 85%, #00AAA9 100%)"
16
+ cover_before_bg: "background: radial-gradient(ellipse at 30% 20%, rgba(0,170,169,0.2) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(254,220,91,0.1) 0%, transparent 40%)"
17
+ cover_after_bg: "height: 4px; background: linear-gradient(90deg, #00AAA9, #05164D, #FEDC5B, #00AAA9)"
18
+ progress_bar_color: "#00AAA9"
19
+ note_border: "#00AAA9"
20
+ note_bg: "#e0f7f6"
21
+ note_color: "#00AAA9"
22
+ example_border: "#05164D"
23
+ example_bg: "#eaf5f5"
24
+ example_color: "#008887"
25
+ admonition_border: "#FEDC5B"
26
+ admonition_bg: "#fff9e6"
27
+ admonition_color: "#b8860b"
28
+ footer_border_color: "#00AAA9"
29
+ cover_separator_color: "rgba(0,170,169,0.3)"
30
+
31
+ # Publisher metadata
32
+ publishers:
33
+ - "IHO"
34
+ publisher_name: "IHO"
35
+ logos_light:
36
+ "IHO": "iho-logo.svg"
37
+
38
+ # Section ordering
39
+ preface_order:
40
+ - foreword
41
+ - introduction
42
+ - abstract
43
+ - clause
44
+ - acknowledgements
45
+ - executivesummary
46
+ toc_filter_types: []
@@ -0,0 +1,40 @@
1
+ primary: "#b3000c"
2
+ accent: "#e3000f"
3
+ accent_deep: "#b3000c"
4
+ gradient: "linear-gradient(135deg, #8a0009 0%, #b3000c 50%, #e3000f 100%)"
5
+ primary_light: "#fef0f1"
6
+ accent_light: "#fde8ea"
7
+ warm: "#1a1a1a"
8
+ warm_light: "#f5f5f5"
9
+ header_background: "linear-gradient(135deg, #8a0009 0%, #b3000c 40%, #e3000f 100%)"
10
+ cover_background: "linear-gradient(175deg, #5a0006 0%, #8a0009 25%, #b3000c 50%, #e3000f 80%, #ff4d4d 100%)"
11
+ cover_before_bg: "background: radial-gradient(ellipse at 25% 20%, rgba(255,77,77,0.15) 0%, transparent 50%), radial-gradient(ellipse at 75% 80%, rgba(26,26,26,0.1) 0%, transparent 40%)"
12
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #e3000f, #1a1a1a, transparent)"
13
+ progress_bar_color: "#e3000f"
14
+ note_border: "#e3000f"
15
+ note_bg: "#fde8ea"
16
+ note_color: "#e3000f"
17
+ example_border: "#b3000c"
18
+ example_bg: "#fef0f1"
19
+ example_color: "#b3000c"
20
+ admonition_border: "#1a1a1a"
21
+ admonition_color: "#1a1a1a"
22
+ footer_border_color: "#e3000f"
23
+ cover_separator_color: "rgba(227,0,15,0.25)"
24
+
25
+ # Publisher metadata
26
+ publishers:
27
+ - "ISO"
28
+ publisher_name: "ISO"
29
+ logos_light:
30
+ "ISO": "iso-logo.svg"
31
+
32
+ # Section ordering
33
+ preface_order:
34
+ - foreword
35
+ - introduction
36
+ - abstract
37
+ - clause
38
+ - acknowledgements
39
+ - executivesummary
40
+ toc_filter_types: []
@@ -0,0 +1,45 @@
1
+ primary: "#0a7bac"
2
+ accent: "#0e99d5"
3
+ accent_deep: "#0a7bac"
4
+ gradient: "linear-gradient(135deg, #065a83 0%, #0a7bac 50%, #0e99d5 100%)"
5
+ primary_light: "#e8f4fa"
6
+ accent_light: "#daedf8"
7
+ warm: "#b8860b"
8
+ warm_light: "#fdf5e6"
9
+ sidebar_bg: "#f2f6fa"
10
+ font_body: '"Noto Serif", "Georgia", serif'
11
+ font_sans: '"Noto Sans", "Helvetica Neue", Arial, sans-serif'
12
+ font_mono: '"Noto Sans Mono", "Menlo", monospace'
13
+ font_url: "https://fonts.googleapis.com/css2?family=Noto+Sans:wght@400;500;600;700&family=Noto+Serif:ital,wght@0,400;0,500;0,600;1,400&family=Noto+Sans+Mono:wght@400;500&display=swap"
14
+ header_background: "linear-gradient(135deg, #065a83 0%, #0a7bac 40%, #0e99d5 100%)"
15
+ cover_background: "linear-gradient(175deg, #043d5c 0%, #065a83 25%, #0a7bac 55%, #0e99d5 85%, #47b5e3 100%)"
16
+ cover_before_bg: "background: radial-gradient(ellipse at 30% 15%, rgba(14,153,213,0.2) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(184,134,11,0.1) 0%, transparent 40%)"
17
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #0e99d5, #b8860b, transparent)"
18
+ progress_bar_color: "#0e99d5"
19
+ note_border: "#0e99d5"
20
+ note_bg: "#daedf8"
21
+ note_color: "#0e99d5"
22
+ example_border: "#0a7bac"
23
+ example_bg: "#e8f4fa"
24
+ example_color: "#0a7bac"
25
+ admonition_border: "#b8860b"
26
+ admonition_color: "#b8860b"
27
+ footer_border_color: "#0e99d5"
28
+ cover_separator_color: "rgba(14,153,213,0.25)"
29
+
30
+ # Publisher metadata
31
+ publishers:
32
+ - "ITU"
33
+ publisher_name: "ITU"
34
+ logos_light:
35
+ "ITU": "itu-logo.svg"
36
+
37
+ # Section ordering
38
+ preface_order:
39
+ - foreword
40
+ - introduction
41
+ - abstract
42
+ - clause
43
+ - acknowledgements
44
+ - executivesummary
45
+ toc_filter_types: []
@@ -0,0 +1,51 @@
1
+ primary: "#0077b3"
2
+ accent: "#00b1ff"
3
+ accent_deep: "#006699"
4
+ gradient: "linear-gradient(135deg, #003d5c 0%, #0077b3 50%, #00b1ff 100%)"
5
+ primary_light: "#e8f4fa"
6
+ accent_light: "#e0f4ff"
7
+ warm: "#e8812e"
8
+ warm_light: "#fff5eb"
9
+ sidebar_bg: "#f2f8fc"
10
+ font_body: '"Space Grotesk", "Helvetica Neue", Arial, sans-serif'
11
+ font_sans: '"Space Grotesk", "Helvetica Neue", Arial, sans-serif'
12
+ font_mono: '"JetBrains Mono", "Fira Code", monospace'
13
+ font_url: "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
14
+ header_background: "linear-gradient(135deg, #003d5c 0%, #0077b3 40%, #00b1ff 100%)"
15
+ cover_background: "linear-gradient(175deg, #001f30 0%, #003d5c 25%, #0077b3 55%, #00b1ff 85%, #66d9ff 100%)"
16
+ cover_before_bg: "background: radial-gradient(ellipse at 25% 15%, rgba(0,177,255,0.2) 0%, transparent 45%), radial-gradient(ellipse at 75% 85%, rgba(0,119,179,0.25) 0%, transparent 40%)"
17
+ cover_after_bg: "height: 4px; background: linear-gradient(90deg, transparent, #00b1ff 30%, #0077b3 50%, #00b1ff 70%, transparent)"
18
+ progress_bar_color: "#00b1ff"
19
+ note_border: "#00b1ff"
20
+ note_bg: "#e0f4ff"
21
+ note_color: "#0077b3"
22
+ example_border: "#0077b3"
23
+ example_bg: "#e8f4fa"
24
+ example_color: "#004d73"
25
+ admonition_border: "#e8812e"
26
+ admonition_bg: "#fff5eb"
27
+ admonition_color: "#c06a1a"
28
+ footer_border_color: "#00b1ff"
29
+ cover_separator_color: "rgba(0,177,255,0.25)"
30
+ dark_primary_light: "#0a2538"
31
+ dark_accent_light: "#0d2030"
32
+ extra_css: |
33
+ .sourcecode pre { background: #0a1a28; border-color: #1a3050; }
34
+ .reading-progress { box-shadow: 0 0 10px rgba(0,177,255,0.3); }
35
+ mark.search-match { background: #e0f4ff; box-shadow: 0 0 0 1px rgba(0,177,255,0.3); }
36
+ mark.search-match.search-current { background: #00b1ff; color: #fff; }
37
+ [data-theme="dark"] .sourcecode pre { background: #060e18; border-color: #0d2030; }
38
+
39
+ # Publisher metadata
40
+ publishers:
41
+ - "OGC"
42
+ publisher_name: "OGC"
43
+ logos_light:
44
+ "OGC": "ogc-logo.svg"
45
+
46
+ # Section ordering
47
+ preface_order:
48
+ - clause
49
+ preface_wrap: true
50
+ toc_filter_types:
51
+ - toc
@@ -0,0 +1,56 @@
1
+ primary: "#004996"
2
+ accent: "#194780"
3
+ accent_deep: "#003a78"
4
+ gradient: "linear-gradient(135deg, #002d5a 0%, #004996 50%, #1a6bcc 100%)"
5
+ primary_light: "#edf3fa"
6
+ accent_light: "#e0ecf8"
7
+ warm: "#d4a017"
8
+ warm_light: "#fdf6e8"
9
+ font_body: "'Futura PT Book', 'Montserrat', 'Helvetica Neue', Arial, sans-serif"
10
+ font_sans: "'Futura PT Demi', 'Montserrat', 'Helvetica Neue', Arial, sans-serif"
11
+ font_mono: '"JetBrains Mono", "Fira Code", monospace'
12
+ font_url: "https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
13
+ header_background: "linear-gradient(135deg, #002d5a 0%, #004996 50%, #1a6bcc 100%)"
14
+ cover_background: "linear-gradient(175deg, #001a3a 0%, #002d5a 25%, #004996 55%, #1a6bcc 85%, #d4a017 100%)"
15
+ cover_before_bg: "background: radial-gradient(ellipse at 25% 20%, rgba(26,107,204,0.15) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(0,73,150,0.2) 0%, transparent 40%)"
16
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #d4a017, transparent)"
17
+ progress_bar_color: "#004996"
18
+ note_border: "#1a6bcc"
19
+ note_bg: "#e0ecf8"
20
+ note_color: "#1a6bcc"
21
+ example_border: "#004996"
22
+ example_bg: "#edf3fa"
23
+ example_color: "#004996"
24
+ admonition_border: "#d4a017"
25
+ admonition_color: "#d4a017"
26
+ footer_border_color: "#004996"
27
+ cover_separator_color: "rgba(0,73,150,0.25)"
28
+
29
+ # Publisher metadata
30
+ publishers:
31
+ - "OIML"
32
+ publisher_name: "OIML"
33
+ logos_light:
34
+ OIML: "oiml-logo-icon-light.svg"
35
+ logos_dark:
36
+ OIML: "oiml-logo-icon-dark.svg"
37
+
38
+ # Doctype labels (OIML uses doc ID prefix to determine type)
39
+ doctype_labels:
40
+ "R": "International Recommendation"
41
+ "G": "International Guide"
42
+ "D": "International Document"
43
+ "B": "International Basic Publication"
44
+ "E": "Expert Report"
45
+ "V": "Vocabulary"
46
+ "S": "Seminar Report"
47
+
48
+ # Section ordering
49
+ preface_order:
50
+ - foreword
51
+ - introduction
52
+ - abstract
53
+ - clause
54
+ - acknowledgements
55
+ - executivesummary
56
+ toc_filter_types: []
@@ -0,0 +1,44 @@
1
+ primary: "#3a6e85"
2
+ accent: "#cf9c1d"
3
+ accent_deep: "#b08518"
4
+ gradient: "linear-gradient(135deg, #2a5268 0%, #3a6e85 50%, #4992b2 100%)"
5
+ primary_light: "#eef5f8"
6
+ accent_light: "#fdf6e6"
7
+ warm: "#d03544"
8
+ warm_light: "#fdeef0"
9
+ font_body: "'Source Sans 3', 'Source Sans Pro', 'Helvetica Neue', Helvetica, sans-serif"
10
+ font_sans: "'Source Sans 3', 'Source Sans Pro', 'Helvetica Neue', Helvetica, sans-serif"
11
+ font_mono: "'JetBrains Mono', 'Fira Code', monospace"
12
+ font_url: "https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,300;0,400;0,600;0,700;1,400&family=JetBrains+Mono:wght@400;500&display=swap"
13
+ header_background: "linear-gradient(135deg, #2a5268 0%, #3a6e85 40%, #4992b2 100%)"
14
+ cover_background: "linear-gradient(175deg, #1a3848 0%, #2a5268 25%, #3a6e85 55%, #4992b2 85%, #cf9c1d 100%)"
15
+ cover_before_bg: "background: radial-gradient(ellipse at 25% 20%, rgba(207,156,29,0.15) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(73,146,178,0.2) 0%, transparent 40%)"
16
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #cf9c1d, #d03544, transparent)"
17
+ progress_bar_color: "#cf9c1d"
18
+ note_border: "#4992b2"
19
+ note_bg: "#eef5f8"
20
+ note_color: "#4992b2"
21
+ example_border: "#3a6e85"
22
+ example_bg: "#eef5f8"
23
+ example_color: "#3a6e85"
24
+ admonition_border: "#d03544"
25
+ admonition_color: "#d03544"
26
+ footer_border_color: "#cf9c1d"
27
+ cover_separator_color: "rgba(207,156,29,0.25)"
28
+
29
+ # Publisher metadata
30
+ publishers:
31
+ - "PDF Association"
32
+ publisher_name: "PDF Association"
33
+ logos_light:
34
+ "PDF Association": "pdfa-logo.svg"
35
+
36
+ # Section ordering
37
+ preface_order:
38
+ - foreword
39
+ - introduction
40
+ - abstract
41
+ - clause
42
+ - acknowledgements
43
+ - executivesummary
44
+ toc_filter_types: []
@@ -0,0 +1,43 @@
1
+ primary: "#2d1b69"
2
+ accent: "#7c3aed"
3
+ accent_deep: "#5b21b6"
4
+ gradient: "linear-gradient(135deg, #1a0e3e 0%, #2d1b69 50%, #5b21b6 100%)"
5
+ primary_light: "#f3eeff"
6
+ accent_light: "#ede5ff"
7
+ warm: "#e8912e"
8
+ warm_light: "#fef4e8"
9
+ font_body: '"Noto Serif", "Georgia", serif'
10
+ font_sans: '"Noto Sans", "Helvetica Neue", Arial, sans-serif'
11
+ font_mono: '"JetBrains Mono", "Fira Code", monospace'
12
+ font_url: "https://fonts.googleapis.com/css2?family=Noto+Serif:ital,wght@0,400;0,500;0,600;0,700;1,400&family=Noto+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap"
13
+ header_background: "linear-gradient(135deg, #1a0e3e 0%, #2d1b69 50%, #5b21b6 100%)"
14
+ cover_background: "linear-gradient(175deg, #0f0826 0%, #1a0e3e 25%, #2d1b69 55%, #5b21b6 80%, #7c3aed 100%)"
15
+ cover_before_bg: "background: radial-gradient(ellipse at 30% 20%, rgba(124,58,237,0.2) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(232,145,46,0.15) 0%, transparent 40%)"
16
+ cover_after_bg: "height: 3px; background: linear-gradient(90deg, transparent, #7c3aed, transparent)"
17
+ progress_bar_color: "#7c3aed"
18
+ note_border: "#7c3aed"
19
+ note_bg: "#ede5ff"
20
+ note_color: "#7c3aed"
21
+ example_border: "#2d1b69"
22
+ example_bg: "#f3eeff"
23
+ example_color: "#2d1b69"
24
+ admonition_border: "#e8912e"
25
+ admonition_color: "#e8912e"
26
+ footer_border_color: "#7c3aed"
27
+ cover_separator_color: "rgba(124,58,237,0.25)"
28
+
29
+ # Publisher metadata
30
+ publishers:
31
+ - "Ribose"
32
+ publisher_name: "Ribose"
33
+ logos_light: {}
34
+
35
+ # Section ordering
36
+ preface_order:
37
+ - foreword
38
+ - introduction
39
+ - abstract
40
+ - clause
41
+ - acknowledgements
42
+ - executivesummary
43
+ toc_filter_types: []
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "metanorma/document"
5
+
6
+ begin
7
+ Metanorma::Document::CLI.run(ARGV)
8
+ rescue Metanorma::Document::CLI::Error => e
9
+ warn "Error: #{e.message}"
10
+ exit 1
11
+ end