metanorma-document 0.3.0 → 0.5.0
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.
- checksums.yaml +4 -4
- data/BUGS.sts/08-list-items-duplicate-bullets.md +45 -0
- data/CLAUDE.md +3 -2
- data/Rakefile +30 -5
- data/data/stylesheets/components/header.css +3 -5
- data/data/stylesheets/components/lists.css +14 -0
- data/frontend/dist/app.css +1 -0
- data/frontend/dist/app.iife.js +24 -0
- data/frontend/package-lock.json +7 -505
- data/frontend/tailwind.config.js +5 -0
- data/lib/metanorma/{oiml_document → csa_document}/root.rb +2 -2
- data/lib/metanorma/csa_document.rb +9 -0
- data/lib/metanorma/document/cli.rb +52 -0
- data/lib/metanorma/document/components/ancillary_blocks/sourcecode_body.rb +14 -0
- data/lib/metanorma/document/components/inline/comma_element.rb +3 -0
- data/lib/metanorma/document/components/inline/enum_comma_element.rb +3 -0
- data/lib/metanorma/document/components/inline/eref_element.rb +4 -1
- data/lib/metanorma/document/components/inline/fmt_termsource_element.rb +4 -2
- data/lib/metanorma/document/components/inline/math_element.rb +13 -7
- data/lib/metanorma/document/components/inline/vocabulary.rb +4 -0
- data/lib/metanorma/document/components/multi_paragraph/admonition_block.rb +6 -1
- data/lib/metanorma/document/components/paragraphs/paragraph_block.rb +3 -0
- data/lib/metanorma/document/components/reference_elements/callout.rb +3 -2
- data/lib/metanorma/document/components/tables/table_cell.rb +3 -0
- data/lib/metanorma/document/elements/input.rb +44 -0
- data/lib/metanorma/document/elements.rb +1 -0
- data/lib/metanorma/document/relaton/address.rb +5 -0
- data/lib/metanorma/document/relaton/affiliation.rb +3 -0
- data/lib/metanorma/document/relaton/bib_item_size.rb +8 -9
- data/lib/metanorma/document/relaton/bib_item_type.rb +3 -0
- data/lib/metanorma/document/relaton/bibliographic_date.rb +5 -0
- data/lib/metanorma/document/relaton/contact_method.rb +5 -0
- data/lib/metanorma/document/relaton/contribution_info.rb +6 -2
- data/lib/metanorma/document/relaton/contributor.rb +4 -0
- data/lib/metanorma/document/relaton/contributor_role.rb +3 -0
- data/lib/metanorma/document/relaton/copyright_association.rb +3 -0
- data/lib/metanorma/document/relaton/copyright_owner.rb +3 -0
- data/lib/metanorma/document/relaton/date_time.rb +3 -0
- data/lib/metanorma/document/relaton/document_identifier.rb +4 -0
- data/lib/metanorma/document/relaton/document_relation.rb +8 -0
- data/lib/metanorma/document/relaton/document_status.rb +4 -0
- data/lib/metanorma/document/relaton/formatted_address.rb +4 -0
- data/lib/metanorma/document/relaton/full_name.rb +14 -3
- data/lib/metanorma/document/relaton/keyword_type.rb +3 -0
- data/lib/metanorma/document/relaton/locality_stack.rb +6 -9
- data/lib/metanorma/document/relaton/localized_name.rb +8 -5
- data/lib/metanorma/document/relaton/logo_element.rb +5 -0
- data/lib/metanorma/document/relaton/medium_type.rb +5 -16
- data/lib/metanorma/document/relaton/org_identifier.rb +2 -0
- data/lib/metanorma/document/relaton/org_subdivision.rb +2 -0
- data/lib/metanorma/document/relaton/org_subdivision_identifier.rb +2 -0
- data/lib/metanorma/document/relaton/organization.rb +3 -0
- data/lib/metanorma/document/relaton/person.rb +7 -1
- data/lib/metanorma/document/relaton/person_identifier.rb +3 -0
- data/lib/metanorma/document/relaton/place_type.rb +5 -0
- data/lib/metanorma/document/relaton/region_element.rb +3 -9
- data/lib/metanorma/document/relaton/relaton_collection.rb +2 -0
- data/lib/metanorma/document/relaton/series_type.rb +7 -0
- data/lib/metanorma/document/relaton/typed_note.rb +4 -0
- data/lib/metanorma/document/relaton/typed_title_string.rb +4 -0
- data/lib/metanorma/document/relaton/typed_uri.rb +3 -8
- data/lib/metanorma/document/relaton/validity_type.rb +8 -10
- data/lib/metanorma/document/relaton/variant_full_name.rb +3 -0
- data/lib/metanorma/document/relaton/variant_org_name.rb +3 -0
- data/lib/metanorma/document/relaton/version_info.rb +5 -0
- data/lib/metanorma/document/relaton/vocab_id_type.rb +6 -12
- data/lib/metanorma/document/relaton.rb +0 -14
- data/lib/metanorma/document/version.rb +1 -1
- data/lib/metanorma/document.rb +2 -1
- data/lib/metanorma/html/asset_pipeline.rb +1 -0
- data/lib/metanorma/html/base_renderer.rb +106 -236
- data/lib/metanorma/html/concerns/metadata_extraction.rb +61 -0
- data/lib/metanorma/html/concerns/presentation_validation.rb +61 -0
- data/lib/metanorma/html/concerns/svg_processing.rb +32 -0
- data/lib/metanorma/html/concerns/text_extraction.rb +93 -0
- data/lib/metanorma/html/concerns/toc_registry.rb +47 -0
- data/lib/metanorma/html/csa_renderer.rb +9 -0
- data/lib/metanorma/html/drops/figure_drop.rb +33 -10
- data/lib/metanorma/html/drops/sourcecode_drop.rb +3 -6
- data/lib/metanorma/html/flavor.rb +6 -1
- data/lib/metanorma/html/generator.rb +8 -8
- data/lib/metanorma/html/iso_renderer.rb +0 -142
- data/lib/metanorma/html/renderers/block_renderer.rb +41 -5
- data/lib/metanorma/html/renderers/element_order_traversal.rb +15 -1
- data/lib/metanorma/html/renderers/inline_renderer.rb +16 -76
- data/lib/metanorma/html/standard_renderer.rb +195 -35
- data/lib/metanorma/html/templates/_list_item.html.liquid +1 -1
- data/lib/metanorma/html/theme.rb +38 -11
- data/lib/metanorma/html.rb +1 -52
- data/lib/metanorma/iso_document/sections/iso_preface.rb +27 -13
- data/lib/metanorma/mirror/default_registry.rb +21 -0
- data/lib/metanorma/mirror/handlers/inline/catalog.rb +7 -12
- data/lib/metanorma/mirror/handlers/inline/rich_html_renderer.rb +2 -3
- data/lib/metanorma/mirror/handlers/sourcecode.rb +1 -1
- data/lib/metanorma/mirror/model/guide.rb +3 -2
- data/lib/metanorma/mirror/output/formats/inline_format.rb +64 -3
- data/lib/metanorma/mirror/output/pipeline.rb +1 -0
- data/lib/metanorma/mirror/output.rb +0 -2
- data/lib/metanorma/mirror/rewriter.rb +3 -1
- data/lib/metanorma/registers/setup.rb +6 -2
- data/lib/metanorma/standard_document/annotation_container.rb +2 -0
- data/lib/metanorma/standard_document/elements/input.rb +4 -25
- data/lib/metanorma/standard_document/metadata/metanorma_extension.rb +12 -2
- data/lib/metanorma/standard_document/metadata/presentation_metadata.rb +107 -0
- data/lib/metanorma/standard_document/metadata/semantic_metadata.rb +18 -0
- data/lib/metanorma/standard_document/metadata/unitsml/amount_of_substance.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/base_quantity.rb +34 -0
- data/lib/metanorma/standard_document/metadata/unitsml/dimension.rb +39 -0
- data/lib/metanorma/standard_document/metadata/unitsml/dimension_set.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/electric_current.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/enumerated_root_unit.rb +23 -0
- data/lib/metanorma/standard_document/metadata/unitsml/length.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/luminous_intensity.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/mass.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/namespace.rb +17 -0
- data/lib/metanorma/standard_document/metadata/unitsml/plane_angle.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/prefix.rb +30 -0
- data/lib/metanorma/standard_document/metadata/unitsml/prefix_name.rb +21 -0
- data/lib/metanorma/standard_document/metadata/unitsml/prefix_set.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/prefix_symbol.rb +21 -0
- data/lib/metanorma/standard_document/metadata/unitsml/quantity.rb +28 -0
- data/lib/metanorma/standard_document/metadata/unitsml/quantity_name.rb +21 -0
- data/lib/metanorma/standard_document/metadata/unitsml/quantity_set.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/root_units.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/thermodynamic_temperature.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/time.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/unit.rb +32 -0
- data/lib/metanorma/standard_document/metadata/unitsml/unit_name.rb +21 -0
- data/lib/metanorma/standard_document/metadata/unitsml/unit_set.rb +19 -0
- data/lib/metanorma/standard_document/metadata/unitsml/unit_symbol.rb +36 -0
- data/lib/metanorma/standard_document/metadata/unitsml/unit_system.rb +23 -0
- data/lib/metanorma/standard_document/metadata/unitsml/unitsml_root.rb +28 -0
- data/lib/metanorma/standard_document/metadata/unitsml.rb +39 -0
- data/lib/metanorma/standard_document/metadata.rb +4 -0
- data/lib/metanorma/standard_document/sections/misc_container.rb +8 -6
- data/lib/metanorma/standard_document/sections/sections.rb +7 -0
- data/lib/metanorma/un_document/blocks/un_admonition_block.rb +86 -0
- data/lib/metanorma/un_document/blocks.rb +9 -0
- data/lib/metanorma/un_document/root.rb +8 -0
- data/lib/metanorma/un_document/sections/un_abstract_section.rb +48 -0
- data/lib/metanorma/un_document/sections/un_preface.rb +19 -2
- data/lib/metanorma/un_document/sections.rb +1 -0
- data/lib/metanorma/un_document/un_text_element.rb +116 -0
- data/lib/metanorma/un_document.rb +2 -0
- data/script/benchmark_render.rb +35 -0
- data/tasks/roundtrip_samples.rake +2 -2
- metadata +65 -54
- data/.rubocop_todo.yml +0 -220
- data/TODO.finalize/01-split-multi-class-files.md +0 -8
- data/TODO.finalize/02-remove-data-dist-iso-document-frontend.md +0 -6
- data/TODO.finalize/03-align-frontend-iife-and-gha-build.md +0 -11
- data/TODO.finalize/04-theme-per-flavor-config-driven.md +0 -9
- data/TODO.finalize/05-migrate-all-html-to-liquid.md +0 -16
- data/TODO.finalize/06-integrate-pubid-library.md +0 -16
- data/TODO.finalize/07-replace-relaton-models-with-relaton-bib.md +0 -39
- data/TODO.finalize/08-refactor-renderer-architecture.md +0 -25
- data/TODO.finalize/09-eliminate-code-smells.md +0 -14
- data/TODO.finalize/10-comprehensive-spec-coverage.md +0 -24
- data/TODO.finalize/11-config-driven-flavor-metadata.md +0 -20
- data/TODO.finalize/12-add-frozen-string-literal.md +0 -6
- data/TODO.finalize/13-extract-composition-from-god-class.md +0 -96
- data/TODO.finalize/14-config-driven-section-ordering.md +0 -31
- data/TODO.finalize/15-theme-directories-per-flavor.md +0 -46
- data/TODO.finalize/16-theme-lutaml-model-schema.md +0 -44
- data/data/logos/oiml-logo-full-dark.svg +0 -1
- data/data/logos/oiml-logo-full-light.svg +0 -1
- data/data/logos/oiml-logo-icon-dark.svg +0 -1
- data/data/logos/oiml-logo-icon-light.svg +0 -1
- data/data/logos/oiml-logo.svg +0 -1
- data/data/themes/oiml.yaml +0 -56
- data/docs/html-renderer.adoc +0 -261
- data/lib/data/dist/iso_document/frontend/assets/index-mwzbzmnK.js +0 -22
- data/lib/data/dist/iso_document/frontend/assets/index-pGvKTNid.css +0 -1
- data/lib/data/dist/iso_document/frontend/assets/iso-red.svg +0 -53
- data/lib/data/dist/iso_document/frontend/index.html +0 -13
- data/lib/metanorma/document/relaton/bib_item_size_type.rb +0 -21
- data/lib/metanorma/document/relaton/bibliographic_date_type.rb +0 -22
- data/lib/metanorma/document/relaton/document_relation_type.rb +0 -31
- data/lib/metanorma/document/relaton/iso4217_code.rb +0 -17
- data/lib/metanorma/document/relaton/iso8601_date.rb +0 -17
- data/lib/metanorma/document/relaton/personal_identifier_type.rb +0 -21
- data/lib/metanorma/document/relaton/region_type.rb +0 -20
- data/lib/metanorma/document/relaton/series_type_type.rb +0 -21
- data/lib/metanorma/document/relaton/specific_locality_type.rb +0 -25
- data/lib/metanorma/document/relaton/title_type.rb +0 -21
- data/lib/metanorma/html/oiml_renderer.rb +0 -33
- data/lib/metanorma/mirror/output/html_renderer.rb +0 -95
- data/lib/metanorma/mirror/output/html_renderers/block_renderers.rb +0 -178
- data/lib/metanorma/mirror/output/html_renderers/inline_renderer.rb +0 -61
- data/lib/metanorma/mirror/output/html_renderers/list_renderers.rb +0 -96
- data/lib/metanorma/mirror/output/html_renderers/mark_renderers.rb +0 -41
- data/lib/metanorma/mirror/output/html_renderers/section_renderers.rb +0 -129
- data/lib/metanorma/mirror/output/html_renderers/structural_renderers.rb +0 -80
- data/lib/metanorma/mirror/output/html_renderers/table_renderers.rb +0 -87
- data/lib/metanorma/mirror/output/html_renderers.rb +0 -76
- data/lib/metanorma/oiml_document.rb +0 -9
- data/lib/metanorma/standard_document/annotation.rb +0 -37
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Metanorma
|
|
4
|
+
module UnDocument
|
|
5
|
+
# UN TextElement restriction, per the current UN grammar
|
|
6
|
+
# (metanorma-un, lib/metanorma/un/un.rng v1.2.1):
|
|
7
|
+
#
|
|
8
|
+
# TextElement = text | em | eref | erefstack | strong | stem | sub |
|
|
9
|
+
# sup | tt | strike | smallcap | xref | br | hyperlink |
|
|
10
|
+
# bookmark
|
|
11
|
+
#
|
|
12
|
+
# UN allows only a strict subset of the isodoc inline vocabulary.
|
|
13
|
+
# Enforcing this structurally would require a UN-specific variant of every
|
|
14
|
+
# block type carrying inline content; instead this module validates the
|
|
15
|
+
# parsed model graph, flagging instances of excluded inline element
|
|
16
|
+
# classes found in inline content.
|
|
17
|
+
#
|
|
18
|
+
# Grammar-inline productions with no model class (date_inline) cannot be
|
|
19
|
+
# flagged here; the parser drops them before validation can see them.
|
|
20
|
+
module UnTextElement
|
|
21
|
+
# Inline element names (grammar names) permitted in UN inline content.
|
|
22
|
+
# `hyperlink` is the grammar production for the `<link>` element.
|
|
23
|
+
ALLOWED_ELEMENTS = %w[
|
|
24
|
+
em eref erefstack strong stem sub sup tt strike smallcap
|
|
25
|
+
xref br link bookmark
|
|
26
|
+
].freeze
|
|
27
|
+
|
|
28
|
+
# Model classes of the isodoc TextElement productions the UN grammar
|
|
29
|
+
# excludes, mapped to their grammar (XML element) names.
|
|
30
|
+
EXCLUDED_ELEMENTS = {
|
|
31
|
+
Metanorma::Document::Components::TextElements::UnderlineElement => "underline",
|
|
32
|
+
Metanorma::Document::Components::TextElements::KeywordElement => "keyword",
|
|
33
|
+
Metanorma::Document::Components::TextElements::RubyElement => "ruby",
|
|
34
|
+
Metanorma::Document::Components::EmptyElements::HorizontalRuleElement => "hr",
|
|
35
|
+
Metanorma::Document::Components::EmptyElements::PageBreakElement => "pagebreak",
|
|
36
|
+
Metanorma::Document::Components::IdElements::Image => "image",
|
|
37
|
+
Metanorma::Document::Components::EmptyElements::IndexElement => "index",
|
|
38
|
+
Metanorma::Document::Components::ReferenceElements::IndexXrefElement => "index-xref",
|
|
39
|
+
Metanorma::Document::Components::Inline::ConceptElement => "concept",
|
|
40
|
+
Metanorma::Document::Elements::Add => "add",
|
|
41
|
+
Metanorma::Document::Elements::Del => "del",
|
|
42
|
+
Metanorma::Document::Components::Inline::SpanElement => "span",
|
|
43
|
+
}.freeze
|
|
44
|
+
|
|
45
|
+
# Model classes whose content model is inline text; an excluded instance
|
|
46
|
+
# under one of these is an inline use. Block-level occurrences (e.g.
|
|
47
|
+
# Image under FigureBlock, PageBreakElement under ClauseSection) are
|
|
48
|
+
# legal. ParagraphWithFootnote inherits from ParagraphBlock.
|
|
49
|
+
INLINE_CONTAINERS = [
|
|
50
|
+
Metanorma::Document::Components::Paragraphs::ParagraphBlock,
|
|
51
|
+
Metanorma::Document::Components::Inline::TitleWithAnnotationElement,
|
|
52
|
+
Metanorma::Document::Components::Inline::VariantTitleElement,
|
|
53
|
+
Metanorma::Document::Components::TextElements::TextElement,
|
|
54
|
+
Metanorma::Document::Components::Lists::DtElement,
|
|
55
|
+
Metanorma::Document::Components::Tables::TableCell,
|
|
56
|
+
].freeze
|
|
57
|
+
|
|
58
|
+
# fmt-* classes wrap presentation-rendered copies of content, where
|
|
59
|
+
# `<span>` is rendering furniture rather than semantic inline markup.
|
|
60
|
+
FURNITURE_CLASS_PATTERN = /(^|::)Fmt/
|
|
61
|
+
|
|
62
|
+
# Returns an array of human-readable error strings for every excluded
|
|
63
|
+
# inline element instance in the given model tree; empty when valid.
|
|
64
|
+
def self.validate(model)
|
|
65
|
+
errors = []
|
|
66
|
+
walk(model, false, errors, {}.compare_by_identity)
|
|
67
|
+
errors
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def self.walk(node, inline, errors, visited)
|
|
71
|
+
return unless node.is_a?(Lutaml::Model::Serializable)
|
|
72
|
+
return if visited[node]
|
|
73
|
+
|
|
74
|
+
visited[node] = true
|
|
75
|
+
|
|
76
|
+
furniture = furniture?(node)
|
|
77
|
+
excluded = furniture ? nil : excluded_name(node)
|
|
78
|
+
if inline && excluded
|
|
79
|
+
errors << "UN grammar forbids <#{excluded}> in inline " \
|
|
80
|
+
"content (#{node.class.name})"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
child_inline = furniture ? false : inline || inline_container?(node)
|
|
84
|
+
each_child(node) { |child| walk(child, child_inline, errors, visited) }
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# Iterates the model-valued children of a node. Attribute values are
|
|
88
|
+
# read via instance_variable_get, mirroring lutaml-model's own
|
|
89
|
+
# attribute access (Serialize#validate_attribute!) — the project's
|
|
90
|
+
# invariant specs forbid dynamic dispatch methods in model code.
|
|
91
|
+
def self.each_child(node)
|
|
92
|
+
node.class.attributes.each_key do |name|
|
|
93
|
+
value = node.instance_variable_get(:"@#{name}")
|
|
94
|
+
if value.is_a?(Enumerable) && !value.is_a?(String)
|
|
95
|
+
value.each { |item| yield item if item.is_a?(Lutaml::Model::Serializable) }
|
|
96
|
+
elsif value.is_a?(Lutaml::Model::Serializable)
|
|
97
|
+
yield value
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def self.excluded_name(node)
|
|
103
|
+
pair = EXCLUDED_ELEMENTS.find { |klass, _| node.is_a?(klass) }
|
|
104
|
+
pair&.last
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def self.inline_container?(node)
|
|
108
|
+
INLINE_CONTAINERS.any? { |klass| node.is_a?(klass) }
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def self.furniture?(node)
|
|
112
|
+
FURNITURE_CLASS_PATTERN.match?(node.class.name)
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
module Metanorma
|
|
4
4
|
module UnDocument
|
|
5
|
+
autoload :Blocks, "metanorma/un_document/blocks"
|
|
5
6
|
autoload :Metadata, "metanorma/un_document/metadata"
|
|
6
7
|
autoload :Root, "metanorma/un_document/root"
|
|
7
8
|
autoload :Sections, "metanorma/un_document/sections"
|
|
9
|
+
autoload :UnTextElement, "metanorma/un_document/un_text_element"
|
|
8
10
|
end
|
|
9
11
|
end
|
|
10
12
|
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# Benchmark: parse + HTML-render a presentation XML fixture.
|
|
4
|
+
#
|
|
5
|
+
# Usage:
|
|
6
|
+
# bundle install # benchmark-ips is a dev dependency
|
|
7
|
+
# bundle exec ruby script/benchmark_render.rb [fixture.xml]
|
|
8
|
+
|
|
9
|
+
require "benchmark/ips"
|
|
10
|
+
require_relative "../lib/metanorma/document"
|
|
11
|
+
require_relative "../lib/metanorma/html"
|
|
12
|
+
|
|
13
|
+
fixture = ARGV[0] ||
|
|
14
|
+
File.expand_path("../spec/fixtures/iso/is/document-en.presentation.xml",
|
|
15
|
+
__dir__)
|
|
16
|
+
xml = File.read(fixture)
|
|
17
|
+
puts "Fixture: #{fixture} (#{(xml.size / 1024.0).round(1)} KB)"
|
|
18
|
+
|
|
19
|
+
doc = Metanorma::IsoDocument::Root.from_xml(xml)
|
|
20
|
+
html = Metanorma::Html::Generator.generate(doc)
|
|
21
|
+
puts "Sanity: rendered #{html.size} bytes of HTML"
|
|
22
|
+
|
|
23
|
+
Benchmark.ips do |x|
|
|
24
|
+
x.config(time: 5, warmup: 1)
|
|
25
|
+
|
|
26
|
+
x.report("parse") do
|
|
27
|
+
Metanorma::IsoDocument::Root.from_xml(xml)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
x.report("render") do
|
|
31
|
+
Metanorma::Html::Generator.generate(doc)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
x.compare!
|
|
35
|
+
end
|
|
@@ -37,11 +37,11 @@ module RoundtripSamples
|
|
|
37
37
|
|
|
38
38
|
# Maps mn-samples-* repo name to the model class for round-tripping.
|
|
39
39
|
# nil means no document model exists yet — reported as "no_model".
|
|
40
|
+
# OIML moved to the metanorma-oiml gem — its roundtrip lives there.
|
|
40
41
|
FLAVOR_MODEL_MAP = {
|
|
41
42
|
"iso" => Metanorma::IsoDocument::Root,
|
|
42
43
|
"iec" => Metanorma::IecDocument::Root,
|
|
43
44
|
"ieee" => Metanorma::IeeeDocument::Root,
|
|
44
|
-
"oiml" => Metanorma::OimlDocument::Root,
|
|
45
45
|
"iho" => Metanorma::IhoDocument::Root,
|
|
46
46
|
"cc" => Metanorma::CcDocument::Root,
|
|
47
47
|
"bipm" => Metanorma::BipmDocument::Root,
|
|
@@ -49,7 +49,7 @@ module RoundtripSamples
|
|
|
49
49
|
"ogc" => Metanorma::OgcDocument::Root,
|
|
50
50
|
"ribose" => Metanorma::RiboseDocument::Root,
|
|
51
51
|
"ietf" => Metanorma::IetfDocument::Root,
|
|
52
|
-
"csa" =>
|
|
52
|
+
"csa" => Metanorma::CsaDocument::Root,
|
|
53
53
|
"un" => nil,
|
|
54
54
|
}.freeze
|
|
55
55
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: metanorma-document
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-07-
|
|
11
|
+
date: 2026-07-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: lutaml-model
|
|
@@ -24,6 +24,20 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: 0.8.0
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: mml
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '2.4'
|
|
34
|
+
type: :runtime
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '2.4'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: pubid
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -68,28 +82,12 @@ executables:
|
|
|
68
82
|
extensions: []
|
|
69
83
|
extra_rdoc_files: []
|
|
70
84
|
files:
|
|
71
|
-
-
|
|
85
|
+
- BUGS.sts/08-list-items-duplicate-bullets.md
|
|
72
86
|
- CHANGELOG.md
|
|
73
87
|
- CLAUDE.md
|
|
74
88
|
- LICENSE.txt
|
|
75
89
|
- README.adoc
|
|
76
90
|
- Rakefile
|
|
77
|
-
- TODO.finalize/01-split-multi-class-files.md
|
|
78
|
-
- TODO.finalize/02-remove-data-dist-iso-document-frontend.md
|
|
79
|
-
- TODO.finalize/03-align-frontend-iife-and-gha-build.md
|
|
80
|
-
- TODO.finalize/04-theme-per-flavor-config-driven.md
|
|
81
|
-
- TODO.finalize/05-migrate-all-html-to-liquid.md
|
|
82
|
-
- TODO.finalize/06-integrate-pubid-library.md
|
|
83
|
-
- TODO.finalize/07-replace-relaton-models-with-relaton-bib.md
|
|
84
|
-
- TODO.finalize/08-refactor-renderer-architecture.md
|
|
85
|
-
- TODO.finalize/09-eliminate-code-smells.md
|
|
86
|
-
- TODO.finalize/10-comprehensive-spec-coverage.md
|
|
87
|
-
- TODO.finalize/11-config-driven-flavor-metadata.md
|
|
88
|
-
- TODO.finalize/12-add-frozen-string-literal.md
|
|
89
|
-
- TODO.finalize/13-extract-composition-from-god-class.md
|
|
90
|
-
- TODO.finalize/14-config-driven-section-ordering.md
|
|
91
|
-
- TODO.finalize/15-theme-directories-per-flavor.md
|
|
92
|
-
- TODO.finalize/16-theme-lutaml-model-schema.md
|
|
93
91
|
- data/javascripts/components/mn-code-copy.js
|
|
94
92
|
- data/javascripts/components/mn-footnotes.js
|
|
95
93
|
- data/javascripts/components/mn-glossary.js
|
|
@@ -112,11 +110,6 @@ files:
|
|
|
112
110
|
- data/logos/itu-logo.svg
|
|
113
111
|
- data/logos/metanorma-logo.svg
|
|
114
112
|
- data/logos/ogc-logo.svg
|
|
115
|
-
- data/logos/oiml-logo-full-dark.svg
|
|
116
|
-
- data/logos/oiml-logo-full-light.svg
|
|
117
|
-
- data/logos/oiml-logo-icon-dark.svg
|
|
118
|
-
- data/logos/oiml-logo-icon-light.svg
|
|
119
|
-
- data/logos/oiml-logo.svg
|
|
120
113
|
- data/logos/pdfa-logo.svg
|
|
121
114
|
- data/stylesheets/base/_dark.css
|
|
122
115
|
- data/stylesheets/base/_layout.css
|
|
@@ -136,6 +129,7 @@ files:
|
|
|
136
129
|
- data/stylesheets/components/header.css
|
|
137
130
|
- data/stylesheets/components/index.css
|
|
138
131
|
- data/stylesheets/components/inline.css
|
|
132
|
+
- data/stylesheets/components/lists.css
|
|
139
133
|
- data/stylesheets/components/note.css
|
|
140
134
|
- data/stylesheets/components/progress.css
|
|
141
135
|
- data/stylesheets/components/search.css
|
|
@@ -155,11 +149,11 @@ files:
|
|
|
155
149
|
- data/themes/iso.yaml
|
|
156
150
|
- data/themes/itu.yaml
|
|
157
151
|
- data/themes/ogc.yaml
|
|
158
|
-
- data/themes/oiml.yaml
|
|
159
152
|
- data/themes/pdfa.yaml
|
|
160
153
|
- data/themes/ribose.yaml
|
|
161
|
-
- docs/html-renderer.adoc
|
|
162
154
|
- exe/metanorma-document
|
|
155
|
+
- frontend/dist/app.css
|
|
156
|
+
- frontend/dist/app.iife.js
|
|
163
157
|
- frontend/e2e/sample-html.test.ts
|
|
164
158
|
- frontend/index.html
|
|
165
159
|
- frontend/package-lock.json
|
|
@@ -208,10 +202,6 @@ files:
|
|
|
208
202
|
- frontend/tsconfig.node.json
|
|
209
203
|
- frontend/vite.config.ts
|
|
210
204
|
- frontend/vitest.e2e.config.ts
|
|
211
|
-
- lib/data/dist/iso_document/frontend/assets/index-mwzbzmnK.js
|
|
212
|
-
- lib/data/dist/iso_document/frontend/assets/index-pGvKTNid.css
|
|
213
|
-
- lib/data/dist/iso_document/frontend/assets/iso-red.svg
|
|
214
|
-
- lib/data/dist/iso_document/frontend/index.html
|
|
215
205
|
- lib/metanorma/basic_document.rb
|
|
216
206
|
- lib/metanorma/basic_document/ancillary_blocks.rb
|
|
217
207
|
- lib/metanorma/basic_document/ancillary_blocks/example_block.rb
|
|
@@ -361,6 +351,8 @@ files:
|
|
|
361
351
|
- lib/metanorma/collection/doc_container.rb
|
|
362
352
|
- lib/metanorma/collection/entry.rb
|
|
363
353
|
- lib/metanorma/collection/root.rb
|
|
354
|
+
- lib/metanorma/csa_document.rb
|
|
355
|
+
- lib/metanorma/csa_document/root.rb
|
|
364
356
|
- lib/metanorma/document.rb
|
|
365
357
|
- lib/metanorma/document/cli.rb
|
|
366
358
|
- lib/metanorma/document/components.rb
|
|
@@ -570,15 +562,14 @@ files:
|
|
|
570
562
|
- lib/metanorma/document/elements.rb
|
|
571
563
|
- lib/metanorma/document/elements/add.rb
|
|
572
564
|
- lib/metanorma/document/elements/del.rb
|
|
565
|
+
- lib/metanorma/document/elements/input.rb
|
|
573
566
|
- lib/metanorma/document/relaton.rb
|
|
574
567
|
- lib/metanorma/document/relaton/address.rb
|
|
575
568
|
- lib/metanorma/document/relaton/affiliation.rb
|
|
576
569
|
- lib/metanorma/document/relaton/bib_item_locality.rb
|
|
577
570
|
- lib/metanorma/document/relaton/bib_item_size.rb
|
|
578
|
-
- lib/metanorma/document/relaton/bib_item_size_type.rb
|
|
579
571
|
- lib/metanorma/document/relaton/bib_item_type.rb
|
|
580
572
|
- lib/metanorma/document/relaton/bibliographic_date.rb
|
|
581
|
-
- lib/metanorma/document/relaton/bibliographic_date_type.rb
|
|
582
573
|
- lib/metanorma/document/relaton/contact_method.rb
|
|
583
574
|
- lib/metanorma/document/relaton/contribution_info.rb
|
|
584
575
|
- lib/metanorma/document/relaton/contributor.rb
|
|
@@ -588,13 +579,10 @@ files:
|
|
|
588
579
|
- lib/metanorma/document/relaton/date_time.rb
|
|
589
580
|
- lib/metanorma/document/relaton/document_identifier.rb
|
|
590
581
|
- lib/metanorma/document/relaton/document_relation.rb
|
|
591
|
-
- lib/metanorma/document/relaton/document_relation_type.rb
|
|
592
582
|
- lib/metanorma/document/relaton/document_status.rb
|
|
593
583
|
- lib/metanorma/document/relaton/edition.rb
|
|
594
584
|
- lib/metanorma/document/relaton/formatted_address.rb
|
|
595
585
|
- lib/metanorma/document/relaton/full_name.rb
|
|
596
|
-
- lib/metanorma/document/relaton/iso4217_code.rb
|
|
597
|
-
- lib/metanorma/document/relaton/iso8601_date.rb
|
|
598
586
|
- lib/metanorma/document/relaton/keyword_type.rb
|
|
599
587
|
- lib/metanorma/document/relaton/locality_stack.rb
|
|
600
588
|
- lib/metanorma/document/relaton/localized_name.rb
|
|
@@ -606,17 +594,12 @@ files:
|
|
|
606
594
|
- lib/metanorma/document/relaton/organization.rb
|
|
607
595
|
- lib/metanorma/document/relaton/person.rb
|
|
608
596
|
- lib/metanorma/document/relaton/person_identifier.rb
|
|
609
|
-
- lib/metanorma/document/relaton/personal_identifier_type.rb
|
|
610
597
|
- lib/metanorma/document/relaton/phone.rb
|
|
611
598
|
- lib/metanorma/document/relaton/place_type.rb
|
|
612
599
|
- lib/metanorma/document/relaton/price_type.rb
|
|
613
600
|
- lib/metanorma/document/relaton/region_element.rb
|
|
614
|
-
- lib/metanorma/document/relaton/region_type.rb
|
|
615
601
|
- lib/metanorma/document/relaton/relaton_collection.rb
|
|
616
602
|
- lib/metanorma/document/relaton/series_type.rb
|
|
617
|
-
- lib/metanorma/document/relaton/series_type_type.rb
|
|
618
|
-
- lib/metanorma/document/relaton/specific_locality_type.rb
|
|
619
|
-
- lib/metanorma/document/relaton/title_type.rb
|
|
620
603
|
- lib/metanorma/document/relaton/typed_note.rb
|
|
621
604
|
- lib/metanorma/document/relaton/typed_title_string.rb
|
|
622
605
|
- lib/metanorma/document/relaton/typed_uri.rb
|
|
@@ -644,6 +627,12 @@ files:
|
|
|
644
627
|
- lib/metanorma/html/component/footnote_collector.rb
|
|
645
628
|
- lib/metanorma/html/component/index_section.rb
|
|
646
629
|
- lib/metanorma/html/component/index_term_collector.rb
|
|
630
|
+
- lib/metanorma/html/concerns/metadata_extraction.rb
|
|
631
|
+
- lib/metanorma/html/concerns/presentation_validation.rb
|
|
632
|
+
- lib/metanorma/html/concerns/svg_processing.rb
|
|
633
|
+
- lib/metanorma/html/concerns/text_extraction.rb
|
|
634
|
+
- lib/metanorma/html/concerns/toc_registry.rb
|
|
635
|
+
- lib/metanorma/html/csa_renderer.rb
|
|
647
636
|
- lib/metanorma/html/drops.rb
|
|
648
637
|
- lib/metanorma/html/drops/admonition_drop.rb
|
|
649
638
|
- lib/metanorma/html/drops/biblio_entry_drop.rb
|
|
@@ -667,7 +656,6 @@ files:
|
|
|
667
656
|
- lib/metanorma/html/iso_renderer.rb
|
|
668
657
|
- lib/metanorma/html/itu_renderer.rb
|
|
669
658
|
- lib/metanorma/html/ogc_renderer.rb
|
|
670
|
-
- lib/metanorma/html/oiml_renderer.rb
|
|
671
659
|
- lib/metanorma/html/pdfa_renderer.rb
|
|
672
660
|
- lib/metanorma/html/renderer_delegation.rb
|
|
673
661
|
- lib/metanorma/html/renderers.rb
|
|
@@ -884,15 +872,6 @@ files:
|
|
|
884
872
|
- lib/metanorma/mirror/output/formats.rb
|
|
885
873
|
- lib/metanorma/mirror/output/formats/base_format.rb
|
|
886
874
|
- lib/metanorma/mirror/output/formats/inline_format.rb
|
|
887
|
-
- lib/metanorma/mirror/output/html_renderer.rb
|
|
888
|
-
- lib/metanorma/mirror/output/html_renderers.rb
|
|
889
|
-
- lib/metanorma/mirror/output/html_renderers/block_renderers.rb
|
|
890
|
-
- lib/metanorma/mirror/output/html_renderers/inline_renderer.rb
|
|
891
|
-
- lib/metanorma/mirror/output/html_renderers/list_renderers.rb
|
|
892
|
-
- lib/metanorma/mirror/output/html_renderers/mark_renderers.rb
|
|
893
|
-
- lib/metanorma/mirror/output/html_renderers/section_renderers.rb
|
|
894
|
-
- lib/metanorma/mirror/output/html_renderers/structural_renderers.rb
|
|
895
|
-
- lib/metanorma/mirror/output/html_renderers/table_renderers.rb
|
|
896
875
|
- lib/metanorma/mirror/output/pipeline.rb
|
|
897
876
|
- lib/metanorma/mirror/output/pipeline_context.rb
|
|
898
877
|
- lib/metanorma/mirror/rewriter.rb
|
|
@@ -916,8 +895,6 @@ files:
|
|
|
916
895
|
- lib/metanorma/ogc_document/metadata/ogc_bib_data_extension_type.rb
|
|
917
896
|
- lib/metanorma/ogc_document/metadata/ogc_bibliographic_item.rb
|
|
918
897
|
- lib/metanorma/ogc_document/root.rb
|
|
919
|
-
- lib/metanorma/oiml_document.rb
|
|
920
|
-
- lib/metanorma/oiml_document/root.rb
|
|
921
898
|
- lib/metanorma/plateau_document.rb
|
|
922
899
|
- lib/metanorma/plateau_document/metadata.rb
|
|
923
900
|
- lib/metanorma/plateau_document/metadata/plateau_bibliographic_item.rb
|
|
@@ -930,7 +907,6 @@ files:
|
|
|
930
907
|
- lib/metanorma/ribose_document/metadata/ribose_bibliographic_item.rb
|
|
931
908
|
- lib/metanorma/ribose_document/root.rb
|
|
932
909
|
- lib/metanorma/standard_document.rb
|
|
933
|
-
- lib/metanorma/standard_document/annotation.rb
|
|
934
910
|
- lib/metanorma/standard_document/annotation_container.rb
|
|
935
911
|
- lib/metanorma/standard_document/block_attributes.rb
|
|
936
912
|
- lib/metanorma/standard_document/blocks.rb
|
|
@@ -988,10 +964,40 @@ files:
|
|
|
988
964
|
- lib/metanorma/standard_document/metadata/editorial_group_type.rb
|
|
989
965
|
- lib/metanorma/standard_document/metadata/ics_type.rb
|
|
990
966
|
- lib/metanorma/standard_document/metadata/metanorma_extension.rb
|
|
967
|
+
- lib/metanorma/standard_document/metadata/presentation_metadata.rb
|
|
968
|
+
- lib/metanorma/standard_document/metadata/semantic_metadata.rb
|
|
991
969
|
- lib/metanorma/standard_document/metadata/standard_bib_data.rb
|
|
992
970
|
- lib/metanorma/standard_document/metadata/standard_bib_data_extension_type.rb
|
|
993
971
|
- lib/metanorma/standard_document/metadata/structured_identifier_type.rb
|
|
994
972
|
- lib/metanorma/standard_document/metadata/technical_committee_type.rb
|
|
973
|
+
- lib/metanorma/standard_document/metadata/unitsml.rb
|
|
974
|
+
- lib/metanorma/standard_document/metadata/unitsml/amount_of_substance.rb
|
|
975
|
+
- lib/metanorma/standard_document/metadata/unitsml/base_quantity.rb
|
|
976
|
+
- lib/metanorma/standard_document/metadata/unitsml/dimension.rb
|
|
977
|
+
- lib/metanorma/standard_document/metadata/unitsml/dimension_set.rb
|
|
978
|
+
- lib/metanorma/standard_document/metadata/unitsml/electric_current.rb
|
|
979
|
+
- lib/metanorma/standard_document/metadata/unitsml/enumerated_root_unit.rb
|
|
980
|
+
- lib/metanorma/standard_document/metadata/unitsml/length.rb
|
|
981
|
+
- lib/metanorma/standard_document/metadata/unitsml/luminous_intensity.rb
|
|
982
|
+
- lib/metanorma/standard_document/metadata/unitsml/mass.rb
|
|
983
|
+
- lib/metanorma/standard_document/metadata/unitsml/namespace.rb
|
|
984
|
+
- lib/metanorma/standard_document/metadata/unitsml/plane_angle.rb
|
|
985
|
+
- lib/metanorma/standard_document/metadata/unitsml/prefix.rb
|
|
986
|
+
- lib/metanorma/standard_document/metadata/unitsml/prefix_name.rb
|
|
987
|
+
- lib/metanorma/standard_document/metadata/unitsml/prefix_set.rb
|
|
988
|
+
- lib/metanorma/standard_document/metadata/unitsml/prefix_symbol.rb
|
|
989
|
+
- lib/metanorma/standard_document/metadata/unitsml/quantity.rb
|
|
990
|
+
- lib/metanorma/standard_document/metadata/unitsml/quantity_name.rb
|
|
991
|
+
- lib/metanorma/standard_document/metadata/unitsml/quantity_set.rb
|
|
992
|
+
- lib/metanorma/standard_document/metadata/unitsml/root_units.rb
|
|
993
|
+
- lib/metanorma/standard_document/metadata/unitsml/thermodynamic_temperature.rb
|
|
994
|
+
- lib/metanorma/standard_document/metadata/unitsml/time.rb
|
|
995
|
+
- lib/metanorma/standard_document/metadata/unitsml/unit.rb
|
|
996
|
+
- lib/metanorma/standard_document/metadata/unitsml/unit_name.rb
|
|
997
|
+
- lib/metanorma/standard_document/metadata/unitsml/unit_set.rb
|
|
998
|
+
- lib/metanorma/standard_document/metadata/unitsml/unit_symbol.rb
|
|
999
|
+
- lib/metanorma/standard_document/metadata/unitsml/unit_system.rb
|
|
1000
|
+
- lib/metanorma/standard_document/metadata/unitsml/unitsml_root.rb
|
|
995
1001
|
- lib/metanorma/standard_document/namespace.rb
|
|
996
1002
|
- lib/metanorma/standard_document/refs.rb
|
|
997
1003
|
- lib/metanorma/standard_document/refs/reference_to_term.rb
|
|
@@ -1052,13 +1058,18 @@ files:
|
|
|
1052
1058
|
- lib/metanorma/standard_document/terms/term_source_type.rb
|
|
1053
1059
|
- lib/metanorma/standard_document/terms/verbal_expression.rb
|
|
1054
1060
|
- lib/metanorma/un_document.rb
|
|
1061
|
+
- lib/metanorma/un_document/blocks.rb
|
|
1062
|
+
- lib/metanorma/un_document/blocks/un_admonition_block.rb
|
|
1055
1063
|
- lib/metanorma/un_document/metadata.rb
|
|
1056
1064
|
- lib/metanorma/un_document/metadata/un_bib_data_extension_type.rb
|
|
1057
1065
|
- lib/metanorma/un_document/metadata/un_bibliographic_item.rb
|
|
1058
1066
|
- lib/metanorma/un_document/root.rb
|
|
1059
1067
|
- lib/metanorma/un_document/sections.rb
|
|
1068
|
+
- lib/metanorma/un_document/sections/un_abstract_section.rb
|
|
1060
1069
|
- lib/metanorma/un_document/sections/un_preface.rb
|
|
1061
1070
|
- lib/metanorma/un_document/sections/un_sections.rb
|
|
1071
|
+
- lib/metanorma/un_document/un_text_element.rb
|
|
1072
|
+
- script/benchmark_render.rb
|
|
1062
1073
|
- script/render_both.rb
|
|
1063
1074
|
- tasks/roundtrip_samples.rake
|
|
1064
1075
|
homepage: https://github.com/metanorma/metanorma-document
|
|
@@ -1077,7 +1088,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
1077
1088
|
requirements:
|
|
1078
1089
|
- - ">="
|
|
1079
1090
|
- !ruby/object:Gem::Version
|
|
1080
|
-
version: '3.
|
|
1091
|
+
version: '3.3'
|
|
1081
1092
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1082
1093
|
requirements:
|
|
1083
1094
|
- - ">="
|