metanorma-document 0.2.5 → 0.2.7

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 (205) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +321 -45
  3. data/Gemfile +2 -0
  4. data/lib/metanorma/basic_document/ancillary_blocks/figure_block.rb +3 -1
  5. data/lib/metanorma/basic_document/blocks/basic_block.rb +5 -1
  6. data/lib/metanorma/basic_document/blocks/note_block.rb +5 -0
  7. data/lib/metanorma/basic_document/blocks.rb +3 -24
  8. data/lib/metanorma/basic_document/lists/list.rb +2 -1
  9. data/lib/metanorma/basic_document/lists/list_item.rb +17 -0
  10. data/lib/metanorma/basic_document/lists.rb +1 -0
  11. data/lib/metanorma/basic_document/paragraphs/paragraph_with_footnote.rb +3 -1
  12. data/lib/metanorma/basic_document/reference_elements/callout.rb +1 -1
  13. data/lib/metanorma/basic_document/reference_elements/footnote.rb +1 -1
  14. data/lib/metanorma/basic_document/text_elements/mathml.rb +1 -1
  15. data/lib/metanorma/bipm_document/root.rb +10 -50
  16. data/lib/metanorma/bipm_document.rb +0 -2
  17. data/lib/metanorma/bsi_document/metadata/bsi_bib_data_extension_type.rb +10 -0
  18. data/lib/metanorma/bsi_document/metadata/bsi_bibliographic_item.rb +15 -0
  19. data/lib/metanorma/bsi_document/metadata.rb +12 -0
  20. data/lib/metanorma/bsi_document/root.rb +29 -0
  21. data/lib/metanorma/bsi_document/sections/bsi_annex_section.rb +25 -0
  22. data/lib/metanorma/bsi_document/sections/bsi_clause_section.rb +25 -0
  23. data/lib/metanorma/bsi_document/sections/bsi_sections.rb +27 -0
  24. data/lib/metanorma/bsi_document/sections.rb +11 -0
  25. data/lib/metanorma/bsi_document.rb +11 -0
  26. data/lib/metanorma/cc_document/root.rb +10 -50
  27. data/lib/metanorma/cc_document.rb +0 -2
  28. data/lib/metanorma/collection.rb +0 -2
  29. data/lib/metanorma/document/components/ancillary_blocks/example_block.rb +3 -3
  30. data/lib/metanorma/document/components/ancillary_blocks/figure_block.rb +2 -0
  31. data/lib/metanorma/document/components/ancillary_blocks/sourcecode_block.rb +2 -0
  32. data/lib/metanorma/document/components/blocks/passthrough.rb +21 -0
  33. data/lib/metanorma/document/components/blocks/requirement_model.rb +159 -0
  34. data/lib/metanorma/document/components/blocks.rb +10 -0
  35. data/lib/metanorma/document/components/contrib_metadata/contribution_element_metadata.rb +3 -1
  36. data/lib/metanorma/document/components/id_elements/image.rb +2 -0
  37. data/lib/metanorma/document/components/inline/xref_element.rb +8 -0
  38. data/lib/metanorma/document/components/lists/definition_list.rb +6 -0
  39. data/lib/metanorma/document/components/lists/list_item.rb +1 -1
  40. data/lib/metanorma/document/components/lists/ordered_list.rb +6 -0
  41. data/lib/metanorma/document/components/lists/unordered_list.rb +8 -0
  42. data/lib/metanorma/document/components/multi_paragraph/admonition_block.rb +8 -0
  43. data/lib/metanorma/document/components/multi_paragraph/review_block.rb +3 -0
  44. data/lib/metanorma/document/components/paragraphs/paragraph_block.rb +6 -2
  45. data/lib/metanorma/document/components/reference_elements/source_element.rb +57 -0
  46. data/lib/metanorma/document/components/reference_elements.rb +6 -0
  47. data/lib/metanorma/document/components/sections/references_section.rb +1 -1
  48. data/lib/metanorma/document/components/tables/table_block.rb +10 -0
  49. data/lib/metanorma/document/components/tables/table_cell.rb +2 -1
  50. data/lib/metanorma/document/data_types.rb +0 -4
  51. data/lib/metanorma/document/elements/add.rb +18 -0
  52. data/lib/metanorma/document/elements/del.rb +18 -0
  53. data/lib/metanorma/document/elements.rb +10 -0
  54. data/lib/metanorma/document/relaton/address.rb +16 -0
  55. data/lib/metanorma/document/root.rb +1 -3
  56. data/lib/metanorma/document/version.rb +1 -1
  57. data/lib/metanorma/document.rb +11 -2
  58. data/lib/metanorma/gb_document/metadata/gb_bib_data_extension_type.rb +10 -0
  59. data/lib/metanorma/gb_document/metadata/gb_bibliographic_item.rb +15 -0
  60. data/lib/metanorma/gb_document/metadata.rb +12 -0
  61. data/lib/metanorma/gb_document/root.rb +29 -0
  62. data/lib/metanorma/gb_document.rb +10 -0
  63. data/lib/metanorma/generic_document/root.rb +31 -0
  64. data/lib/metanorma/generic_document.rb +7 -0
  65. data/lib/metanorma/html/base_renderer.rb +245 -113
  66. data/lib/metanorma/html/bipm_renderer.rb +16 -8
  67. data/lib/metanorma/html/cc_renderer.rb +0 -1
  68. data/lib/metanorma/html/component/base.rb +5 -1
  69. data/lib/metanorma/html/component/footnote_collector.rb +3 -3
  70. data/lib/metanorma/html/component/index_section.rb +27 -9
  71. data/lib/metanorma/html/component/index_term_collector.rb +8 -3
  72. data/lib/metanorma/html/component.rb +2 -1
  73. data/lib/metanorma/html/drops/admonition_drop.rb +2 -1
  74. data/lib/metanorma/html/drops/example_drop.rb +2 -11
  75. data/lib/metanorma/html/drops/figure_drop.rb +14 -5
  76. data/lib/metanorma/html/drops/formula_drop.rb +7 -2
  77. data/lib/metanorma/html/drops/note_drop.rb +2 -3
  78. data/lib/metanorma/html/drops/sourcecode_drop.rb +6 -2
  79. data/lib/metanorma/html/drops.rb +2 -1
  80. data/lib/metanorma/html/generator.rb +33 -16
  81. data/lib/metanorma/html/iec_renderer.rb +0 -1
  82. data/lib/metanorma/html/ieee_renderer.rb +0 -1
  83. data/lib/metanorma/html/ietf_renderer.rb +0 -1
  84. data/lib/metanorma/html/iho_renderer.rb +1 -2
  85. data/lib/metanorma/html/iso_renderer.rb +68 -23
  86. data/lib/metanorma/html/itu_renderer.rb +0 -1
  87. data/lib/metanorma/html/ogc_renderer.rb +0 -1
  88. data/lib/metanorma/html/oiml_renderer.rb +0 -1
  89. data/lib/metanorma/html/pdfa_renderer.rb +0 -1
  90. data/lib/metanorma/html/ribose_renderer.rb +0 -1
  91. data/lib/metanorma/html/standard_renderer.rb +61 -28
  92. data/lib/metanorma/html/theme.rb +2 -2
  93. data/lib/metanorma/html.rb +48 -1
  94. data/lib/metanorma/iec_document/root.rb +8 -47
  95. data/lib/metanorma/iec_document.rb +2 -3
  96. data/lib/metanorma/ieee_document/root.rb +14 -50
  97. data/lib/metanorma/ieee_document/sections/ieee_sections.rb +31 -0
  98. data/lib/metanorma/ieee_document/sections.rb +9 -0
  99. data/lib/metanorma/ieee_document.rb +3 -3
  100. data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +0 -2
  101. data/lib/metanorma/ietf_document/metadata/ietf_bibliographic_item.rb +0 -2
  102. data/lib/metanorma/ietf_document/root.rb +14 -50
  103. data/lib/metanorma/ietf_document/sections/ietf_annex_section.rb +26 -0
  104. data/lib/metanorma/ietf_document/sections/ietf_clause_section.rb +26 -0
  105. data/lib/metanorma/ietf_document/sections/ietf_content_section.rb +25 -0
  106. data/lib/metanorma/ietf_document/sections/ietf_sections.rb +35 -0
  107. data/lib/metanorma/ietf_document/sections.rb +4 -23
  108. data/lib/metanorma/ietf_document.rb +4 -3
  109. data/lib/metanorma/iho_document/metadata/iho_bib_data_extension_type.rb +0 -2
  110. data/lib/metanorma/iho_document/root.rb +10 -50
  111. data/lib/metanorma/iho_document.rb +0 -3
  112. data/lib/metanorma/iso_document/annotation_container.rb +1 -10
  113. data/lib/metanorma/iso_document/boilerplate.rb +1 -11
  114. data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +2 -2
  115. data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +4 -3
  116. data/lib/metanorma/iso_document/metadata/metanorma_extension.rb +1 -12
  117. data/lib/metanorma/iso_document/root.rb +7 -73
  118. data/lib/metanorma/iso_document/sections/colophon.rb +1 -16
  119. data/lib/metanorma/iso_document/sections/iso_annex_section.rb +11 -133
  120. data/lib/metanorma/iso_document/sections/iso_clause_section.rb +9 -166
  121. data/lib/metanorma/iso_document/sections/iso_foreword_section.rb +15 -89
  122. data/lib/metanorma/iso_document/sections/iso_preface.rb +15 -21
  123. data/lib/metanorma/iso_document/sections/iso_sections.rb +19 -29
  124. data/lib/metanorma/iso_document/sections/iso_terms_section.rb +6 -9
  125. data/lib/metanorma/iso_document/terms/term_expression.rb +2 -47
  126. data/lib/metanorma/iso_document/terms/term_origin.rb +2 -24
  127. data/lib/metanorma/iso_document/terms/term_source.rb +4 -32
  128. data/lib/metanorma/iso_document.rb +2 -2
  129. data/lib/metanorma/itu_document/root.rb +10 -50
  130. data/lib/metanorma/itu_document.rb +0 -2
  131. data/lib/metanorma/jis_document/metadata/jis_bib_data_extension_type.rb +10 -0
  132. data/lib/metanorma/jis_document/metadata/jis_bibliographic_item.rb +15 -0
  133. data/lib/metanorma/jis_document/metadata.rb +12 -0
  134. data/lib/metanorma/jis_document/root.rb +29 -0
  135. data/lib/metanorma/jis_document/sections/jis_annex_section.rb +20 -0
  136. data/lib/metanorma/jis_document/sections.rb +9 -0
  137. data/lib/metanorma/jis_document.rb +11 -0
  138. data/lib/metanorma/m3d_document/metadata/m3d_bib_data_extension_type.rb +10 -0
  139. data/lib/metanorma/m3d_document/metadata/m3d_bibliographic_item.rb +15 -0
  140. data/lib/metanorma/m3d_document/metadata.rb +12 -0
  141. data/lib/metanorma/m3d_document/root.rb +29 -0
  142. data/lib/metanorma/m3d_document.rb +10 -0
  143. data/lib/metanorma/nist_document/metadata/nist_bib_data_extension_type.rb +10 -0
  144. data/lib/metanorma/nist_document/metadata/nist_bibliographic_item.rb +15 -0
  145. data/lib/metanorma/nist_document/metadata.rb +12 -0
  146. data/lib/metanorma/nist_document/root.rb +29 -0
  147. data/lib/metanorma/nist_document/sections/errata.rb +16 -0
  148. data/lib/metanorma/nist_document/sections/errata_clause.rb +20 -0
  149. data/lib/metanorma/nist_document/sections/errata_row.rb +22 -0
  150. data/lib/metanorma/nist_document/sections/nist_preface.rb +30 -0
  151. data/lib/metanorma/nist_document/sections.rb +12 -0
  152. data/lib/metanorma/nist_document.rb +11 -0
  153. data/lib/metanorma/ogc_document/root.rb +10 -50
  154. data/lib/metanorma/ogc_document.rb +0 -2
  155. data/lib/metanorma/oiml_document/root.rb +8 -47
  156. data/lib/metanorma/oiml_document.rb +2 -3
  157. data/lib/metanorma/plateau_document/metadata/plateau_bibliographic_item.rb +13 -0
  158. data/lib/metanorma/plateau_document/metadata.rb +10 -0
  159. data/lib/metanorma/plateau_document/root.rb +29 -0
  160. data/lib/metanorma/plateau_document.rb +10 -0
  161. data/lib/metanorma/registers/setup.rb +162 -0
  162. data/lib/metanorma/registers.rb +7 -0
  163. data/lib/metanorma/ribose_document/root.rb +10 -52
  164. data/lib/metanorma/ribose_document.rb +0 -2
  165. data/lib/metanorma/standard_document/annotation_container.rb +14 -0
  166. data/lib/metanorma/standard_document/block_attributes.rb +226 -0
  167. data/lib/metanorma/standard_document/blocks/passthrough.rb +1 -18
  168. data/lib/metanorma/standard_document/blocks/requirement_model.rb +18 -163
  169. data/lib/metanorma/standard_document/boilerplate.rb +14 -0
  170. data/lib/metanorma/standard_document/elements/add.rb +1 -17
  171. data/lib/metanorma/standard_document/elements/del.rb +1 -17
  172. data/lib/metanorma/standard_document/metadata/metanorma_extension.rb +16 -0
  173. data/lib/metanorma/standard_document/metadata.rb +2 -0
  174. data/lib/metanorma/standard_document/refs/reference_to_term.rb +2 -1
  175. data/lib/metanorma/standard_document/root_attributes.rb +78 -0
  176. data/lib/metanorma/standard_document/sections/abstract.rb +1 -3
  177. data/lib/metanorma/standard_document/sections/acknowledgements.rb +1 -3
  178. data/lib/metanorma/standard_document/sections/annex_section.rb +81 -16
  179. data/lib/metanorma/standard_document/sections/bibliography_section.rb +1 -2
  180. data/lib/metanorma/standard_document/sections/clause_section.rb +102 -10
  181. data/lib/metanorma/standard_document/sections/colophon.rb +16 -0
  182. data/lib/metanorma/standard_document/sections/definition_section.rb +45 -42
  183. data/lib/metanorma/standard_document/sections/floating_section_title.rb +23 -0
  184. data/lib/metanorma/standard_document/sections/foreword.rb +1 -3
  185. data/lib/metanorma/standard_document/sections/introduction.rb +1 -4
  186. data/lib/metanorma/standard_document/sections/misc_container.rb +5 -2
  187. data/lib/metanorma/standard_document/sections/preface.rb +36 -0
  188. data/lib/metanorma/standard_document/sections/sections.rb +40 -0
  189. data/lib/metanorma/standard_document/sections/standard_content_section.rb +42 -9
  190. data/lib/metanorma/standard_document/sections/terms_section.rb +52 -10
  191. data/lib/metanorma/standard_document/sections.rb +6 -2
  192. data/lib/metanorma/standard_document/terms/designation.rb +1 -1
  193. data/lib/metanorma/standard_document/terms/term_expression.rb +51 -0
  194. data/lib/metanorma/standard_document/terms.rb +1 -0
  195. data/lib/metanorma/standard_document.rb +7 -2
  196. data/lib/metanorma/un_document/metadata/un_bib_data_extension_type.rb +10 -0
  197. data/lib/metanorma/un_document/metadata/un_bibliographic_item.rb +15 -0
  198. data/lib/metanorma/un_document/metadata.rb +12 -0
  199. data/lib/metanorma/un_document/root.rb +29 -0
  200. data/lib/metanorma/un_document/sections/un_preface.rb +23 -0
  201. data/lib/metanorma/un_document/sections/un_sections.rb +24 -0
  202. data/lib/metanorma/un_document/sections.rb +10 -0
  203. data/lib/metanorma/un_document.rb +11 -0
  204. metadata +77 -3
  205. data/lib/metanorma/html/whitespace_patch.rb +0 -47
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metanorma
4
+ module IetfDocument
5
+ module Sections
6
+ # IETF sections container.
7
+ # Corresponds to ietf.rnc:
8
+ # sections = element sections {
9
+ # ( clause | terms | term-clause | definitions | floating-title )+
10
+ # }
11
+ #
12
+ # Extends StandardDocument sections with loose bibitem references
13
+ # and paragraph elements directly inside sections.
14
+ class IetfSections < Metanorma::StandardDocument::Sections::Sections
15
+ attribute :bibitem,
16
+ Metanorma::BasicDocument::BibData::BibliographicItem,
17
+ collection: true
18
+ attribute :p,
19
+ Metanorma::Document::Components::Paragraphs::ParagraphBlock,
20
+ collection: true
21
+
22
+ xml do
23
+ element "sections"
24
+ ordered
25
+
26
+ Metanorma::StandardDocument::SectionXmlMapping.apply_sections_elements(self)
27
+ map_element "bibitem", to: :bibitem
28
+ map_element "p", to: :p
29
+
30
+ Metanorma::StandardDocument::SectionXmlMapping.apply_sections_attributes(self)
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,31 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/iso_document"
4
-
5
3
  module Metanorma
