pubid 2.0.0.alpha.10 → 2.0.0.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 +51 -54
- data/data/iec/update_codes.yaml +0 -3
- data/data/ieee/update_codes.yaml +1 -107
- data/data/nist/update_codes.yaml +0 -35
- data/lib/pubid/amca/builder.rb +6 -6
- data/lib/pubid/amca/identifier.rb +16 -2
- data/lib/pubid/amca/identifiers/base.rb +46 -74
- data/lib/pubid/amca/identifiers/interpretation.rb +30 -17
- data/lib/pubid/amca/identifiers/publication.rb +27 -14
- data/lib/pubid/amca/identifiers/standard.rb +5 -3
- data/lib/pubid/amca/identifiers.rb +1 -0
- data/lib/pubid/amca/parser.rb +1 -1
- data/lib/pubid/amca/scheme.rb +16 -0
- data/lib/pubid/amca/single_identifier.rb +24 -1
- data/lib/pubid/amca/urn_generator.rb +3 -4
- data/lib/pubid/amca.rb +3 -50
- data/lib/pubid/ansi/builder.rb +5 -7
- data/lib/pubid/ansi/identifier.rb +1 -19
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +1 -2
- data/lib/pubid/ansi/identifiers/standard.rb +3 -2
- data/lib/pubid/ansi/parser.rb +1 -1
- data/lib/pubid/ansi/scheme.rb +15 -0
- data/lib/pubid/ansi/single_identifier.rb +31 -2
- data/lib/pubid/ansi/urn_generator.rb +38 -3
- data/lib/pubid/ansi.rb +6 -47
- data/lib/pubid/api/builder.rb +72 -45
- data/lib/pubid/api/identifier.rb +9 -30
- data/lib/pubid/api/identifiers/base.rb +14 -2
- data/lib/pubid/api/identifiers/bulletin.rb +2 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +2 -0
- data/lib/pubid/api/identifiers/mpms.rb +28 -10
- data/lib/pubid/api/identifiers/publication.rb +2 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +2 -0
- data/lib/pubid/api/identifiers/specification.rb +2 -0
- data/lib/pubid/api/identifiers/standard.rb +2 -0
- data/lib/pubid/api/identifiers/technical_report.rb +2 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +16 -0
- data/lib/pubid/api/parser.rb +1 -1
- data/lib/pubid/api/scheme.rb +66 -0
- data/lib/pubid/api/single_identifier.rb +32 -10
- data/lib/pubid/api/urn_generator.rb +18 -0
- data/lib/pubid/api.rb +5 -56
- data/lib/pubid/ashrae/builder.rb +35 -56
- data/lib/pubid/ashrae/identifier.rb +16 -6
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +11 -7
- data/lib/pubid/ashrae/identifiers/addendum.rb +20 -9
- data/lib/pubid/ashrae/identifiers/base.rb +15 -111
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +16 -8
- data/lib/pubid/ashrae/identifiers/errata.rb +10 -9
- data/lib/pubid/ashrae/identifiers/guideline.rb +0 -3
- data/lib/pubid/ashrae/identifiers/interpretation.rb +10 -16
- data/lib/pubid/ashrae/identifiers/standard.rb +0 -3
- data/lib/pubid/ashrae/identifiers.rb +1 -0
- data/lib/pubid/ashrae/parser.rb +16 -40
- data/lib/pubid/ashrae/scheme.rb +53 -0
- data/lib/pubid/ashrae/single_identifier.rb +14 -1
- data/lib/pubid/ashrae/supplement_identifier.rb +6 -21
- data/lib/pubid/ashrae/urn_generator.rb +10 -8
- data/lib/pubid/ashrae.rb +2 -58
- data/lib/pubid/asme/builder.rb +2 -11
- data/lib/pubid/asme/components/code.rb +2 -10
- data/lib/pubid/asme/identifier.rb +0 -9
- data/lib/pubid/asme/identifiers/base.rb +60 -0
- data/lib/pubid/asme/identifiers/standard.rb +2 -86
- data/lib/pubid/asme/parser.rb +1 -1
- data/lib/pubid/asme/scheme.rb +37 -0
- data/lib/pubid/asme/single_identifier.rb +2 -11
- data/lib/pubid/asme/urn_generator.rb +2 -2
- data/lib/pubid/asme.rb +1 -47
- data/lib/pubid/astm/builder.rb +3 -10
- data/lib/pubid/astm/components/code.rb +0 -9
- data/lib/pubid/astm/identifier.rb +0 -9
- data/lib/pubid/astm/identifiers/adjunct.rb +9 -16
- data/lib/pubid/astm/identifiers/data_series.rb +14 -2
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +34 -25
- data/lib/pubid/astm/identifiers/manual.rb +25 -8
- data/lib/pubid/astm/identifiers/monograph.rb +14 -2
- data/lib/pubid/astm/identifiers/research_report.rb +5 -8
- data/lib/pubid/astm/identifiers/standard.rb +37 -8
- data/lib/pubid/astm/identifiers/technical_report.rb +13 -2
- data/lib/pubid/astm/identifiers/work_in_progress.rb +10 -1
- data/lib/pubid/astm/parser.rb +1 -1
- data/lib/pubid/astm/scheme.rb +55 -0
- data/lib/pubid/astm/single_identifier.rb +10 -32
- data/lib/pubid/astm/urn_generator.rb +5 -7
- data/lib/pubid/astm.rb +27 -44
- data/lib/pubid/bsi/builder.rb +107 -119
- data/lib/pubid/bsi/identifier.rb +25 -4
- data/lib/pubid/bsi/identifiers/addendum_document.rb +37 -3
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +47 -19
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +39 -8
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +55 -2
- data/lib/pubid/bsi/identifiers/amendment.rb +22 -30
- data/lib/pubid/bsi/identifiers/base.rb +11 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +7 -1
- data/lib/pubid/bsi/identifiers/british_standard.rb +1 -2
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +87 -13
- data/lib/pubid/bsi/identifiers/committee_document.rb +17 -10
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +87 -19
- data/lib/pubid/bsi/identifiers/corrigendum.rb +10 -26
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +36 -0
- data/lib/pubid/bsi/identifiers/disc.rb +29 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +46 -2
- data/lib/pubid/bsi/identifiers/electronic_book.rb +38 -2
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +21 -10
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +47 -0
- data/lib/pubid/bsi/identifiers/flex.rb +34 -3
- data/lib/pubid/bsi/identifiers/handbook.rb +17 -1
- data/lib/pubid/bsi/identifiers/index.rb +32 -0
- data/lib/pubid/bsi/identifiers/method.rb +41 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +29 -4
- data/lib/pubid/bsi/identifiers/practice_guide.rb +7 -1
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +54 -2
- data/lib/pubid/bsi/identifiers/published_document.rb +54 -2
- data/lib/pubid/bsi/identifiers/section.rb +30 -0
- data/lib/pubid/bsi/identifiers/set.rb +20 -14
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -10
- data/lib/pubid/bsi/identifiers/supplement_document.rb +25 -3
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +46 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +47 -2
- data/lib/pubid/bsi/identifiers/test_method.rb +32 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +22 -7
- data/lib/pubid/bsi/identifiers.rb +1 -0
- data/lib/pubid/bsi/parser.rb +6 -20
- data/lib/pubid/bsi/scheme.rb +243 -0
- data/lib/pubid/bsi/single_identifier.rb +82 -94
- data/lib/pubid/bsi/urn_generator.rb +5 -13
- data/lib/pubid/bsi.rb +2 -252
- data/lib/pubid/builder/base.rb +13 -62
- data/lib/pubid/bundled_identifier.rb +10 -18
- data/lib/pubid/ccsds/builder.rb +4 -5
- data/lib/pubid/ccsds/identifier.rb +3 -63
- data/lib/pubid/ccsds/identifiers/base.rb +51 -14
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +8 -9
- data/lib/pubid/ccsds/parser.rb +3 -5
- data/lib/pubid/ccsds/scheme.rb +57 -0
- data/lib/pubid/ccsds/single_identifier.rb +3 -6
- data/lib/pubid/ccsds/supplement_identifier.rb +13 -17
- data/lib/pubid/ccsds/urn_generator.rb +6 -6
- data/lib/pubid/ccsds.rb +1 -44
- data/lib/pubid/cen_cenelec/builder.rb +29 -61
- data/lib/pubid/cen_cenelec/identifier.rb +5 -28
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +4 -9
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +12 -2
- data/lib/pubid/cen_cenelec/identifiers/base.rb +46 -5
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +27 -6
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +17 -2
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +4 -62
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +7 -20
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +6 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/parser.rb +1 -1
- data/lib/pubid/cen_cenelec/scheme.rb +164 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +91 -10
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +7 -6
- data/lib/pubid/cen_cenelec/urn_generator.rb +7 -7
- data/lib/pubid/cen_cenelec.rb +1 -188
- data/lib/pubid/cie/builder.rb +24 -149
- data/lib/pubid/cie/components/code.rb +72 -0
- data/lib/pubid/cie/identifier.rb +5 -20
- data/lib/pubid/cie/identifiers/bundle.rb +5 -35
- data/lib/pubid/cie/identifiers/conference.rb +6 -11
- data/lib/pubid/cie/identifiers/corrigendum.rb +23 -17
- data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
- data/lib/pubid/cie/identifiers/identical.rb +9 -9
- data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
- data/lib/pubid/cie/identifiers/standard.rb +8 -43
- data/lib/pubid/cie/identifiers/supplement.rb +25 -27
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +3 -7
- data/lib/pubid/cie/identifiers.rb +0 -2
- data/lib/pubid/cie/parser.rb +6 -55
- data/lib/pubid/cie/scheme.rb +64 -0
- data/lib/pubid/cie/single_identifier.rb +5 -44
- data/lib/pubid/cie/supplement_identifier.rb +16 -29
- data/lib/pubid/cie/urn_generator.rb +8 -11
- data/lib/pubid/cie.rb +2 -57
- data/lib/pubid/components/code.rb +8 -22
- data/lib/pubid/components/date.rb +18 -41
- data/lib/pubid/components/edition.rb +6 -9
- data/lib/pubid/components/language.rb +4 -6
- data/lib/pubid/components/locality.rb +1 -10
- data/lib/pubid/components/publisher.rb +6 -9
- data/lib/pubid/components/stage.rb +14 -5
- data/lib/pubid/components/type.rb +15 -5
- data/lib/pubid/components/typed_stage.rb +8 -11
- data/lib/pubid/components.rb +0 -4
- data/lib/pubid/core/update_codes.rb +7 -28
- data/lib/pubid/csa/builder.rb +48 -48
- data/lib/pubid/csa/composite_identifier.rb +7 -18
- data/lib/pubid/csa/identifier.rb +78 -191
- data/lib/pubid/csa/identifiers/base.rb +123 -0
- data/lib/pubid/csa/identifiers/bundled.rb +9 -25
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
- data/lib/pubid/csa/identifiers/cec.rb +103 -40
- data/lib/pubid/csa/identifiers/combined.rb +69 -97
- data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
- data/lib/pubid/csa/identifiers/package.rb +4 -4
- data/lib/pubid/csa/identifiers/series.rb +104 -0
- data/lib/pubid/csa/parser.rb +8 -12
- data/lib/pubid/csa/scheme.rb +44 -0
- data/lib/pubid/csa/single_identifier.rb +5 -94
- data/lib/pubid/csa/urn_generator.rb +2 -9
- data/lib/pubid/csa/wrapper_identifier.rb +10 -43
- data/lib/pubid/csa.rb +1 -56
- data/lib/pubid/etsi/builder.rb +4 -13
- data/lib/pubid/etsi/components/code.rb +9 -10
- data/lib/pubid/etsi/components/version.rb +5 -0
- data/lib/pubid/etsi/identifier.rb +12 -2
- data/lib/pubid/etsi/identifiers/base.rb +24 -60
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +4 -207
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +14 -46
- data/lib/pubid/etsi/identifiers.rb +1 -0
- data/lib/pubid/etsi/parser.rb +3 -9
- data/lib/pubid/etsi/scheme.rb +42 -0
- data/lib/pubid/etsi.rb +2 -52
- data/lib/pubid/export/data_class_exporter.rb +59 -0
- data/lib/pubid/export/exporter.rb +47 -6
- data/lib/pubid/export/flavor_exporter.rb +276 -124
- data/lib/pubid/export/ieee_exporter.rb +78 -0
- data/lib/pubid/export/itu_exporter.rb +66 -0
- data/lib/pubid/export/nist_exporter.rb +64 -0
- data/lib/pubid/export/registry_exporter.rb +90 -0
- data/lib/pubid/export/scheme_exporter.rb +70 -0
- data/lib/pubid/export.rb +6 -0
- data/lib/pubid/identifier.rb +37 -920
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/identifier_registry.rb +198 -0
- data/lib/pubid/idf/builder.rb +7 -7
- data/lib/pubid/idf/identifier.rb +13 -23
- data/lib/pubid/idf/identifiers/amendment.rb +1 -2
- data/lib/pubid/idf/identifiers/corrigendum.rb +1 -2
- data/lib/pubid/idf/identifiers/international_standard.rb +1 -2
- data/lib/pubid/idf/identifiers/reviewed_method.rb +1 -2
- data/lib/pubid/idf/parser.rb +5 -6
- data/lib/pubid/idf/scheme.rb +61 -0
- data/lib/pubid/idf/supplement_identifier.rb +13 -5
- data/lib/pubid/idf/urn_generator.rb +39 -4
- data/lib/pubid/idf.rb +1 -65
- data/lib/pubid/iec/builder.rb +91 -92
- data/lib/pubid/iec/components/code.rb +32 -9
- data/lib/pubid/iec/components/publisher.rb +1 -1
- data/lib/pubid/iec/identifier.rb +8 -328
- data/lib/pubid/iec/identifiers/amendment.rb +5 -8
- data/lib/pubid/iec/identifiers/base.rb +31 -7
- data/lib/pubid/iec/identifiers/component_specification.rb +13 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +12 -1
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +30 -29
- data/lib/pubid/iec/identifiers/corrigendum.rb +5 -4
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +36 -43
- data/lib/pubid/iec/identifiers/guide.rb +18 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +9 -24
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +3 -2
- data/lib/pubid/iec/identifiers/operational_document.rb +13 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +15 -2
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +24 -26
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +13 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +13 -2
- data/lib/pubid/iec/identifiers/technical_report.rb +21 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +21 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +12 -1
- data/lib/pubid/iec/identifiers/test_report_form.rb +46 -3
- data/lib/pubid/iec/identifiers/vap_identifier.rb +34 -33
- data/lib/pubid/iec/identifiers/white_paper.rb +13 -3
- data/lib/pubid/iec/identifiers/working_document.rb +60 -26
- data/lib/pubid/iec/parser.rb +42 -73
- data/lib/pubid/iec/scheme.rb +71 -0
- data/lib/pubid/iec/single_identifier.rb +23 -15
- data/lib/pubid/iec/supplement_identifier.rb +67 -84
- data/lib/pubid/iec/urn_generator.rb +143 -195
- data/lib/pubid/iec/urn_parser.rb +246 -85
- data/lib/pubid/iec.rb +66 -45
- data/lib/pubid/ieee/aiee/builder.rb +3 -17
- data/lib/pubid/ieee/aiee/identifier.rb +62 -46
- data/lib/pubid/ieee/aiee/parser.rb +1 -1
- data/lib/pubid/ieee/builder.rb +81 -398
- data/lib/pubid/ieee/components/code.rb +0 -8
- data/lib/pubid/ieee/components/draft.rb +0 -54
- data/lib/pubid/ieee/components/relationship.rb +149 -5
- data/lib/pubid/ieee/identifier.rb +11 -3
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +14 -62
- data/lib/pubid/ieee/identifiers/base.rb +547 -340
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +12 -6
- data/lib/pubid/ieee/identifiers/corrigendum.rb +12 -15
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +13 -24
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +7 -3
- data/lib/pubid/ieee/identifiers/dual_published.rb +7 -58
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +11 -99
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +11 -25
- data/lib/pubid/ieee/identifiers/joint_development.rb +15 -66
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +24 -58
- data/lib/pubid/ieee/identifiers/nesc/base.rb +19 -90
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +5 -20
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +5 -16
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +2 -11
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +3 -18
- data/lib/pubid/ieee/identifiers/nesc.rb +0 -1
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +9 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +6 -29
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +11 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +39 -4
- data/lib/pubid/ieee/identifiers/standard.rb +2 -5
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +7 -26
- data/lib/pubid/ieee/identifiers.rb +1 -2
- data/lib/pubid/ieee/ire/builder.rb +6 -7
- data/lib/pubid/ieee/ire/identifier.rb +33 -48
- data/lib/pubid/ieee/ire/parser.rb +1 -1
- data/lib/pubid/ieee/nesc/builder.rb +20 -33
- data/lib/pubid/ieee/nesc/parser.rb +15 -16
- data/lib/pubid/ieee/parser.rb +44 -462
- data/lib/pubid/ieee/scheme.rb +90 -0
- data/lib/pubid/ieee/typed_stages.rb +1 -12
- data/lib/pubid/ieee/urn_generator.rb +8 -35
- data/lib/pubid/ieee.rb +2 -133
- data/lib/pubid/ieee_debug.rb +1 -0
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +17 -5
- data/lib/pubid/iho/identifiers/base.rb +30 -64
- data/lib/pubid/iho/identifiers/bibliographic.rb +5 -1
- data/lib/pubid/iho/identifiers/circular_letter.rb +5 -1
- data/lib/pubid/iho/identifiers/miscellaneous.rb +5 -1
- data/lib/pubid/iho/identifiers/publication.rb +5 -1
- data/lib/pubid/iho/identifiers/standard.rb +5 -1
- data/lib/pubid/iho/identifiers.rb +1 -0
- data/lib/pubid/iho/parser.rb +4 -4
- data/lib/pubid/iho/scheme.rb +29 -0
- data/lib/pubid/iho/urn_generator.rb +3 -3
- data/lib/pubid/iho.rb +3 -59
- data/lib/pubid/iso/builder.rb +57 -68
- data/lib/pubid/iso/bundled_identifier.rb +3 -56
- data/lib/pubid/iso/combined_identifier.rb +4 -6
- data/lib/pubid/iso/components/code.rb +19 -7
- data/lib/pubid/iso/components/publisher.rb +8 -10
- data/lib/pubid/iso/components.rb +4 -2
- data/lib/pubid/iso/identifier.rb +11 -260
- data/lib/pubid/iso/identifiers/addendum.rb +6 -9
- data/lib/pubid/iso/identifiers/amendment.rb +4 -8
- data/lib/pubid/iso/identifiers/base.rb +115 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +1 -0
- data/lib/pubid/iso/identifiers/directives.rb +2 -8
- data/lib/pubid/iso/identifiers/directives_supplement.rb +26 -55
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +1 -0
- 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 +4 -10
- 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 +3 -11
- data/lib/pubid/iso/identifiers/tc_document.rb +15 -44
- 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 +1 -0
- data/lib/pubid/iso/parser.rb +19 -43
- data/lib/pubid/iso/scheme.rb +187 -0
- data/lib/pubid/iso/single_identifier.rb +7 -6
- data/lib/pubid/iso/supplement_identifier.rb +3 -29
- data/lib/pubid/iso/urn_generator.rb +177 -78
- data/lib/pubid/iso/urn_parser.rb +10 -29
- data/lib/pubid/iso.rb +2 -188
- data/lib/pubid/itu/builder.rb +41 -230
- data/lib/pubid/itu/components/code.rb +12 -57
- data/lib/pubid/itu/components/sector.rb +4 -15
- data/lib/pubid/itu/components/series.rb +4 -0
- data/lib/pubid/itu/identifier.rb +51 -2
- data/lib/pubid/itu/identifiers/amendment.rb +31 -7
- data/lib/pubid/itu/identifiers/annex.rb +4 -13
- data/lib/pubid/itu/identifiers/base.rb +128 -456
- data/lib/pubid/itu/identifiers/combined_identifier.rb +25 -99
- data/lib/pubid/itu/identifiers/corrigendum.rb +25 -16
- data/lib/pubid/itu/identifiers/recommendation.rb +4 -3
- data/lib/pubid/itu/identifiers/special_publication.rb +3 -3
- data/lib/pubid/itu/identifiers/supplement.rb +16 -119
- data/lib/pubid/itu/identifiers.rb +1 -10
- data/lib/pubid/itu/model.rb +1 -1
- data/lib/pubid/itu/parser.rb +27 -481
- data/lib/pubid/itu/scheme.rb +174 -0
- data/lib/pubid/itu/urn_generator.rb +6 -36
- data/lib/pubid/itu.rb +2 -58
- data/lib/pubid/jcgm/builder.rb +19 -37
- data/lib/pubid/jcgm/identifier.rb +0 -10
- data/lib/pubid/jcgm/identifiers/amendment.rb +11 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +15 -3
- data/lib/pubid/jcgm/identifiers.rb +0 -2
- data/lib/pubid/jcgm/parser.rb +7 -74
- data/lib/pubid/jcgm/scheme.rb +60 -0
- data/lib/pubid/jcgm/single_identifier.rb +14 -84
- data/lib/pubid/jcgm/supplement_identifier.rb +4 -39
- data/lib/pubid/jcgm/urn_generator.rb +19 -25
- data/lib/pubid/jcgm.rb +2 -57
- data/lib/pubid/jis/builder.rb +52 -44
- data/lib/pubid/jis/components/code.rb +59 -0
- data/lib/pubid/{astm → jis}/components.rb +1 -1
- data/lib/pubid/jis/identifier.rb +5 -181
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/base.rb +72 -0
- data/lib/pubid/jis/identifiers/standard.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_report.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +6 -32
- data/lib/pubid/jis/scheme.rb +49 -0
- data/lib/pubid/jis/single_identifier.rb +12 -6
- data/lib/pubid/jis/supplement_identifier.rb +14 -17
- data/lib/pubid/jis.rb +2 -48
- data/lib/pubid/nist/builder.rb +1765 -146
- data/lib/pubid/nist/components/code.rb +20 -9
- data/lib/pubid/nist/components/edition.rb +0 -16
- data/lib/pubid/nist/components/publisher.rb +24 -0
- data/lib/pubid/nist/components/supplement.rb +21 -91
- data/lib/pubid/nist/components.rb +1 -0
- data/lib/pubid/nist/configuration.rb +2 -12
- data/lib/pubid/nist/identifiers/base.rb +417 -662
- data/lib/pubid/nist/identifiers/circular.rb +5 -17
- data/lib/pubid/nist/identifiers/circular_supplement.rb +6 -16
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -3
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +5 -7
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +5 -18
- data/lib/pubid/nist/identifiers/crpl_report.rb +13 -16
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -18
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -3
- data/lib/pubid/nist/identifiers/handbook.rb +4 -12
- data/lib/pubid/nist/identifiers/internal_report.rb +7 -15
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -3
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +11 -20
- data/lib/pubid/nist/identifiers/monograph.rb +11 -22
- data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
- data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
- data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
- data/lib/pubid/nist/identifiers/report.rb +10 -19
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -12
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -4
- data/lib/pubid/nist/identifiers.rb +1 -1
- data/lib/pubid/nist/parser.rb +429 -97
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +34 -35
- data/lib/pubid/nist/urn_generator.rb +8 -14
- data/lib/pubid/nist.rb +5 -107
- data/lib/pubid/oiml/builder.rb +10 -91
- data/lib/pubid/oiml/components/code.rb +0 -17
- data/lib/pubid/oiml/identifier.rb +0 -53
- data/lib/pubid/oiml/identifiers/annex.rb +46 -13
- data/lib/pubid/oiml/identifiers/base.rb +36 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +0 -2
- data/lib/pubid/oiml/identifiers/document.rb +0 -2
- data/lib/pubid/oiml/identifiers/expert_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/guide.rb +0 -2
- data/lib/pubid/oiml/identifiers/recommendation.rb +0 -2
- data/lib/pubid/oiml/identifiers/seminar_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/vocabulary.rb +0 -2
- data/lib/pubid/oiml/identifiers.rb +1 -3
- data/lib/pubid/oiml/parser.rb +17 -118
- data/lib/pubid/oiml/scheme.rb +46 -0
- data/lib/pubid/oiml/single_identifier.rb +43 -66
- data/lib/pubid/oiml/supplement_identifier.rb +17 -62
- data/lib/pubid/oiml/urn_generator.rb +8 -22
- data/lib/pubid/oiml.rb +1 -56
- data/lib/pubid/parser.rb +0 -1
- data/lib/pubid/parsers/mr_string.rb +7 -120
- data/lib/pubid/plateau/builder.rb +4 -8
- data/lib/pubid/plateau/identifiers/base.rb +36 -40
- data/lib/pubid/plateau/identifiers/handbook.rb +7 -1
- data/lib/pubid/plateau/identifiers/technical_report.rb +5 -1
- data/lib/pubid/plateau/identifiers.rb +1 -0
- data/lib/pubid/plateau/parser.rb +6 -16
- data/lib/pubid/plateau/scheme.rb +45 -0
- data/lib/pubid/plateau/supplement_identifier.rb +15 -11
- data/lib/pubid/plateau.rb +1 -58
- data/lib/pubid/renderers/base.rb +0 -47
- data/lib/pubid/renderers/directives_renderer.rb +14 -27
- data/lib/pubid/renderers/guide_renderer.rb +1 -7
- data/lib/pubid/renderers/human_readable.rb +9 -34
- data/lib/pubid/renderers/iwa_renderer.rb +1 -5
- data/lib/pubid/renderers/mr_string.rb +6 -54
- data/lib/pubid/renderers/supplement_renderer.rb +2 -5
- data/lib/pubid/renderers.rb +0 -1
- data/lib/pubid/rendering/base.rb +73 -0
- data/lib/pubid/rendering/common.rb +211 -0
- data/lib/pubid/rendering/context.rb +21 -33
- data/lib/pubid/rendering/format.rb +25 -0
- data/lib/pubid/rendering/numbering.rb +7 -25
- data/lib/pubid/rendering/supplement.rb +4 -4
- data/lib/pubid/rendering.rb +3 -0
- data/lib/pubid/sae/builder.rb +1 -1
- data/lib/pubid/sae/components/date.rb +0 -8
- data/lib/pubid/sae/components/type.rb +1 -5
- data/lib/pubid/sae/identifier.rb +12 -2
- data/lib/pubid/sae/identifiers/base.rb +28 -33
- data/lib/pubid/sae/identifiers.rb +1 -0
- data/lib/pubid/sae/parser.rb +1 -1
- data/lib/pubid/sae/scheme.rb +47 -0
- data/lib/pubid/sae/urn_generator.rb +10 -2
- data/lib/pubid/sae.rb +2 -49
- data/lib/pubid/scheme.rb +207 -0
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +10 -424
- data/lib/tasks/export.rake +5 -6
- data/lib/tasks/website-data.json +1796 -1854
- metadata +45 -307
- data/data/bipm/update_codes.yaml +0 -9
- data/data/nist/series.yaml +0 -155
- data/lib/pubid/adobe/builder.rb +0 -52
- data/lib/pubid/adobe/identifier.rb +0 -47
- data/lib/pubid/adobe/identifiers/publication.rb +0 -31
- data/lib/pubid/adobe/identifiers/tech_note.rb +0 -32
- data/lib/pubid/adobe/identifiers.rb +0 -10
- data/lib/pubid/adobe/parser.rb +0 -136
- data/lib/pubid/adobe/renderer.rb +0 -39
- data/lib/pubid/adobe/urn_generator.rb +0 -42
- data/lib/pubid/adobe/urn_parser.rb +0 -69
- data/lib/pubid/adobe.rb +0 -60
- data/lib/pubid/amca/renderer.rb +0 -82
- data/lib/pubid/amca/urn_parser.rb +0 -28
- data/lib/pubid/ansi/renderer.rb +0 -53
- data/lib/pubid/ansi/urn_parser.rb +0 -23
- data/lib/pubid/api/identifiers.rb +0 -18
- data/lib/pubid/api/renderer.rb +0 -98
- data/lib/pubid/api/urn_parser.rb +0 -35
- data/lib/pubid/ashrae/renderer.rb +0 -117
- data/lib/pubid/ashrae/urn_parser.rb +0 -27
- data/lib/pubid/asme/renderer.rb +0 -66
- data/lib/pubid/asme/urn_parser.rb +0 -31
- data/lib/pubid/astm/identifiers/code_number.rb +0 -81
- data/lib/pubid/astm/identifiers.rb +0 -19
- data/lib/pubid/astm/renderer.rb +0 -172
- data/lib/pubid/astm/urn_parser.rb +0 -30
- data/lib/pubid/bipm/builder.rb +0 -163
- data/lib/pubid/bipm/identifier.rb +0 -285
- data/lib/pubid/bipm/identifiers/committee_document.rb +0 -36
- data/lib/pubid/bipm/identifiers/guide.rb +0 -35
- data/lib/pubid/bipm/identifiers/meeting.rb +0 -53
- data/lib/pubid/bipm/identifiers/mep.rb +0 -33
- data/lib/pubid/bipm/identifiers/metrologia_article.rb +0 -48
- data/lib/pubid/bipm/identifiers/si_brochure.rb +0 -33
- data/lib/pubid/bipm/identifiers.rb +0 -15
- data/lib/pubid/bipm/parser.rb +0 -237
- data/lib/pubid/bipm/renderer.rb +0 -118
- data/lib/pubid/bipm/urn_generator.rb +0 -58
- data/lib/pubid/bipm/urn_parser.rb +0 -60
- data/lib/pubid/bipm.rb +0 -91
- data/lib/pubid/bsi/renderer.rb +0 -1064
- data/lib/pubid/bsi/urn_parser.rb +0 -52
- data/lib/pubid/calconnect/builder.rb +0 -38
- data/lib/pubid/calconnect/identifier.rb +0 -121
- data/lib/pubid/calconnect/identifiers/standard.rb +0 -29
- data/lib/pubid/calconnect/identifiers.rb +0 -9
- data/lib/pubid/calconnect/parser.rb +0 -54
- data/lib/pubid/calconnect/renderer.rb +0 -36
- data/lib/pubid/calconnect/urn_generator.rb +0 -33
- data/lib/pubid/calconnect/urn_parser.rb +0 -34
- data/lib/pubid/calconnect.rb +0 -82
- data/lib/pubid/ccsds/urn_parser.rb +0 -20
- data/lib/pubid/cen_cenelec/renderer.rb +0 -261
- data/lib/pubid/cen_cenelec/urn_parser.rb +0 -28
- data/lib/pubid/cie/identifiers/code_attributes.rb +0 -52
- data/lib/pubid/cie/identifiers/proceedings.rb +0 -41
- data/lib/pubid/cie/urn_parser.rb +0 -28
- data/lib/pubid/components/adoption.rb +0 -104
- data/lib/pubid/components/iteration.rb +0 -32
- data/lib/pubid/components/relationship.rb +0 -151
- data/lib/pubid/components/supplement.rb +0 -184
- data/lib/pubid/csa/renderer.rb +0 -300
- data/lib/pubid/csa/urn_parser.rb +0 -33
- data/lib/pubid/doi/builder.rb +0 -18
- data/lib/pubid/doi/identifier.rb +0 -49
- data/lib/pubid/doi/identifiers/resource.rb +0 -30
- data/lib/pubid/doi/identifiers.rb +0 -9
- data/lib/pubid/doi/parser.rb +0 -52
- data/lib/pubid/doi/renderer.rb +0 -13
- data/lib/pubid/doi.rb +0 -55
- data/lib/pubid/easc/builder.rb +0 -55
- data/lib/pubid/easc/identifier.rb +0 -59
- data/lib/pubid/easc/identifiers/pmg.rb +0 -20
- data/lib/pubid/easc/identifiers/rmg.rb +0 -19
- data/lib/pubid/easc/identifiers.rb +0 -10
- data/lib/pubid/easc/parser.rb +0 -88
- data/lib/pubid/easc/renderer.rb +0 -48
- data/lib/pubid/easc/urn_generator.rb +0 -46
- data/lib/pubid/easc/urn_parser.rb +0 -57
- data/lib/pubid/easc.rb +0 -52
- data/lib/pubid/ecma/builder.rb +0 -45
- data/lib/pubid/ecma/identifier.rb +0 -147
- data/lib/pubid/ecma/identifiers/memento.rb +0 -30
- data/lib/pubid/ecma/identifiers/standard.rb +0 -31
- data/lib/pubid/ecma/identifiers/technical_report.rb +0 -31
- data/lib/pubid/ecma/identifiers.rb +0 -11
- data/lib/pubid/ecma/parser.rb +0 -76
- data/lib/pubid/ecma/renderer.rb +0 -67
- data/lib/pubid/ecma/urn_generator.rb +0 -46
- data/lib/pubid/ecma/urn_parser.rb +0 -51
- data/lib/pubid/ecma.rb +0 -67
- data/lib/pubid/errors.rb +0 -79
- data/lib/pubid/etsi/renderer.rb +0 -48
- data/lib/pubid/etsi/urn_parser.rb +0 -34
- data/lib/pubid/gb/builder.rb +0 -45
- data/lib/pubid/gb/identifier.rb +0 -67
- data/lib/pubid/gb/identifiers/standard.rb +0 -34
- data/lib/pubid/gb/identifiers.rb +0 -9
- data/lib/pubid/gb/parser.rb +0 -63
- data/lib/pubid/gb/renderer.rb +0 -35
- data/lib/pubid/gb.rb +0 -87
- data/lib/pubid/gost/builder.rb +0 -148
- data/lib/pubid/gost/identifier.rb +0 -47
- data/lib/pubid/gost/identifiers/foreign_reference.rb +0 -25
- data/lib/pubid/gost/identifiers/harmonized.rb +0 -39
- data/lib/pubid/gost/identifiers/identical_adoption.rb +0 -39
- data/lib/pubid/gost/identifiers/interstate_standard.rb +0 -20
- data/lib/pubid/gost/identifiers/national_standard.rb +0 -19
- data/lib/pubid/gost/identifiers.rb +0 -13
- data/lib/pubid/gost/parser.rb +0 -105
- data/lib/pubid/gost/renderer.rb +0 -48
- data/lib/pubid/gost/urn_generator.rb +0 -46
- data/lib/pubid/gost/urn_parser.rb +0 -52
- data/lib/pubid/gost.rb +0 -49
- data/lib/pubid/iala/builder.rb +0 -102
- data/lib/pubid/iala/identifier.rb +0 -90
- data/lib/pubid/iala/identifiers/advice.rb +0 -15
- data/lib/pubid/iala/identifiers/annex.rb +0 -57
- data/lib/pubid/iala/identifiers/general_assembly.rb +0 -19
- data/lib/pubid/iala/identifiers/guideline.rb +0 -17
- data/lib/pubid/iala/identifiers/letter.rb +0 -16
- data/lib/pubid/iala/identifiers/manual.rb +0 -18
- data/lib/pubid/iala/identifiers/model_course.rb +0 -17
- data/lib/pubid/iala/identifiers/recommendation.rb +0 -17
- data/lib/pubid/iala/identifiers/report.rb +0 -16
- data/lib/pubid/iala/identifiers/resolution.rb +0 -16
- data/lib/pubid/iala/identifiers/standard.rb +0 -17
- data/lib/pubid/iala/identifiers.rb +0 -19
- data/lib/pubid/iala/parser.rb +0 -138
- data/lib/pubid/iala/renderer.rb +0 -36
- data/lib/pubid/iala/urn_generator.rb +0 -49
- data/lib/pubid/iala/urn_parser.rb +0 -67
- data/lib/pubid/iala.rb +0 -71
- data/lib/pubid/iana/builder.rb +0 -22
- data/lib/pubid/iana/identifier.rb +0 -140
- data/lib/pubid/iana/identifiers/registry.rb +0 -69
- data/lib/pubid/iana/identifiers.rb +0 -9
- data/lib/pubid/iana/parser.rb +0 -38
- data/lib/pubid/iana/renderer.rb +0 -32
- data/lib/pubid/iana/urn_generator.rb +0 -19
- data/lib/pubid/iana/urn_parser.rb +0 -24
- data/lib/pubid/iana.rb +0 -69
- data/lib/pubid/idf/renderer.rb +0 -84
- data/lib/pubid/idf/urn_parser.rb +0 -25
- data/lib/pubid/iec/components.rb +0 -14
- data/lib/pubid/iec/identifiers/technical_group.rb +0 -30
- data/lib/pubid/iec/identifiers.rb +0 -31
- data/lib/pubid/iec/renderer.rb +0 -267
- data/lib/pubid/ieee/compaction.rb +0 -121
- data/lib/pubid/ieee/identifiers/amendment.rb +0 -40
- data/lib/pubid/ieee/identifiers/code_number.rb +0 -82
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +0 -32
- data/lib/pubid/ieee/pre_parser.rb +0 -301
- data/lib/pubid/ieee/renderer.rb +0 -408
- data/lib/pubid/ieee/urn_parser.rb +0 -34
- data/lib/pubid/ietf/builder.rb +0 -78
- data/lib/pubid/ietf/identifier.rb +0 -5
- data/lib/pubid/ietf/identifiers/base.rb +0 -72
- data/lib/pubid/ietf/identifiers/bcp.rb +0 -36
- data/lib/pubid/ietf/identifiers/fyi.rb +0 -36
- data/lib/pubid/ietf/identifiers/internet_draft.rb +0 -45
- data/lib/pubid/ietf/identifiers/rfc.rb +0 -27
- data/lib/pubid/ietf/identifiers/serialization.rb +0 -51
- data/lib/pubid/ietf/identifiers/std.rb +0 -36
- data/lib/pubid/ietf/identifiers.rb +0 -14
- data/lib/pubid/ietf/parser.rb +0 -61
- data/lib/pubid/ietf/renderer.rb +0 -64
- data/lib/pubid/ietf/urn_generator.rb +0 -37
- data/lib/pubid/ietf/urn_parser.rb +0 -43
- data/lib/pubid/ietf.rb +0 -85
- data/lib/pubid/iho/renderer.rb +0 -30
- data/lib/pubid/iho/urn_parser.rb +0 -58
- data/lib/pubid/isbn/builder.rb +0 -44
- data/lib/pubid/isbn/check_digit.rb +0 -53
- data/lib/pubid/isbn/identifier.rb +0 -81
- data/lib/pubid/isbn/identifiers/book.rb +0 -30
- data/lib/pubid/isbn/identifiers.rb +0 -9
- data/lib/pubid/isbn/parser.rb +0 -45
- data/lib/pubid/isbn/renderer.rb +0 -16
- data/lib/pubid/isbn.rb +0 -52
- data/lib/pubid/iso/normalizer.rb +0 -89
- data/lib/pubid/itu/components/designation.rb +0 -35
- data/lib/pubid/itu/components.rb +0 -12
- data/lib/pubid/itu/identifiers/addendum.rb +0 -15
- data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +0 -87
- data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +0 -92
- data/lib/pubid/itu/identifiers/errata.rb +0 -15
- data/lib/pubid/itu/identifiers/handbook.rb +0 -38
- data/lib/pubid/itu/identifiers/question.rb +0 -63
- data/lib/pubid/itu/identifiers/report.rb +0 -39
- data/lib/pubid/itu/identifiers/standard_serialization.rb +0 -58
- data/lib/pubid/itu/urn_parser.rb +0 -31
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +0 -34
- data/lib/pubid/jcgm/identifiers/meeting.rb +0 -47
- data/lib/pubid/jcgm/renderer.rb +0 -89
- data/lib/pubid/jcgm/urn_parser.rb +0 -177
- data/lib/pubid/jis/identifiers/corrigendum.rb +0 -16
- data/lib/pubid/jis/renderer.rb +0 -69
- data/lib/pubid/jis/urn_parser.rb +0 -23
- data/lib/pubid/nist/caster.rb +0 -1234
- data/lib/pubid/nist/circular_supplement_builder.rb +0 -293
- data/lib/pubid/nist/identifier.rb +0 -8
- data/lib/pubid/nist/identifiers/dated_document.rb +0 -49
- data/lib/pubid/nist/parser_output_normalizer.rb +0 -233
- data/lib/pubid/nist/preprocessor.rb +0 -443
- data/lib/pubid/nist/renderer.rb +0 -43
- data/lib/pubid/nist/router.rb +0 -149
- data/lib/pubid/nist/series/base.rb +0 -58
- data/lib/pubid/nist/series/crpl.rb +0 -13
- data/lib/pubid/nist/series/fips.rb +0 -14
- data/lib/pubid/nist/series/ir.rb +0 -57
- data/lib/pubid/nist/series/letter_preserving.rb +0 -15
- data/lib/pubid/nist/series/mono.rb +0 -19
- data/lib/pubid/nist/series/ncstar.rb +0 -20
- data/lib/pubid/nist/series.rb +0 -49
- data/lib/pubid/nist/urn_parser.rb +0 -67
- data/lib/pubid/oasis/builder.rb +0 -79
- data/lib/pubid/oasis/identifier.rb +0 -160
- data/lib/pubid/oasis/identifiers/standard.rb +0 -29
- data/lib/pubid/oasis/identifiers.rb +0 -9
- data/lib/pubid/oasis/parser.rb +0 -34
- data/lib/pubid/oasis/renderer.rb +0 -29
- data/lib/pubid/oasis/urn_generator.rb +0 -25
- data/lib/pubid/oasis/urn_parser.rb +0 -22
- data/lib/pubid/oasis.rb +0 -79
- data/lib/pubid/ogc/builder.rb +0 -33
- data/lib/pubid/ogc/identifier.rb +0 -81
- data/lib/pubid/ogc/identifiers/document.rb +0 -26
- data/lib/pubid/ogc/identifiers.rb +0 -10
- data/lib/pubid/ogc/parser.rb +0 -40
- data/lib/pubid/ogc/renderer.rb +0 -33
- data/lib/pubid/ogc/urn_generator.rb +0 -14
- data/lib/pubid/ogc/urn_parser.rb +0 -22
- data/lib/pubid/ogc.rb +0 -71
- data/lib/pubid/oiml/identifiers/bulletin.rb +0 -137
- data/lib/pubid/oiml/identifiers/code_number.rb +0 -90
- data/lib/pubid/oiml/identifiers/errata.rb +0 -15
- data/lib/pubid/oiml/renderer.rb +0 -232
- data/lib/pubid/oiml/urn_parser.rb +0 -39
- data/lib/pubid/omg/builder.rb +0 -19
- data/lib/pubid/omg/identifier.rb +0 -47
- data/lib/pubid/omg/identifiers/specification.rb +0 -32
- data/lib/pubid/omg/identifiers.rb +0 -9
- data/lib/pubid/omg/parser.rb +0 -40
- data/lib/pubid/omg/renderer.rb +0 -19
- data/lib/pubid/omg.rb +0 -51
- data/lib/pubid/parser/grammar.rb +0 -74
- data/lib/pubid/plateau/identifier.rb +0 -4
- data/lib/pubid/plateau/renderer.rb +0 -51
- data/lib/pubid/plateau/urn_parser.rb +0 -43
- data/lib/pubid/prefixes_support.rb +0 -51
- data/lib/pubid/renderers/annotator.rb +0 -233
- data/lib/pubid/sae/renderer.rb +0 -36
- data/lib/pubid/sae/urn_parser.rb +0 -36
- data/lib/pubid/tgpp/builder.rb +0 -41
- data/lib/pubid/tgpp/identifier.rb +0 -107
- data/lib/pubid/tgpp/identifiers/technical_report.rb +0 -32
- data/lib/pubid/tgpp/identifiers/technical_specification.rb +0 -33
- data/lib/pubid/tgpp/identifiers.rb +0 -11
- data/lib/pubid/tgpp/parser.rb +0 -78
- data/lib/pubid/tgpp/renderer.rb +0 -52
- data/lib/pubid/tgpp/urn_generator.rb +0 -39
- data/lib/pubid/tgpp/urn_parser.rb +0 -30
- data/lib/pubid/tgpp.rb +0 -83
- data/lib/pubid/type_resolver.rb +0 -59
- data/lib/pubid/un/builder.rb +0 -42
- data/lib/pubid/un/identifier.rb +0 -40
- data/lib/pubid/un/identifiers/document.rb +0 -24
- data/lib/pubid/un/identifiers.rb +0 -9
- data/lib/pubid/un/parser.rb +0 -25
- data/lib/pubid/un/renderer.rb +0 -11
- data/lib/pubid/un.rb +0 -46
- data/lib/pubid/urn_parser/base.rb +0 -81
- data/lib/pubid/urn_parser/errors.rb +0 -16
- data/lib/pubid/urn_parser.rb +0 -14
- data/lib/pubid/w3c/builder.rb +0 -55
- data/lib/pubid/w3c/identifier.rb +0 -130
- data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +0 -31
- data/lib/pubid/w3c/identifiers/draft_note.rb +0 -31
- data/lib/pubid/w3c/identifiers/note.rb +0 -30
- data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/standard.rb +0 -12
- data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/working_draft.rb +0 -30
- data/lib/pubid/w3c/identifiers.rb +0 -25
- data/lib/pubid/w3c/parser.rb +0 -43
- data/lib/pubid/w3c/renderer.rb +0 -35
- data/lib/pubid/w3c/urn_generator.rb +0 -18
- data/lib/pubid/w3c/urn_parser.rb +0 -36
- data/lib/pubid/w3c.rb +0 -67
- data/lib/pubid/xsf/builder.rb +0 -17
- data/lib/pubid/xsf/identifier.rb +0 -66
- data/lib/pubid/xsf/identifiers/xep.rb +0 -31
- data/lib/pubid/xsf/identifiers.rb +0 -9
- data/lib/pubid/xsf/parser.rb +0 -25
- data/lib/pubid/xsf/renderer.rb +0 -23
- data/lib/pubid/xsf/urn_generator.rb +0 -13
- data/lib/pubid/xsf/urn_parser.rb +0 -18
- data/lib/pubid/xsf.rb +0 -81
data/lib/pubid/iso.rb
CHANGED
|
@@ -4,12 +4,6 @@ require "lutaml/model"
|
|
|
4
4
|
|
|
5
5
|
module Pubid
|
|
6
6
|
module Iso
|
|
7
|
-
extend Pubid::PrefixesSupport
|
|
8
|
-
|
|
9
|
-
# Sole ISO publisher token. Joint / co-publication forms (ISO/IEC, IEC/ISO,
|
|
10
|
-
# ISO/IEC/IEEE) are contributed symmetrically via Pubid::JOINT_PREFIXES.
|
|
11
|
-
PREFIXES = ["ISO"].freeze
|
|
12
|
-
|
|
13
7
|
autoload :Builder, "#{__dir__}/iso/builder"
|
|
14
8
|
autoload :BundledIdentifier, "#{__dir__}/iso/bundled_identifier"
|
|
15
9
|
autoload :CombinedIdentifier, "#{__dir__}/iso/combined_identifier"
|
|
@@ -17,9 +11,9 @@ module Pubid
|
|
|
17
11
|
autoload :FormatResolver, "#{__dir__}/iso/format_resolver"
|
|
18
12
|
autoload :Identifier, "#{__dir__}/iso/identifier"
|
|
19
13
|
autoload :Identifiers, "#{__dir__}/iso/identifiers"
|
|
20
|
-
autoload :Normalizer, "#{__dir__}/iso/normalizer"
|
|
21
14
|
autoload :Parser, "#{__dir__}/iso/parser"
|
|
22
15
|
autoload :RenderingStyle, "#{__dir__}/iso/rendering_style"
|
|
16
|
+
autoload :Scheme, "#{__dir__}/iso/scheme"
|
|
23
17
|
autoload :SingleIdentifier, "#{__dir__}/iso/single_identifier"
|
|
24
18
|
autoload :SupplementIdentifier, "#{__dir__}/iso/supplement_identifier"
|
|
25
19
|
autoload :UrnGenerator, "#{__dir__}/iso/urn_generator"
|
|
@@ -31,15 +25,6 @@ module Pubid
|
|
|
31
25
|
# @param format [Symbol] :auto, :human, :mr_string, or :urn
|
|
32
26
|
# @return [Identifier] the parsed identifier
|
|
33
27
|
def self.parse(identifier, format: :auto)
|
|
34
|
-
unless identifier.is_a?(String)
|
|
35
|
-
raise Pubid::Errors::InvalidInputError,
|
|
36
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
40
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
41
|
-
end
|
|
42
|
-
|
|
43
28
|
format = Pubid::FormatDetector.detect(identifier) if format == :auto
|
|
44
29
|
|
|
45
30
|
case format
|
|
@@ -48,77 +33,9 @@ module Pubid
|
|
|
48
33
|
when :mr_string
|
|
49
34
|
Pubid::Parsers::MrString.parse(identifier)
|
|
50
35
|
else
|
|
51
|
-
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Build an ISO identifier from attributes.
|
|
56
|
-
#
|
|
57
|
-
# This is the public seam: callers in other flavors should never reach
|
|
58
|
-
# into `Pubid::Iso::Identifiers::*` or `Pubid::Iso::Components::*`
|
|
59
|
-
# directly — go through this method so the internal class registry can
|
|
60
|
-
# change without breaking callers.
|
|
61
|
-
#
|
|
62
|
-
# Accepts either raw values (Strings/Integers) or pre-built components.
|
|
63
|
-
# Raw values are wrapped in the appropriate ISO component internally.
|
|
64
|
-
#
|
|
65
|
-
# @param type [Symbol] the type key (e.g. :is, :tr, :ts, :guide)
|
|
66
|
-
# @param publisher [String, Pubid::Iso::Components::Publisher] primary publisher
|
|
67
|
-
# @param copublishers [Array<String>, Array<Pubid::Components::Publisher>]
|
|
68
|
-
# @param number [String, Integer, Pubid::Iso::Components::Code]
|
|
69
|
-
# @param year [String, Integer, Pubid::Components::Date, nil]
|
|
70
|
-
# @param attrs [Hash] additional identifier attributes
|
|
71
|
-
# @return [Pubid::Iso::Identifier]
|
|
72
|
-
def self.build(type:, publisher: nil, copublishers: nil, number: nil,
|
|
73
|
-
year: nil, **attrs)
|
|
74
|
-
klass = locate_type(type) || raise(ArgumentError, "unknown ISO type: #{type.inspect}")
|
|
75
|
-
|
|
76
|
-
copub_list = Array(copublishers)
|
|
77
|
-
attrs[:publisher] = build_publisher(publisher, copub_list) if publisher || copub_list.any?
|
|
78
|
-
attrs[:copublishers] = build_copublishers(copub_list) if copub_list.any?
|
|
79
|
-
attrs[:number] = build_code(number) if number
|
|
80
|
-
attrs[:date] = build_date(year) if year
|
|
81
|
-
|
|
82
|
-
klass.new(attrs)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# @!visibility private
|
|
86
|
-
def self.build_publisher(value, copublishers = [])
|
|
87
|
-
return value if value.is_a?(Components::Publisher) && copublishers.empty?
|
|
88
|
-
|
|
89
|
-
copub_strings = copublishers.map { |cp| cp.is_a?(Components::Publisher) ? cp.publisher : cp.to_s }
|
|
90
|
-
Components::Publisher.new(
|
|
91
|
-
publisher: value.is_a?(Components::Publisher) ? value.publisher : value.to_s,
|
|
92
|
-
copublisher: copub_strings,
|
|
93
|
-
)
|
|
94
|
-
end
|
|
95
|
-
private_class_method :build_publisher
|
|
96
|
-
|
|
97
|
-
# @!visibility private
|
|
98
|
-
def self.build_copublishers(list)
|
|
99
|
-
Array(list).map do |cp|
|
|
100
|
-
next cp if cp.is_a?(Components::Publisher)
|
|
101
|
-
|
|
102
|
-
Components::Publisher.new(publisher: cp.to_s)
|
|
36
|
+
Scheme.parse(identifier)
|
|
103
37
|
end
|
|
104
38
|
end
|
|
105
|
-
private_class_method :build_copublishers
|
|
106
|
-
|
|
107
|
-
# @!visibility private
|
|
108
|
-
def self.build_code(value)
|
|
109
|
-
return value if value.is_a?(Components::Code)
|
|
110
|
-
|
|
111
|
-
Components::Code.new(value: value.to_s)
|
|
112
|
-
end
|
|
113
|
-
private_class_method :build_code
|
|
114
|
-
|
|
115
|
-
# @!visibility private
|
|
116
|
-
def self.build_date(value)
|
|
117
|
-
return value if value.is_a?(::Pubid::Components::Date)
|
|
118
|
-
|
|
119
|
-
::Pubid::Components::Date.new(year: value.to_s)
|
|
120
|
-
end
|
|
121
|
-
private_class_method :build_date
|
|
122
39
|
|
|
123
40
|
# Parse an ISO URN string
|
|
124
41
|
# @param urn [String] the URN string to parse
|
|
@@ -127,109 +44,6 @@ module Pubid
|
|
|
127
44
|
def self.parse_urn(urn)
|
|
128
45
|
UrnParser.parse(urn)
|
|
129
46
|
end
|
|
130
|
-
|
|
131
|
-
# Build an ISO identifier from a Parslet parse-tree hash (used by other
|
|
132
|
-
# flavors when parsing joint identifiers, e.g. IEC's `IEC … | ISO …` form).
|
|
133
|
-
#
|
|
134
|
-
# This is the public seam: callers should never reach into
|
|
135
|
-
# `Pubid::Iso::Builder` directly.
|
|
136
|
-
#
|
|
137
|
-
# @param hash [Hash] parse tree for an ISO identifier
|
|
138
|
-
# @return [Pubid::Iso::Identifier]
|
|
139
|
-
def self.build_from_parse(hash)
|
|
140
|
-
builder.build(hash)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
# Return the named Parslet rule atom from the ISO parser, for embedding in
|
|
144
|
-
# another flavor's grammar (e.g. IEC joint identifiers).
|
|
145
|
-
#
|
|
146
|
-
# This is the public seam: callers should never instantiate
|
|
147
|
-
# `Pubid::Iso::Parser` directly.
|
|
148
|
-
#
|
|
149
|
-
# @param rule_name [Symbol] the parser rule to expose
|
|
150
|
-
# @return [Parslet::Atoms::Base]
|
|
151
|
-
def self.joint_grammar_atom(rule_name)
|
|
152
|
-
parser.public_send(rule_name)
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
# Auto-discover all identifier types from the Identifiers namespace
|
|
156
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
157
|
-
def self.identifier_types
|
|
158
|
-
@identifier_types ||= Identifiers.constants
|
|
159
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
160
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
161
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
# Build typed stage index from identifier types
|
|
165
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
166
|
-
def self.all_typed_stages
|
|
167
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
168
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
169
|
-
klass.const_get(:TYPED_STAGES)
|
|
170
|
-
else
|
|
171
|
-
[]
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
# Memoized builder instance used by Normalizer / URN parser
|
|
177
|
-
# @return [Pubid::Iso::Builder]
|
|
178
|
-
def self.builder
|
|
179
|
-
@builder ||= Builder.new
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
# Memoized parser instance used by Normalizer
|
|
183
|
-
# @return [Pubid::Iso::Parser]
|
|
184
|
-
def self.parser
|
|
185
|
-
@parser ||= Parser.new
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
# Lookup: type code -> identifier class
|
|
189
|
-
# @param code [String, Symbol] the type key to find
|
|
190
|
-
# @return [Class, nil] the matching identifier class
|
|
191
|
-
def self.locate_type(code)
|
|
192
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
# Lookup: abbreviation -> typed stage
|
|
196
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
197
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
198
|
-
def self.locate_stage(abbr)
|
|
199
|
-
abbr_str = abbr.to_s.upcase
|
|
200
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
# Lookup: stage code -> typed stage
|
|
204
|
-
# @param stage_code [String, Symbol]
|
|
205
|
-
# @return [Pubid::Components::TypedStage, nil]
|
|
206
|
-
def self.locate_stage_by_stage_code(stage_code)
|
|
207
|
-
stage_code_sym = stage_code.to_sym
|
|
208
|
-
all_typed_stages.find { |s| s.stage_code.to_sym == stage_code_sym }
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
# Lookup: per-typed-stage code -> typed stage
|
|
212
|
-
# @param code [String, Symbol]
|
|
213
|
-
# @return [Pubid::Components::TypedStage, nil]
|
|
214
|
-
def self.locate_stage_by_code(code)
|
|
215
|
-
code_sym = code.to_sym
|
|
216
|
-
all_typed_stages.find { |s| s.code&.to_sym == code_sym }
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
# Lookup: harmonized stage code -> typed stage
|
|
220
|
-
# @param harmonized_code [String]
|
|
221
|
-
# @return [Pubid::Components::TypedStage, nil]
|
|
222
|
-
def self.locate_stage_by_harmonized_code(harmonized_code)
|
|
223
|
-
harmonized_str = harmonized_code.to_s
|
|
224
|
-
all_typed_stages.find { |s| s.harmonized_stages&.include?(harmonized_str) }
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
# Default typed stage used when no type_with_stage is present
|
|
228
|
-
# (e.g., the bare International Standard published stage)
|
|
229
|
-
# @return [Pubid::Components::TypedStage]
|
|
230
|
-
def self.default_typed_stage
|
|
231
|
-
locate_stage("") || all_typed_stages.first
|
|
232
|
-
end
|
|
233
47
|
end
|
|
234
48
|
end
|
|
235
49
|
|
data/lib/pubid/itu/builder.rb
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative "../components/date"
|
|
4
|
+
require_relative "components/sector"
|
|
5
|
+
require_relative "components/series"
|
|
6
|
+
require_relative "components/code"
|
|
7
|
+
require_relative "identifiers/recommendation"
|
|
8
|
+
require_relative "identifiers/combined_identifier"
|
|
9
|
+
require_relative "identifiers/supplement"
|
|
10
|
+
require_relative "identifiers/amendment"
|
|
11
|
+
require_relative "identifiers/corrigendum"
|
|
12
|
+
require_relative "identifiers/special_publication"
|
|
13
|
+
require_relative "identifiers/annex"
|
|
14
|
+
|
|
3
15
|
module Pubid
|
|
4
16
|
module Itu
|
|
5
17
|
class Builder
|
|
@@ -13,59 +25,15 @@ module Pubid
|
|
|
13
25
|
return build_annex(data[:annex_to])
|
|
14
26
|
end
|
|
15
27
|
|
|
16
|
-
# Common-text twin ("| ISO/IEC ..." suffix) — extract before building
|
|
17
|
-
# the base ITU identifier, then attach to whichever class the base
|
|
18
|
-
# resolves to.
|
|
19
|
-
twin = parse_common_text_twin(data.delete(:common_text_twin))
|
|
20
|
-
|
|
21
|
-
# Labelled annex of a Recommendation — "ITU-T A.23 Annex A (06/2014)".
|
|
22
|
-
# The annexed document is the :base subtree; :year/:month at this level
|
|
23
|
-
# are the annex's own date, not the base's.
|
|
24
|
-
if data[:annex_number]
|
|
25
|
-
annex = build_annex_of_recommendation(data)
|
|
26
|
-
annex.common_text_twin = twin if twin
|
|
27
|
-
return annex
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# Labelled appendix of a Recommendation — "ITU-T G.101 App. I
|
|
31
|
-
# (05/2000)". Same shape as the annex above.
|
|
32
|
-
if data[:appendix_number]
|
|
33
|
-
appendix = build_appendix_of_recommendation(data)
|
|
34
|
-
appendix.common_text_twin = twin if twin
|
|
35
|
-
return appendix
|
|
36
|
-
end
|
|
37
|
-
|
|
38
28
|
# Operational Bulletin (Special Publication) — series == "OB" or
|
|
39
29
|
# legacy long form ("Operational Bulletin No. ...").
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
# Belt-and-braces: `series_code_body` already refuses "OB" + dash, so
|
|
43
|
-
# nothing reaches here with both set — the guard documents that coupling
|
|
44
|
-
# so removing the parser's `absent?` fails loudly rather than silently
|
|
45
|
-
# rerouting.
|
|
46
|
-
if (data[:series].to_s == "OB" && data[:series_dash].nil?) ||
|
|
47
|
-
data[:_op_bull]
|
|
48
|
-
sp = build_special_publication(data)
|
|
49
|
-
sp.common_text_twin = twin if twin && sp
|
|
50
|
-
return sp
|
|
30
|
+
if data[:series].to_s == "OB" || data[:_op_bull]
|
|
31
|
+
return build_special_publication(data)
|
|
51
32
|
end
|
|
52
33
|
|
|
53
34
|
# Check if this is a supplement identifier
|
|
54
35
|
if data[:supplement_type]
|
|
55
|
-
|
|
56
|
-
supp.common_text_twin = twin if twin && supp
|
|
57
|
-
return supp
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Handbook — "ITU-R 42.HDB"
|
|
61
|
-
if data[:handbook_marker]
|
|
62
|
-
return build_handbook(data)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Question — numeric ("ITU-R 234-1/7:") or letter-series
|
|
66
|
-
# ("ITU-R P.3/BL/7"). Both carry a :study_group marker.
|
|
67
|
-
if data[:study_group]
|
|
68
|
-
return build_question(data)
|
|
36
|
+
return build_supplement(data)
|
|
69
37
|
end
|
|
70
38
|
|
|
71
39
|
# Build basic recommendation or combined identifier
|
|
@@ -74,77 +42,44 @@ module Pubid
|
|
|
74
42
|
code = build_code(data) if data[:number]
|
|
75
43
|
date = build_date(data) if data[:year]
|
|
76
44
|
|
|
77
|
-
#
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
45
|
+
# Check if this is a combined identifier (has combined_series and combined_number)
|
|
46
|
+
if data[:combined_series] || data[:combined_number]
|
|
47
|
+
if data[:combined_series]
|
|
48
|
+
combined_series = Components::Series.new(
|
|
49
|
+
series: data[:combined_series][:series].to_s,
|
|
50
|
+
)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
if data[:combined_number]
|
|
54
|
+
combined_code = Components::Code.new(
|
|
55
|
+
number: data[:combined_number].to_s,
|
|
56
|
+
subseries: data[:combined_subseries]&.to_s,
|
|
57
|
+
parts: extract_parts(data[:combined_parts]),
|
|
58
|
+
)
|
|
59
|
+
end
|
|
60
|
+
|
|
81
61
|
return Identifiers::CombinedIdentifier.new(
|
|
82
62
|
sector: sector,
|
|
83
63
|
series: series,
|
|
84
64
|
code: code,
|
|
85
|
-
|
|
65
|
+
combined_series: combined_series,
|
|
66
|
+
combined_code: combined_code,
|
|
86
67
|
date: date,
|
|
87
|
-
version: data[:version]&.to_s,
|
|
88
|
-
# with_series offers these slots on either side of
|
|
89
|
-
# combined_suffixes, so a joint id can carry them too; not
|
|
90
|
-
# forwarding them let "ITU-T H.350/X.1 attachment" compare equal to
|
|
91
|
-
# the un-attached document.
|
|
92
|
-
series_word: !data[:series_word].nil?,
|
|
93
|
-
series_dash: !data[:series_dash].nil?,
|
|
94
|
-
attachment: !data[:attachment].nil?,
|
|
95
|
-
range_end: data[:range_end]&.to_s,
|
|
96
68
|
language: data[:language]&.to_s,
|
|
97
|
-
common_text_twin: twin,
|
|
98
69
|
)
|
|
99
70
|
end
|
|
100
71
|
|
|
101
|
-
|
|
102
|
-
# Recommendation — only the leading word, captured as :report_marker,
|
|
103
|
-
# tells the two apart, and it has to, because the two series number
|
|
104
|
-
# independently and the same series/number is two real documents.
|
|
105
|
-
klass = data[:report_marker] ? Identifiers::Report : Identifiers::Recommendation
|
|
106
|
-
|
|
107
|
-
klass.new(
|
|
72
|
+
Identifiers::Recommendation.new(
|
|
108
73
|
sector: sector,
|
|
109
74
|
series: series,
|
|
110
75
|
code: code,
|
|
111
76
|
date: date,
|
|
112
|
-
version: data[:version]&.to_s,
|
|
113
|
-
series_word: !data[:series_word].nil?,
|
|
114
|
-
series_dash: !data[:series_dash].nil?,
|
|
115
|
-
attachment: !data[:attachment].nil?,
|
|
116
|
-
range_end: data[:range_end]&.to_s,
|
|
117
77
|
language: data[:language]&.to_s,
|
|
118
|
-
common_text_twin: twin,
|
|
119
78
|
)
|
|
120
79
|
end
|
|
121
80
|
|
|
122
|
-
# Parse the common-text twin string ("| ISO/IEC 13818-1:2022") into
|
|
123
|
-
# the appropriate flavor's identifier object. Returns nil if the twin
|
|
124
|
-
# is empty or unparseable.
|
|
125
|
-
def parse_common_text_twin(twin_raw)
|
|
126
|
-
return nil if twin_raw.nil?
|
|
127
|
-
|
|
128
|
-
twin_str = twin_raw.to_s.strip
|
|
129
|
-
# Strip a leading pipe if the parser captured it
|
|
130
|
-
twin_str = twin_str.sub(/\A\s*\|\s*/, "")
|
|
131
|
-
return nil if twin_str.empty?
|
|
132
|
-
|
|
133
|
-
case twin_str
|
|
134
|
-
when /\AISO\/IEC\b/, /\AISO\b/
|
|
135
|
-
Pubid::Iso.parse(twin_str)
|
|
136
|
-
when /\AIEC\b/
|
|
137
|
-
Pubid::Iec.parse(twin_str)
|
|
138
|
-
end
|
|
139
|
-
rescue StandardError
|
|
140
|
-
# If the twin doesn't parse as a known flavor, leave it as nil
|
|
141
|
-
# rather than blowing up the whole parse — the ITU half is still
|
|
142
|
-
# usable on its own.
|
|
143
|
-
nil
|
|
144
|
-
end
|
|
145
|
-
|
|
146
81
|
# Build Special Publication (OB). Sector is silently dropped — OB is a
|
|
147
|
-
# cross-bureau publication and `
|
|
82
|
+
# cross-bureau publication and `Identifiers::Base` rejects sector+OB
|
|
148
83
|
# in its constructor.
|
|
149
84
|
def build_special_publication(data)
|
|
150
85
|
Identifiers::SpecialPublication.new(
|
|
@@ -165,59 +100,6 @@ module Pubid
|
|
|
165
100
|
)
|
|
166
101
|
end
|
|
167
102
|
|
|
168
|
-
# Build a labelled annex of a Recommendation. sector/series/code are
|
|
169
|
-
# deliberately NOT copied from the base: they are not serialized on the
|
|
170
|
-
# wrapper, so copies would make a from_hash-rebuilt annex differ from the
|
|
171
|
-
# parsed one.
|
|
172
|
-
def build_annex_of_recommendation(data)
|
|
173
|
-
Identifiers::AnnexOfRecommendation.new(
|
|
174
|
-
base: build(data[:base]),
|
|
175
|
-
number: data[:annex_number].to_s,
|
|
176
|
-
date: data[:year] ? build_date(data) : nil,
|
|
177
|
-
language: data[:language]&.to_s,
|
|
178
|
-
)
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
# Build a labelled appendix of a Recommendation. Like the annex above,
|
|
182
|
-
# sector/series/code are deliberately NOT copied from the base — they are
|
|
183
|
-
# not serialized on the wrapper, so copies would make a from_hash-rebuilt
|
|
184
|
-
# appendix differ from the parsed one.
|
|
185
|
-
def build_appendix_of_recommendation(data)
|
|
186
|
-
Identifiers::AppendixOfRecommendation.new(
|
|
187
|
-
base: build(data[:base]),
|
|
188
|
-
number: data[:appendix_number].to_s,
|
|
189
|
-
material: data[:appendix_material]&.to_s,
|
|
190
|
-
date: data[:year] ? build_date(data) : nil,
|
|
191
|
-
language: data[:language]&.to_s,
|
|
192
|
-
)
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
# Build Handbook ("ITU-R 42.HDB").
|
|
196
|
-
def build_handbook(data)
|
|
197
|
-
Identifiers::Handbook.new(
|
|
198
|
-
sector: Components::Sector.new(sector: data[:sector].to_s),
|
|
199
|
-
code: build_code(data),
|
|
200
|
-
date: data[:year] ? build_date(data) : nil,
|
|
201
|
-
)
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
# Build Question (numeric or letter-series).
|
|
205
|
-
def build_question(data)
|
|
206
|
-
series = if data[:series]
|
|
207
|
-
Components::Series.new(series: data[:series].to_s)
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
Identifiers::Question.new(
|
|
211
|
-
sector: Components::Sector.new(sector: data[:sector].to_s),
|
|
212
|
-
series: series,
|
|
213
|
-
code: build_code(data),
|
|
214
|
-
study_group: data[:study_group].to_s,
|
|
215
|
-
has_bl: !data[:has_bl].nil?,
|
|
216
|
-
bracketed: !data[:bracketed].nil?,
|
|
217
|
-
has_colon: !data[:question_colon].nil?,
|
|
218
|
-
)
|
|
219
|
-
end
|
|
220
|
-
|
|
221
103
|
def build_supplement(data)
|
|
222
104
|
# Build the base identifier first
|
|
223
105
|
base = build(data[:base]) if data[:base]
|
|
@@ -227,22 +109,10 @@ module Pubid
|
|
|
227
109
|
klass = case supplement_type
|
|
228
110
|
when "Amd"
|
|
229
111
|
Identifiers::Amendment
|
|
230
|
-
when "Add"
|
|
231
|
-
Identifiers::Addendum
|
|
232
112
|
when "Cor"
|
|
233
113
|
Identifiers::Corrigendum
|
|
234
|
-
when "Err"
|
|
235
|
-
Identifiers::Errata
|
|
236
114
|
when "Suppl"
|
|
237
115
|
Identifiers::Supplement
|
|
238
|
-
else
|
|
239
|
-
# Previously fell through to a nil class and died with
|
|
240
|
-
# "undefined method 'new' for nil" one frame later. Any token
|
|
241
|
-
# added to Parser#supplement_type without a class here should
|
|
242
|
-
# say so.
|
|
243
|
-
raise ArgumentError,
|
|
244
|
-
"Unknown ITU supplement type: " \
|
|
245
|
-
"#{data[:supplement_type].inspect}"
|
|
246
116
|
end
|
|
247
117
|
|
|
248
118
|
# Build supplement date (separate from base date)
|
|
@@ -253,84 +123,25 @@ module Pubid
|
|
|
253
123
|
)
|
|
254
124
|
end
|
|
255
125
|
|
|
256
|
-
#
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
# it via #root; otherwise a supplement of an annex would carry none of
|
|
262
|
-
# them and its MR string would collapse to a bare "itu.<date>".
|
|
263
|
-
base_identity = base&.sector ? base : base&.root
|
|
264
|
-
sector = base_identity&.sector ||
|
|
265
|
-
(Components::Sector.new(sector: data[:sector].to_s) if data[:sector])
|
|
266
|
-
series = base_identity&.series ||
|
|
267
|
-
(Components::Series.new(series: data[:series].to_s) if data[:series])
|
|
268
|
-
|
|
269
|
-
attrs = {
|
|
270
|
-
sector: sector,
|
|
271
|
-
series: series,
|
|
272
|
-
code: base_identity&.code,
|
|
126
|
+
# Build supplement with extracted components
|
|
127
|
+
klass.new(
|
|
128
|
+
sector: base&.sector || Components::Sector.new(sector: data[:sector].to_s),
|
|
129
|
+
series: base&.series || (data[:series] ? Components::Series.new(series: data[:series].to_s) : nil),
|
|
130
|
+
code: base&.code,
|
|
273
131
|
base: base,
|
|
274
132
|
number: data[:supplement_number].to_s,
|
|
275
|
-
# The marker is the captured space, so its ABSENCE is the flag.
|
|
276
|
-
number_glued: data[:supplement_space].nil?,
|
|
277
|
-
slash_joined: !data[:supplement_slash].nil?,
|
|
278
133
|
date: supplement_date,
|
|
279
134
|
language: data[:language]&.to_s,
|
|
280
|
-
|
|
281
|
-
# The "series" word rides on the supplement for the base-less,
|
|
282
|
-
# series-only form; with a base it is the base's, and renders from
|
|
283
|
-
# there. It is copied up anyway (like sector/series/code above) so the
|
|
284
|
-
# supplement's own MR slug stays distinct — `render_supplement` and the
|
|
285
|
-
# base-nil-guarded key_value/== only consult it when base is nil, so
|
|
286
|
-
# the copy is render- and serialization-neutral.
|
|
287
|
-
attrs[:series_word] = if base
|
|
288
|
-
!!base_identity&.series_word
|
|
289
|
-
else
|
|
290
|
-
!data[:series_word].nil?
|
|
291
|
-
end
|
|
292
|
-
attrs[:technical] = true if data[:technical] &&
|
|
293
|
-
klass == Identifiers::Corrigendum
|
|
294
|
-
|
|
295
|
-
klass.new(**attrs)
|
|
135
|
+
)
|
|
296
136
|
end
|
|
297
137
|
|
|
298
138
|
private
|
|
299
139
|
|
|
300
|
-
# Build the additional designations of a combined recommendation from the
|
|
301
|
-
# repeated parse subtrees (each `{ designation: { series:, number:, … } }`).
|
|
302
|
-
def build_designations(combined_data)
|
|
303
|
-
Array(combined_data).map do |element|
|
|
304
|
-
d = element[:designation] || element
|
|
305
|
-
Components::Designation.new(
|
|
306
|
-
series: Components::Series.new(series: d[:series].to_s),
|
|
307
|
-
code: Components::Code.new(
|
|
308
|
-
number: d[:number].to_s,
|
|
309
|
-
series_suffix: d[:series_suffix]&.to_s,
|
|
310
|
-
series_suffix_spaced: !d[:series_suffix_spaced].nil?,
|
|
311
|
-
subseries: d[:subseries]&.to_s,
|
|
312
|
-
parts: extract_parts(d[:parts]),
|
|
313
|
-
qualifier: d[:qualifier]&.to_s,
|
|
314
|
-
qualifier_glued: !d[:qualifier].nil? && d[:qualifier_spaced].nil?,
|
|
315
|
-
),
|
|
316
|
-
)
|
|
317
|
-
end
|
|
318
|
-
end
|
|
319
|
-
|
|
320
140
|
def build_code(data)
|
|
321
141
|
Components::Code.new(
|
|
322
|
-
imp_marker: data[:imp_marker]&.to_s,
|
|
323
142
|
number: data[:number].to_s,
|
|
324
|
-
series_suffix: data[:series_suffix]&.to_s,
|
|
325
|
-
# The marker is the captured separating space, so its presence is
|
|
326
|
-
# the flag for the edition word and its ABSENCE is the flag for the
|
|
327
|
-
# qualifier letter (whose majority spelling is spaced).
|
|
328
|
-
series_suffix_spaced: !data[:series_suffix_spaced].nil?,
|
|
329
143
|
subseries: data[:subseries]&.to_s,
|
|
330
144
|
parts: extract_parts(data[:parts]),
|
|
331
|
-
qualifier: data[:qualifier]&.to_s,
|
|
332
|
-
qualifier_glued: !data[:qualifier].nil? &&
|
|
333
|
-
data[:qualifier_spaced].nil?,
|
|
334
145
|
)
|
|
335
146
|
end
|
|
336
147
|
|
|
@@ -6,77 +6,32 @@ module Pubid
|
|
|
6
6
|
module Itu
|
|
7
7
|
module Components
|
|
8
8
|
# ITU Code component
|
|
9
|
-
# Format:
|
|
10
|
-
# Examples: 1234, 1234.5, 1234-1, 1234.5-2
|
|
11
|
-
#
|
|
12
|
-
# The optional "Imp" marker identifies an Implementers' Guide for the
|
|
13
|
-
# series (e.g. G.Imp712, X.ImpOSI); the NUMBER that follows may be
|
|
14
|
-
# digits or a short letter string.
|
|
15
|
-
#
|
|
16
|
-
# SUFFIX is the edition marker "bis" / "ter" / "quater" attached
|
|
17
|
-
# directly to the number (e.g. X.50bis, V.8bis).
|
|
18
|
-
#
|
|
19
|
-
# Stays independent of Pubid::Components::Code because ITU uses
|
|
20
|
-
# +subseries+ (dot-separated, flavor-specific) and +parts+
|
|
21
|
-
# (dash-separated).
|
|
9
|
+
# Format: NUMBER[.SUBSERIES][-PART]
|
|
10
|
+
# Examples: 1234, 1234.5, 1234-1, 1234.5-2
|
|
22
11
|
class Code < Lutaml::Model::Serializable
|
|
23
|
-
attribute :imp_marker, :string
|
|
24
12
|
attribute :number, :string
|
|
25
|
-
attribute :series_suffix, :string
|
|
26
|
-
# ITU prints the edition word both glued ("X.50bis") and space-
|
|
27
|
-
# separated ("E.250 bis"). The word itself is stored without the space,
|
|
28
|
-
# so `series_suffix` stays a clean, whitespace-free value to compare and
|
|
29
|
-
# index on; the spacing is this rendering-only flag. Named for the
|
|
30
|
-
# rarer-in-code form so the `false` default stays out of `to_hash`.
|
|
31
|
-
attribute :series_suffix_spaced, :boolean, default: -> { false }
|
|
32
13
|
attribute :subseries, :string
|
|
33
|
-
attribute :parts, :string, collection: true
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
attribute :qualifier_glued, :boolean, default: -> { false }
|
|
14
|
+
attribute :parts, :string, collection: true
|
|
15
|
+
|
|
16
|
+
def initialize(number:, subseries: nil, parts: nil)
|
|
17
|
+
@number = number
|
|
18
|
+
@subseries = subseries
|
|
19
|
+
@parts = parts || []
|
|
20
|
+
end
|
|
41
21
|
|
|
42
|
-
# Segment order mirrors the grammar exactly — a GLUED suffix is
|
|
43
|
-
# captured inside `standard_code` (the edition word before the
|
|
44
|
-
# subseries, the qualifier after the parts), while a SPACED one is
|
|
45
|
-
# captured afterwards by `code_suffixes`. Rendering the edition word
|
|
46
|
-
# unconditionally first would print "Q.11a bis" back as "Q.11 bisa".
|
|
47
22
|
def to_s
|
|
48
|
-
result =
|
|
49
|
-
result += series_suffix.to_s if series_suffix && !series_suffix_spaced
|
|
23
|
+
result = number.to_s
|
|
50
24
|
result += ".#{subseries}" if subseries
|
|
51
25
|
result += parts.map { |p| "-#{p}" }.join if parts&.any?
|
|
52
|
-
result += qualifier.to_s if qualifier && qualifier_glued
|
|
53
|
-
result += " #{series_suffix}" if series_suffix && series_suffix_spaced
|
|
54
|
-
result += " #{qualifier}" if qualifier && !qualifier_glued
|
|
55
26
|
result
|
|
56
27
|
end
|
|
57
28
|
|
|
58
|
-
# Space-free rendering for URN and MR use: the print form may separate
|
|
59
|
-
# the edition word or the qualifier letter with a space ("E.250 bis",
|
|
60
|
-
# "D.200 R"), which is not admissible inside a URN segment. Removing
|
|
61
|
-
# the space keeps "D.200" and "D.200 R" on distinct URNs, which
|
|
62
|
-
# dropping the suffix would not.
|
|
63
|
-
def compact_s
|
|
64
|
-
to_s.delete(" ")
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def render(context: nil)
|
|
68
|
-
to_s
|
|
69
|
-
end
|
|
70
|
-
|
|
71
29
|
def ==(other)
|
|
72
30
|
return false unless other.is_a?(Code)
|
|
73
31
|
|
|
74
|
-
|
|
75
|
-
number == other.number &&
|
|
76
|
-
series_suffix == other.series_suffix &&
|
|
32
|
+
number == other.number &&
|
|
77
33
|
subseries == other.subseries &&
|
|
78
|
-
parts == other.parts
|
|
79
|
-
qualifier == other.qualifier
|
|
34
|
+
parts == other.parts
|
|
80
35
|
end
|
|
81
36
|
end
|
|
82
37
|
end
|