metanorma-document 0.5.0 → 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/stylesheets/base/_dark.css +3 -3
- data/data/stylesheets/base/_print.css +1 -1
- data/data/stylesheets/components/term.css +4 -2
- 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 +105 -28
- 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/example_drop.rb +8 -1
- data/lib/metanorma/html/drops/footnote_drop.rb +1 -1
- data/lib/metanorma/html/drops/note_drop.rb +31 -4
- 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 +246 -51
- 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 +743 -81
- 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/_example.html.liquid +1 -1
- data/lib/metanorma/html/templates/_main_content.html.liquid +1 -1
- data/lib/metanorma/html/templates/_note.html.liquid +1 -1
- data/lib/metanorma/html/templates/_paragraph.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/templates/_term_number.html.liquid +1 -1
- 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,11 +133,13 @@ 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(...)
|
|
142
|
+
def render_label_paragraph(...) = @renderer.render_label_paragraph(...)
|
|
128
143
|
end
|
|
129
144
|
|
|
130
145
|
def renderer_context
|
|
@@ -134,6 +149,7 @@ module Metanorma
|
|
|
134
149
|
attr_writer :document, :theme
|
|
135
150
|
|
|
136
151
|
def generate_full_document(document, theme: nil, **)
|
|
152
|
+
Metanorma::Html.seed_flavors!
|
|
137
153
|
@document = document
|
|
138
154
|
@theme_override = theme
|
|
139
155
|
validate_presentation_xml!
|
|
@@ -182,7 +198,7 @@ module Metanorma
|
|
|
182
198
|
def flavor_name
|
|
183
199
|
return nil unless defined?(@document) && @document
|
|
184
200
|
|
|
185
|
-
Metanorma::
|
|
201
|
+
Metanorma::Core::Flavors.flavor_for(@document)&.name
|
|
186
202
|
end
|
|
187
203
|
|
|
188
204
|
# Pubid module for the current document's flavor, or nil if the
|
|
@@ -190,7 +206,7 @@ module Metanorma
|
|
|
190
206
|
def pubid_module
|
|
191
207
|
return nil unless defined?(@document) && @document
|
|
192
208
|
|
|
193
|
-
Metanorma::
|
|
209
|
+
Metanorma::Core::Flavors.flavor_for(@document)&.pubid_module_const
|
|
194
210
|
end
|
|
195
211
|
|
|
196
212
|
def flavor_publishers(_doc_id)
|
|
@@ -381,7 +397,7 @@ module Metanorma
|
|
|
381
397
|
:render_note
|
|
382
398
|
register_render Metanorma::Document::Components::AncillaryBlocks::ExampleBlock,
|
|
383
399
|
:render_example
|
|
384
|
-
register_render Metanorma::
|
|
400
|
+
register_render "Metanorma::Standoc::Document::Blocks::Form",
|
|
385
401
|
:render_form
|
|
386
402
|
register_render Metanorma::Document::Components::AncillaryBlocks::SourcecodeBlock,
|
|
387
403
|
:render_sourcecode
|
|
@@ -403,6 +419,12 @@ module Metanorma
|
|
|
403
419
|
:render_bookmark
|
|
404
420
|
register_render Metanorma::Document::Components::Inline::SemxElement,
|
|
405
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
|
|
406
428
|
|
|
407
429
|
register_inline_render Metanorma::Document::Components::Inline::EmRawElement,
|
|
408
430
|
:render_em
|
|
@@ -422,14 +444,18 @@ module Metanorma
|
|
|
422
444
|
:render_strike
|
|
423
445
|
register_inline_render Metanorma::Document::Components::Inline::BrElement,
|
|
424
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
|
|
425
451
|
register_inline_render Metanorma::Document::Components::Inline::TabElement,
|
|
426
452
|
:render_tab
|
|
427
453
|
register_inline_render Metanorma::Document::Components::Inline::LinkElement,
|
|
428
454
|
:render_link
|
|
429
455
|
register_inline_render Metanorma::Document::Components::Inline::XrefElement,
|
|
430
|
-
:
|
|
456
|
+
:render_xref
|
|
431
457
|
register_inline_render Metanorma::Document::Components::Inline::ErefElement,
|
|
432
|
-
:
|
|
458
|
+
:render_eref
|
|
433
459
|
register_inline_render Metanorma::Document::Components::Inline::SpanElement,
|
|
434
460
|
:render_span
|
|
435
461
|
register_inline_render Metanorma::Document::Components::Inline::FnElement,
|
|
@@ -437,7 +463,7 @@ module Metanorma
|
|
|
437
463
|
register_inline_render Metanorma::Document::Components::Inline::ConceptElement,
|
|
438
464
|
:render_concept
|
|
439
465
|
register_inline_render Metanorma::Document::Components::Inline::StemInlineElement,
|
|
440
|
-
:
|
|
466
|
+
:render_stem_inline
|
|
441
467
|
register_inline_render Metanorma::Document::Components::TextElements::StemElement,
|
|
442
468
|
:render_stem
|
|
443
469
|
register_inline_render Metanorma::Document::Components::Inline::SemxElement,
|
|
@@ -448,7 +474,11 @@ module Metanorma
|
|
|
448
474
|
:render_fmt_stem
|
|
449
475
|
register_inline_render Metanorma::Document::Components::Inline::CommaElement,
|
|
450
476
|
:render_comma
|
|
451
|
-
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",
|
|
452
482
|
:render_input
|
|
453
483
|
register_inline_render Metanorma::Document::Components::Inline::EnumCommaElement,
|
|
454
484
|
:render_comma
|
|
@@ -472,6 +502,8 @@ module Metanorma
|
|
|
472
502
|
# Grouped here so adding a new transparent wrapper is one entry,
|
|
473
503
|
# not another register_inline_render line. Classes with a more
|
|
474
504
|
# specific handler register themselves above.
|
|
505
|
+
FN_BLOCK_ATTRS = %i[ul ol table].freeze
|
|
506
|
+
|
|
475
507
|
TRANSPARENT_INLINE_WRAPPERS = [
|
|
476
508
|
Metanorma::Document::Components::Inline::FmtNameElement,
|
|
477
509
|
Metanorma::Document::Components::Inline::FmtTitleElement,
|
|
@@ -513,6 +545,12 @@ module Metanorma
|
|
|
513
545
|
# through when it appears in block context.
|
|
514
546
|
register_render Metanorma::Document::Components::Inline::FmtXrefLabelElement,
|
|
515
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
|
|
516
554
|
|
|
517
555
|
def lookup_dispatch(type_class, registry_method)
|
|
518
556
|
# Registry contents are fixed once renderer classes are loaded, so
|
|
@@ -540,6 +578,10 @@ module Metanorma
|
|
|
540
578
|
""
|
|
541
579
|
end
|
|
542
580
|
|
|
581
|
+
def render_columnbreak(*)
|
|
582
|
+
render_liquid("_columnbreak.html.liquid", {})
|
|
583
|
+
end
|
|
584
|
+
|
|
543
585
|
# Block-dispatch entry point for inline content reached as a direct
|
|
544
586
|
# child of a block container (render passes keyword args; the inline
|
|
545
587
|
# pipeline does not accept them).
|
|
@@ -558,6 +600,9 @@ module Metanorma
|
|
|
558
600
|
@inline_renderer.walk_ordered(node, allow_filter: allow_filter, &)
|
|
559
601
|
end
|
|
560
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
|
+
|
|
561
606
|
def render_mixed_inline(node)
|
|
562
607
|
@inline_renderer.render_mixed_inline(node)
|
|
563
608
|
end
|
|
@@ -572,11 +617,15 @@ module Metanorma
|
|
|
572
617
|
def render_underline(el) = @inline_renderer.render_underline(el)
|
|
573
618
|
def render_strike(el) = @inline_renderer.render_strike(el)
|
|
574
619
|
def render_br(*) = @inline_renderer.render_br
|
|
620
|
+
def render_ruby(el) = @inline_renderer.render_ruby(el)
|
|
575
621
|
def render_tab(*) = @inline_renderer.render_tab
|
|
576
622
|
def render_span(el) = @inline_renderer.render_span(el)
|
|
577
623
|
def render_fn_inline(el) = @inline_renderer.render_fn_inline(el)
|
|
578
624
|
def render_stem(el) = @inline_renderer.render_stem(el)
|
|
625
|
+
def render_stem_inline(el) = @inline_renderer.render_stem_inline(el)
|
|
579
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)
|
|
580
629
|
def render_fmt_xref(el) = @inline_renderer.render_fmt_xref(el)
|
|
581
630
|
def render_comma(*) = @inline_renderer.render_comma
|
|
582
631
|
def render_input(el) = @inline_renderer.render_input(el)
|
|
@@ -625,6 +674,16 @@ module Metanorma
|
|
|
625
674
|
@block_renderer.render_definition_list(dl, **)
|
|
626
675
|
end
|
|
627
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
|
+
|
|
628
687
|
def render_figure(figure,
|
|
629
688
|
**)
|
|
630
689
|
@block_renderer.render_figure(figure, **)
|
|
@@ -668,13 +727,21 @@ module Metanorma
|
|
|
668
727
|
end
|
|
669
728
|
|
|
670
729
|
def render_block_children(model,
|
|
671
|
-
children
|
|
672
|
-
@block_renderer.render_block_children(model, children: children)
|
|
730
|
+
children:, **)
|
|
731
|
+
@block_renderer.render_block_children(model, children: children, **)
|
|
673
732
|
end
|
|
674
733
|
|
|
675
734
|
def render_note_children(model) = @block_renderer.render_note_children(model)
|
|
676
735
|
def render_simple_children(model) = @block_renderer.render_simple_children(model)
|
|
677
|
-
def
|
|
736
|
+
def render_admonition_children(model) = @block_renderer.render_admonition_children(model)
|
|
737
|
+
|
|
738
|
+
def render_full_block_children(model, **)
|
|
739
|
+
@block_renderer.render_full_block_children(model, **)
|
|
740
|
+
end
|
|
741
|
+
|
|
742
|
+
def render_label_paragraph(content_html, **)
|
|
743
|
+
@block_renderer.render_label_paragraph(content_html, **)
|
|
744
|
+
end
|
|
678
745
|
|
|
679
746
|
# Section rendering delegation
|
|
680
747
|
def render_basic_section(section,
|
|
@@ -824,6 +891,16 @@ level = 1)
|
|
|
824
891
|
render_paragraph(p)
|
|
825
892
|
end.join
|
|
826
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
|
|
827
904
|
Drops::FootnoteDrop.new(entry, content_html)
|
|
828
905
|
end
|
|
829
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,
|