6
4
  module IetfDocument
7
5
  module Sections
8
- class IetfSections < Metanorma::IsoDocument::Sections::IsoSections
9
- # Loose bibliographic items appearing directly inside sections.
10
- attribute :bibitem,
11
- Metanorma::BasicDocument::BibData::BibliographicItem,
12
- collection: true
13
-
14
- xml do
15
- element "sections"
16
- ordered
17
- map_element "note", to: :note
18
- map_element "admonition", to: :admonition
19
- map_element "terms", to: :terms
20
- map_element "definitions", to: :definitions
21
- map_element "clause", to: :clause
22
- map_element "references", to: :references
23
- map_element "bibitem", to: :bibitem
24
- map_element "p", to: :p
25
- map_attribute "semx-id", to: :semx_id
26
- map_attribute "displayorder", to: :displayorder
27
- end
28
- end
6
+ autoload :IetfSections, "#{__dir__}/sections/ietf_sections"
7
+ autoload :IetfContentSection, "#{__dir__}/sections/ietf_content_section"
8
+ autoload :IetfClauseSection, "#{__dir__}/sections/ietf_clause_section"
9
+ autoload :IetfAnnexSection, "#{__dir__}/sections/ietf_annex_section"
29
10
  end
30
11
  end
31
12
  end
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/standard_document"
4
- require "metanorma/iso_document"
5
-
6
3
  module Metanorma
