metanorma-document 0.5.1 → 0.5.2.pre.alpha.1
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/README.adoc +81 -0
- data/Rakefile +3 -7
- data/data/themes/ogc.yaml +5 -0
- data/lib/metanorma/basic_document/ancillary_blocks/figure_block.rb +2 -2
- data/lib/metanorma/basic_document/multi_paragraph/admonition_block.rb +2 -2
- data/lib/metanorma/document/cli.rb +134 -0
- data/lib/metanorma/document/components/ancillary_blocks/figure_block.rb +5 -0
- data/lib/metanorma/document/components/ancillary_blocks/fmt_figure_element.rb +47 -0
- data/lib/metanorma/document/components/ancillary_blocks/formula_block.rb +2 -0
- data/lib/metanorma/document/components/ancillary_blocks/imagemap_element.rb +73 -0
- data/lib/metanorma/document/components/ancillary_blocks/literal_block.rb +2 -0
- data/lib/metanorma/document/components/ancillary_blocks/sourcecode_block.rb +2 -0
- data/lib/metanorma/document/components/ancillary_blocks/svg_target_element.rb +27 -0
- data/lib/metanorma/document/components/ancillary_blocks/svgmap_element.rb +28 -0
- data/lib/metanorma/document/components/ancillary_blocks.rb +4 -0
- data/lib/metanorma/document/components/bib_data/bibliographic_item.rb +4 -0
- data/lib/metanorma/document/components/blocks/fmt_provision.rb +25 -0
- data/lib/metanorma/document/components/blocks/note_block.rb +8 -0
- data/lib/metanorma/document/components/blocks/permission_model.rb +9 -0
- data/lib/metanorma/document/components/blocks/recommendation_model.rb +9 -0
- data/lib/metanorma/document/components/blocks/requirement_base.rb +12 -0
- data/lib/metanorma/document/components/blocks/requirement_import.rb +23 -0
- data/lib/metanorma/document/components/blocks/requirement_measurement_target.rb +23 -0
- data/lib/metanorma/document/components/blocks/requirement_model.rb +9 -0
- data/lib/metanorma/document/components/blocks/requirement_specification.rb +23 -0
- data/lib/metanorma/document/components/blocks/requirement_verification.rb +23 -0
- data/lib/metanorma/document/components/blocks.rb +8 -0
- data/lib/metanorma/document/components/data_types/formatted_string.rb +9 -0
- data/lib/metanorma/document/components/id_elements/image.rb +4 -0
- data/lib/metanorma/document/components/inline/columnbreak_element.rb +17 -0
- data/lib/metanorma/document/components/inline/concept_element.rb +18 -0
- data/lib/metanorma/document/components/inline/date_element.rb +29 -0
- data/lib/metanorma/document/components/inline/display_text_element.rb +2 -0
- data/lib/metanorma/document/components/inline/em_raw_element.rb +6 -7
- data/lib/metanorma/document/components/inline/eref_element.rb +48 -22
- data/lib/metanorma/document/components/inline/eref_stack.rb +23 -0
- data/lib/metanorma/document/components/inline/error_message.rb +28 -0
- data/lib/metanorma/document/components/inline/fmt_date_element.rb +28 -0
- data/lib/metanorma/document/components/inline/fmt_date_inline_element.rb +26 -0
- data/lib/metanorma/document/components/inline/fmt_eref_element.rb +25 -0
- data/lib/metanorma/document/components/inline/fmt_origin_element.rb +24 -0
- data/lib/metanorma/document/components/inline/fmt_preferred_element.rb +3 -0
- data/lib/metanorma/document/components/inline/fmt_source_element.rb +31 -0
- data/lib/metanorma/document/components/inline/fn_element.rb +11 -0
- data/lib/metanorma/document/components/inline/link_element.rb +8 -0
- data/lib/metanorma/document/components/inline/name_with_id_element.rb +2 -0
- data/lib/metanorma/document/components/inline/refterm_element.rb +21 -0
- data/lib/metanorma/document/components/inline/semx_element.rb +22 -0
- data/lib/metanorma/document/components/inline/sourcelocality_stack_element.rb +27 -0
- data/lib/metanorma/document/components/inline/span_element.rb +2 -0
- data/lib/metanorma/document/components/inline/stem_inline_element.rb +2 -0
- data/lib/metanorma/document/components/inline/strong_raw_element.rb +6 -9
- data/lib/metanorma/document/components/inline/sub_element.rb +2 -0
- data/lib/metanorma/document/components/inline/termref_element.rb +24 -0
- data/lib/metanorma/document/components/inline/title_with_annotation_element.rb +10 -31
- data/lib/metanorma/document/components/inline/variant_title_element.rb +2 -0
- data/lib/metanorma/document/components/inline/vocabulary.rb +36 -0
- data/lib/metanorma/document/components/inline.rb +23 -0
- data/lib/metanorma/document/components/lists/dd_element.rb +6 -1
- data/lib/metanorma/document/components/lists/definition.rb +2 -0
- data/lib/metanorma/document/components/lists/definition_list.rb +3 -0
- data/lib/metanorma/document/components/lists/dt_element.rb +3 -0
- data/lib/metanorma/document/components/lists/fmt_list_element.rb +73 -0
- data/lib/metanorma/document/components/lists/list_item.rb +3 -0
- data/lib/metanorma/document/components/lists/ordered_list.rb +4 -2
- data/lib/metanorma/document/components/lists/unordered_list.rb +2 -0
- data/lib/metanorma/document/components/lists.rb +2 -0
- data/lib/metanorma/document/components/multi_paragraph/quote_block.rb +16 -0
- data/lib/metanorma/document/components/multi_paragraph/review_block.rb +2 -2
- data/lib/metanorma/document/components/paragraphs/paragraph_block.rb +15 -0
- data/lib/metanorma/document/components/reference_elements/citation.rb +7 -0
- data/lib/metanorma/document/components/reference_elements/source_element.rb +4 -0
- data/lib/metanorma/document/components/semantic/node.rb +46 -0
- data/lib/metanorma/document/components/semantic.rb +11 -0
- data/lib/metanorma/document/components/tables/header_table_cell.rb +1 -0
- data/lib/metanorma/document/components/tables/table_cell.rb +70 -44
- data/lib/metanorma/document/components/tables/text_table_cell.rb +1 -0
- data/lib/metanorma/document/components/tables/text_table_row.rb +2 -0
- data/lib/metanorma/document/components/text_elements/ruby_annotation_element.rb +26 -0
- data/lib/metanorma/document/components/text_elements/ruby_element.rb +41 -6
- data/lib/metanorma/document/components/text_elements/ruby_pronunciation_element.rb +25 -0
- data/lib/metanorma/document/components/text_elements/strike_element.rb +3 -0
- data/lib/metanorma/document/components/text_elements/underline_element.rb +3 -0
- data/lib/metanorma/document/components/text_elements.rb +2 -0
- data/lib/metanorma/document/components.rb +1 -0
- data/lib/metanorma/document/grammar_vocabulary.rb +109 -0
- data/lib/metanorma/document/mirror_seed.rb +253 -0
- data/lib/metanorma/document/mko/collection.rb +168 -0
- data/lib/metanorma/document/mko/exporter.rb +17 -0
- data/lib/metanorma/document/mko/project.rb +1110 -0
- data/lib/metanorma/document/mko.rb +122 -0
- data/lib/metanorma/document/model_access.rb +44 -0
- data/lib/metanorma/document/native_models.rb +319 -0
- data/lib/metanorma/document/plain_text.rb +39 -0
- data/lib/metanorma/document/relaton/version_info.rb +4 -0
- data/lib/metanorma/document/version.rb +1 -1
- data/lib/metanorma/document.rb +19 -26
- data/lib/metanorma/{collection → document_collection}/directive.rb +1 -1
- data/lib/metanorma/{collection → document_collection}/doc_container.rb +6 -2
- data/lib/metanorma/{collection → document_collection}/entry.rb +2 -2
- data/lib/metanorma/{collection → document_collection}/root.rb +2 -2
- data/lib/metanorma/document_collection.rb +10 -0
- data/lib/metanorma/html/base_renderer.rb +94 -25
- data/lib/metanorma/html/component/footnote_collector.rb +21 -20
- data/lib/metanorma/html/concerns/metadata_extraction.rb +8 -3
- data/lib/metanorma/html/concerns/presentation_validation.rb +1 -2
- data/lib/metanorma/html/concerns/text_extraction.rb +154 -35
- data/lib/metanorma/html/concerns.rb +19 -0
- data/lib/metanorma/html/drops/admonition_drop.rb +1 -1
- data/lib/metanorma/html/drops/footnote_drop.rb +1 -1
- data/lib/metanorma/html/drops/sourcecode_drop.rb +22 -4
- data/lib/metanorma/html/generator.rb +11 -187
- data/lib/metanorma/html/renderer_delegation.rb +2 -2
- data/lib/metanorma/html/renderers/block_renderer.rb +206 -46
- data/lib/metanorma/html/renderers/inline_renderer.rb +144 -17
- data/lib/metanorma/html/renderers/section_renderer.rb +12 -2
- data/lib/metanorma/html/renderers/semantic_renderer.rb +487 -0
- data/lib/metanorma/html/renderers.rb +2 -0
- data/lib/metanorma/html/standard_renderer.rb +732 -76
- data/lib/metanorma/html/templates/_agency_cover.html.liquid +30 -0
- data/lib/metanorma/html/templates/_columnbreak.html.liquid +1 -0
- data/lib/metanorma/html/templates/_cover.html.liquid +3 -0
- data/lib/metanorma/html/templates/_main_content.html.liquid +1 -1
- data/lib/metanorma/html/templates/_ruby.html.liquid +1 -0
- data/lib/metanorma/html/templates/_sourcecode.html.liquid +4 -3
- data/lib/metanorma/html/templates/_standard_cover.html.liquid +54 -3
- data/lib/metanorma/html.rb +30 -15
- data/tasks/flavors.rake +116 -0
- data/tasks/grammar.rake +28 -0
- data/tasks/roundtrip_samples.rake +48 -34
- metadata +121 -416
- data/frontend/dist/app.css +0 -1
- data/frontend/dist/app.iife.js +0 -24
- data/lib/metanorma/bipm_document/metadata/bipm_bib_data_extension_type.rb +0 -20
- data/lib/metanorma/bipm_document/metadata/bipm_bibliographic_item.rb +0 -17
- data/lib/metanorma/bipm_document/metadata/bipm_structured_identifier.rb +0 -21
- data/lib/metanorma/bipm_document/metadata/depiction_element.rb +0 -18
- data/lib/metanorma/bipm_document/metadata.rb +0 -15
- data/lib/metanorma/bipm_document/root.rb +0 -25
- data/lib/metanorma/bipm_document.rb +0 -8
- data/lib/metanorma/bsi_document/metadata/bsi_bib_data_extension_type.rb +0 -10
- data/lib/metanorma/bsi_document/metadata/bsi_bibliographic_item.rb +0 -15
- data/lib/metanorma/bsi_document/metadata.rb +0 -12
- data/lib/metanorma/bsi_document/root.rb +0 -29
- data/lib/metanorma/bsi_document/sections/bsi_annex_section.rb +0 -25
- data/lib/metanorma/bsi_document/sections/bsi_clause_section.rb +0 -25
- data/lib/metanorma/bsi_document/sections/bsi_sections.rb +0 -27
- data/lib/metanorma/bsi_document/sections.rb +0 -11
- data/lib/metanorma/bsi_document.rb +0 -11
- data/lib/metanorma/cc_document/metadata/cc_bib_data_extension_type.rb +0 -12
- data/lib/metanorma/cc_document/metadata/cc_bibliographic_item.rb +0 -17
- data/lib/metanorma/cc_document/metadata.rb +0 -11
- data/lib/metanorma/cc_document/root.rb +0 -25
- data/lib/metanorma/cc_document.rb +0 -8
- data/lib/metanorma/collection.rb +0 -10
- data/lib/metanorma/csa_document/root.rb +0 -27
- data/lib/metanorma/csa_document.rb +0 -9
- data/lib/metanorma/gb_document/metadata/gb_bib_data_extension_type.rb +0 -10
- data/lib/metanorma/gb_document/metadata/gb_bibliographic_item.rb +0 -15
- data/lib/metanorma/gb_document/metadata.rb +0 -12
- data/lib/metanorma/gb_document/root.rb +0 -29
- data/lib/metanorma/gb_document.rb +0 -10
- data/lib/metanorma/generic_document/root.rb +0 -31
- data/lib/metanorma/generic_document.rb +0 -7
- data/lib/metanorma/html/bipm_renderer.rb +0 -23
- data/lib/metanorma/html/cc_renderer.rb +0 -9
- data/lib/metanorma/html/csa_renderer.rb +0 -9
- data/lib/metanorma/html/flavor.rb +0 -50
- data/lib/metanorma/html/flavor_registry.rb +0 -49
- data/lib/metanorma/html/icc_renderer.rb +0 -10
- data/lib/metanorma/html/iec_renderer.rb +0 -9
- data/lib/metanorma/html/ieee_renderer.rb +0 -9
- data/lib/metanorma/html/ietf_renderer.rb +0 -9
- data/lib/metanorma/html/iho_renderer.rb +0 -9
- data/lib/metanorma/html/iso_renderer.rb +0 -535
- data/lib/metanorma/html/itu_renderer.rb +0 -9
- data/lib/metanorma/html/ogc_renderer.rb +0 -23
- data/lib/metanorma/html/pdfa_renderer.rb +0 -10
- data/lib/metanorma/html/ribose_renderer.rb +0 -9
- data/lib/metanorma/html/templates/_bipm_cover.html.liquid +0 -27
- data/lib/metanorma/html/templates/_iso_cover.html.liquid +0 -31
- data/lib/metanorma/html/templates/_iso_doc_title.html.liquid +0 -3
- data/lib/metanorma/iec_document/root.rb +0 -27
- data/lib/metanorma/iec_document.rb +0 -9
- data/lib/metanorma/ieee_document/metadata/ieee_bib_data_extension_type.rb +0 -18
- data/lib/metanorma/ieee_document/metadata/ieee_bibliographic_item.rb +0 -20
- data/lib/metanorma/ieee_document/metadata/ieee_structured_identifier.rb +0 -25
- data/lib/metanorma/ieee_document/metadata.rb +0 -14
- data/lib/metanorma/ieee_document/root.rb +0 -29
- data/lib/metanorma/ieee_document/sections/ieee_sections.rb +0 -31
- data/lib/metanorma/ieee_document/sections.rb +0 -9
- data/lib/metanorma/ieee_document.rb +0 -11
- data/lib/metanorma/ietf_document/metadata/ietf_bib_data_extension_type.rb +0 -31
- data/lib/metanorma/ietf_document/metadata/ietf_bibliographic_item.rb +0 -51
- data/lib/metanorma/ietf_document/metadata/ietf_editorial_group.rb +0 -17
- data/lib/metanorma/ietf_document/metadata/pi_settings.rb +0 -32
- data/lib/metanorma/ietf_document/metadata.rb +0 -16
- data/lib/metanorma/ietf_document/root.rb +0 -30
- data/lib/metanorma/ietf_document/sections/ietf_annex_section.rb +0 -26
- data/lib/metanorma/ietf_document/sections/ietf_clause_section.rb +0 -26
- data/lib/metanorma/ietf_document/sections/ietf_content_section.rb +0 -25
- data/lib/metanorma/ietf_document/sections/ietf_sections.rb +0 -35
- data/lib/metanorma/ietf_document/sections.rb +0 -12
- data/lib/metanorma/ietf_document.rb +0 -11
- data/lib/metanorma/iho_document/metadata/iho_bib_data_extension_type.rb +0 -23
- data/lib/metanorma/iho_document/metadata/iho_bibliographic_item.rb +0 -20
- data/lib/metanorma/iho_document/metadata/iho_editorial_group.rb +0 -19
- data/lib/metanorma/iho_document/metadata/iho_series.rb +0 -22
- data/lib/metanorma/iho_document/metadata/iho_sub_group.rb +0 -18
- data/lib/metanorma/iho_document/metadata.rb +0 -15
- data/lib/metanorma/iho_document/root.rb +0 -25
- data/lib/metanorma/iho_document.rb +0 -8
- data/lib/metanorma/iso_document/annotation_container.rb +0 -7
- data/lib/metanorma/iso_document/blocks/iso_admonition_block.rb +0 -27
- data/lib/metanorma/iso_document/blocks/iso_admonition_type.rb +0 -25
- data/lib/metanorma/iso_document/blocks.rb +0 -12
- data/lib/metanorma/iso_document/boilerplate.rb +0 -7
- data/lib/metanorma/iso_document/metadata/abstract_title.rb +0 -36
- data/lib/metanorma/iso_document/metadata/doc_identifier.rb +0 -26
- data/lib/metanorma/iso_document/metadata/doctype_element.rb +0 -20
- data/lib/metanorma/iso_document/metadata/ics.rb +0 -19
- data/lib/metanorma/iso_document/metadata/iec_document_category.rb +0 -23
- data/lib/metanorma/iso_document/metadata/iso_bib_data_extension_type.rb +0 -38
- data/lib/metanorma/iso_document/metadata/iso_bibliographic_item.rb +0 -103
- data/lib/metanorma/iso_document/metadata/iso_document_id.rb +0 -46
- data/lib/metanorma/iso_document/metadata/iso_document_stage_codes.rb +0 -26
- data/lib/metanorma/iso_document/metadata/iso_document_status.rb +0 -26
- data/lib/metanorma/iso_document/metadata/iso_document_substage_codes.rb +0 -26
- data/lib/metanorma/iso_document/metadata/iso_document_type.rb +0 -25
- data/lib/metanorma/iso_document/metadata/iso_localized_title.rb +0 -61
- data/lib/metanorma/iso_document/metadata/iso_project_group.rb +0 -32
- data/lib/metanorma/iso_document/metadata/iso_sub_group.rb +0 -38
- data/lib/metanorma/iso_document/metadata/language_element.rb +0 -18
- data/lib/metanorma/iso_document/metadata/metanorma_extension.rb +0 -9
- data/lib/metanorma/iso_document/metadata/project_number.rb +0 -22
- data/lib/metanorma/iso_document/metadata/script_element.rb +0 -18
- data/lib/metanorma/iso_document/metadata/stage_element.rb +0 -26
- data/lib/metanorma/iso_document/metadata/stagename_element.rb +0 -18
- data/lib/metanorma/iso_document/metadata/structured_identifier.rb +0 -16
- data/lib/metanorma/iso_document/metadata/title_amd.rb +0 -12
- data/lib/metanorma/iso_document/metadata/title_amendment_prefix.rb +0 -12
- data/lib/metanorma/iso_document/metadata/title_collection.rb +0 -47
- data/lib/metanorma/iso_document/metadata/title_full.rb +0 -12
- data/lib/metanorma/iso_document/metadata/title_intro.rb +0 -12
- data/lib/metanorma/iso_document/metadata/title_main.rb +0 -12
- data/lib/metanorma/iso_document/metadata/title_part.rb +0 -12
- data/lib/metanorma/iso_document/metadata/title_part_prefix.rb +0 -12
- data/lib/metanorma/iso_document/metadata.rb +0 -44
- data/lib/metanorma/iso_document/root.rb +0 -26
- data/lib/metanorma/iso_document/sections/colophon.rb +0 -3
- data/lib/metanorma/iso_document/sections/iso_abstract_section.rb +0 -15
- data/lib/metanorma/iso_document/sections/iso_amendment_clause.rb +0 -24
- data/lib/metanorma/iso_document/sections/iso_annex_section.rb +0 -50
- data/lib/metanorma/iso_document/sections/iso_clause_section.rb +0 -49
- data/lib/metanorma/iso_document/sections/iso_foreword_section.rb +0 -33
- data/lib/metanorma/iso_document/sections/iso_preface.rb +0 -51
- data/lib/metanorma/iso_document/sections/iso_sections.rb +0 -51
- data/lib/metanorma/iso_document/sections/iso_terms_section.rb +0 -76
- data/lib/metanorma/iso_document/sections.rb +0 -17
- data/lib/metanorma/iso_document/terms/iso_term.rb +0 -71
- data/lib/metanorma/iso_document/terms/iso_term_collection.rb +0 -20
- data/lib/metanorma/iso_document/terms/term_definition.rb +0 -30
- data/lib/metanorma/iso_document/terms/term_designation.rb +0 -44
- data/lib/metanorma/iso_document/terms/term_domain_element.rb +0 -18
- data/lib/metanorma/iso_document/terms/term_example.rb +0 -40
- data/lib/metanorma/iso_document/terms/term_expression.rb +0 -10
- data/lib/metanorma/iso_document/terms/term_note.rb +0 -42
- data/lib/metanorma/iso_document/terms/term_origin.rb +0 -4
- data/lib/metanorma/iso_document/terms/term_source.rb +0 -21
- data/lib/metanorma/iso_document/terms/verbal_definition.rb +0 -42
- data/lib/metanorma/iso_document/terms.rb +0 -21
- data/lib/metanorma/iso_document.rb +0 -15
- data/lib/metanorma/itu_document/metadata/itu_bib_data_extension_type.rb +0 -26
- data/lib/metanorma/itu_document/metadata/itu_bibliographic_item.rb +0 -21
- data/lib/metanorma/itu_document/metadata/itu_series.rb +0 -22
- data/lib/metanorma/itu_document/metadata/itu_structured_identifier.rb +0 -23
- data/lib/metanorma/itu_document/metadata/meeting_date.rb +0 -18
- data/lib/metanorma/itu_document/metadata/meeting_element.rb +0 -18
- data/lib/metanorma/itu_document/metadata/study_period.rb +0 -18
- data/lib/metanorma/itu_document/metadata.rb +0 -18
- data/lib/metanorma/itu_document/root.rb +0 -25
- data/lib/metanorma/itu_document.rb +0 -8
- data/lib/metanorma/jis_document/metadata/jis_bib_data_extension_type.rb +0 -10
- data/lib/metanorma/jis_document/metadata/jis_bibliographic_item.rb +0 -15
- data/lib/metanorma/jis_document/metadata.rb +0 -12
- data/lib/metanorma/jis_document/root.rb +0 -29
- data/lib/metanorma/jis_document/sections/jis_annex_section.rb +0 -20
- data/lib/metanorma/jis_document/sections.rb +0 -9
- data/lib/metanorma/jis_document.rb +0 -11
- data/lib/metanorma/m3d_document/metadata/m3d_bib_data_extension_type.rb +0 -10
- data/lib/metanorma/m3d_document/metadata/m3d_bibliographic_item.rb +0 -15
- data/lib/metanorma/m3d_document/metadata.rb +0 -12
- data/lib/metanorma/m3d_document/root.rb +0 -29
- data/lib/metanorma/m3d_document.rb +0 -10
- data/lib/metanorma/mirror/default_registry.rb +0 -191
- data/lib/metanorma/mirror/handler_registry.rb +0 -60
- data/lib/metanorma/mirror/handler_result.rb +0 -37
- data/lib/metanorma/mirror/handlers/admonition.rb +0 -18
- data/lib/metanorma/mirror/handlers/example.rb +0 -21
- data/lib/metanorma/mirror/handlers/figure.rb +0 -53
- data/lib/metanorma/mirror/handlers/formula.rb +0 -35
- data/lib/metanorma/mirror/handlers/inline/catalog.rb +0 -52
- data/lib/metanorma/mirror/handlers/inline/rich_html_renderer.rb +0 -158
- data/lib/metanorma/mirror/handlers/inline/text_extractor.rb +0 -116
- data/lib/metanorma/mirror/handlers/inline.rb +0 -226
- data/lib/metanorma/mirror/handlers/list.rb +0 -110
- data/lib/metanorma/mirror/handlers/note.rb +0 -26
- data/lib/metanorma/mirror/handlers/paragraph.rb +0 -19
- data/lib/metanorma/mirror/handlers/quote.rb +0 -16
- data/lib/metanorma/mirror/handlers/review.rb +0 -19
- data/lib/metanorma/mirror/handlers/section.rb +0 -149
- data/lib/metanorma/mirror/handlers/sourcecode.rb +0 -27
- data/lib/metanorma/mirror/handlers/structural.rb +0 -68
- data/lib/metanorma/mirror/handlers/table.rb +0 -81
- data/lib/metanorma/mirror/handlers/term.rb +0 -100
- data/lib/metanorma/mirror/handlers.rb +0 -60
- data/lib/metanorma/mirror/id_strategy/positional.rb +0 -166
- data/lib/metanorma/mirror/id_strategy/preserve.rb +0 -12
- data/lib/metanorma/mirror/id_strategy.rb +0 -34
- data/lib/metanorma/mirror/math_util.rb +0 -53
- data/lib/metanorma/mirror/metadata.rb +0 -37
- data/lib/metanorma/mirror/model/container.rb +0 -47
- data/lib/metanorma/mirror/model/factory.rb +0 -52
- data/lib/metanorma/mirror/model/guide.rb +0 -26
- data/lib/metanorma/mirror/model/leaf.rb +0 -17
- data/lib/metanorma/mirror/model/mark.rb +0 -53
- data/lib/metanorma/mirror/model/node.rb +0 -47
- data/lib/metanorma/mirror/model/soft_break.rb +0 -33
- data/lib/metanorma/mirror/model/text.rb +0 -34
- data/lib/metanorma/mirror/model.rb +0 -16
- data/lib/metanorma/mirror/output/builder.rb +0 -39
- data/lib/metanorma/mirror/output/formats/base_format.rb +0 -90
- data/lib/metanorma/mirror/output/formats/inline_format.rb +0 -142
- data/lib/metanorma/mirror/output/formats.rb +0 -53
- data/lib/metanorma/mirror/output/pipeline.rb +0 -93
- data/lib/metanorma/mirror/output/pipeline_context.rb +0 -22
- data/lib/metanorma/mirror/output.rb +0 -12
- data/lib/metanorma/mirror/rewriter.rb +0 -123
- data/lib/metanorma/mirror/safe_attr.rb +0 -16
- data/lib/metanorma/mirror/serialization/json_serializer.rb +0 -25
- data/lib/metanorma/mirror/serialization/yaml_serializer.rb +0 -20
- data/lib/metanorma/mirror/serialization.rb +0 -10
- data/lib/metanorma/mirror/transformer.rb +0 -110
- data/lib/metanorma/mirror.rb +0 -31
- data/lib/metanorma/nist_document/metadata/nist_bib_data_extension_type.rb +0 -10
- data/lib/metanorma/nist_document/metadata/nist_bibliographic_item.rb +0 -15
- data/lib/metanorma/nist_document/metadata.rb +0 -12
- data/lib/metanorma/nist_document/root.rb +0 -29
- data/lib/metanorma/nist_document/sections/errata.rb +0 -16
- data/lib/metanorma/nist_document/sections/errata_clause.rb +0 -20
- data/lib/metanorma/nist_document/sections/errata_row.rb +0 -22
- data/lib/metanorma/nist_document/sections/nist_preface.rb +0 -30
- data/lib/metanorma/nist_document/sections.rb +0 -12
- data/lib/metanorma/nist_document.rb +0 -11
- data/lib/metanorma/ogc_document/metadata/ogc_bib_data_extension_type.rb +0 -12
- data/lib/metanorma/ogc_document/metadata/ogc_bibliographic_item.rb +0 -19
- data/lib/metanorma/ogc_document/metadata.rb +0 -12
- data/lib/metanorma/ogc_document/root.rb +0 -25
- data/lib/metanorma/ogc_document.rb +0 -8
- data/lib/metanorma/plateau_document/metadata/plateau_bibliographic_item.rb +0 -13
- data/lib/metanorma/plateau_document/metadata.rb +0 -10
- data/lib/metanorma/plateau_document/root.rb +0 -29
- data/lib/metanorma/plateau_document.rb +0 -10
- data/lib/metanorma/registers/setup.rb +0 -166
- data/lib/metanorma/registers.rb +0 -7
- data/lib/metanorma/ribose_document/metadata/ribose_bib_data_extension_type.rb +0 -20
- data/lib/metanorma/ribose_document/metadata/ribose_bibliographic_item.rb +0 -18
- data/lib/metanorma/ribose_document/metadata.rb +0 -12
- data/lib/metanorma/ribose_document/root.rb +0 -26
- data/lib/metanorma/ribose_document.rb +0 -8
- data/lib/metanorma/standard_document/annotation_container.rb +0 -39
- data/lib/metanorma/standard_document/block_attributes.rb +0 -281
- data/lib/metanorma/standard_document/blocks/amend_block.rb +0 -50
- data/lib/metanorma/standard_document/blocks/amend_content_block.rb +0 -35
- data/lib/metanorma/standard_document/blocks/auto_number.rb +0 -20
- data/lib/metanorma/standard_document/blocks/block_source.rb +0 -22
- data/lib/metanorma/standard_document/blocks/change_type.rb +0 -21
- data/lib/metanorma/standard_document/blocks/element_name.rb +0 -22
- data/lib/metanorma/standard_document/blocks/form.rb +0 -38
- data/lib/metanorma/standard_document/blocks/image_map_area_type.rb +0 -24
- data/lib/metanorma/standard_document/blocks/image_map_area_type_type.rb +0 -21
- data/lib/metanorma/standard_document/blocks/image_map_block.rb +0 -32
- data/lib/metanorma/standard_document/blocks/image_map_coords.rb +0 -19
- data/lib/metanorma/standard_document/blocks/image_map_radius.rb +0 -19
- data/lib/metanorma/standard_document/blocks/multilingual_rendering_type.rb +0 -21
- data/lib/metanorma/standard_document/blocks/passthrough.rb +0 -3
- data/lib/metanorma/standard_document/blocks/requirement_model.rb +0 -20
- data/lib/metanorma/standard_document/blocks/source_origin_element.rb +0 -23
- data/lib/metanorma/standard_document/blocks/standard_admonition_block.rb +0 -32
- data/lib/metanorma/standard_document/blocks/standard_block.rb +0 -28
- data/lib/metanorma/standard_document/blocks/standard_block_no_notes.rb +0 -34
- data/lib/metanorma/standard_document/blocks/standard_example_block.rb +0 -30
- data/lib/metanorma/standard_document/blocks/standard_figure_block.rb +0 -32
- data/lib/metanorma/standard_document/blocks/standard_formula_block.rb +0 -30
- data/lib/metanorma/standard_document/blocks/standard_note_block.rb +0 -64
- data/lib/metanorma/standard_document/blocks/standard_paragraph_block.rb +0 -25
- data/lib/metanorma/standard_document/blocks/standard_quote_block.rb +0 -29
- data/lib/metanorma/standard_document/blocks/standard_sourcecode_block.rb +0 -32
- data/lib/metanorma/standard_document/blocks/standard_table_block.rb +0 -39
- data/lib/metanorma/standard_document/blocks/svg_map_block.rb +0 -23
- data/lib/metanorma/standard_document/blocks/svg_target_type.rb +0 -20
- data/lib/metanorma/standard_document/blocks/table_col.rb +0 -16
- data/lib/metanorma/standard_document/blocks/to_c.rb +0 -17
- data/lib/metanorma/standard_document/blocks.rb +0 -60
- data/lib/metanorma/standard_document/boilerplate.rb +0 -32
- data/lib/metanorma/standard_document/elements/add.rb +0 -3
- data/lib/metanorma/standard_document/elements/del.rb +0 -3
- data/lib/metanorma/standard_document/elements/form_input.rb +0 -27
- data/lib/metanorma/standard_document/elements/input.rb +0 -12
- data/lib/metanorma/standard_document/elements/input_type.rb +0 -27
- data/lib/metanorma/standard_document/elements/label.rb +0 -19
- data/lib/metanorma/standard_document/elements/option.rb +0 -27
- data/lib/metanorma/standard_document/elements/orientation_type.rb +0 -27
- data/lib/metanorma/standard_document/elements/select.rb +0 -32
- data/lib/metanorma/standard_document/elements/standard_page_break_element.rb +0 -22
- data/lib/metanorma/standard_document/elements/textarea.rb +0 -25
- data/lib/metanorma/standard_document/elements.rb +0 -20
- data/lib/metanorma/standard_document/lists/standard_definition.rb +0 -24
- data/lib/metanorma/standard_document/lists/standard_definition_list.rb +0 -30
- data/lib/metanorma/standard_document/lists/standard_definition_term.rb +0 -27
- data/lib/metanorma/standard_document/lists/standard_unordered_list.rb +0 -28
- data/lib/metanorma/standard_document/lists/unordered_checkable_list_item.rb +0 -26
- data/lib/metanorma/standard_document/lists.rb +0 -17
- data/lib/metanorma/standard_document/metadata/editorial_group_type.rb +0 -25
- data/lib/metanorma/standard_document/metadata/ics_type.rb +0 -26
- data/lib/metanorma/standard_document/metadata/metanorma_extension.rb +0 -26
- data/lib/metanorma/standard_document/metadata/presentation_metadata.rb +0 -107
- data/lib/metanorma/standard_document/metadata/semantic_metadata.rb +0 -18
- data/lib/metanorma/standard_document/metadata/standard_bib_data.rb +0 -25
- data/lib/metanorma/standard_document/metadata/standard_bib_data_extension_type.rb +0 -37
- data/lib/metanorma/standard_document/metadata/structured_identifier_type.rb +0 -48
- data/lib/metanorma/standard_document/metadata/technical_committee_type.rb +0 -27
- data/lib/metanorma/standard_document/metadata/unitsml/amount_of_substance.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/base_quantity.rb +0 -34
- data/lib/metanorma/standard_document/metadata/unitsml/dimension.rb +0 -39
- data/lib/metanorma/standard_document/metadata/unitsml/dimension_set.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/electric_current.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/enumerated_root_unit.rb +0 -23
- data/lib/metanorma/standard_document/metadata/unitsml/length.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/luminous_intensity.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/mass.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/namespace.rb +0 -17
- data/lib/metanorma/standard_document/metadata/unitsml/plane_angle.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/prefix.rb +0 -30
- data/lib/metanorma/standard_document/metadata/unitsml/prefix_name.rb +0 -21
- data/lib/metanorma/standard_document/metadata/unitsml/prefix_set.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/prefix_symbol.rb +0 -21
- data/lib/metanorma/standard_document/metadata/unitsml/quantity.rb +0 -28
- data/lib/metanorma/standard_document/metadata/unitsml/quantity_name.rb +0 -21
- data/lib/metanorma/standard_document/metadata/unitsml/quantity_set.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/root_units.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/thermodynamic_temperature.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/time.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/unit.rb +0 -32
- data/lib/metanorma/standard_document/metadata/unitsml/unit_name.rb +0 -21
- data/lib/metanorma/standard_document/metadata/unitsml/unit_set.rb +0 -19
- data/lib/metanorma/standard_document/metadata/unitsml/unit_symbol.rb +0 -36
- data/lib/metanorma/standard_document/metadata/unitsml/unit_system.rb +0 -23
- data/lib/metanorma/standard_document/metadata/unitsml/unitsml_root.rb +0 -28
- data/lib/metanorma/standard_document/metadata/unitsml.rb +0 -39
- data/lib/metanorma/standard_document/metadata.rb +0 -23
- data/lib/metanorma/standard_document/namespace.rb +0 -11
- data/lib/metanorma/standard_document/refs/reference_to_term.rb +0 -26
- data/lib/metanorma/standard_document/refs/reference_to_termbase.rb +0 -27
- data/lib/metanorma/standard_document/refs/standoc_locality_stack.rb +0 -24
- data/lib/metanorma/standard_document/refs/standoc_reference_to_citation_element.rb +0 -27
- data/lib/metanorma/standard_document/refs/standoc_reference_to_id_element.rb +0 -36
- data/lib/metanorma/standard_document/refs/xref_case_type.rb +0 -27
- data/lib/metanorma/standard_document/refs/xref_connective_type.rb +0 -27
- data/lib/metanorma/standard_document/refs/xref_target_type.rb +0 -25
- data/lib/metanorma/standard_document/refs.rb +0 -18
- data/lib/metanorma/standard_document/root.rb +0 -10
- data/lib/metanorma/standard_document/root_attributes.rb +0 -78
- data/lib/metanorma/standard_document/sections/abstract.rb +0 -19
- data/lib/metanorma/standard_document/sections/acknowledgements.rb +0 -19
- data/lib/metanorma/standard_document/sections/annex_section.rb +0 -69
- data/lib/metanorma/standard_document/sections/bibliography_section.rb +0 -20
- data/lib/metanorma/standard_document/sections/boilerplate_type.rb +0 -32
- data/lib/metanorma/standard_document/sections/clause_hierarchical_section.rb +0 -32
- data/lib/metanorma/standard_document/sections/clause_section.rb +0 -91
- data/lib/metanorma/standard_document/sections/colophon.rb +0 -16
- data/lib/metanorma/standard_document/sections/definition_section.rb +0 -72
- data/lib/metanorma/standard_document/sections/floating_section_title.rb +0 -23
- data/lib/metanorma/standard_document/sections/floating_title.rb +0 -27
- data/lib/metanorma/standard_document/sections/foreword.rb +0 -19
- data/lib/metanorma/standard_document/sections/introduction.rb +0 -20
- data/lib/metanorma/standard_document/sections/misc_container.rb +0 -31
- data/lib/metanorma/standard_document/sections/normative_type.rb +0 -29
- data/lib/metanorma/standard_document/sections/preface.rb +0 -36
- data/lib/metanorma/standard_document/sections/sections.rb +0 -47
- data/lib/metanorma/standard_document/sections/standard_content_section.rb +0 -41
- data/lib/metanorma/standard_document/sections/standard_hierarchical_section.rb +0 -30
- data/lib/metanorma/standard_document/sections/standard_references_section.rb +0 -74
- data/lib/metanorma/standard_document/sections/standard_section.rb +0 -39
- data/lib/metanorma/standard_document/sections/terms_section.rb +0 -61
- data/lib/metanorma/standard_document/sections.rb +0 -34
- data/lib/metanorma/standard_document/standard_document_type.rb +0 -15
- data/lib/metanorma/standard_document/terms/abbreviation_type.rb +0 -27
- data/lib/metanorma/standard_document/terms/concept.rb +0 -42
- data/lib/metanorma/standard_document/terms/definition_collection.rb +0 -24
- data/lib/metanorma/standard_document/terms/designation.rb +0 -31
- data/lib/metanorma/standard_document/terms/expression_designation.rb +0 -38
- data/lib/metanorma/standard_document/terms/expression_type.rb +0 -27
- data/lib/metanorma/standard_document/terms/grammar_gender.rb +0 -27
- data/lib/metanorma/standard_document/terms/grammar_info.rb +0 -36
- data/lib/metanorma/standard_document/terms/graphical_symbol_designation.rb +0 -25
- data/lib/metanorma/standard_document/terms/letter_symbol_designation.rb +0 -27
- data/lib/metanorma/standard_document/terms/non_verbal_representation.rb +0 -33
- data/lib/metanorma/standard_document/terms/related_term.rb +0 -31
- data/lib/metanorma/standard_document/terms/related_term_type.rb +0 -28
- data/lib/metanorma/standard_document/terms/term.rb +0 -66
- data/lib/metanorma/standard_document/terms/term_collection.rb +0 -24
- data/lib/metanorma/standard_document/terms/term_definition.rb +0 -29
- data/lib/metanorma/standard_document/terms/term_expression.rb +0 -20
- data/lib/metanorma/standard_document/terms/term_name_element.rb +0 -29
- data/lib/metanorma/standard_document/terms/term_source.rb +0 -29
- data/lib/metanorma/standard_document/terms/term_source_status.rb +0 -29
- data/lib/metanorma/standard_document/terms/term_source_type.rb +0 -21
- data/lib/metanorma/standard_document/terms/verbal_expression.rb +0 -35
- data/lib/metanorma/standard_document/terms.rb +0 -33
- data/lib/metanorma/standard_document.rb +0 -27
- data/lib/metanorma/un_document/blocks/un_admonition_block.rb +0 -86
- data/lib/metanorma/un_document/blocks.rb +0 -9
- data/lib/metanorma/un_document/metadata/un_bib_data_extension_type.rb +0 -10
- data/lib/metanorma/un_document/metadata/un_bibliographic_item.rb +0 -15
- data/lib/metanorma/un_document/metadata.rb +0 -12
- data/lib/metanorma/un_document/root.rb +0 -37
- data/lib/metanorma/un_document/sections/un_abstract_section.rb +0 -48
- data/lib/metanorma/un_document/sections/un_preface.rb +0 -40
- data/lib/metanorma/un_document/sections/un_sections.rb +0 -24
- data/lib/metanorma/un_document/sections.rb +0 -11
- data/lib/metanorma/un_document/un_text_element.rb +0 -116
- data/lib/metanorma/un_document.rb +0 -13
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Metanorma
|
|
4
|
+
module DocumentCollection
|
|
5
|
+
autoload :Root, "metanorma/document_collection/root"
|
|
6
|
+
autoload :Directive, "metanorma/document_collection/directive"
|
|
7
|
+
autoload :Entry, "metanorma/document_collection/entry"
|
|
8
|
+
autoload :DocContainer, "metanorma/document_collection/doc_container"
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -13,16 +13,8 @@ module Metanorma
|
|
|
13
13
|
autoload :PubidRenderer, "metanorma/html/renderers/pubid_renderer"
|
|
14
14
|
autoload :ElementOrderTraversal,
|
|
15
15
|
"metanorma/html/renderers/element_order_traversal"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
module Concerns
|
|
19
|
-
autoload :MetadataExtraction,
|
|
20
|
-
"metanorma/html/concerns/metadata_extraction"
|
|
21
|
-
autoload :PresentationValidation,
|
|
22
|
-
"metanorma/html/concerns/presentation_validation"
|
|
23
|
-
autoload :SvgProcessing, "metanorma/html/concerns/svg_processing"
|
|
24
|
-
autoload :TextExtraction, "metanorma/html/concerns/text_extraction"
|
|
25
|
-
autoload :TocRegistry, "metanorma/html/concerns/toc_registry"
|
|
16
|
+
autoload :SemanticRenderer,
|
|
17
|
+
"metanorma/html/renderers/semantic_renderer"
|
|
26
18
|
end
|
|
27
19
|
|
|
28
20
|
class BaseRenderer
|
|
@@ -69,7 +61,8 @@ module Metanorma
|
|
|
69
61
|
end
|
|
70
62
|
|
|
71
63
|
def register_render(type_class, method_name)
|
|
72
|
-
|
|
64
|
+
resolved = resolve_type(type_class)
|
|
65
|
+
render_registry[resolved] = method_name if resolved
|
|
73
66
|
end
|
|
74
67
|
|
|
75
68
|
def inline_registry
|
|
@@ -77,12 +70,32 @@ module Metanorma
|
|
|
77
70
|
end
|
|
78
71
|
|
|
79
72
|
def register_inline_render(type_class, method_name)
|
|
80
|
-
|
|
73
|
+
resolved = resolve_type(type_class)
|
|
74
|
+
inline_registry[resolved] = method_name if resolved
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# type_class may be a Class or a String constant name. String form
|
|
78
|
+
# requires the owning flavor gem, then resolves; if the gem is not
|
|
79
|
+
# installed the registration is skipped (that flavor cannot be
|
|
80
|
+
# rendered in this process anyway).
|
|
81
|
+
def resolve_type(type_class)
|
|
82
|
+
return type_class unless type_class.is_a?(String)
|
|
83
|
+
|
|
84
|
+
flavor = type_class.split("::")[1].to_s.downcase
|
|
85
|
+
begin
|
|
86
|
+
require "metanorma/#{flavor}/document"
|
|
87
|
+
rescue LoadError
|
|
88
|
+
nil
|
|
89
|
+
end
|
|
90
|
+
Object.const_defined?(type_class) ? Object.const_get(type_class) : nil
|
|
81
91
|
end
|
|
82
92
|
end
|
|
83
93
|
|
|
84
94
|
attr_reader :inline_renderer, :block_renderer, :section_renderer,
|
|
85
95
|
:pubid_renderer, :index_term_collector, :footnote_collector
|
|
96
|
+
# While a table renders: table-scoped <fn>s collect here and lift
|
|
97
|
+
# into the table's visible footnotes row instead of endnote popups.
|
|
98
|
+
attr_accessor :table_fn_context
|
|
86
99
|
private :inline_renderer, :block_renderer, :section_renderer,
|
|
87
100
|
:pubid_renderer
|
|
88
101
|
|
|
@@ -109,10 +122,10 @@ module Metanorma
|
|
|
109
122
|
end
|
|
110
123
|
|
|
111
124
|
def render_paragraph(...) = @renderer.render_paragraph(...)
|
|
112
|
-
def render_inline_element(...)= @renderer.render_inline_element(...)
|
|
113
|
-
def render_unordered_list(...)= @renderer.render_unordered_list(...)
|
|
114
|
-
def render_ordered_list(...)= @renderer.render_ordered_list(...)
|
|
115
|
-
def render_definition_list(...)= @renderer.render_definition_list(...)
|
|
125
|
+
def render_inline_element(...) = @renderer.render_inline_element(...)
|
|
126
|
+
def render_unordered_list(...) = @renderer.render_unordered_list(...)
|
|
127
|
+
def render_ordered_list(...) = @renderer.render_ordered_list(...)
|
|
128
|
+
def render_definition_list(...) = @renderer.render_definition_list(...)
|
|
116
129
|
def render_sourcecode(...) = @renderer.render_sourcecode(...)
|
|
117
130
|
def render_table(...) = @renderer.render_table(...)
|
|
118
131
|
def render_figure(...) = @renderer.render_figure(...)
|
|
@@ -120,10 +133,11 @@ module Metanorma
|
|
|
120
133
|
def render_formula(...) = @renderer.render_formula(...)
|
|
121
134
|
def render_note(...) = @renderer.render_note(...)
|
|
122
135
|
def render_image(...) = @renderer.render_image(...)
|
|
123
|
-
def render_stem_content(...)= @renderer.render_stem_content(...)
|
|
124
|
-
def register_figure_entry(...)= @renderer.register_figure_entry(...)
|
|
136
|
+
def render_stem_content(...) = @renderer.render_stem_content(...)
|
|
137
|
+
def register_figure_entry(...) = @renderer.register_figure_entry(...)
|
|
125
138
|
def render_note_children(...) = @renderer.render_note_children(...)
|
|
126
139
|
def render_simple_children(...) = @renderer.render_simple_children(...)
|
|
140
|
+
def render_admonition_children(...) = @renderer.render_admonition_children(...)
|
|
127
141
|
def render_full_block_children(...) = @renderer.render_full_block_children(...)
|
|
128
142
|
def render_label_paragraph(...) = @renderer.render_label_paragraph(...)
|
|
129
143
|
end
|
|
@@ -135,6 +149,7 @@ module Metanorma
|
|
|
135
149
|
attr_writer :document, :theme
|
|
136
150
|
|
|
137
151
|
def generate_full_document(document, theme: nil, **)
|
|
152
|
+
Metanorma::Html.seed_flavors!
|
|
138
153
|
@document = document
|
|
139
154
|
@theme_override = theme
|
|
140
155
|
validate_presentation_xml!
|
|
@@ -183,7 +198,7 @@ module Metanorma
|
|
|
183
198
|
def flavor_name
|
|
184
199
|
return nil unless defined?(@document) && @document
|
|
185
200
|
|
|
186
|
-
Metanorma::
|
|
201
|
+
Metanorma::Core::Flavors.flavor_for(@document)&.name
|
|
187
202
|
end
|
|
188
203
|
|
|
189
204
|
# Pubid module for the current document's flavor, or nil if the
|
|
@@ -191,7 +206,7 @@ module Metanorma
|
|
|
191
206
|
def pubid_module
|
|
192
207
|
return nil unless defined?(@document) && @document
|
|
193
208
|
|
|
194
|
-
Metanorma::
|
|
209
|
+
Metanorma::Core::Flavors.flavor_for(@document)&.pubid_module_const
|
|
195
210
|
end
|
|
196
211
|
|
|
197
212
|
def flavor_publishers(_doc_id)
|
|
@@ -382,7 +397,7 @@ module Metanorma
|
|
|
382
397
|
:render_note
|
|
383
398
|
register_render Metanorma::Document::Components::AncillaryBlocks::ExampleBlock,
|
|
384
399
|
:render_example
|
|
385
|
-
register_render Metanorma::
|
|
400
|
+
register_render "Metanorma::Standoc::Document::Blocks::Form",
|
|
386
401
|
:render_form
|
|
387
402
|
register_render Metanorma::Document::Components::AncillaryBlocks::SourcecodeBlock,
|
|
388
403
|
:render_sourcecode
|
|
@@ -404,6 +419,12 @@ module Metanorma
|
|
|
404
419
|
:render_bookmark
|
|
405
420
|
register_render Metanorma::Document::Components::Inline::SemxElement,
|
|
406
421
|
:render_semx_content
|
|
422
|
+
register_render Metanorma::Document::Components::Inline::ColumnbreakElement,
|
|
423
|
+
:render_columnbreak
|
|
424
|
+
register_render Metanorma::Document::Components::AncillaryBlocks::SvgmapElement,
|
|
425
|
+
:render_svgmap
|
|
426
|
+
register_render Metanorma::Document::Components::AncillaryBlocks::ImagemapElement,
|
|
427
|
+
:render_imagemap
|
|
407
428
|
|
|
408
429
|
register_inline_render Metanorma::Document::Components::Inline::EmRawElement,
|
|
409
430
|
:render_em
|
|
@@ -423,14 +444,18 @@ module Metanorma
|
|
|
423
444
|
:render_strike
|
|
424
445
|
register_inline_render Metanorma::Document::Components::Inline::BrElement,
|
|
425
446
|
:render_br
|
|
447
|
+
register_inline_render Metanorma::Document::Components::TextElements::RubyElement,
|
|
448
|
+
:render_ruby
|
|
449
|
+
register_inline_render Metanorma::Document::Components::Inline::ColumnbreakElement,
|
|
450
|
+
:render_columnbreak
|
|
426
451
|
register_inline_render Metanorma::Document::Components::Inline::TabElement,
|
|
427
452
|
:render_tab
|
|
428
453
|
register_inline_render Metanorma::Document::Components::Inline::LinkElement,
|
|
429
454
|
:render_link
|
|
430
455
|
register_inline_render Metanorma::Document::Components::Inline::XrefElement,
|
|
431
|
-
:
|
|
456
|
+
:render_xref
|
|
432
457
|
register_inline_render Metanorma::Document::Components::Inline::ErefElement,
|
|
433
|
-
:
|
|
458
|
+
:render_eref
|
|
434
459
|
register_inline_render Metanorma::Document::Components::Inline::SpanElement,
|
|
435
460
|
:render_span
|
|
436
461
|
register_inline_render Metanorma::Document::Components::Inline::FnElement,
|
|
@@ -438,7 +463,7 @@ module Metanorma
|
|
|
438
463
|
register_inline_render Metanorma::Document::Components::Inline::ConceptElement,
|
|
439
464
|
:render_concept
|
|
440
465
|
register_inline_render Metanorma::Document::Components::Inline::StemInlineElement,
|
|
441
|
-
:
|
|
466
|
+
:render_stem_inline
|
|
442
467
|
register_inline_render Metanorma::Document::Components::TextElements::StemElement,
|
|
443
468
|
:render_stem
|
|
444
469
|
register_inline_render Metanorma::Document::Components::Inline::SemxElement,
|
|
@@ -449,7 +474,11 @@ module Metanorma
|
|
|
449
474
|
:render_fmt_stem
|
|
450
475
|
register_inline_render Metanorma::Document::Components::Inline::CommaElement,
|
|
451
476
|
:render_comma
|
|
452
|
-
register_inline_render Metanorma::
|
|
477
|
+
register_inline_render Metanorma::Document::Components::Inline::ReftermElement,
|
|
478
|
+
:render_refterm
|
|
479
|
+
register_inline_render Metanorma::Document::Components::Inline::FmtPreferredElement,
|
|
480
|
+
:render_fmt_preferred_inline
|
|
481
|
+
register_inline_render "Metanorma::Standoc::Document::Elements::Input",
|
|
453
482
|
:render_input
|
|
454
483
|
register_inline_render Metanorma::Document::Components::Inline::EnumCommaElement,
|
|
455
484
|
:render_comma
|
|
@@ -473,6 +502,8 @@ module Metanorma
|
|
|
473
502
|
# Grouped here so adding a new transparent wrapper is one entry,
|
|
474
503
|
# not another register_inline_render line. Classes with a more
|
|
475
504
|
# specific handler register themselves above.
|
|
505
|
+
FN_BLOCK_ATTRS = %i[ul ol table].freeze
|
|
506
|
+
|
|
476
507
|
TRANSPARENT_INLINE_WRAPPERS = [
|
|
477
508
|
Metanorma::Document::Components::Inline::FmtNameElement,
|
|
478
509
|
Metanorma::Document::Components::Inline::FmtTitleElement,
|
|
@@ -514,6 +545,12 @@ module Metanorma
|
|
|
514
545
|
# through when it appears in block context.
|
|
515
546
|
register_render Metanorma::Document::Components::Inline::FmtXrefLabelElement,
|
|
516
547
|
:render_block_inline_content
|
|
548
|
+
# Annotation boundary markers fence an annotated region; they carry
|
|
549
|
+
# no renderable content of their own at block dispatch.
|
|
550
|
+
register_render Metanorma::Document::Components::Inline::FmtAnnotationStartElement,
|
|
551
|
+
:render_noop
|
|
552
|
+
register_render Metanorma::Document::Components::Inline::FmtAnnotationEndElement,
|
|
553
|
+
:render_noop
|
|
517
554
|
|
|
518
555
|
def lookup_dispatch(type_class, registry_method)
|
|
519
556
|
# Registry contents are fixed once renderer classes are loaded, so
|
|
@@ -541,6 +578,10 @@ module Metanorma
|
|
|
541
578
|
""
|
|
542
579
|
end
|
|
543
580
|
|
|
581
|
+
def render_columnbreak(*)
|
|
582
|
+
render_liquid("_columnbreak.html.liquid", {})
|
|
583
|
+
end
|
|
584
|
+
|
|
544
585
|
# Block-dispatch entry point for inline content reached as a direct
|
|
545
586
|
# child of a block container (render passes keyword args; the inline
|
|
546
587
|
# pipeline does not accept them).
|
|
@@ -559,6 +600,9 @@ module Metanorma
|
|
|
559
600
|
@inline_renderer.walk_ordered(node, allow_filter: allow_filter, &)
|
|
560
601
|
end
|
|
561
602
|
|
|
603
|
+
def footnote_label_text(fn) = @inline_renderer.footnote_label_text(fn)
|
|
604
|
+
def fn_content_html(fn) = @inline_renderer.fn_content_html(fn)
|
|
605
|
+
|
|
562
606
|
def render_mixed_inline(node)
|
|
563
607
|
@inline_renderer.render_mixed_inline(node)
|
|
564
608
|
end
|
|
@@ -573,11 +617,15 @@ module Metanorma
|
|
|
573
617
|
def render_underline(el) = @inline_renderer.render_underline(el)
|
|
574
618
|
def render_strike(el) = @inline_renderer.render_strike(el)
|
|
575
619
|
def render_br(*) = @inline_renderer.render_br
|
|
620
|
+
def render_ruby(el) = @inline_renderer.render_ruby(el)
|
|
576
621
|
def render_tab(*) = @inline_renderer.render_tab
|
|
577
622
|
def render_span(el) = @inline_renderer.render_span(el)
|
|
578
623
|
def render_fn_inline(el) = @inline_renderer.render_fn_inline(el)
|
|
579
624
|
def render_stem(el) = @inline_renderer.render_stem(el)
|
|
625
|
+
def render_stem_inline(el) = @inline_renderer.render_stem_inline(el)
|
|
580
626
|
def render_semx_inline(el) = @inline_renderer.render_semx_inline(el)
|
|
627
|
+
def render_refterm(el) = @inline_renderer.render_refterm(el)
|
|
628
|
+
def render_fmt_preferred_inline(el) = @inline_renderer.render_fmt_preferred_inline(el)
|
|
581
629
|
def render_fmt_xref(el) = @inline_renderer.render_fmt_xref(el)
|
|
582
630
|
def render_comma(*) = @inline_renderer.render_comma
|
|
583
631
|
def render_input(el) = @inline_renderer.render_input(el)
|
|
@@ -626,6 +674,16 @@ module Metanorma
|
|
|
626
674
|
@block_renderer.render_definition_list(dl, **)
|
|
627
675
|
end
|
|
628
676
|
|
|
677
|
+
def render_svgmap(svgmap,
|
|
678
|
+
**)
|
|
679
|
+
@block_renderer.render_svgmap(svgmap, **)
|
|
680
|
+
end
|
|
681
|
+
|
|
682
|
+
def render_imagemap(imagemap,
|
|
683
|
+
**)
|
|
684
|
+
@block_renderer.render_imagemap(imagemap, **)
|
|
685
|
+
end
|
|
686
|
+
|
|
629
687
|
def render_figure(figure,
|
|
630
688
|
**)
|
|
631
689
|
@block_renderer.render_figure(figure, **)
|
|
@@ -675,6 +733,7 @@ children:, **)
|
|
|
675
733
|
|
|
676
734
|
def render_note_children(model) = @block_renderer.render_note_children(model)
|
|
677
735
|
def render_simple_children(model) = @block_renderer.render_simple_children(model)
|
|
736
|
+
def render_admonition_children(model) = @block_renderer.render_admonition_children(model)
|
|
678
737
|
|
|
679
738
|
def render_full_block_children(model, **)
|
|
680
739
|
@block_renderer.render_full_block_children(model, **)
|
|
@@ -832,6 +891,16 @@ level = 1)
|
|
|
832
891
|
render_paragraph(p)
|
|
833
892
|
end.join
|
|
834
893
|
end
|
|
894
|
+
# Footnotes may carry list/table block children (OIML R 7's
|
|
895
|
+
# bibliography lives inside footnote 3) — the native aside
|
|
896
|
+
# renders them, so the end-of-document entry must too.
|
|
897
|
+
FN_BLOCK_ATTRS.each do |attr|
|
|
898
|
+
next unless entry.source_fn.respond_to?(attr)
|
|
899
|
+
|
|
900
|
+
Array(entry.source_fn.public_send(attr)).each do |block|
|
|
901
|
+
content_html << (render(block) || "")
|
|
902
|
+
end
|
|
903
|
+
end
|
|
835
904
|
Drops::FootnoteDrop.new(entry, content_html)
|
|
836
905
|
end
|
|
837
906
|
|
|
@@ -4,37 +4,38 @@ module Metanorma
|
|
|
4
4
|
module Html
|
|
5
5
|
module Component
|
|
6
6
|
# Collects footnote content encountered during rendering.
|
|
7
|
-
# Deduplicates by
|
|
8
|
-
# appears once, even when
|
|
7
|
+
# Deduplicates by footnote definition (target id, falling back to the
|
|
8
|
+
# fn id/reference) so each definition appears once, even when several
|
|
9
|
+
# <fn> references with differing reference attrs point at it.
|
|
9
10
|
class FootnoteCollector
|
|
10
11
|
def initialize
|
|
11
12
|
@footnotes = []
|
|
12
|
-
@
|
|
13
|
-
@id_map = {}
|
|
13
|
+
@entries_by_key = {}
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
# Register a footnote and return its
|
|
17
|
-
#
|
|
18
|
-
|
|
16
|
+
# Register a footnote and return its FootnoteEntry.
|
|
17
|
+
# +label_text+ is the fn's presentation autonum label; the first
|
|
18
|
+
# registration's label wins.
|
|
19
|
+
def register(fn, label_text: nil)
|
|
19
20
|
fn_id = fn.id || fn.reference.to_s
|
|
20
|
-
|
|
21
|
+
key = fn.respond_to?(:target) && fn.target && !fn.target.empty? ? fn.target : fn_id
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return
|
|
23
|
+
if (seen = @entries_by_key[key])
|
|
24
|
+
seen.fmt_label ||= label_text
|
|
25
|
+
return seen
|
|
25
26
|
end
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
@ref_map[ref] = number
|
|
29
|
-
@id_map[fn_id] = number
|
|
30
|
-
@footnotes << FootnoteEntry.new(
|
|
28
|
+
entry = FootnoteEntry.new(
|
|
31
29
|
id: fn_id,
|
|
32
|
-
number:
|
|
33
|
-
reference:
|
|
30
|
+
number: @footnotes.size + 1,
|
|
31
|
+
reference: fn.reference.to_s,
|
|
34
32
|
content: fn.p,
|
|
35
|
-
fmt_label:
|
|
33
|
+
fmt_label: label_text,
|
|
34
|
+
source_fn: fn,
|
|
36
35
|
)
|
|
37
|
-
|
|
36
|
+
@footnotes << entry
|
|
37
|
+
@entries_by_key[key] = entry
|
|
38
|
+
entry
|
|
38
39
|
end
|
|
39
40
|
|
|
40
41
|
def empty?
|
|
@@ -51,7 +52,7 @@ module Metanorma
|
|
|
51
52
|
end
|
|
52
53
|
|
|
53
54
|
FootnoteEntry = Struct.new(:id, :number, :reference, :content, :fmt_label,
|
|
54
|
-
keyword_init: true)
|
|
55
|
+
:source_fn, keyword_init: true)
|
|
55
56
|
end
|
|
56
57
|
end
|
|
57
58
|
end
|
|
@@ -13,8 +13,11 @@ module Metanorma
|
|
|
13
13
|
|
|
14
14
|
langs = bibdata.language
|
|
15
15
|
if langs && !langs.empty?
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
# Base bibdata carries plain Iso639Code entries (no
|
|
17
|
+
# `current` marker); flavor bibdata models mark one current.
|
|
18
|
+
lang = langs.find { |l| l.respond_to?(:current) && l.current == "true" } ||
|
|
19
|
+
langs.first
|
|
20
|
+
lang.respond_to?(:value) ? (lang.value || lang.to_s) : lang.to_s
|
|
18
21
|
else
|
|
19
22
|
"en"
|
|
20
23
|
end
|
|
@@ -42,7 +45,9 @@ module Metanorma
|
|
|
42
45
|
bibdata = @document.bibdata
|
|
43
46
|
return nil unless bibdata
|
|
44
47
|
|
|
45
|
-
|
|
48
|
+
# Flavor bibdata shapes diverge (e.g. IETF carries no ISO-ish
|
|
49
|
+
# doc_identifier): no id rather than a method error.
|
|
50
|
+
identifiers = safe_attr(bibdata, :doc_identifier)
|
|
46
51
|
return nil unless identifiers && !identifiers.empty?
|
|
47
52
|
|
|
48
53
|
first_id = identifiers.first
|
|
@@ -20,7 +20,7 @@ module Metanorma
|
|
|
20
20
|
|
|
21
21
|
# Name kept for API stability (public renderer API); the boolean
|
|
22
22
|
# return predates the Naming/PredicateMethod convention.
|
|
23
|
-
# rubocop:disable Naming/PredicateMethod
|
|
23
|
+
# rubocop:disable-next Naming/PredicateMethod
|
|
24
24
|
def check_presentation_markers(node)
|
|
25
25
|
return false unless node
|
|
26
26
|
return false if node.is_a?(String)
|
|
@@ -54,7 +54,6 @@ module Metanorma
|
|
|
54
54
|
|
|
55
55
|
false
|
|
56
56
|
end
|
|
57
|
-
# rubocop:enable Naming/PredicateMethod
|
|
58
57
|
end
|
|
59
58
|
end
|
|
60
59
|
end
|
|
@@ -9,55 +9,171 @@ module Metanorma
|
|
|
9
9
|
# attributes directly on the model — never strips tags from
|
|
10
10
|
# rendered HTML.
|
|
11
11
|
module TextExtraction
|
|
12
|
+
# Invisible MathML operators and joiners (word joiner, invisible
|
|
13
|
+
# times / function application, zero-width space): markup, not
|
|
14
|
+
# display text.
|
|
15
|
+
INVISIBLE_MATH_CHARS = "\u2060\u2061\u2062\u2063\u2064\u200b"
|
|
16
|
+
|
|
17
|
+
# Rendered fmt-* twins never contribute plain text alongside
|
|
18
|
+
# their semantic siblings — the pair linearizes one logical
|
|
19
|
+
# content (#51). Sibling-keyed twins skip only when the
|
|
20
|
+
# semantic element parsed; the always-skipped set are
|
|
21
|
+
# whole-block re-renderings (rendered to the exclusion of the
|
|
22
|
+
# semantic children by the overlay's own contract).
|
|
23
|
+
RENDERED_TWIN_SIBLING = {
|
|
24
|
+
"fmt-stem" => :stem,
|
|
25
|
+
"fmt-eref" => :eref,
|
|
26
|
+
"fmt-origin" => :origin,
|
|
27
|
+
}.freeze
|
|
28
|
+
RENDERED_TWIN_ALWAYS_SKIP = %w[
|
|
29
|
+
fmt-figure fmt-ul fmt-ol fmt-source fmt-date-inline
|
|
30
|
+
].freeze
|
|
31
|
+
|
|
32
|
+
# The quoted unitsml(...) macro reference names a unit symbol;
|
|
33
|
+
# its linear form is the symbol itself ("unitsml(mV/V)" ->
|
|
34
|
+
# "mV/V"). One nesting level for grouped exponents.
|
|
35
|
+
UNITSML_MACRO =
|
|
36
|
+
/"?unitsml\(([^()]*(?:\([^()]*\)[^()]*)*)\)"?/
|
|
37
|
+
|
|
38
|
+
# The source linear forms spell operators as words (AsciiMath
|
|
39
|
+
# "pm", LaTeX "\pm"); extracted display text carries the glyphs.
|
|
40
|
+
# AsciiMath reserves these tokens as operators, so a bare "pm"
|
|
41
|
+
# in an expression IS the operator; inside a larger word ("rpm")
|
|
42
|
+
# the token boundaries hold the mapping off.
|
|
43
|
+
MATH_OPERATOR_GLYPHS = {
|
|
44
|
+
asciimath: [[/\bpm\b/, "±"], [/\bmp\b/, "∓"]],
|
|
45
|
+
latexmath: [[/\\pm\b/, "±"], [/\\mp\b/, "∓"]],
|
|
46
|
+
}.freeze
|
|
47
|
+
|
|
12
48
|
def extract_plain_text(node)
|
|
13
49
|
return node.to_s if node.is_a?(String)
|
|
14
50
|
return extract_text_value(node).to_s unless node.is_a?(Lutaml::Model::Serializable)
|
|
15
51
|
|
|
16
|
-
|
|
52
|
+
# nil = not a populated stem (e.g. a semx autonum slice also
|
|
53
|
+
# declares these attributes): fall through to the walk.
|
|
54
|
+
stem = stem_text(node)
|
|
55
|
+
return stem unless stem.nil?
|
|
56
|
+
|
|
57
|
+
parts = ordered_content_parts(node)
|
|
58
|
+
if parts.join.strip.empty?
|
|
59
|
+
t = safe_attr(node, :text)
|
|
60
|
+
parts << (t.is_a?(Array) ? t.join : t.to_s) if t
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
parts.join.strip.gsub(" ", " ")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def ordered_content_parts(node)
|
|
67
|
+
return [] unless node.element_order.is_a?(Array)
|
|
68
|
+
|
|
17
69
|
xml_mapping = node.class.mappings_for(:xml, node.lutaml_register)
|
|
70
|
+
return [] unless xml_mapping
|
|
18
71
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
Renderers::ElementOrderTraversal.element_to_attr_map(xml_mapping)
|
|
72
|
+
element_to_attr =
|
|
73
|
+
Renderers::ElementOrderTraversal.element_to_attr_map(xml_mapping)
|
|
22
74
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
75
|
+
parts = []
|
|
76
|
+
indices = Hash.new(0)
|
|
77
|
+
node.element_order.each do |el|
|
|
78
|
+
next unless el.is_a?(Lutaml::Xml::Element)
|
|
26
79
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
80
|
+
if el.text?
|
|
81
|
+
parts << el.text_content.to_s
|
|
82
|
+
elsif el.name == "tab"
|
|
83
|
+
parts << " "
|
|
84
|
+
# rubocop:disable Lint/DuplicateBranch
|
|
85
|
+
elsif el.name == "br"
|
|
86
|
+
parts << " "
|
|
87
|
+
# rubocop:enable Lint/DuplicateBranch
|
|
88
|
+
elsif el.name == "rt"
|
|
89
|
+
# ruby annotation (pronunciation) rides along the base
|
|
90
|
+
# text, it is not content: display text is the base alone
|
|
91
|
+
next
|
|
92
|
+
elsif el.element?
|
|
93
|
+
next if rendered_twin?(el.name, node)
|
|
94
|
+
|
|
95
|
+
attr_name = element_to_attr[el.name]
|
|
96
|
+
if attr_name
|
|
97
|
+
coll = node.public_send(attr_name)
|
|
98
|
+
obj = if coll.is_a?(Array)
|
|
99
|
+
idx = indices[attr_name]
|
|
100
|
+
indices[attr_name] += 1
|
|
101
|
+
coll[idx]
|
|
102
|
+
else
|
|
103
|
+
coll
|
|
104
|
+
end
|
|
105
|
+
text = extract_plain_text(obj)
|
|
106
|
+
parts << (text.empty? ? " " : text)
|
|
107
|
+
elsif el.name == "span"
|
|
33
108
|
parts << " "
|
|
34
|
-
# rubocop:enable Lint/DuplicateBranch
|
|
35
|
-
elsif el.element?
|
|
36
|
-
attr_name = element_to_attr[el.name]
|
|
37
|
-
if attr_name
|
|
38
|
-
coll = node.public_send(attr_name)
|
|
39
|
-
obj = if coll.is_a?(Array)
|
|
40
|
-
idx = indices[attr_name]
|
|
41
|
-
indices[attr_name] += 1
|
|
42
|
-
coll[idx]
|
|
43
|
-
else
|
|
44
|
-
coll
|
|
45
|
-
end
|
|
46
|
-
text = extract_plain_text(obj)
|
|
47
|
-
parts << (text.empty? ? " " : text)
|
|
48
|
-
elsif el.name == "span"
|
|
49
|
-
parts << " "
|
|
50
|
-
end
|
|
51
109
|
end
|
|
52
110
|
end
|
|
53
111
|
end
|
|
112
|
+
parts
|
|
113
|
+
end
|
|
54
114
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
115
|
+
# A stem (or a semx slice of one) carries up to three
|
|
116
|
+
# serializations of a single expression: the AsciiMath source,
|
|
117
|
+
# the MathML rendering, the LaTeX source. Linearizing more than
|
|
118
|
+
# one concatenates duplicates — "30003000", 'n LCn_{"LC"}'
|
|
119
|
+
# (#51). Preference: the source linear form, then the MathML
|
|
120
|
+
# token walk. Returns nil when no form is populated — the node
|
|
121
|
+
# is then not stem-shaped content (an empty semx slice), and
|
|
122
|
+
# the caller falls back to the element_order walk.
|
|
123
|
+
def stem_text(stem)
|
|
124
|
+
return nil unless math_carrier?(stem)
|
|
125
|
+
|
|
126
|
+
populated = false
|
|
127
|
+
%i[asciimath math latexmath].each do |form|
|
|
128
|
+
value = safe_attr(stem, form)
|
|
129
|
+
next if value.nil? || (value.respond_to?(:empty?) && value.empty?)
|
|
130
|
+
|
|
131
|
+
populated = true
|
|
132
|
+
text = if form == :math
|
|
133
|
+
Array(value).map { |m| extract_plain_text(m) }.join(" ")
|
|
134
|
+
else
|
|
135
|
+
display_math_text(extract_text_value(value), form)
|
|
136
|
+
end
|
|
137
|
+
text = normalize_math_text(text)
|
|
138
|
+
return text unless text.empty?
|
|
58
139
|
end
|
|
140
|
+
populated ? "" : nil
|
|
141
|
+
end
|
|
59
142
|
|
|
60
|
-
|
|
143
|
+
def display_math_text(text, form)
|
|
144
|
+
MATH_OPERATOR_GLYPHS.fetch(form, []).reduce(text.to_s) do |acc, (pattern, glyph)|
|
|
145
|
+
acc.gsub(pattern, glyph)
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# Duck-typed stem check: any model declaring both an asciimath
|
|
150
|
+
# and a math attribute serializes one expression in multiple
|
|
151
|
+
# forms (StemInlineElement, StemElement, SemxElement).
|
|
152
|
+
def math_carrier?(node)
|
|
153
|
+
attrs = node.class.attributes
|
|
154
|
+
attrs.key?(:asciimath) && attrs.key?(:math)
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
def rendered_twin?(name, node)
|
|
158
|
+
return true if RENDERED_TWIN_ALWAYS_SKIP.include?(name)
|
|
159
|
+
|
|
160
|
+
sibling = RENDERED_TWIN_SIBLING[name] or return false
|
|
161
|
+
|
|
162
|
+
values = safe_attr(node, sibling)
|
|
163
|
+
siblings = Array(values).compact
|
|
164
|
+
return false if siblings.empty?
|
|
165
|
+
|
|
166
|
+
# The semantic form is authoritative when it carries text; an
|
|
167
|
+
# empty semantic element defers its label to the rendered
|
|
168
|
+
# twin (the overlay resolves empty erefs into fmt-eref).
|
|
169
|
+
siblings.any? { |s| !extract_plain_text(s).to_s.strip.empty? }
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def normalize_math_text(text)
|
|
173
|
+
text.to_s
|
|
174
|
+
.tr(INVISIBLE_MATH_CHARS, "")
|
|
175
|
+
.gsub(UNITSML_MACRO) { Regexp.last_match(1) }
|
|
176
|
+
.strip
|
|
61
177
|
end
|
|
62
178
|
|
|
63
179
|
def extract_text_value(val)
|
|
@@ -79,7 +195,10 @@ module Metanorma
|
|
|
79
195
|
if v
|
|
80
196
|
extract_text_value(v)
|
|
81
197
|
else
|
|
82
|
-
val.to_s
|
|
198
|
+
# NEVER fall back to val.to_s here: Serializable#to_s
|
|
199
|
+
# serializes the whole XML subtree, which over large
|
|
200
|
+
# documents costs quadratic time and memory.
|
|
201
|
+
extract_plain_text(val) || ""
|
|
83
202
|
end
|
|
84
203
|
end
|
|
85
204
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Metanorma
|
|
4
|
+
module Html
|
|
5
|
+
# Renderer concerns. Lives in its own file so any consumer (the
|
|
6
|
+
# model layer's PlainText extractor includes TextExtraction) can
|
|
7
|
+
# resolve it through the html.rb autoload — independent of whether
|
|
8
|
+
# BaseRenderer has loaded yet.
|
|
9
|
+
module Concerns
|
|
10
|
+
autoload :MetadataExtraction,
|
|
11
|
+
"metanorma/html/concerns/metadata_extraction"
|
|
12
|
+
autoload :PresentationValidation,
|
|
13
|
+
"metanorma/html/concerns/presentation_validation"
|
|
14
|
+
autoload :SvgProcessing, "metanorma/html/concerns/svg_processing"
|
|
15
|
+
autoload :TextExtraction, "metanorma/html/concerns/text_extraction"
|
|
16
|
+
autoload :TocRegistry, "metanorma/html/concerns/toc_registry"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -8,7 +8,7 @@ module Metanorma
|
|
|
8
8
|
type = renderer.safe_attr(admonition, :type) || "note"
|
|
9
9
|
id = renderer.safe_attr(admonition, :id)
|
|
10
10
|
|
|
11
|
-
content_html = renderer.
|
|
11
|
+
content_html = renderer.render_admonition_children(admonition) || ""
|
|
12
12
|
|
|
13
13
|
new(
|
|
14
14
|
id: id,
|