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/tgpp/parser.rb
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "parslet"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Tgpp
|
|
7
|
-
# Parslet grammar for 3GPP identifiers.
|
|
8
|
-
#
|
|
9
|
-
# Form: `[3GPP ]<TR|TS> <NN.NNN>[suffix][-part…][:<release>][/<version>]`
|
|
10
|
-
# TS 23.207:REL-4/2.0.0
|
|
11
|
-
# 3GPP TR 00.01U:UMTS/3.0.0
|
|
12
|
-
# TS 29.198-04-1:REL-5/5.0.0
|
|
13
|
-
# TS 02.68:Release 2000/9.0.0
|
|
14
|
-
# 3GPP TS 23.207 (bare reference)
|
|
15
|
-
#
|
|
16
|
-
# The release and the version are both optional: a user reference names the
|
|
17
|
-
# document alone ("3GPP TS 23.207"), and relaton parses that bare form to
|
|
18
|
-
# search the index. Only the type and the dotted number core are required,
|
|
19
|
-
# so "TS" and "TS foo" are still rejected.
|
|
20
|
-
class Parser < ::Pubid::Parser::Grammar
|
|
21
|
-
rule(:digit) { match["0-9"] }
|
|
22
|
-
rule(:digits) { digit.repeat(1) }
|
|
23
|
-
rule(:space) { str(" ") }
|
|
24
|
-
|
|
25
|
-
# Optional leading publisher token.
|
|
26
|
-
rule(:publisher_prefix) { str("3GPP") >> space }
|
|
27
|
-
|
|
28
|
-
# Document type.
|
|
29
|
-
rule(:type) { (str("TR") | str("TS")).as(:type) }
|
|
30
|
-
|
|
31
|
-
# Dotted number core, kept as a string (preserves leading zeros).
|
|
32
|
-
rule(:number_core) { (digits >> str(".") >> digits).as(:number) }
|
|
33
|
-
|
|
34
|
-
# Letter suffix directly after the number ("U"/"dcs"/"ext"…). Generic so
|
|
35
|
-
# future controlled-vocabulary values keep round-tripping.
|
|
36
|
-
rule(:suffix) { match["A-Za-z"].repeat(1).as(:suffix) }
|
|
37
|
-
|
|
38
|
-
# Hyphen parts.
|
|
39
|
-
rule(:part) { str("-") >> digits.as(:part) }
|
|
40
|
-
rule(:parts) { part.repeat(0).as(:parts) }
|
|
41
|
-
|
|
42
|
-
# Release token, stored verbatim: everything up to the version separator.
|
|
43
|
-
# Excludes ":" (as well as "/") so the ":"-delimited URN scheme can always
|
|
44
|
-
# encode it — every real release ("REL-4", "Ph1", "UMTS", "Release 2000")
|
|
45
|
-
# is colon-free.
|
|
46
|
-
#
|
|
47
|
-
# A trailing segment shaped exactly like a version is a mistyped "/"
|
|
48
|
-
# separator ("TS 23.207:2.0.0"), not a release: no release in the 88,464
|
|
49
|
-
# published index rows contains a dot at all. Reject it rather than
|
|
50
|
-
# silently misfiling the version as the release — which only became
|
|
51
|
-
# reachable once the version segment was made optional.
|
|
52
|
-
rule(:release) do
|
|
53
|
-
(version_core >> any.absent?).absent? >>
|
|
54
|
-
match["^/:"].repeat(1).as(:release)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# Three-part version, kept as a string.
|
|
58
|
-
rule(:version_core) do
|
|
59
|
-
digits >> str(".") >> digits >> str(".") >> digits
|
|
60
|
-
end
|
|
61
|
-
rule(:version) { version_core.as(:version) }
|
|
62
|
-
|
|
63
|
-
rule(:identifier) do
|
|
64
|
-
publisher_prefix.maybe >>
|
|
65
|
-
type >> space >>
|
|
66
|
-
number_core >> suffix.maybe >> parts >>
|
|
67
|
-
(str(":") >> release).maybe >>
|
|
68
|
-
(str("/") >> version).maybe
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
rule(:root) { identifier }
|
|
72
|
-
|
|
73
|
-
def self.parse(input)
|
|
74
|
-
new.parse(input)
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
data/lib/pubid/tgpp/renderer.rb
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Tgpp
|
|
5
|
-
# Human-readable renderer for 3GPP identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "TS 23.207:REL-4/2.0.0" (default, no publisher)
|
|
9
|
-
# "3GPP TS 23.207:REL-4/2.0.0" (with_publisher: true)
|
|
10
|
-
# "TS 29.198-04-1:REL-5/5.0.0" (parts)
|
|
11
|
-
# "TR 00.01U:UMTS/3.0.0" (suffix)
|
|
12
|
-
# "TS 23.207" (partial reference)
|
|
13
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
14
|
-
PUBLISHER = "3GPP"
|
|
15
|
-
|
|
16
|
-
def render(context: nil, **_opts)
|
|
17
|
-
id = @id
|
|
18
|
-
head = []
|
|
19
|
-
head << PUBLISHER if with_publisher?(id)
|
|
20
|
-
head << id.type_prefix
|
|
21
|
-
"#{head.join(' ')} #{id.code}#{qualifiers(id)}"
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
private
|
|
25
|
-
|
|
26
|
-
# The trailing ":<release>" and "/<version>" qualifiers. Both are
|
|
27
|
-
# optional: a handful of legacy records omit the release entirely
|
|
28
|
-
# (e.g. "TS 29.215/2.0.0"), and a partial user reference omits both
|
|
29
|
-
# (e.g. "TS 23.207"). Render no separator for an absent one.
|
|
30
|
-
#
|
|
31
|
-
# Blank, not just nil: the grammar cannot produce "", but a hand-built
|
|
32
|
-
# hash can, and a dangling "TS 23.207:" would not re-parse. This mirrors
|
|
33
|
-
# the same guard in UrnGenerator#tail_segments.
|
|
34
|
-
def qualifiers(id)
|
|
35
|
-
result = +""
|
|
36
|
-
result << ":#{id.release}" unless blank?(id.release)
|
|
37
|
-
result << "/#{id.version}" unless blank?(id.version)
|
|
38
|
-
result
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def blank?(value)
|
|
42
|
-
value.nil? || value.empty?
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Default is no publisher token (the relaton index id form); the caller
|
|
46
|
-
# opts in via `to_s(with_publisher: true)`.
|
|
47
|
-
def with_publisher?(id)
|
|
48
|
-
id.with_publisher == true
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Tgpp
|
|
5
|
-
# Emits `urn:3gpp:<type>:<code>:<release>:<version>`, e.g.
|
|
6
|
-
# `urn:3gpp:ts:23.207:REL-4:2.0.0`. `<code>` is number+suffix+parts.
|
|
7
|
-
#
|
|
8
|
-
# A partial identifier has no release, no version, or neither. Only the
|
|
9
|
-
# TRAILING empty segments are dropped, so a bare reference gets the clean
|
|
10
|
-
# `urn:3gpp:ts:23.207` rather than a malformed `urn:3gpp:ts:23.207::`. An
|
|
11
|
-
# INTERIOR empty segment is kept, so the release-less form keeps the URN it
|
|
12
|
-
# has always emitted: `TS 29.215/2.0.0` -> `urn:3gpp:ts:29.215::2.0.0`.
|
|
13
|
-
class UrnGenerator < Pubid::UrnGenerator::Base
|
|
14
|
-
def generate
|
|
15
|
-
(head_segments + tail_segments).join(":")
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
private
|
|
19
|
-
|
|
20
|
-
# The namespace, the document type and the code. Always present.
|
|
21
|
-
def head_segments
|
|
22
|
-
["urn", "3gpp", identifier.type_prefix.downcase, identifier.code]
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# The two optional qualifiers, with the trailing empty ones removed.
|
|
26
|
-
def tail_segments
|
|
27
|
-
segments = [identifier.release, identifier.version]
|
|
28
|
-
# NOTE: `empty?`, not `any?` — a bare `Array#any?` tests element
|
|
29
|
-
# truthiness, so `[nil, nil].any?` is false and would strip nothing.
|
|
30
|
-
segments.pop until segments.empty? || !blank?(segments.last)
|
|
31
|
-
segments.map(&:to_s)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def blank?(value)
|
|
35
|
-
value.nil? || value.empty?
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Tgpp
|
|
5
|
-
# Parses 3GPP URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits `urn:3gpp:<type>:<code>:<release>:<version>`; the code,
|
|
8
|
-
# release and version chunks never contain ":", so a plain split recovers
|
|
9
|
-
# them. Example: urn:3gpp:ts:23.207:REL-4:2.0.0 → TS 23.207:REL-4/2.0.0
|
|
10
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
11
|
-
# The module is Tgpp but the URN namespace is "3gpp".
|
|
12
|
-
def flavor_name
|
|
13
|
-
"3gpp"
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def parse_urn(urn)
|
|
17
|
-
body = strip_namespace(urn)
|
|
18
|
-
type, code, release, version = split_parts(body)
|
|
19
|
-
# A partial identifier drops its trailing segments, and the no-release
|
|
20
|
-
# form (e.g. TS 29.215/2.0.0) serialises with an empty release chunk
|
|
21
|
-
# ("urn:3gpp:ts:29.215::2.0.0"). Rebuild only the segments present, so
|
|
22
|
-
# neither the release colon nor the version slash dangles.
|
|
23
|
-
result = "#{type.upcase} #{code}"
|
|
24
|
-
result += ":#{release}" unless release.nil? || release.empty?
|
|
25
|
-
result += "/#{version}" unless version.nil? || version.empty?
|
|
26
|
-
flavor_parse(result)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
data/lib/pubid/tgpp.rb
DELETED
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
# 3GPP (3rd Generation Partnership Project) flavor.
|
|
5
|
-
#
|
|
6
|
-
# The Ruby constant is `Pubid::Tgpp` because a constant may not begin with a
|
|
7
|
-
# digit, but the external contract stays "3gpp": the registry key is "3gpp",
|
|
8
|
-
# the polymorphic `_type` is `pubid:3gpp:…`, and URNs use the `urn:3gpp:`
|
|
9
|
-
# namespace. Only the on-disk file names (lib/pubid/tgpp/…) follow the module.
|
|
10
|
-
module Tgpp
|
|
11
|
-
extend Pubid::PrefixesSupport
|
|
12
|
-
|
|
13
|
-
# Sole routing token. 3GPP references are printed as "3GPP TS 23.207:…";
|
|
14
|
-
# the bare document types (TR/TS) are ambiguous (JIS uses them too) and are
|
|
15
|
-
# excluded. The parser still accepts an optional leading "3GPP ".
|
|
16
|
-
PREFIXES = ["3GPP"].freeze
|
|
17
|
-
|
|
18
|
-
autoload :Builder, "#{__dir__}/tgpp/builder"
|
|
19
|
-
autoload :Identifier, "#{__dir__}/tgpp/identifier"
|
|
20
|
-
autoload :Identifiers, "#{__dir__}/tgpp/identifiers"
|
|
21
|
-
autoload :Parser, "#{__dir__}/tgpp/parser"
|
|
22
|
-
autoload :Renderer, "#{__dir__}/tgpp/renderer"
|
|
23
|
-
autoload :UrnGenerator, "#{__dir__}/tgpp/urn_generator"
|
|
24
|
-
autoload :UrnParser, "#{__dir__}/tgpp/urn_parser"
|
|
25
|
-
|
|
26
|
-
# Parse a 3GPP identifier string
|
|
27
|
-
def self.parse(identifier)
|
|
28
|
-
unless identifier.is_a?(String)
|
|
29
|
-
raise Pubid::Errors::InvalidInputError,
|
|
30
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
34
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
Identifier.parse(identifier)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
41
|
-
Identifier.format_registry = FormatRegistry.new(parent: Identifier.format_registry)
|
|
42
|
-
Identifier.format_registry.register(:human, renderer: Tgpp::Renderer)
|
|
43
|
-
|
|
44
|
-
# Auto-discover all identifier types from the Identifiers namespace
|
|
45
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
46
|
-
def self.identifier_types
|
|
47
|
-
@identifier_types ||= Identifiers.constants
|
|
48
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
49
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
50
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Build typed stage index from identifier types
|
|
54
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
55
|
-
def self.all_typed_stages
|
|
56
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
57
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
58
|
-
klass.const_get(:TYPED_STAGES)
|
|
59
|
-
else
|
|
60
|
-
[]
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# Lookup: type code -> identifier class
|
|
66
|
-
# @param code [String, Symbol] the type key to find
|
|
67
|
-
# @return [Class, nil] the matching identifier class
|
|
68
|
-
def self.locate_type(code)
|
|
69
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Lookup: abbreviation -> typed stage
|
|
73
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
74
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
75
|
-
def self.locate_stage(abbr)
|
|
76
|
-
abbr_str = abbr.to_s.upcase
|
|
77
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# Register 3GPP flavor with the registry (external key stays "3gpp").
|
|
83
|
-
Pubid::Registry.register(:"3gpp", Pubid::Tgpp)
|
data/lib/pubid/type_resolver.rb
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
# Resolves a polymorphic `_type` string (e.g. "pubid:iso:technical-report")
|
|
5
|
-
# to the concrete Ruby class that owns it.
|
|
6
|
-
#
|
|
7
|
-
# Each flavor's Identifier base owns a `polymorphic_type_map` for the types
|
|
8
|
-
# defined in its own namespace. A nested polymorphic attribute (e.g. a GOST
|
|
9
|
-
# Harmonized identifier's adopted ISO identifier) carries a `_type` from a
|
|
10
|
-
# different flavor, so the owning flavor's map misses. This service routes
|
|
11
|
-
# the lookup to the registered flavor whose name appears in the type's
|
|
12
|
-
# second segment ("pubid:<flavor>:…"), giving every from_hash caller a
|
|
13
|
-
# single cross-flavor dispatch path.
|
|
14
|
-
class TypeResolver
|
|
15
|
-
TYPE_PREFIX = "pubid:"
|
|
16
|
-
SEGMENT_SEPARATOR = ":"
|
|
17
|
-
|
|
18
|
-
class << self
|
|
19
|
-
# @param type [String, nil] Polymorphic _type, e.g. "pubid:iso:technical-report".
|
|
20
|
-
# @return [Class<Pubid::Identifier>, nil] The concrete class, or nil if
|
|
21
|
-
# the type is blank, malformed, or unknown to its flavor.
|
|
22
|
-
def resolve(type)
|
|
23
|
-
return nil unless type.is_a?(String)
|
|
24
|
-
|
|
25
|
-
flavor_name = flavor_segment(type)
|
|
26
|
-
return nil unless flavor_name
|
|
27
|
-
|
|
28
|
-
# Ensure the flavor module is loaded so its self-register call has
|
|
29
|
-
# run; without this, Registry may know of flavors that haven't yet
|
|
30
|
-
# populated their Identifier base's polymorphic_type_map.
|
|
31
|
-
::Pubid.eager_load_flavors!
|
|
32
|
-
|
|
33
|
-
flavor = ::Pubid::Registry.get(flavor_name)
|
|
34
|
-
return nil unless flavor
|
|
35
|
-
|
|
36
|
-
identifier_base = flavor::Identifier
|
|
37
|
-
identifier_base.polymorphic_type_map[type]
|
|
38
|
-
rescue NameError
|
|
39
|
-
# Flavor module is registered but its Identifier base cannot be
|
|
40
|
-
# loaded (autoload failure). Treat as unresolvable.
|
|
41
|
-
nil
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
private
|
|
45
|
-
|
|
46
|
-
# The flavor name is the segment between the leading "pubid:" and the
|
|
47
|
-
# type-name, e.g. "iso" in "pubid:iso:technical-report".
|
|
48
|
-
def flavor_segment(type)
|
|
49
|
-
return nil unless type.start_with?(TYPE_PREFIX)
|
|
50
|
-
|
|
51
|
-
remainder = type[TYPE_PREFIX.length..]
|
|
52
|
-
flavor_end = remainder.index(SEGMENT_SEPARATOR)
|
|
53
|
-
return nil unless flavor_end
|
|
54
|
-
|
|
55
|
-
remainder[0, flavor_end]
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
data/lib/pubid/un/builder.rb
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Un
|
|
5
|
-
class Builder
|
|
6
|
-
YEAR_REGEX = /\A\d{4}\z/.freeze
|
|
7
|
-
|
|
8
|
-
def self.build(parsed_data)
|
|
9
|
-
new.build(parsed_data)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def build(data)
|
|
13
|
-
tokens = extract_tokens(data)
|
|
14
|
-
raise "UN identifier has no tokens" if tokens.empty?
|
|
15
|
-
|
|
16
|
-
number = tokens.last
|
|
17
|
-
path = tokens[0...-1]
|
|
18
|
-
year_token = path.reverse.find { |t| t.match?(YEAR_REGEX) }
|
|
19
|
-
|
|
20
|
-
Identifiers::Document.new(
|
|
21
|
-
path: path,
|
|
22
|
-
number: number,
|
|
23
|
-
date: year_token ? ::Pubid::Components::Date.new(year: year_token) : nil,
|
|
24
|
-
)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
private
|
|
28
|
-
|
|
29
|
-
def extract_tokens(data)
|
|
30
|
-
raw = data.is_a?(Hash) ? data[:token] : data
|
|
31
|
-
case raw
|
|
32
|
-
when Array
|
|
33
|
-
raw.map { |h| h.is_a?(Hash) ? h[:token].to_s : h.to_s }
|
|
34
|
-
when Hash
|
|
35
|
-
[raw[:token].to_s]
|
|
36
|
-
else
|
|
37
|
-
[raw.to_s]
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
data/lib/pubid/un/identifier.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Un
|
|
5
|
-
class Identifier < ::Pubid::Identifier
|
|
6
|
-
attribute :path, :string, collection: true, default: []
|
|
7
|
-
attribute :number, :string
|
|
8
|
-
|
|
9
|
-
UN_TYPE_MAP = {
|
|
10
|
-
"pubid:un:document" => "Pubid::Un::Identifiers::Document",
|
|
11
|
-
}.freeze
|
|
12
|
-
|
|
13
|
-
key_value do
|
|
14
|
-
map "_type", to: :_type, polymorphic_map: UN_TYPE_MAP
|
|
15
|
-
map "path", to: :path
|
|
16
|
-
map "number", to: :number
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
PUBLISHER = "UN"
|
|
20
|
-
|
|
21
|
-
def to_s(**opts)
|
|
22
|
-
render(format: :human, **opts)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def self.parse(identifier)
|
|
26
|
-
unless identifier.is_a?(String)
|
|
27
|
-
raise Pubid::Errors::InvalidInputError,
|
|
28
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
32
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
parsed = Parser.parse(identifier)
|
|
36
|
-
Builder.build(parsed)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Un
|
|
5
|
-
module Identifiers
|
|
6
|
-
class Document < Identifier
|
|
7
|
-
TYPED_STAGES = [
|
|
8
|
-
Pubid::Components::TypedStage.new(
|
|
9
|
-
code: :pubun,
|
|
10
|
-
stage_code: :published,
|
|
11
|
-
type_code: :un,
|
|
12
|
-
abbr: ["UN"],
|
|
13
|
-
name: "UN Document",
|
|
14
|
-
harmonized_stages: %w[60.00 60.60],
|
|
15
|
-
),
|
|
16
|
-
].freeze
|
|
17
|
-
|
|
18
|
-
def self.type
|
|
19
|
-
{ key: :un, web: :document, title: "UN Document", short: "UN" }
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
data/lib/pubid/un/identifiers.rb
DELETED
data/lib/pubid/un/parser.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "parslet"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Un
|
|
7
|
-
class Parser < ::Pubid::Parser::Grammar
|
|
8
|
-
rule(:slash) { str("/") }
|
|
9
|
-
rule(:un_prefix) { (str("UN") >> str(" ")).maybe }
|
|
10
|
-
rule(:token) { match("[A-Z0-9.]").repeat(1) }
|
|
11
|
-
|
|
12
|
-
rule(:identifier) do
|
|
13
|
-
un_prefix >>
|
|
14
|
-
token.as(:token) >>
|
|
15
|
-
(slash >> token.as(:token)).repeat(1)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
rule(:root) { identifier }
|
|
19
|
-
|
|
20
|
-
def self.parse(input)
|
|
21
|
-
new.parse(input)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
data/lib/pubid/un/renderer.rb
DELETED
data/lib/pubid/un.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Un
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
PREFIXES = ["UN"].freeze
|
|
8
|
-
|
|
9
|
-
autoload :Builder, "#{__dir__}/un/builder"
|
|
10
|
-
autoload :Identifier, "#{__dir__}/un/identifier"
|
|
11
|
-
autoload :Identifiers, "#{__dir__}/un/identifiers"
|
|
12
|
-
autoload :Parser, "#{__dir__}/un/parser"
|
|
13
|
-
autoload :Renderer, "#{__dir__}/un/renderer"
|
|
14
|
-
|
|
15
|
-
def self.parse(identifier)
|
|
16
|
-
Identifier.parse(identifier)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
Identifier.format_registry = FormatRegistry.new(parent: Identifier.format_registry)
|
|
20
|
-
Identifier.format_registry.register(:human, renderer: Un::Renderer)
|
|
21
|
-
|
|
22
|
-
def self.identifier_types
|
|
23
|
-
@identifier_types ||= Identifiers.constants
|
|
24
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
25
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
26
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def self.all_typed_stages
|
|
30
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
31
|
-
klass.const_defined?(:TYPED_STAGES) ? klass.const_get(:TYPED_STAGES) : []
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def self.locate_type(code)
|
|
36
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def self.locate_stage(abbr)
|
|
40
|
-
abbr_str = abbr.to_s.upcase
|
|
41
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
Pubid::Registry.register(:un, Pubid::Un)
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module UrnParser
|
|
5
|
-
# Base class for flavor-specific URN parsers.
|
|
6
|
-
#
|
|
7
|
-
# A UrnParser inverts its sibling UrnGenerator: it consumes the URN
|
|
8
|
-
# emitted by {Pubid::{Flavor}::UrnGenerator} and rebuilds an Identifier.
|
|
9
|
-
# The preferred strategy is to reconstruct a human-readable identifier
|
|
10
|
-
# string from the URN fields and delegate to the flavor's text parser —
|
|
11
|
-
# this keeps parsing logic in one place (the flavor's text parser).
|
|
12
|
-
#
|
|
13
|
-
# Subclasses MUST override {#parse_urn}. They typically use
|
|
14
|
-
# {#strip_namespace} and {#flavor_parse} helpers and may pass through
|
|
15
|
-
# {#build_from_parts} for the common `urn:{flavor}:{publisher}:{type}:
|
|
16
|
-
# {number}:{year}` shape.
|
|
17
|
-
class Base
|
|
18
|
-
# Parse a URN string into an Identifier.
|
|
19
|
-
# @param urn [String]
|
|
20
|
-
# @return [Pubid::Identifier]
|
|
21
|
-
def self.parse(urn)
|
|
22
|
-
new.parse_urn(urn)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# Subclasses override.
|
|
26
|
-
# @raise [NotImplementedError]
|
|
27
|
-
def parse_urn(_urn)
|
|
28
|
-
raise NotImplementedError,
|
|
29
|
-
"#{self.class} must implement #parse_urn"
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
protected
|
|
33
|
-
|
|
34
|
-
# The flavor module this parser belongs to (e.g., Pubid::Sae).
|
|
35
|
-
# Derived from the class name: Pubid::Sae::UrnParser → Pubid::Sae.
|
|
36
|
-
def flavor_module
|
|
37
|
-
@flavor_module ||=
|
|
38
|
-
begin
|
|
39
|
-
path = self.class.name.to_s.split("::")
|
|
40
|
-
Object.const_get(path[0..-2].join("::"))
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# The lowercase flavor name used as the URN namespace (e.g., "sae").
|
|
45
|
-
# Defaults to the last segment of the module name. Override in
|
|
46
|
-
# subclasses whose URN namespace differs from the module name
|
|
47
|
-
# (e.g., CenCenelec emits URNs under "urn:cen:").
|
|
48
|
-
def flavor_name
|
|
49
|
-
@flavor_name ||= flavor_module.name.split("::").last.downcase
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Validate the URN starts with `urn:{flavor}:` and return the body.
|
|
53
|
-
# @param urn [String]
|
|
54
|
-
# @return [String] body after `urn:{flavor}:`
|
|
55
|
-
# @raise [Errors::ParseError] if prefix is wrong
|
|
56
|
-
def strip_namespace(urn)
|
|
57
|
-
prefix = "urn:#{flavor_name}:"
|
|
58
|
-
unless urn.downcase.start_with?(prefix)
|
|
59
|
-
raise Errors::ParseError,
|
|
60
|
-
"Invalid #{flavor_name.upcase} URN: #{urn.inspect}"
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
urn[prefix.length..]
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Delegate to the flavor's text parser.
|
|
67
|
-
# @param code [String] human-readable identifier
|
|
68
|
-
# @return [Pubid::Identifier]
|
|
69
|
-
def flavor_parse(code)
|
|
70
|
-
flavor_module.parse(code)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# Split the URN body on ":" into parts.
|
|
74
|
-
# @param body [String]
|
|
75
|
-
# @return [Array<String>]
|
|
76
|
-
def split_parts(body)
|
|
77
|
-
body.split(":")
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "../errors"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module UrnParser
|
|
7
|
-
# Deprecated. The URN error moved to {Pubid::Errors::UrnParseError}, so
|
|
8
|
-
# that every pubid failure lives in one namespace under the marker module
|
|
9
|
-
# {Pubid::Errors::Error}. This alias keeps the nine `raise` sites in the
|
|
10
|
-
# flavor URN parsers, and any consumer rescuing the old name, working
|
|
11
|
-
# unchanged.
|
|
12
|
-
module Errors
|
|
13
|
-
ParseError = ::Pubid::Errors::UrnParseError
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
data/lib/pubid/urn_parser.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
# Parses URN strings back into Identifier objects.
|
|
5
|
-
#
|
|
6
|
-
# Each flavor's {UrnParser} inverts the corresponding {UrnGenerator}. The
|
|
7
|
-
# {Base} class provides shared utilities (validation, splitting, dispatch
|
|
8
|
-
# back to the flavor's text parser); subclasses implement the per-flavor
|
|
9
|
-
# field reconstruction.
|
|
10
|
-
module UrnParser
|
|
11
|
-
autoload :Base, "pubid/urn_parser/base"
|
|
12
|
-
autoload :Errors, "pubid/urn_parser/errors"
|
|
13
|
-
end
|
|
14
|
-
end
|