7
4
  module IetfDocument
5
+ autoload :Metadata, "metanorma/ietf_document/metadata"
8
6
  autoload :Root, "metanorma/ietf_document/root"
7
+ autoload :Sections, "metanorma/ietf_document/sections"
9
8
  end
10
9
  end
10
+
11
+ Metanorma::Registers::Setup.setup_ietf_register
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/iso_document"
4
-
5
3
  module Metanorma
6
4
  module IhoDocument
7
5
  module Metadata
@@ -1,64 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/standard_document"
4
- require "metanorma/iso_document"
5
-
6
3
  module Metanorma
7
4
  module IhoDocument
8
- class Root < Metanorma::StandardDocument::Root
9
- attribute :version, :string
10
- attribute :type, :string
11
- attribute :schema_version, :string
12
- attribute :flavor, :string
5
+ class Root < Lutaml::Model::Serializable
6
+ include Metanorma::StandardDocument::RootAttributes
13
7
 
14
8
  attribute :bibdata, Metadata::IhoBibliographicItem
15
-
16
- attribute :term_sources,
17
- Metanorma::Document::Components::ReferenceElements::Citation,
9
+ attribute :preface,
10
+ Metanorma::StandardDocument::Sections::Preface
11
+ attribute :sections,
12
+ Metanorma::StandardDocument::Sections::Sections
13
+ attribute :annex,
14
+ Metanorma::StandardDocument::Sections::AnnexSection,
18
15
  collection: true
