pubid 2.0.0.pre.alpha.2 → 2.0.0.pre.alpha.3
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 +5 -1
- data/data/nist/update_codes.yaml +25 -0
- data/lib/pubid/amca/builder.rb +2 -2
- data/lib/pubid/amca/identifier.rb +7 -39
- data/lib/pubid/amca/identifiers/base.rb +0 -26
- data/lib/pubid/amca/identifiers/interpretation.rb +0 -17
- data/lib/pubid/amca/identifiers/publication.rb +0 -13
- data/lib/pubid/amca/renderer.rb +82 -0
- data/lib/pubid/amca/single_identifier.rb +0 -23
- data/lib/pubid/amca/urn_parser.rb +28 -0
- data/lib/pubid/amca.rb +42 -1
- data/lib/pubid/ansi/builder.rb +5 -3
- data/lib/pubid/ansi/identifier.rb +1 -43
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +2 -1
- data/lib/pubid/ansi/identifiers/standard.rb +2 -3
- data/lib/pubid/ansi/renderer.rb +53 -0
- data/lib/pubid/ansi/single_identifier.rb +2 -31
- data/lib/pubid/ansi/urn_generator.rb +3 -38
- data/lib/pubid/ansi/urn_parser.rb +23 -0
- data/lib/pubid/ansi.rb +38 -3
- data/lib/pubid/api/builder.rb +29 -74
- data/lib/pubid/api/identifier.rb +0 -51
- data/lib/pubid/api/identifiers/base.rb +0 -2
- data/lib/pubid/api/identifiers/bulletin.rb +0 -2
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +0 -2
- data/lib/pubid/api/identifiers/mpms.rb +1 -17
- data/lib/pubid/api/identifiers/publication.rb +0 -2
- data/lib/pubid/api/identifiers/recommended_practice.rb +0 -2
- data/lib/pubid/api/identifiers/specification.rb +0 -2
- data/lib/pubid/api/identifiers/standard.rb +0 -2
- data/lib/pubid/api/identifiers/technical_report.rb +0 -2
- data/lib/pubid/api/identifiers/typeless_standard.rb +1 -14
- data/lib/pubid/api/identifiers.rb +18 -0
- data/lib/pubid/api/renderer.rb +89 -0
- data/lib/pubid/api/single_identifier.rb +1 -13
- data/lib/pubid/api/urn_generator.rb +0 -18
- data/lib/pubid/api/urn_parser.rb +35 -0
- data/lib/pubid/api.rb +51 -5
- data/lib/pubid/ashrae/builder.rb +3 -3
- data/lib/pubid/ashrae/identifier.rb +6 -39
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +0 -10
- data/lib/pubid/ashrae/identifiers/addendum.rb +0 -19
- data/lib/pubid/ashrae/identifiers/base.rb +3 -0
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +0 -15
- data/lib/pubid/ashrae/identifiers/errata.rb +0 -10
- data/lib/pubid/ashrae/identifiers/interpretation.rb +0 -10
- data/lib/pubid/ashrae/renderer.rb +117 -0
- data/lib/pubid/ashrae/single_identifier.rb +0 -13
- data/lib/pubid/ashrae/urn_generator.rb +0 -8
- data/lib/pubid/ashrae/urn_parser.rb +27 -0
- data/lib/pubid/ashrae.rb +42 -1
- data/lib/pubid/asme/components/code.rb +10 -2
- data/lib/pubid/asme/identifier.rb +0 -46
- data/lib/pubid/asme/identifiers/base.rb +0 -60
- data/lib/pubid/asme/renderer.rb +66 -0
- data/lib/pubid/asme/urn_parser.rb +31 -0
- data/lib/pubid/asme.rb +42 -1
- data/lib/pubid/astm/components/code.rb +9 -0
- data/lib/pubid/{jis → astm}/components.rb +1 -1
- data/lib/pubid/astm/identifier.rb +0 -77
- data/lib/pubid/astm/identifiers/adjunct.rb +0 -8
- data/lib/pubid/astm/identifiers/data_series.rb +0 -14
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +9 -34
- data/lib/pubid/astm/identifiers/manual.rb +0 -27
- data/lib/pubid/astm/identifiers/monograph.rb +0 -14
- data/lib/pubid/astm/identifiers/research_report.rb +0 -7
- data/lib/pubid/astm/identifiers/standard.rb +0 -39
- data/lib/pubid/astm/identifiers/technical_report.rb +0 -13
- data/lib/pubid/astm/identifiers/work_in_progress.rb +0 -11
- data/lib/pubid/astm/identifiers.rb +18 -0
- data/lib/pubid/astm/renderer.rb +172 -0
- data/lib/pubid/astm/single_identifier.rb +0 -10
- data/lib/pubid/astm/urn_parser.rb +30 -0
- data/lib/pubid/astm.rb +39 -27
- data/lib/pubid/bsi/builder.rb +21 -12
- data/lib/pubid/bsi/identifier.rb +8 -62
- data/lib/pubid/bsi/identifiers/addendum_document.rb +3 -33
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +11 -47
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +11 -38
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +3 -53
- data/lib/pubid/bsi/identifiers/amendment.rb +3 -19
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +2 -4
- data/lib/pubid/bsi/identifiers/british_standard.rb +2 -1
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +3 -84
- data/lib/pubid/bsi/identifiers/committee_document.rb +1 -14
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +3 -84
- data/lib/pubid/bsi/identifiers/corrigendum.rb +3 -7
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +1 -34
- data/lib/pubid/bsi/identifiers/disc.rb +1 -27
- data/lib/pubid/bsi/identifiers/draft_document.rb +3 -44
- data/lib/pubid/bsi/identifiers/electronic_book.rb +3 -36
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +3 -15
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +1 -45
- data/lib/pubid/bsi/identifiers/flex.rb +1 -33
- data/lib/pubid/bsi/identifiers/handbook.rb +2 -13
- data/lib/pubid/bsi/identifiers/index.rb +1 -30
- data/lib/pubid/bsi/identifiers/method.rb +1 -39
- data/lib/pubid/bsi/identifiers/national_annex.rb +5 -27
- data/lib/pubid/bsi/identifiers/practice_guide.rb +2 -4
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +3 -52
- data/lib/pubid/bsi/identifiers/published_document.rb +3 -52
- data/lib/pubid/bsi/identifiers/section.rb +1 -28
- data/lib/pubid/bsi/identifiers/set.rb +3 -17
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +1 -7
- data/lib/pubid/bsi/identifiers/supplement_document.rb +3 -21
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +1 -44
- data/lib/pubid/bsi/identifiers/technical_specification.rb +3 -45
- data/lib/pubid/bsi/identifiers/test_method.rb +1 -30
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +3 -14
- data/lib/pubid/bsi/identifiers.rb +0 -1
- data/lib/pubid/bsi/renderer.rb +1050 -0
- data/lib/pubid/bsi/single_identifier.rb +6 -70
- data/lib/pubid/bsi/urn_generator.rb +2 -3
- data/lib/pubid/bsi/urn_parser.rb +52 -0
- data/lib/pubid/bsi.rb +224 -1
- data/lib/pubid/builder/base.rb +57 -10
- data/lib/pubid/bundled_identifier.rb +0 -1
- data/lib/pubid/ccsds/builder.rb +4 -3
- data/lib/pubid/ccsds/identifier.rb +63 -66
- data/lib/pubid/ccsds/identifiers/base.rb +11 -61
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +7 -6
- data/lib/pubid/ccsds/parser.rb +4 -2
- data/lib/pubid/ccsds/supplement_identifier.rb +15 -11
- data/lib/pubid/ccsds/urn_generator.rb +3 -3
- data/lib/pubid/ccsds/urn_parser.rb +20 -0
- data/lib/pubid/ccsds.rb +39 -1
- data/lib/pubid/cen_cenelec/builder.rb +12 -14
- data/lib/pubid/cen_cenelec/identifier.rb +7 -38
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +13 -4
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +2 -8
- data/lib/pubid/cen_cenelec/identifiers/base.rb +5 -41
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +2 -25
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +2 -13
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +4 -7
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +2 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +2 -1
- data/lib/pubid/cen_cenelec/renderer.rb +261 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +11 -89
- data/lib/pubid/cen_cenelec/urn_generator.rb +6 -6
- data/lib/pubid/cen_cenelec/urn_parser.rb +28 -0
- data/lib/pubid/cen_cenelec.rb +168 -1
- data/lib/pubid/cie/components/code.rb +8 -0
- data/lib/pubid/cie/identifier.rb +6 -57
- data/lib/pubid/cie/urn_parser.rb +28 -0
- data/lib/pubid/cie.rb +43 -1
- data/lib/pubid/components/adoption.rb +104 -0
- data/lib/pubid/components/code.rb +22 -8
- data/lib/pubid/components/date.rb +23 -16
- data/lib/pubid/components/edition.rb +9 -6
- data/lib/pubid/components/iteration.rb +32 -0
- data/lib/pubid/components/language.rb +6 -4
- data/lib/pubid/components/locality.rb +10 -1
- data/lib/pubid/components/publisher.rb +9 -6
- data/lib/pubid/components/relationship.rb +151 -0
- data/lib/pubid/components/stage.rb +5 -14
- data/lib/pubid/components/supplement.rb +184 -0
- data/lib/pubid/components/type.rb +5 -15
- data/lib/pubid/components/typed_stage.rb +10 -11
- data/lib/pubid/components.rb +4 -1
- data/lib/pubid/core/update_codes.rb +28 -7
- data/lib/pubid/csa/identifier.rb +0 -59
- data/lib/pubid/csa/identifiers/base.rb +2 -122
- data/lib/pubid/csa/identifiers/cec.rb +2 -101
- data/lib/pubid/csa/identifiers/series.rb +2 -102
- data/lib/pubid/csa/renderer.rb +292 -0
- data/lib/pubid/csa/urn_generator.rb +1 -1
- data/lib/pubid/csa/urn_parser.rb +33 -0
- data/lib/pubid/csa.rb +42 -1
- data/lib/pubid/etsi/components/code.rb +9 -2
- data/lib/pubid/etsi/identifier.rb +0 -43
- data/lib/pubid/etsi/identifiers/base.rb +1 -4
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +2 -9
- data/lib/pubid/etsi/renderer.rb +42 -0
- data/lib/pubid/etsi/urn_parser.rb +34 -0
- data/lib/pubid/etsi.rb +42 -1
- data/lib/pubid/export/exporter.rb +4 -46
- data/lib/pubid/export/flavor_exporter.rb +111 -278
- data/lib/pubid/export.rb +0 -6
- data/lib/pubid/identifier.rb +2 -17
- data/lib/pubid/identifier_facade.rb +114 -0
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/idf/builder.rb +3 -3
- data/lib/pubid/idf/identifier.rb +3 -66
- data/lib/pubid/idf/identifiers/amendment.rb +2 -1
- data/lib/pubid/idf/identifiers/corrigendum.rb +2 -1
- data/lib/pubid/idf/identifiers/international_standard.rb +2 -1
- data/lib/pubid/idf/identifiers/reviewed_method.rb +2 -1
- data/lib/pubid/idf/parser.rb +3 -2
- data/lib/pubid/idf/renderer.rb +84 -0
- data/lib/pubid/idf/supplement_identifier.rb +2 -10
- data/lib/pubid/idf/urn_generator.rb +4 -39
- data/lib/pubid/idf/urn_parser.rb +25 -0
- data/lib/pubid/idf.rb +51 -1
- data/lib/pubid/iec/builder.rb +46 -64
- data/lib/pubid/iec/components/code.rb +8 -32
- data/lib/pubid/iec/components/publisher.rb +0 -1
- data/lib/pubid/iec/components.rb +14 -0
- data/lib/pubid/iec/identifier.rb +251 -213
- data/lib/pubid/iec/identifiers/amendment.rb +2 -3
- data/lib/pubid/iec/identifiers/base.rb +8 -32
- data/lib/pubid/iec/identifiers/component_specification.rb +3 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +1 -2
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +27 -26
- data/lib/pubid/iec/identifiers/corrigendum.rb +2 -3
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +37 -22
- data/lib/pubid/iec/identifiers/guide.rb +0 -2
- data/lib/pubid/iec/identifiers/international_standard.rb +2 -3
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +2 -3
- data/lib/pubid/iec/identifiers/operational_document.rb +3 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +2 -3
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +21 -11
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +3 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +2 -3
- data/lib/pubid/iec/identifiers/technical_report.rb +2 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +2 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +1 -2
- data/lib/pubid/iec/identifiers/test_report_form.rb +5 -34
- data/lib/pubid/iec/identifiers/vap_identifier.rb +26 -19
- data/lib/pubid/iec/identifiers/white_paper.rb +3 -3
- data/lib/pubid/iec/identifiers/working_document.rb +4 -48
- data/lib/pubid/iec/identifiers.rb +30 -0
- data/lib/pubid/iec/parser.rb +13 -12
- data/lib/pubid/iec/renderer.rb +254 -0
- data/lib/pubid/iec/single_identifier.rb +6 -12
- data/lib/pubid/iec/supplement_identifier.rb +58 -54
- data/lib/pubid/iec/urn_generator.rb +3 -3
- data/lib/pubid/iec/urn_parser.rb +3 -3
- data/lib/pubid/iec.rb +40 -68
- data/lib/pubid/ieee/builder.rb +12 -12
- data/lib/pubid/ieee/components/code.rb +8 -0
- data/lib/pubid/ieee/components/draft.rb +14 -0
- data/lib/pubid/ieee/components/relationship.rb +5 -149
- data/lib/pubid/ieee/identifier.rb +6 -41
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +1 -6
- data/lib/pubid/ieee/identifiers/base.rb +101 -458
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +1 -7
- data/lib/pubid/ieee/identifiers/corrigendum.rb +1 -9
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +1 -7
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +1 -1
- data/lib/pubid/ieee/identifiers/dual_published.rb +1 -1
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +1 -6
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +1 -7
- data/lib/pubid/ieee/identifiers/joint_development.rb +2 -0
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +1 -15
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +1 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +15 -0
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +1 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +1 -35
- data/lib/pubid/ieee/identifiers/standard.rb +1 -1
- data/lib/pubid/ieee/pre_parser.rb +301 -0
- data/lib/pubid/ieee/renderer.rb +307 -0
- data/lib/pubid/ieee/urn_parser.rb +34 -0
- data/lib/pubid/ieee.rb +62 -1
- data/lib/pubid/ieee_debug.rb +0 -1
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +8 -42
- data/lib/pubid/iho/identifiers/base.rb +49 -10
- data/lib/pubid/iho/parser.rb +3 -3
- data/lib/pubid/iho/renderer.rb +30 -0
- data/lib/pubid/iho/urn_generator.rb +2 -2
- data/lib/pubid/iho/urn_parser.rb +58 -0
- data/lib/pubid/iho.rb +50 -1
- data/lib/pubid/iso/builder.rb +55 -53
- data/lib/pubid/iso/bundled_identifier.rb +51 -0
- data/lib/pubid/iso/components/code.rb +7 -19
- data/lib/pubid/iso/components/publisher.rb +10 -8
- data/lib/pubid/iso/components.rb +2 -4
- data/lib/pubid/iso/identifier.rb +218 -252
- data/lib/pubid/iso/identifiers/addendum.rb +9 -6
- data/lib/pubid/iso/identifiers/amendment.rb +8 -4
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +0 -1
- data/lib/pubid/iso/identifiers/directives.rb +8 -2
- data/lib/pubid/iso/identifiers/directives_supplement.rb +43 -14
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +0 -1
- data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
- data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +10 -4
- data/lib/pubid/iso/identifiers/pas.rb +2 -2
- data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
- data/lib/pubid/iso/identifiers/supplement.rb +11 -3
- data/lib/pubid/iso/identifiers/tc_document.rb +44 -15
- data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
- data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
- data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
- data/lib/pubid/iso/identifiers.rb +0 -1
- data/lib/pubid/iso/normalizer.rb +89 -0
- data/lib/pubid/iso/parser.rb +22 -4
- data/lib/pubid/iso/supplement_identifier.rb +15 -2
- data/lib/pubid/iso/urn_generator.rb +66 -182
- data/lib/pubid/iso/urn_parser.rb +12 -7
- data/lib/pubid/iso.rb +173 -2
- data/lib/pubid/itu/builder.rb +0 -12
- data/lib/pubid/itu/components/code.rb +8 -0
- data/lib/pubid/itu/components.rb +11 -0
- data/lib/pubid/itu/identifier.rb +6 -104
- data/lib/pubid/itu/identifiers/amendment.rb +0 -2
- data/lib/pubid/itu/identifiers/annex.rb +0 -2
- data/lib/pubid/itu/identifiers/base.rb +0 -6
- data/lib/pubid/itu/identifiers/combined_identifier.rb +0 -2
- data/lib/pubid/itu/identifiers/corrigendum.rb +0 -2
- data/lib/pubid/itu/identifiers/recommendation.rb +0 -2
- data/lib/pubid/itu/identifiers/special_publication.rb +0 -2
- data/lib/pubid/itu/identifiers/supplement.rb +0 -2
- data/lib/pubid/itu/urn_parser.rb +23 -0
- data/lib/pubid/itu.rb +42 -1
- data/lib/pubid/jcgm/builder.rb +16 -8
- data/lib/pubid/jcgm/identifier.rb +0 -43
- data/lib/pubid/jcgm/identifiers/amendment.rb +2 -7
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +2 -10
- data/lib/pubid/jcgm/renderer.rb +68 -0
- data/lib/pubid/jcgm/single_identifier.rb +1 -5
- data/lib/pubid/jcgm/urn_generator.rb +4 -6
- data/lib/pubid/jcgm/urn_parser.rb +23 -0
- data/lib/pubid/jcgm.rb +43 -2
- data/lib/pubid/jis/builder.rb +44 -52
- data/lib/pubid/jis/identifier.rb +132 -46
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/corrigendum.rb +16 -0
- data/lib/pubid/jis/identifiers/standard.rb +2 -1
- data/lib/pubid/jis/identifiers/technical_report.rb +2 -1
- data/lib/pubid/jis/identifiers/technical_specification.rb +2 -1
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +31 -5
- data/lib/pubid/jis/renderer.rb +69 -0
- data/lib/pubid/jis/single_identifier.rb +6 -12
- data/lib/pubid/jis/supplement_identifier.rb +17 -14
- data/lib/pubid/jis/urn_parser.rb +23 -0
- data/lib/pubid/jis.rb +42 -2
- data/lib/pubid/nist/builder.rb +63 -1871
- data/lib/pubid/nist/caster.rb +1272 -0
- data/lib/pubid/nist/circular_supplement_builder.rb +291 -0
- data/lib/pubid/nist/components/code.rb +9 -20
- data/lib/pubid/nist/components/supplement.rb +2 -2
- data/lib/pubid/nist/components.rb +0 -1
- data/lib/pubid/nist/identifier.rb +11 -48
- data/lib/pubid/nist/identifiers/base.rb +110 -47
- data/lib/pubid/nist/identifiers/circular.rb +7 -2
- data/lib/pubid/nist/identifiers/circular_supplement.rb +2 -1
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -1
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +6 -4
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +10 -3
- data/lib/pubid/nist/identifiers/crpl_report.rb +8 -8
- data/lib/pubid/nist/identifiers/dated_document.rb +49 -0
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +15 -24
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -1
- data/lib/pubid/nist/identifiers/handbook.rb +2 -1
- data/lib/pubid/nist/identifiers/internal_report.rb +2 -1
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -1
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +5 -4
- data/lib/pubid/nist/identifiers/monograph.rb +7 -3
- data/lib/pubid/nist/identifiers/report.rb +4 -2
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -1
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -2
- data/lib/pubid/nist/identifiers.rb +1 -0
- data/lib/pubid/nist/parser.rb +62 -452
- data/lib/pubid/nist/parser_output_normalizer.rb +233 -0
- data/lib/pubid/nist/preprocessor.rb +416 -0
- data/lib/pubid/nist/renderer.rb +43 -0
- data/lib/pubid/nist/router.rb +148 -0
- data/lib/pubid/nist/series/base.rb +58 -0
- data/lib/pubid/nist/series/crpl.rb +13 -0
- data/lib/pubid/nist/series/fips.rb +14 -0
- data/lib/pubid/nist/series/ir.rb +60 -0
- data/lib/pubid/nist/series/letter_preserving.rb +15 -0
- data/lib/pubid/nist/series/mono.rb +19 -0
- data/lib/pubid/nist/series/ncstar.rb +20 -0
- data/lib/pubid/nist/series.rb +49 -0
- data/lib/pubid/nist/supplement_identifier.rb +3 -1
- data/lib/pubid/nist/urn_parser.rb +67 -0
- data/lib/pubid/nist.rb +82 -4
- data/lib/pubid/oiml/components/code.rb +10 -0
- data/lib/pubid/oiml/identifier.rb +0 -50
- data/lib/pubid/oiml/identifiers/annex.rb +3 -45
- data/lib/pubid/oiml/identifiers/base.rb +2 -17
- data/lib/pubid/oiml/renderer.rb +161 -0
- data/lib/pubid/oiml/single_identifier.rb +6 -45
- data/lib/pubid/oiml/supplement_identifier.rb +4 -19
- data/lib/pubid/oiml/urn_generator.rb +0 -8
- data/lib/pubid/oiml/urn_parser.rb +22 -0
- data/lib/pubid/oiml.rb +42 -1
- data/lib/pubid/plateau/identifier.rb +7 -41
- data/lib/pubid/plateau/identifiers/handbook.rb +1 -3
- data/lib/pubid/plateau/identifiers/technical_report.rb +1 -1
- data/lib/pubid/plateau/renderer.rb +51 -0
- data/lib/pubid/plateau/supplement_identifier.rb +1 -1
- data/lib/pubid/plateau/urn_parser.rb +43 -0
- data/lib/pubid/plateau.rb +43 -1
- data/lib/pubid/renderers/directives_renderer.rb +22 -8
- data/lib/pubid/renderers/guide_renderer.rb +4 -2
- data/lib/pubid/renderers/human_readable.rb +18 -7
- data/lib/pubid/rendering/context.rb +28 -19
- data/lib/pubid/rendering.rb +0 -3
- data/lib/pubid/sae/components/date.rb +8 -0
- data/lib/pubid/sae/components/type.rb +5 -1
- data/lib/pubid/sae/identifier.rb +0 -23
- data/lib/pubid/sae/identifiers/base.rb +2 -16
- data/lib/pubid/sae/renderer.rb +36 -0
- data/lib/pubid/sae/urn_generator.rb +2 -10
- data/lib/pubid/sae/urn_parser.rb +36 -0
- data/lib/pubid/sae.rb +42 -1
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/urn_parser/base.rb +81 -0
- data/lib/pubid/urn_parser/errors.rb +9 -0
- data/lib/pubid/urn_parser.rb +14 -0
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +29 -7
- data/lib/tasks/website-data.json +1940 -1882
- metadata +75 -44
- data/lib/pubid/amca/scheme.rb +0 -16
- data/lib/pubid/ansi/scheme.rb +0 -15
- data/lib/pubid/api/scheme.rb +0 -66
- data/lib/pubid/ashrae/scheme.rb +0 -53
- data/lib/pubid/asme/scheme.rb +0 -37
- data/lib/pubid/astm/scheme.rb +0 -55
- data/lib/pubid/bsi/identifiers/base.rb +0 -11
- data/lib/pubid/bsi/scheme.rb +0 -243
- data/lib/pubid/ccsds/scheme.rb +0 -57
- data/lib/pubid/cen_cenelec/scheme.rb +0 -164
- data/lib/pubid/cie/scheme.rb +0 -64
- data/lib/pubid/components/factory.rb +0 -50
- data/lib/pubid/csa/scheme.rb +0 -44
- data/lib/pubid/etsi/scheme.rb +0 -42
- data/lib/pubid/export/data_class_exporter.rb +0 -59
- data/lib/pubid/export/ieee_exporter.rb +0 -78
- data/lib/pubid/export/itu_exporter.rb +0 -66
- data/lib/pubid/export/nist_exporter.rb +0 -64
- data/lib/pubid/export/registry_exporter.rb +0 -90
- data/lib/pubid/export/scheme_exporter.rb +0 -70
- data/lib/pubid/identifier_registry.rb +0 -198
- data/lib/pubid/idf/scheme.rb +0 -61
- data/lib/pubid/iec/scheme.rb +0 -71
- data/lib/pubid/ieee/scheme.rb +0 -90
- data/lib/pubid/iho/scheme.rb +0 -29
- data/lib/pubid/iso/identifiers/base.rb +0 -115
- data/lib/pubid/iso/scheme.rb +0 -193
- data/lib/pubid/itu/scheme.rb +0 -174
- data/lib/pubid/jcgm/scheme.rb +0 -60
- data/lib/pubid/jis/components/code.rb +0 -59
- data/lib/pubid/jis/identifiers/base.rb +0 -72
- data/lib/pubid/jis/scheme.rb +0 -49
- data/lib/pubid/nist/components/publisher.rb +0 -24
- data/lib/pubid/nist/scheme.rb +0 -199
- data/lib/pubid/oiml/scheme.rb +0 -46
- data/lib/pubid/plateau/scheme.rb +0 -45
- data/lib/pubid/rendering/base.rb +0 -73
- data/lib/pubid/rendering/common.rb +0 -211
- data/lib/pubid/rendering/format.rb +0 -25
- data/lib/pubid/sae/scheme.rb +0 -47
- data/lib/pubid/scheme.rb +0 -219
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
require_relative "../single_identifier"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../components/publisher"
|
|
4
|
-
require_relative "../components/code"
|
|
5
|
-
require_relative "../components/vap_suffix"
|
|
6
|
-
require_relative "../components/trf_info"
|
|
7
2
|
|
|
8
3
|
module Pubid
|
|
9
4
|
module Iec
|
|
@@ -12,37 +7,21 @@ module Pubid
|
|
|
12
7
|
# Inherits from SingleIdentifier to get common functionality
|
|
13
8
|
# Single Responsibility: Common IEC identifier attributes and behavior
|
|
14
9
|
class Base < SingleIdentifier
|
|
15
|
-
# IEC-specific attributes
|
|
16
|
-
attribute :vap_suffix, Components::VapSuffix, default: -> {}
|
|
10
|
+
# IEC-specific attributes. VAP codes live on VapIdentifier, not here.
|
|
17
11
|
attribute :trf_info, Components::TrfInfo, default: -> {}
|
|
18
12
|
attribute :database, :boolean, default: -> { false }
|
|
19
13
|
attribute :fragment, :string, default: -> {}
|
|
20
14
|
attribute :version, :string, default: -> {}
|
|
21
15
|
attribute :decision_sheet, :string, default: -> {}
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
# Number portion (number with part/subpart)
|
|
30
|
-
parts << number_portion
|
|
31
|
-
|
|
32
|
-
# Edition if present - add space before edition
|
|
33
|
-
parts << " #{edition}" if edition&.number
|
|
34
|
-
|
|
35
|
-
# VAP suffix
|
|
36
|
-
parts << vap_suffix.render_with_space if vap_suffix
|
|
37
|
-
|
|
38
|
-
# Database flag
|
|
39
|
-
parts << " DB" if database
|
|
40
|
-
|
|
41
|
-
# All-parts marker — rendered the same as the generic
|
|
42
|
-
# HumanReadable renderer for parity (see Pubid::Renderers::HumanReadable#render).
|
|
43
|
-
parts << " (all parts)" if all_parts
|
|
17
|
+
# database is the only Base-specific serialized key (emitted when set);
|
|
18
|
+
# merged onto the common map inherited from Identifier.
|
|
19
|
+
key_value do
|
|
20
|
+
map "database", to: :database, render_default: false
|
|
21
|
+
end
|
|
44
22
|
|
|
45
|
-
|
|
23
|
+
def to_s(**opts)
|
|
24
|
+
render(format: :human, **opts)
|
|
46
25
|
end
|
|
47
26
|
|
|
48
27
|
def number_portion
|
|
@@ -70,9 +49,6 @@ module Pubid
|
|
|
70
49
|
def validate!
|
|
71
50
|
super if defined?(super)
|
|
72
51
|
|
|
73
|
-
# Validate VAP suffix if present
|
|
74
|
-
vap_suffix&.validate!
|
|
75
|
-
|
|
76
52
|
# Validate TRF info if present
|
|
77
53
|
trf_info&.validate! if trf_info && !trf_info.empty?
|
|
78
54
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
require_relative "../../components/typed_stage"
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module Pubid
|
|
5
4
|
module Iec
|
|
@@ -20,7 +19,8 @@ module Pubid
|
|
|
20
19
|
].freeze
|
|
21
20
|
|
|
22
21
|
def self.type
|
|
23
|
-
{ key: :cs,
|
|
22
|
+
{ key: :cs,
|
|
23
|
+
web: :component_specification, title: "Component Specification", short: "CS" }
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
# Override publisher_portion to add CS
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
require_relative "../identifier"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module Pubid
|
|
@@ -11,31 +10,33 @@ module Pubid
|
|
|
11
10
|
class ConsolidatedIdentifier < Identifier
|
|
12
11
|
attribute :identifiers, Identifier, polymorphic: true, collection: true
|
|
13
12
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
13
|
+
# Common fields are delegated to identifiers.first, so suppress the
|
|
14
|
+
# inherited common maps and serialize the wrapped identifiers (base
|
|
15
|
+
# document + supplements) instead. Route each nested hash back through
|
|
16
|
+
# Identifier.from_hash so its concrete subclass is reconstructed.
|
|
17
|
+
include Pubid::Iec::DelegatedFieldSuppression
|
|
18
|
+
|
|
19
|
+
key_value do
|
|
20
|
+
map "identifiers",
|
|
21
|
+
with: { to: :identifiers_to_kv, from: :identifiers_from_kv }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def identifiers_to_kv(model, doc)
|
|
25
|
+
return unless model.identifiers&.any?
|
|
26
|
+
|
|
27
|
+
doc.add_child(Lutaml::KeyValue::DataModel::Element.new(
|
|
28
|
+
"identifiers", model.identifiers.map(&:to_hash)
|
|
29
|
+
))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def identifiers_from_kv(model, value)
|
|
33
|
+
model.identifiers = Array(value).map do |h|
|
|
34
|
+
::Pubid::Iec::Identifier.from_hash(h)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def to_s(**opts)
|
|
39
|
+
render(format: :human, **opts)
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
# Delegate common attributes to first identifier (base document)
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "../supplement_identifier"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -86,7 +84,8 @@ module Pubid
|
|
|
86
84
|
].freeze
|
|
87
85
|
|
|
88
86
|
def self.type
|
|
89
|
-
{ key: :cor,
|
|
87
|
+
{ key: :cor,
|
|
88
|
+
web: :corrigendum, title: "Corrigendum", short: "COR" }
|
|
90
89
|
end
|
|
91
90
|
end
|
|
92
91
|
end
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "../identifier"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -13,7 +11,39 @@ module Pubid
|
|
|
13
11
|
attribute :base_identifier, Identifier, polymorphic: true
|
|
14
12
|
attribute :fragment_number, :string
|
|
15
13
|
attribute :edition, ::Pubid::Components::Edition, default: -> {}
|
|
16
|
-
|
|
14
|
+
# Fragments have their own lifecycle; default to the published FRAG stage
|
|
15
|
+
# so an omitted "stage" reconstructs it on from_hash.
|
|
16
|
+
attribute :typed_stage, ::Pubid::Components::TypedStage,
|
|
17
|
+
default: -> { self.class.published_typed_stage }
|
|
18
|
+
|
|
19
|
+
# number/date/publisher delegate to base_identifier, but the fragment's
|
|
20
|
+
# stage and edition are its own. Serialize the wrapped identifier under
|
|
21
|
+
# "base" plus the fragment number; suppress only the truly-delegated
|
|
22
|
+
# common maps (keep stage/edition from the inherited block).
|
|
23
|
+
key_value do
|
|
24
|
+
map "base", with: { to: :base_to_kv, from: :base_from_kv }
|
|
25
|
+
map "fragment_number", to: :fragment_number, render_default: false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def number_to_kv(_model, _doc); end
|
|
29
|
+
def part_to_kv(_model, _doc); end
|
|
30
|
+
def subpart_to_kv(_model, _doc); end
|
|
31
|
+
def stage_iteration_to_kv(_model, _doc); end
|
|
32
|
+
def year_to_kv(_model, _doc); end
|
|
33
|
+
def publisher_to_kv(_model, _doc); end
|
|
34
|
+
def copublishers_to_kv(_model, _doc); end
|
|
35
|
+
|
|
36
|
+
def base_to_kv(model, doc)
|
|
37
|
+
base = model.base_identifier
|
|
38
|
+
return unless base
|
|
39
|
+
|
|
40
|
+
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("base",
|
|
41
|
+
base.to_hash))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def base_from_kv(model, value)
|
|
45
|
+
model.base_identifier = ::Pubid::Iec::Identifier.from_hash(value) if value
|
|
46
|
+
end
|
|
17
47
|
|
|
18
48
|
TYPED_STAGES = [
|
|
19
49
|
Pubid::Components::TypedStage.new(
|
|
@@ -84,27 +114,12 @@ module Pubid
|
|
|
84
114
|
].freeze
|
|
85
115
|
|
|
86
116
|
def self.type
|
|
87
|
-
{ key: :frag,
|
|
117
|
+
{ key: :frag,
|
|
118
|
+
web: :fragment_identifier, title: "Fragment", short: "FRAG" }
|
|
88
119
|
end
|
|
89
120
|
|
|
90
|
-
def to_s(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
# Render base identifier (the amendment/corrigendum)
|
|
94
|
-
parts << base_identifier.to_s(lang: lang, lang_single: lang_single,
|
|
95
|
-
with_edition: with_edition)
|
|
96
|
-
|
|
97
|
-
# Add fragment notation /FRAGN or /FRAGCN depending on base type
|
|
98
|
-
parts << if base_identifier.is_a?(Identifiers::Corrigendum)
|
|
99
|
-
"/FRAGC#{fragment_number}"
|
|
100
|
-
else
|
|
101
|
-
"/FRAG#{fragment_number}"
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
# Add edition if present
|
|
105
|
-
parts << " #{edition}" if edition&.number
|
|
106
|
-
|
|
107
|
-
parts.join
|
|
121
|
+
def to_s(**opts)
|
|
122
|
+
render(format: :human, **opts)
|
|
108
123
|
end
|
|
109
124
|
|
|
110
125
|
# Delegate common attributes to base_identifier
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "base"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -139,7 +137,8 @@ module Pubid
|
|
|
139
137
|
}.freeze
|
|
140
138
|
|
|
141
139
|
def self.type
|
|
142
|
-
{ key: :is,
|
|
140
|
+
{ key: :is,
|
|
141
|
+
web: :international_standard, title: "International Standard", short: nil }
|
|
143
142
|
end
|
|
144
143
|
end
|
|
145
144
|
end
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "../supplement_identifier"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -96,7 +94,8 @@ module Pubid
|
|
|
96
94
|
}.freeze
|
|
97
95
|
|
|
98
96
|
def self.type
|
|
99
|
-
{ key: :ish,
|
|
97
|
+
{ key: :ish,
|
|
98
|
+
web: :interpretation_sheet, title: "Interpretation Sheet", short: "ISH" }
|
|
100
99
|
end
|
|
101
100
|
end
|
|
102
101
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
require_relative "../../components/typed_stage"
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module Pubid
|
|
5
4
|
module Iec
|
|
@@ -20,7 +19,8 @@ module Pubid
|
|
|
20
19
|
].freeze
|
|
21
20
|
|
|
22
21
|
def self.type
|
|
23
|
-
{ key: :od,
|
|
22
|
+
{ key: :od,
|
|
23
|
+
web: :operational_document, title: "Operational Document", short: "OD" }
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
# Override publisher_portion to add OD
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "base"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -80,7 +78,8 @@ module Pubid
|
|
|
80
78
|
}.freeze
|
|
81
79
|
|
|
82
80
|
def self.type
|
|
83
|
-
{ key: :pas,
|
|
81
|
+
{ key: :pas,
|
|
82
|
+
web: :publicly_available_specification, title: "Publicly Available Specification", short: "PAS" }
|
|
84
83
|
end
|
|
85
84
|
|
|
86
85
|
# Override publisher_portion to add PAS or DPAS stage
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
require_relative "../identifier"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module Pubid
|
|
@@ -12,20 +11,31 @@ module Pubid
|
|
|
12
11
|
attribute :sheet_number, :string
|
|
13
12
|
attribute :year, :string, default: -> {}
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
# Common fields are delegated to base_identifier, so serialize the
|
|
15
|
+
# wrapped identifier under "base" plus the sheet number/year; suppress
|
|
16
|
+
# the delegated common maps (they live inside "base").
|
|
17
|
+
include Pubid::Iec::DelegatedFieldSuppression
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
key_value do
|
|
20
|
+
map "base", with: { to: :base_to_kv, from: :base_from_kv }
|
|
21
|
+
map "sheet_number", to: :sheet_number, render_default: false
|
|
22
|
+
map "sheet_year", to: :year, render_default: false
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def base_to_kv(model, doc)
|
|
26
|
+
base = model.base_identifier
|
|
27
|
+
return unless base
|
|
21
28
|
|
|
22
|
-
|
|
23
|
-
|
|
29
|
+
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("base",
|
|
30
|
+
base.to_hash))
|
|
31
|
+
end
|
|
24
32
|
|
|
25
|
-
|
|
26
|
-
|
|
33
|
+
def base_from_kv(model, value)
|
|
34
|
+
model.base_identifier = ::Pubid::Iec::Identifier.from_hash(value) if value
|
|
35
|
+
end
|
|
27
36
|
|
|
28
|
-
|
|
37
|
+
def to_s(**opts)
|
|
38
|
+
render(format: :human, **opts)
|
|
29
39
|
end
|
|
30
40
|
|
|
31
41
|
# Delegate common attributes to base_identifier
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
require_relative "../../components/typed_stage"
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module Pubid
|
|
5
4
|
module Iec
|
|
@@ -20,7 +19,8 @@ module Pubid
|
|
|
20
19
|
].freeze
|
|
21
20
|
|
|
22
21
|
def self.type
|
|
23
|
-
{ key: :sttr,
|
|
22
|
+
{ key: :sttr,
|
|
23
|
+
web: :societal_technology_trend_report, title: "Societal and Technology Trend Report",
|
|
24
24
|
short: "Trend Report" }
|
|
25
25
|
end
|
|
26
26
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "base"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -21,7 +19,8 @@ module Pubid
|
|
|
21
19
|
].freeze
|
|
22
20
|
|
|
23
21
|
def self.type
|
|
24
|
-
{ key: :srd,
|
|
22
|
+
{ key: :srd,
|
|
23
|
+
web: :systems_reference_document, title: "Systems Reference Document", short: "SRD" }
|
|
25
24
|
end
|
|
26
25
|
|
|
27
26
|
# Override publisher_portion to add SRD
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "base"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -106,7 +104,8 @@ module Pubid
|
|
|
106
104
|
}.freeze
|
|
107
105
|
|
|
108
106
|
def self.type
|
|
109
|
-
{ key: :tr,
|
|
107
|
+
{ key: :tr,
|
|
108
|
+
web: :technical_report, title: "Technical Report", short: "TR" }
|
|
110
109
|
end
|
|
111
110
|
|
|
112
111
|
# Override publisher_portion to handle TR formatting
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "base"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -106,7 +104,8 @@ module Pubid
|
|
|
106
104
|
}.freeze
|
|
107
105
|
|
|
108
106
|
def self.type
|
|
109
|
-
{ key: :ts,
|
|
107
|
+
{ key: :ts,
|
|
108
|
+
web: :technical_specification, title: "Technical Specification", short: "TS" }
|
|
110
109
|
end
|
|
111
110
|
|
|
112
111
|
# Override publisher_portion to handle TS formatting
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "base"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/typed_stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -26,7 +24,8 @@ module Pubid
|
|
|
26
24
|
].freeze
|
|
27
25
|
|
|
28
26
|
def self.type
|
|
29
|
-
{ key: :trf,
|
|
27
|
+
{ key: :trf,
|
|
28
|
+
web: :test_report_form, title: "Test Report Form", short: "TRF" }
|
|
30
29
|
end
|
|
31
30
|
|
|
32
31
|
# Override publisher_portion to add TRF with space
|
|
@@ -40,37 +39,9 @@ module Pubid
|
|
|
40
39
|
result
|
|
41
40
|
end
|
|
42
41
|
|
|
43
|
-
# TRF uses special rendering
|
|
44
|
-
def to_s(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
# Publisher and type portion
|
|
48
|
-
parts << publisher_portion
|
|
49
|
-
|
|
50
|
-
# If CISPR identifier embedded, render it with TRF date
|
|
51
|
-
if cispr_identifier
|
|
52
|
-
cispr_parts = []
|
|
53
|
-
cispr_parts << cispr_identifier.publisher.body
|
|
54
|
-
|
|
55
|
-
# Build number portion with part
|
|
56
|
-
num_str = cispr_identifier.number.to_s
|
|
57
|
-
num_str += "-#{cispr_identifier.part}" if cispr_identifier.part && cispr_identifier.part.to_s != ""
|
|
58
|
-
cispr_parts << num_str
|
|
59
|
-
|
|
60
|
-
# Join with space and add TRF year
|
|
61
|
-
cispr_str = cispr_parts.join(" ")
|
|
62
|
-
cispr_str += ":#{date.year}" if date
|
|
63
|
-
|
|
64
|
-
parts << " #{cispr_str}"
|
|
65
|
-
else
|
|
66
|
-
# Normal TRF: number portion
|
|
67
|
-
parts << number_portion
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# TRF info if present (handles version, decision sheet, etc.)
|
|
71
|
-
parts << trf_info.to_s if trf_info && !trf_info.empty?
|
|
72
|
-
|
|
73
|
-
parts.compact.join
|
|
42
|
+
# TRF uses special rendering via the Renderer
|
|
43
|
+
def to_s(**opts)
|
|
44
|
+
render(format: :human, **opts)
|
|
74
45
|
end
|
|
75
46
|
end
|
|
76
47
|
end
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "../identifier"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../components/vap_suffix"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -10,9 +8,32 @@ module Pubid
|
|
|
10
8
|
# Examples: "IEC 61666:2010+AMD1:2021 CSV"
|
|
11
9
|
class VapIdentifier < Identifier
|
|
12
10
|
attribute :base_identifier, Identifier, polymorphic: true
|
|
13
|
-
|
|
11
|
+
# One or more VAP codes (e.g. ["CSV"] or ["EXV", "CMV"]). Plain strings.
|
|
12
|
+
attribute :vap, :string, collection: true
|
|
14
13
|
attribute :edition, ::Pubid::Components::Edition, default: -> {}
|
|
15
14
|
|
|
15
|
+
# number/date/publisher/stage are delegated to base_identifier, so
|
|
16
|
+
# serialize the wrapped identifier under "base" plus the vap array; the
|
|
17
|
+
# common fields live inside "base", not at the top level.
|
|
18
|
+
include Pubid::Iec::DelegatedFieldSuppression
|
|
19
|
+
|
|
20
|
+
key_value do
|
|
21
|
+
map "base", with: { to: :base_to_kv, from: :base_from_kv }
|
|
22
|
+
map "vap", to: :vap, render_default: false
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def base_to_kv(model, doc)
|
|
26
|
+
base = model.base_identifier
|
|
27
|
+
return unless base
|
|
28
|
+
|
|
29
|
+
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("base",
|
|
30
|
+
base.to_hash))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def base_from_kv(model, value)
|
|
34
|
+
model.base_identifier = ::Pubid::Iec::Identifier.from_hash(value) if value
|
|
35
|
+
end
|
|
36
|
+
|
|
16
37
|
# VAP types mapping
|
|
17
38
|
TYPE_MAP = {
|
|
18
39
|
"CSV" => "Consolidated version (with Supplements)",
|
|
@@ -21,22 +42,8 @@ module Pubid
|
|
|
21
42
|
"SER" => "Serial version",
|
|
22
43
|
}.freeze
|
|
23
44
|
|
|
24
|
-
def to_s(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# Render base identifier WITHOUT edition (edition goes at VAP level)
|
|
28
|
-
parts << base_identifier.to_s(lang: lang, lang_single: lang_single,
|
|
29
|
-
with_edition: false)
|
|
30
|
-
|
|
31
|
-
# Add VAP suffix with space
|
|
32
|
-
if vap_suffix
|
|
33
|
-
parts << " #{vap_suffix}"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Add edition after VAP suffix if present
|
|
37
|
-
parts << " #{edition}" if edition&.number
|
|
38
|
-
|
|
39
|
-
parts.compact.join
|
|
45
|
+
def to_s(**opts)
|
|
46
|
+
render(format: :human, **opts)
|
|
40
47
|
end
|
|
41
48
|
|
|
42
49
|
# Delegate common attributes to base_identifier
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
require_relative "../../components/typed_stage"
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module Pubid
|
|
5
4
|
module Iec
|
|
@@ -20,7 +19,8 @@ module Pubid
|
|
|
20
19
|
].freeze
|
|
21
20
|
|
|
22
21
|
def self.type
|
|
23
|
-
{ key: :wp,
|
|
22
|
+
{ key: :wp,
|
|
23
|
+
web: :white_paper, title: "White Paper", short: "White Paper" }
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
# Override publisher_portion to add White Paper
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
require_relative "base"
|
|
2
1
|
# frozen_string_literal: true
|
|
3
|
-
require_relative "../../components/stage"
|
|
4
2
|
|
|
5
3
|
module Pubid
|
|
6
4
|
module Iec
|
|
@@ -26,7 +24,8 @@ module Pubid
|
|
|
26
24
|
PROJECT_STAGES = {}.freeze
|
|
27
25
|
|
|
28
26
|
def self.type
|
|
29
|
-
{ key: :wd,
|
|
27
|
+
{ key: :wd,
|
|
28
|
+
web: :working_document, title: "Working Document", short: "WD" }
|
|
30
29
|
end
|
|
31
30
|
|
|
32
31
|
# Return stage object for PWI/PNW stage
|
|
@@ -44,51 +43,8 @@ module Pubid
|
|
|
44
43
|
@stage ||= ::Pubid::Components::Stage.new(stage_code: stage_code)
|
|
45
44
|
end
|
|
46
45
|
|
|
47
|
-
def to_s(
|
|
48
|
-
|
|
49
|
-
if wp_stage
|
|
50
|
-
parts = []
|
|
51
|
-
# Include publisher if present (for IEC/PWI format)
|
|
52
|
-
if publisher
|
|
53
|
-
parts << publisher.body
|
|
54
|
-
if copublishers&.any?
|
|
55
|
-
parts << "/#{copublishers.map(&:body).join('/')}"
|
|
56
|
-
end
|
|
57
|
-
parts << "/"
|
|
58
|
-
end
|
|
59
|
-
parts << wp_stage
|
|
60
|
-
# Only add wp_type if it exists and is not empty/whitespace
|
|
61
|
-
if wp_type && !wp_type.strip.empty?
|
|
62
|
-
parts << " #{wp_type.strip}"
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Render full number with parts
|
|
66
|
-
if number
|
|
67
|
-
num_str = number.to_s
|
|
68
|
-
num_str += "-#{part}" if part && part.to_s != ""
|
|
69
|
-
num_str += "-#{subpart}" if subpart && subpart.to_s != ""
|
|
70
|
-
parts << " #{num_str}"
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
parts << " #{edition}" if edition&.number
|
|
74
|
-
return parts.join
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# Working Document format: "100/3705(F)/FDIS"
|
|
78
|
-
parts = []
|
|
79
|
-
|
|
80
|
-
parts << technical_committee if technical_committee
|
|
81
|
-
|
|
82
|
-
# Number with optional language
|
|
83
|
-
if wd_number
|
|
84
|
-
num_part = wd_number.to_s
|
|
85
|
-
num_part += "(#{wd_language})" if wd_language
|
|
86
|
-
parts << num_part
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
parts << wd_stage if wd_stage
|
|
90
|
-
|
|
91
|
-
parts.join("/")
|
|
46
|
+
def to_s(**opts)
|
|
47
|
+
render(format: :human, **opts)
|
|
92
48
|
end
|
|
93
49
|
end
|
|
94
50
|
end
|