19
16
 
20
- attribute :preface, Metanorma::IsoDocument::Sections::IsoPreface
21
- attribute :sections, Metanorma::IsoDocument::Sections::IsoSections
22
- attribute :annex, Metanorma::IsoDocument::Sections::IsoAnnexSection,
23
- collection: true
24
- attribute :bibliography,
25
- Metanorma::StandardDocument::Sections::BibliographySection
26
- attribute :boilerplate, Metanorma::IsoDocument::Boilerplate
27
- attribute :metanorma_extension,
28
- Metanorma::IsoDocument::Metadata::MetanormaExtension
29
- attribute :annotation_container, Metanorma::IsoDocument::AnnotationContainer
30
- attribute :indexsect,
31
- Metanorma::Document::Components::Sections::BasicSection
32
- attribute :autonum, :string
33
- attribute :fmt_xref_label, :string
34
- attribute :localized_strings,
35
- Metanorma::Document::Components::Inline::LocalizedStringsElement
36
- attribute :fmt_footnote_container,
37
- Metanorma::Document::Components::Inline::FmtFootnoteContainerElement
38
- attribute :colophon, Metanorma::IsoDocument::Sections::Colophon
39
-
40
17
  xml do
41
18
  element "metanorma"
42
19
  namespace Metanorma::StandardDocument::Namespace
43
- map_attribute "type", to: :type
44
- map_attribute "version", to: :version
45
- map_attribute "schema-version", to: :schema_version
46
- map_attribute "flavor", to: :flavor
47
- map_element "bibdata", to: :bibdata
48
- map_element "termdocsource", to: :term_sources
49
- map_element "metanorma-extension", to: :metanorma_extension
50
- map_element "boilerplate", to: :boilerplate
51
- map_element "preface", to: :preface
52
- map_element "sections", to: :sections
53
- map_element "annex", to: :annex
54
- map_element "bibliography", to: :bibliography
55
- map_element "annotation-container", to: :annotation_container
56
- map_element "indexsect", to: :indexsect
57
- map_element "localized-strings", to: :localized_strings
58
- map_element "fmt-footnote-container", to: :fmt_footnote_container
59
- map_element "colophon", to: :colophon
60
- map_attribute "autonum", to: :autonum
61
- map_attribute "fmt-xref-label", to: :fmt_xref_label
20
+
21
+ Metanorma::StandardDocument::RootXmlMapping.apply(self)
62
22
  end
63
23
  end
64
24
  end
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "metanorma/standard_document"
4
- require "metanorma/iso_document"
5
-
6
3
  module Metanorma
7
4
  module IhoDocument
8
5
  autoload :Metadata, "metanorma/iho_document/metadata"
@@ -2,15 +2,6 @@
2
2
 
3
3
  module Metanorma
4
4
  module IsoDocument
5
- # Container for review annotations. Uses map_all_content to preserve
6
- # mixed content including annotation elements with their p children.
7
- class AnnotationContainer < Lutaml::Model::Serializable
8
- attribute :content, :string
9
-
10
- xml do
11
- element "annotation-container"
12
- map_all_content to: :content
13
- end
14
- end
5
+ AnnotationContainer = Metanorma::StandardDocument::AnnotationContainer
15
6
  end
16
7
  end
@@ -2,16 +2,6 @@
2
2
 
3
3
  module Metanorma
4
4
  module IsoDocument
5
- # Boilerplate section containing copyright statements and license text.
6
- # Uses map_all_content to preserve all child XML including inline
7
- # elements (span, link, br) inside paragraphs.
8
- class Boilerplate < Lutaml::Model::Serializable
9
- attribute :content, :string
10
-
11
- xml do
12
- element "boilerplate"
13
- map_all_content to: :content
14
- end
15
- end
5
+ Boilerplate = Metanorma::StandardDocument::Boilerplate
16
6
  end
17
7
  end
@@ -158,10 +158,10 @@ module Metanorma
158
158
  if titles.is_a?(TitleCollection)
159
159
  titles.for_language(language)
160
160
  elsif titles.is_a?(Array)
161
- titles.find { |t|
161
+ titles.find do |t|
162
162
  lang = safe_attr(t, :language) || safe_attr(t, :lang)
163
163
  lang == language
164
- }
164
+ end
165
165
  end
166
166
  end
167
167
 
@@ -41,14 +41,15 @@ module Metanorma
41
41
  if title_part
42
42
  prefix = title_part_prefix&.value.to_s.strip
43
43
  part_val = title_part.value
44
- if !prefix.empty?
44
+ if prefix.empty?
45
+ parts << part_val
46
+ else
45
47
  sep = prefix.end_with?(":") ? " " : ": "
46
48
  parts << "#{prefix}#{sep}#{part_val}"
47
- else
48
- parts << part_val
49
49
  end
50
50
  end
51
51
  return parts.join(" — ") unless parts.empty?
52
+
52
53
  ""
53
54
  end
54
55
  end
@@ -3,18 +3,7 @@
3
3
  module Metanorma
4
4
  module IsoDocument
5
5
  module Metadata
6
- # Container for metanorma-specific extensions (semantic-metadata,
7
- # presentation-metadata, UnitsML). Uses map_all_content to preserve
8
- # all child XML as raw string since these elements have complex
9
- # namespace-qualified structures.
10
- class MetanormaExtension < Lutaml::Model::Serializable
11
- attribute :content, :string
12
-
13
- xml do
14
- element "metanorma-extension"
15
- map_all_content to: :content
16
- end
17
- end
6
+ MetanormaExtension = Metanorma::StandardDocument::Metadata::MetanormaExtension
18
7
  end
19
8
  end
20
9
  end
@@ -2,90 +2,24 @@
2
2
 
3
3
  module Metanorma
4
4
  module IsoDocument
5
- class Root < Metanorma::StandardDocument::Root
6
- # Version number of the schema used for this standards document.
7
- attribute :version, :string
5
+ class Root < Lutaml::Model::Serializable
6
+ include Metanorma::StandardDocument::RootAttributes
8
7
 
9
- # Type of the document (semantic, presentation).
10
- attribute :type, :string
11
-
12
- # Schema version.
13
- attribute :schema_version, :string
14
-
15
- # Document flavor (iso, standoc, etc).
16
- attribute :flavor, :string
8
+ def self.lutaml_default_register
9
+ :iso_document
10
+ end
17
11
 
18
- # Bibliographic description of the document itself, expressed in the Relaton
19
- # model.
20
12
  attribute :bibdata, Metanorma::IsoDocument::Metadata::IsoBibliographicItem
21
-
22
- # Citations for sources of term definitions.
23
- attribute :term_sources,
24
- Metanorma::Document::Components::ReferenceElements::Citation,
25
- collection: true
26
-
27
- # Zero or more optional _preface_ sections.
28
13
  attribute :preface, Metanorma::IsoDocument::Sections::IsoPreface
29
-
30
- # One or more _sections_.
31
14
  attribute :sections, Metanorma::IsoDocument::Sections::IsoSections
32
-
33
- # Zero or more _annexes_.
34
15
  attribute :annex, Metanorma::IsoDocument::Sections::IsoAnnexSection,
35
16
  collection: true
36
17
 
37
- # Zero to two _bibliographies_.
38
- attribute :bibliography,
39
- Metanorma::StandardDocument::Sections::BibliographySection
40
-
41
- # Boilerplate section (copyright statements, license text).
42
- attribute :boilerplate, Boilerplate
43
-
44
- # Metanorma-specific extensions (semantic-metadata, presentation-metadata, UnitsML).
45
- attribute :metanorma_extension, Metadata::MetanormaExtension
46
-
47
- # Container for review annotations.
48
- attribute :annotation_container, AnnotationContainer
49
-
50
- # Index of a standards document.
51
- attribute :indexsect,
52
- Metanorma::Document::Components::Sections::BasicSection
53
-
54
- # Presentation-specific attributes
55
- attribute :autonum, :string
56
- attribute :fmt_xref_label, :string
57
-
58
- # Localized strings container (presentation XML)
59
- attribute :localized_strings, Metanorma::Document::Components::Inline::LocalizedStringsElement
60
-
61
- # Formatted footnote container (presentation XML)
62
- attribute :fmt_footnote_container, Metanorma::Document::Components::Inline::FmtFootnoteContainerElement
63
-
64
- # Colophon section (presentation XML)
65
- attribute :colophon, Sections::Colophon
66
-
67
18
  xml do
68
19
  element "metanorma"
69
20
  namespace Metanorma::StandardDocument::Namespace
70
- map_attribute "type", to: :type
71
- map_attribute "version", to: :version
72
- map_attribute "schema-version", to: :schema_version
73
- map_attribute "flavor", to: :flavor
74
- map_element "bibdata", to: :bibdata
75
- map_element "termdocsource", to: :term_sources
76
- map_element "metanorma-extension", to: :metanorma_extension
77
- map_element "boilerplate", to: :boilerplate
78
- map_element "preface", to: :preface
79
- map_element "sections", to: :sections
80
- map_element "annex", to: :annex
81
- map_element "bibliography", to: :bibliography
82
- map_element "annotation-container", to: :annotation_container
83
- map_element "indexsect", to: :indexsect
84
- map_element "localized-strings", to: :localized_strings
85
- map_element "fmt-footnote-container", to: :fmt_footnote_container
86
- map_element "colophon", to: :colophon
87
- map_attribute "autonum", to: :autonum
88
- map_attribute "fmt-xref-label", to: :fmt_xref_label
21
+
22
+ Metanorma::StandardDocument::RootXmlMapping.apply(self)
89
23
  end
90
24
  end
91
25
  end
@@ -1,18 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Metanorma
4
- module IsoDocument
5
- module Sections
6
- # Colophon section in presentation XML.
7
- # Contains document control information.
8
- class Colophon < Lutaml::Model::Serializable
9
- attribute :clause, IsoClauseSection, collection: true
10
-
11
- xml do
12
- element "colophon"
13
- map_element "clause", to: :clause
14
- end
15
- end
16
- end
17
- end
18
- end
3
+ Metanorma::IsoDocument::Sections::Colophon = Metanorma::StandardDocument::Sections::Colophon
@@ -4,146 +4,24 @@ module Metanorma
4
4
  module IsoDocument
5
5
  module Sections
6
6
  # Annex appearing in ISO/IEC document.
7
- class IsoAnnexSection < Lutaml::Model::Serializable
8
- attribute :id, :string
9
- attribute :number, :string
10
- attribute :obligation, :string
11
- attribute :title, Metanorma::Document::Components::Inline::TitleWithAnnotationElement
7
+ # Inherits structure from StandardDocument::AnnexSection and overrides
8
+ # clause/appendix/terms to use ISO-specific types.
9
+ class IsoAnnexSection < Metanorma::StandardDocument::Sections::AnnexSection
10
+ # Override: ISO sub-clauses are IsoClauseSection
11
+ attribute :clause, IsoClauseSection, collection: true
12
12
 
13
- # Sub-clauses within annex.
14
- attribute :clause, IsoClauseSection,
15
- collection: true
13
+ # Override: ISO appendixes are IsoClauseSection
14
+ attribute :appendix, IsoClauseSection, collection: true
16
15
 
17
- # Appendixes to annex.
18
- attribute :appendix, IsoClauseSection,
19
- collection: true
20
-
21
- # Block collections
22
- attribute :paragraphs,
23
- Metanorma::Document::Components::Paragraphs::ParagraphBlock,
24
- collection: true
25
- attribute :unordered_lists,
26
- Metanorma::Document::Components::Lists::UnorderedList,
27
- collection: true
28
- attribute :ordered_lists,
29
- Metanorma::Document::Components::Lists::OrderedList,
30
- collection: true
31
- attribute :tables,
32
- Metanorma::Document::Components::Tables::TableBlock,
33
- collection: true
34
- attribute :figures,
35
- Metanorma::Document::Components::AncillaryBlocks::FigureBlock,
36
- collection: true
37
- attribute :formulas,
38
- Metanorma::Document::Components::AncillaryBlocks::FormulaBlock,
39
- collection: true
40
- attribute :examples,
41
- Metanorma::Document::Components::AncillaryBlocks::ExampleBlock,
42
- collection: true
43
- attribute :notes,
44
- Metanorma::Document::Components::Blocks::NoteBlock,
45
- collection: true
46
- attribute :admonitions,
47
- Metanorma::Document::Components::MultiParagraph::AdmonitionBlock,
48
- collection: true
49
- attribute :sourcecode_blocks,
50
- Metanorma::Document::Components::AncillaryBlocks::SourcecodeBlock,
51
- collection: true
52
- attribute :quote_blocks,
53
- Metanorma::Document::Components::MultiParagraph::QuoteBlock,
54
- collection: true
55
- attribute :definition_lists,
56
- Metanorma::Document::Components::Lists::DefinitionList,
57
- collection: true
58
-
59
- # Terms sections within annex
60
- attribute :terms,
61
- IsoTermsSection, collection: true
62
-
63
- # Definitions sections within annex
64
- attribute :definitions,
65
- Metanorma::StandardDocument::Sections::DefinitionSection,
66
- collection: true
67
-
68
- # References sections within annex
69
- attribute :references,
70
- Metanorma::StandardDocument::Sections::StandardReferencesSection,
71
- collection: true
72
-
73
- # Page breaks
74
- attribute :pagebreak,
75
- Metanorma::Document::Components::EmptyElements::PageBreakElement,
76
- collection: true
77
-
78
- # Presentation-specific attributes
79
- attribute :semx_id, :string
80
- attribute :autonum, :string
81
- attribute :displayorder, :integer
82
- attribute :inline_header, :string
83
- attribute :anchor, :string
84
- attribute :language, :string
85
- attribute :script, :string
86
- attribute :fmt_title, Metanorma::Document::Components::Inline::FmtTitleElement
87
- attribute :fmt_xref_label,
88
- Metanorma::Document::Components::Inline::FmtXrefLabelElement, collection: true
89
- attribute :variant_title,
90
- Metanorma::Document::Components::Inline::VariantTitleElement, collection: true
91
- attribute :fmt_annotation_start,
92
- Metanorma::Document::Components::Inline::FmtAnnotationStartElement,
93
- collection: true
94
- attribute :fmt_annotation_end,
95
- Metanorma::Document::Components::Inline::FmtAnnotationEndElement,
96
- collection: true
16
+ # Override: ISO terms sections use IsoTermsSection
17
+ attribute :terms, IsoTermsSection, collection: true
97
18
 
98
19
  xml do
99
20
  element "annex"
100
21
  ordered
101
- map_attribute "id", to: :id
102
- map_attribute "number", to: :number
103
- map_attribute "obligation", to: :obligation, render_empty: true
104
- map_attribute "anchor", to: :anchor
105
- map_element "title", to: :title
106
- map_element "variant-title", to: :variant_title
107
- map_element "fmt-title", to: :fmt_title
108
- map_element "fmt-xref-label", to: :fmt_xref_label
109
- map_element "clause", to: :clause
110
- map_element "appendix", to: :appendix
111
- map_element "p", to: :paragraphs
112
- map_element "ul", to: :unordered_lists
113
- map_element "ol", to: :ordered_lists
114
- map_element "table", to: :tables
115
- map_element "figure", to: :figures
116
- map_element "formula", to: :formulas
117
- map_element "example", to: :examples
118
- map_element "note", to: :notes
119
- map_element "admonition", to: :admonitions
120
- map_element "sourcecode", to: :sourcecode_blocks
121
- map_element "quote", to: :quote_blocks
122
- map_element "dl", to: :definition_lists
123
- map_element "terms", to: :terms
124
- map_element "definitions", to: :definitions
125
- map_element "references", to: :references
126
- map_element "pagebreak", to: :pagebreak
127
- map_element "fmt-annotation-start", to: :fmt_annotation_start
128
- map_element "fmt-annotation-end", to: :fmt_annotation_end
129
- map_attribute "semx-id", to: :semx_id
130
- map_attribute "autonum", to: :autonum
131
- map_attribute "displayorder", to: :displayorder
132
- map_attribute "inline-header", to: :inline_header
133
- map_attribute "language", to: :language, render_empty: true
134
- map_attribute "script", to: :script, render_empty: true
135
- end
136
22
 
137
- # Blocks in document order
138
- def blocks
139
- @blocks ||=
140
- begin
141
- result = []
142
- each_mixed_content do |node|
143
- result << node unless node.is_a?(String)
144
- end
145
- result
146
- end
23
+ Metanorma::StandardDocument::SectionXmlMapping.apply_annex_attributes(self)
24
+ Metanorma::StandardDocument::SectionXmlMapping.apply_annex_elements(self)
147
25
  end
148
26
 
149
27
  json do