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
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Itu
|
|
5
|
-
module Identifiers
|
|
6
|
-
# ITU Question — the study topics assigned to a study group.
|
|
7
|
-
#
|
|
8
|
-
# Two printed forms, both modelled by this one class:
|
|
9
|
-
#
|
|
10
|
-
# * numeric (no series): ITU-R 234-1/7: ITU-R 237/3:
|
|
11
|
-
# number(-part)/study-group, always with a trailing ":".
|
|
12
|
-
# * letter-series: ITU-R P.3/BL/7 ITU-R SM.1/30
|
|
13
|
-
# series.number(/BL)?/study-group, optionally bracketed and/or with a
|
|
14
|
-
# trailing ":" — e.g. ITU-R S.[4/BL/2]:
|
|
15
|
-
#
|
|
16
|
-
# The `/study-group`, the optional "/BL" segment, the surrounding
|
|
17
|
-
# brackets and the trailing ":" have no home on Components::Code, so they
|
|
18
|
-
# are carried here and reconstructed exactly by +render_base+.
|
|
19
|
-
class Question < Identifier
|
|
20
|
-
include StandardSerialization
|
|
21
|
-
|
|
22
|
-
attribute :study_group, :string
|
|
23
|
-
attribute :has_bl, :boolean, default: -> { false }
|
|
24
|
-
attribute :bracketed, :boolean, default: -> { false }
|
|
25
|
-
attribute :has_colon, :boolean, default: -> { false }
|
|
26
|
-
|
|
27
|
-
# Extra maps merged on top of the StandardSerialization block. The
|
|
28
|
-
# booleans emit only when true (false is stripped as the default), and
|
|
29
|
-
# study_group is a plain scalar.
|
|
30
|
-
key_value do
|
|
31
|
-
map "study_group", to: :study_group
|
|
32
|
-
map "has_bl", to: :has_bl
|
|
33
|
-
map "bracketed", to: :bracketed
|
|
34
|
-
map "has_colon", to: :has_colon
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def render_base(**_opts)
|
|
38
|
-
result = "#{publisher}-#{sector}"
|
|
39
|
-
result += series ? " #{series}." : " "
|
|
40
|
-
result += "[" if bracketed
|
|
41
|
-
result += code.to_s
|
|
42
|
-
result += "/BL" if has_bl
|
|
43
|
-
result += "/#{study_group}"
|
|
44
|
-
result += "]" if bracketed
|
|
45
|
-
result += ":" if has_colon
|
|
46
|
-
result
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def ==(other)
|
|
50
|
-
return false unless other.is_a?(Question)
|
|
51
|
-
|
|
52
|
-
sector == other.sector &&
|
|
53
|
-
series == other.series &&
|
|
54
|
-
code == other.code &&
|
|
55
|
-
study_group == other.study_group &&
|
|
56
|
-
has_bl == other.has_bl &&
|
|
57
|
-
bracketed == other.bracketed &&
|
|
58
|
-
has_colon == other.has_colon
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Itu
|
|
5
|
-
module Identifiers
|
|
6
|
-
# ITU Report — a publication series distinct from Recommendations.
|
|
7
|
-
# Format: Report ITU-{SECTOR} {SERIES}.{NUMBER}[-EDITION]
|
|
8
|
-
# Example: Report ITU-R BT.2020-1 (2000)
|
|
9
|
-
#
|
|
10
|
-
# Reports and Recommendations number INDEPENDENTLY, so the same
|
|
11
|
-
# series/number/edition is two different documents — "ITU-R BT.2020-1" is
|
|
12
|
-
# both Report BT.2020-1 (objective quality assessment, 2000) and
|
|
13
|
-
# Recommendation BT.2020-1 (UHDTV parameter values, 06/2014). ITU
|
|
14
|
-
# disambiguates them with the leading word, which is therefore part of
|
|
15
|
-
# the identifier: the marker reaches `to_s`, `to_urn` and `to_mr_string`,
|
|
16
|
-
# and the class-strict `Identifier#==` keeps the two unequal in both
|
|
17
|
-
# directions so `#matches?` can never resolve one to the other.
|
|
18
|
-
#
|
|
19
|
-
# Everything else is shaped exactly like a Recommendation
|
|
20
|
-
# (sector/series/code/date/version/language), including the flat
|
|
21
|
-
# serialization — only `_type` distinguishes the two hashes.
|
|
22
|
-
class Report < Identifier
|
|
23
|
-
include StandardSerialization
|
|
24
|
-
|
|
25
|
-
def render_base(**_opts)
|
|
26
|
-
"Report #{super}"
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# The MR string doubles as an output filename, so the marker has to
|
|
30
|
-
# reach it too — otherwise a Report and its same-numbered
|
|
31
|
-
# Recommendation slug identically and one overwrites the other.
|
|
32
|
-
# "itu.r.report.bt-2020-1"
|
|
33
|
-
def mr_type
|
|
34
|
-
[super, "report"].compact.join(".")
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Itu
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Installs the compact flat `key_value` block shared by the "single
|
|
7
|
-
# document" leaf types (Recommendation, Handbook, SpecialPublication, and
|
|
8
|
-
# — extended with their own extra maps — Question and CombinedIdentifier).
|
|
9
|
-
#
|
|
10
|
-
# The block lives on the leaves rather than the shared Identifier because
|
|
11
|
-
# the delegating subtypes (Supplement/Annex) would otherwise inherit-and-
|
|
12
|
-
# merge it and re-emit their `base`'s fields (the ETSI lesson). The
|
|
13
|
-
# converter methods it references are defined once on Pubid::Itu::Identifier.
|
|
14
|
-
module StandardSerialization
|
|
15
|
-
def self.included(base)
|
|
16
|
-
base.key_value do
|
|
17
|
-
map "_type", to: :_type
|
|
18
|
-
map "sector",
|
|
19
|
-
with: { to: :sector_to_kv, from: :sector_from_kv }
|
|
20
|
-
map "series",
|
|
21
|
-
with: { to: :series_to_kv, from: :series_from_kv }
|
|
22
|
-
map "imp_marker",
|
|
23
|
-
with: { to: :imp_marker_to_kv, from: :imp_marker_from_kv }
|
|
24
|
-
map "number",
|
|
25
|
-
with: { to: :number_to_kv, from: :number_from_kv }
|
|
26
|
-
map "series_suffix",
|
|
27
|
-
with: { to: :series_suffix_to_kv, from: :series_suffix_from_kv }
|
|
28
|
-
map "series_suffix_spaced",
|
|
29
|
-
with: { to: :series_suffix_spaced_to_kv,
|
|
30
|
-
from: :series_suffix_spaced_from_kv }
|
|
31
|
-
map "subseries",
|
|
32
|
-
with: { to: :subseries_to_kv, from: :subseries_from_kv }
|
|
33
|
-
map "parts",
|
|
34
|
-
with: { to: :parts_to_kv, from: :parts_from_kv }
|
|
35
|
-
map "qualifier",
|
|
36
|
-
with: { to: :qualifier_to_kv, from: :qualifier_from_kv }
|
|
37
|
-
map "qualifier_glued",
|
|
38
|
-
with: { to: :qualifier_glued_to_kv,
|
|
39
|
-
from: :qualifier_glued_from_kv }
|
|
40
|
-
map "series_word", to: :series_word
|
|
41
|
-
map "series_dash", to: :series_dash
|
|
42
|
-
map "attachment", to: :attachment
|
|
43
|
-
map "range_end", to: :range_end
|
|
44
|
-
map "version", to: :version
|
|
45
|
-
map "year",
|
|
46
|
-
with: { to: :year_to_kv, from: :year_from_kv }
|
|
47
|
-
map "month",
|
|
48
|
-
with: { to: :month_to_kv, from: :month_from_kv }
|
|
49
|
-
map "language", to: :language
|
|
50
|
-
map "common_text_twin",
|
|
51
|
-
with: { to: :common_text_twin_to_kv,
|
|
52
|
-
from: :common_text_twin_from_kv }
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
data/lib/pubid/itu/urn_parser.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Itu
|
|
5
|
-
# Parses ITU URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits: `urn:itu:{sector}:{code}` where sector is the
|
|
8
|
-
# lowercase ITU sector letter (t for ITU-T, r for ITU-R, d for ITU-D)
|
|
9
|
-
# and code is the document code (e.g., "BO.1073-1").
|
|
10
|
-
#
|
|
11
|
-
# Examples:
|
|
12
|
-
# - urn:itu:t:BO.1073-1 → ITU-T BO.1073-1
|
|
13
|
-
# - urn:itu:r:BO.500 → ITU-R BO.500
|
|
14
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
15
|
-
def parse_urn(urn)
|
|
16
|
-
body = strip_namespace(urn)
|
|
17
|
-
parts = split_parts(body)
|
|
18
|
-
sector, code = parts
|
|
19
|
-
|
|
20
|
-
# UrnGenerator emits a "report" segment between the sector and the code
|
|
21
|
-
# for an ITU-R Report, which numbers independently of the
|
|
22
|
-
# Recommendation series (urn:itu:r:report:BT.2020-1).
|
|
23
|
-
if parts[1] == "report"
|
|
24
|
-
return flavor_parse("Report ITU-#{sector.upcase} #{parts[2]}")
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
flavor_parse("ITU-#{sector.upcase} #{code}")
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jcgm
|
|
5
|
-
module Identifiers
|
|
6
|
-
# A JCGM corrigendum. Two surface forms are supported:
|
|
7
|
-
#
|
|
8
|
-
# "JCGM 200:2008 Corrigendum" — base guide + trailing " Corrigendum"
|
|
9
|
-
# word, no iteration number
|
|
10
|
-
# "JCGM 101:2008/Cor 1:2009" — base guide + slash-separated
|
|
11
|
-
# numbered corrigendum with date
|
|
12
|
-
#
|
|
13
|
-
# The first form is the JCGM-native convention. The second mirrors the
|
|
14
|
-
# ISO/IEC supplement syntax and is needed to round-trip identifiers like
|
|
15
|
-
# "JCGM 101:2008/Cor 1:2009" (corrigendum to GUM Supplement 1).
|
|
16
|
-
class Corrigendum < SupplementIdentifier
|
|
17
|
-
TYPED_STAGES = [
|
|
18
|
-
Pubid::Components::TypedStage.new(
|
|
19
|
-
code: :pubcorr,
|
|
20
|
-
stage_code: :published,
|
|
21
|
-
type_code: :corrigendum,
|
|
22
|
-
abbr: %w[Corrigendum Cor],
|
|
23
|
-
name: "Corrigendum",
|
|
24
|
-
harmonized_stages: %w[60.00 60.60],
|
|
25
|
-
),
|
|
26
|
-
].freeze
|
|
27
|
-
|
|
28
|
-
def self.type
|
|
29
|
-
{ key: :corrigendum, title: "Corrigendum", short: "Corr" }
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jcgm
|
|
5
|
-
module Identifiers
|
|
6
|
-
# A JCGM committee/meeting record, e.g. "JCGM 17th Meeting (2012)".
|
|
7
|
-
#
|
|
8
|
-
# `number` (Components::Code) holds the meeting ordinal as a clean integer
|
|
9
|
-
# value ("17"); `date` (Components::Date, year-only) holds the year.
|
|
10
|
-
class Meeting < SingleIdentifier
|
|
11
|
-
TYPED_STAGES = [
|
|
12
|
-
Pubid::Components::TypedStage.new(
|
|
13
|
-
code: :pubmeeting,
|
|
14
|
-
stage_code: :published,
|
|
15
|
-
type_code: :jcgm_meeting,
|
|
16
|
-
abbr: ["Meeting"],
|
|
17
|
-
name: "Meeting",
|
|
18
|
-
harmonized_stages: %w[60.00 60.60],
|
|
19
|
-
),
|
|
20
|
-
].freeze
|
|
21
|
-
|
|
22
|
-
def self.type
|
|
23
|
-
{ key: :jcgm_meeting, title: "Meeting" }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Ordinal suffix as printed by the JCGM/BIPM data generator: a naive
|
|
27
|
-
# last-digit rule (1->st, 2->nd, 3->rd, else th) with NO 11/12/13 teens
|
|
28
|
-
# exception. The real records print "11st", "12nd", "13rd", so applying
|
|
29
|
-
# the standard-English teens exception would break round-trip.
|
|
30
|
-
def self.ordinal(number)
|
|
31
|
-
n = number.to_i
|
|
32
|
-
suffix = case n % 10
|
|
33
|
-
when 1 then "st"
|
|
34
|
-
when 2 then "nd"
|
|
35
|
-
when 3 then "rd"
|
|
36
|
-
else "th"
|
|
37
|
-
end
|
|
38
|
-
"#{n}#{suffix}"
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def ordinal
|
|
42
|
-
self.class.ordinal(number)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
data/lib/pubid/jcgm/renderer.rb
DELETED
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jcgm
|
|
5
|
-
# Human-readable renderer for JCGM identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "JCGM 100:2008"
|
|
9
|
-
# "JCGM 100:2008/Amd 1:2023"
|
|
10
|
-
# "JCGM GUM-6:2020"
|
|
11
|
-
#
|
|
12
|
-
# The renderer is registered as the `:human` format in the JCGM format
|
|
13
|
-
# registry and invoked via `render(format: :human)`.
|
|
14
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
15
|
-
def render(context: nil, **opts)
|
|
16
|
-
case @id
|
|
17
|
-
when Identifiers::Amendment then render_amendment(@id, context)
|
|
18
|
-
when Identifiers::Corrigendum then render_corrigendum(@id)
|
|
19
|
-
when Identifiers::GumGuide then render_gum_guide(@id, context)
|
|
20
|
-
when Identifiers::Meeting then render_meeting(@id)
|
|
21
|
-
else render_single(@id)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def render_corrigendum(id)
|
|
28
|
-
# Two surface forms:
|
|
29
|
-
# "JCGM 200:2008 Corrigendum" — number absent (word form)
|
|
30
|
-
# "JCGM 101:2008/Cor 1:2009" — number present (numbered form)
|
|
31
|
-
return "#{id.base}/Cor #{id.number}#{corrigendum_date_suffix(id)}" if id.number
|
|
32
|
-
|
|
33
|
-
"#{id.base} Corrigendum"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def corrigendum_date_suffix(id)
|
|
37
|
-
id.date ? ":#{id.date}" : ""
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Two surface forms:
|
|
41
|
-
# "JCGM 17th Meeting (2012)" — date present (published records)
|
|
42
|
-
# "JCGM 17th Meeting" — date absent (partial reference)
|
|
43
|
-
# The ordinal alone names the meeting, so the dateless form is a valid
|
|
44
|
-
# identifier and must stay re-parseable (the parser makes the " (YYYY)"
|
|
45
|
-
# group optional to match).
|
|
46
|
-
def render_meeting(id)
|
|
47
|
-
base = "JCGM #{id.ordinal} Meeting"
|
|
48
|
-
id.date ? "#{base} (#{id.date.year})" : base
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def render_single(id)
|
|
52
|
-
parts = [id.publisher_portion]
|
|
53
|
-
parts << id.number_portion unless id.number_portion.empty?
|
|
54
|
-
result = parts.join(" ")
|
|
55
|
-
result += id.language_portion if id.languages&.any?
|
|
56
|
-
result
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def render_amendment(id, context)
|
|
60
|
-
result = id.base.to_s if id.base
|
|
61
|
-
result += "/Amd"
|
|
62
|
-
result += " #{id.number}" if id.number
|
|
63
|
-
result += ":#{id.date}" if id.date
|
|
64
|
-
result
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def render_gum_guide(id, context)
|
|
68
|
-
parts = []
|
|
69
|
-
parts << id.publisher.publisher if id.publisher
|
|
70
|
-
parts << "GUM-#{id.number}" if id.number
|
|
71
|
-
|
|
72
|
-
result = parts.join(" ")
|
|
73
|
-
result += ":#{id.date}" if id.date
|
|
74
|
-
result += gum_language_portion(id) if id.languages&.any?
|
|
75
|
-
result
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
def gum_language_portion(id)
|
|
79
|
-
return "" unless id.languages&.any?
|
|
80
|
-
|
|
81
|
-
codes = id.languages.map do |lang|
|
|
82
|
-
lang.original_code || lang.code
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
"(#{codes.join('/')})"
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jcgm
|
|
5
|
-
# Parses JCGM URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Identifiers are rebuilt **directly from the URN segments** rather than
|
|
8
|
-
# rendered to a human-readable string and re-parsed (the BIPM UrnParser
|
|
9
|
-
# pattern). Round-tripping through the grammar flattened the segments into
|
|
10
|
-
# one string and silently lost everything the string form could not carry:
|
|
11
|
-
# a GUM guide (`urn:jcgm:gum.6:2020`) raised, and the language and
|
|
12
|
-
# supplement segments were dropped, so a corrigendum read back as the
|
|
13
|
-
# standard it amends — a different document, with no error.
|
|
14
|
-
#
|
|
15
|
-
# Shapes emitted by UrnGenerator, and read back here:
|
|
16
|
-
# urn:jcgm:200:2008 → JCGM 200:2008
|
|
17
|
-
# urn:jcgm:100:2008:en → JCGM 100:2008(E)
|
|
18
|
-
# urn:jcgm:200:2012:en,fr → JCGM 200:2012(E/F)
|
|
19
|
-
# urn:jcgm:GUM → JCGM GUM
|
|
20
|
-
# urn:jcgm:gum.6:2020 → JCGM GUM-6:2020
|
|
21
|
-
# urn:jcgm:200:2008:corrigendum → JCGM 200:2008 Corrigendum
|
|
22
|
-
# urn:jcgm:101:2008:corrigendum:1:2009 → JCGM 101:2008/Cor 1:2009
|
|
23
|
-
# urn:jcgm:100:2008:amendment:1:2023 → JCGM 100:2008/Amd 1:2023
|
|
24
|
-
# urn:jcgm:meeting:17:2012 → JCGM 17th Meeting (2012)
|
|
25
|
-
# urn:jcgm:meeting:11 → JCGM 11st Meeting
|
|
26
|
-
#
|
|
27
|
-
# KNOWN GAP, on the generator side and unchanged here: a full date is
|
|
28
|
-
# rendered as its year alone (`JCGM GUM-1:2022-11-28` →
|
|
29
|
-
# `urn:jcgm:gum.1:2022`), so a URN cannot restore the month and day.
|
|
30
|
-
# Widening it would change already-published URNs.
|
|
31
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
32
|
-
MEETING_MARKER = "meeting"
|
|
33
|
-
|
|
34
|
-
# The GUM-guide number is written "gum.<n>" by UrnGenerator.
|
|
35
|
-
GUM_PREFIX = "gum."
|
|
36
|
-
|
|
37
|
-
# The supplement marker UrnGenerator writes is the typed stage's
|
|
38
|
-
# `type_code`; the abbreviation is what `Jcgm.locate_stage` matches on.
|
|
39
|
-
SUPPLEMENT_ABBRS = {
|
|
40
|
-
"corrigendum" => "Cor",
|
|
41
|
-
"amendment" => "Amd",
|
|
42
|
-
}.freeze
|
|
43
|
-
|
|
44
|
-
MEETING_ABBR = "Meeting"
|
|
45
|
-
|
|
46
|
-
# Mirrors `year_digits` in the shared parser rules.
|
|
47
|
-
YEAR_PATTERN = /\A(?:19|20)\d{2}\z/
|
|
48
|
-
|
|
49
|
-
# A language segment is one or more comma-joined ISO codes.
|
|
50
|
-
LANGUAGES_PATTERN = /\A[a-z]{2}(?:,[a-z]{2})*\z/
|
|
51
|
-
|
|
52
|
-
# Language codes back to the single-letter form the identifier prints;
|
|
53
|
-
# the builder maps the other way when parsing "(E)" / "(E/F)".
|
|
54
|
-
LANGUAGE_LETTERS = Pubid::Builder::Base::LANG_CHAR_MAP.invert.freeze
|
|
55
|
-
|
|
56
|
-
def parse_urn(urn)
|
|
57
|
-
parts = split_parts(strip_namespace(urn))
|
|
58
|
-
return parse_meeting_urn(parts) if parts.first == MEETING_MARKER
|
|
59
|
-
|
|
60
|
-
parse_document_urn(parts)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
private
|
|
64
|
-
|
|
65
|
-
# urn:jcgm:meeting:<number>[:<year>] -> Identifiers::Meeting
|
|
66
|
-
#
|
|
67
|
-
# The reconstruction must agree with a parsed identifier attribute for
|
|
68
|
-
# attribute, so `typed_stage` comes from the same registry lookup
|
|
69
|
-
# `Builder#locate_typed_stage` uses. (The attribute default now agrees
|
|
70
|
-
# too — it no longer sets `original_abbr` — so this mirrors the builder
|
|
71
|
-
# for clarity rather than out of necessity.)
|
|
72
|
-
def parse_meeting_urn(parts)
|
|
73
|
-
_, number, year = parts
|
|
74
|
-
|
|
75
|
-
Identifiers::Meeting.new(
|
|
76
|
-
number: meeting_number(number),
|
|
77
|
-
date: urn_date(year),
|
|
78
|
-
typed_stage: Jcgm.locate_stage(MEETING_ABBR),
|
|
79
|
-
)
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# A guide, a GUM guide, or a supplement wrapping one of those. The
|
|
83
|
-
# supplement marker splits the segments: everything before it describes
|
|
84
|
-
# the base document, everything after is the supplement's own number and
|
|
85
|
-
# date.
|
|
86
|
-
def parse_document_urn(parts)
|
|
87
|
-
marker_at = parts.index { |segment| SUPPLEMENT_ABBRS.key?(segment) }
|
|
88
|
-
return build_document(parts) unless marker_at
|
|
89
|
-
|
|
90
|
-
build_supplement(
|
|
91
|
-
parts[marker_at],
|
|
92
|
-
build_document(parts[0...marker_at]),
|
|
93
|
-
parts[(marker_at + 1)..] || [],
|
|
94
|
-
)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
# The class comes from the same registry the builder uses, so a URN and a
|
|
98
|
-
# parsed reference resolve to one class and one typed_stage.
|
|
99
|
-
def build_supplement(marker, base, tail)
|
|
100
|
-
typed_stage = Jcgm.locate_stage(SUPPLEMENT_ABBRS.fetch(marker))
|
|
101
|
-
number, year = tail
|
|
102
|
-
|
|
103
|
-
Jcgm.locate_type(typed_stage.type_code).new(
|
|
104
|
-
base: base,
|
|
105
|
-
number: (number.nil? || number.empty? ? nil : number.to_s),
|
|
106
|
-
date: urn_date(year),
|
|
107
|
-
typed_stage: typed_stage,
|
|
108
|
-
)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
# <number>[:<year>][:<languages>] — the number segment carries the
|
|
112
|
-
# "gum." prefix for a GUM guide, which is what selects the class.
|
|
113
|
-
#
|
|
114
|
-
# Guide and GumGuide deliberately take their `typed_stage` from the
|
|
115
|
-
# attribute default: the grammar emits no type token for them, so
|
|
116
|
-
# `Builder#build` fills it from `published_typed_stage` too, and both
|
|
117
|
-
# paths agree.
|
|
118
|
-
def build_document(parts)
|
|
119
|
-
number, *rest = parts
|
|
120
|
-
require_number!(number)
|
|
121
|
-
gum = number.start_with?(GUM_PREFIX)
|
|
122
|
-
|
|
123
|
-
(gum ? Identifiers::GumGuide : Identifiers::Guide).new(
|
|
124
|
-
number: (gum ? number.delete_prefix(GUM_PREFIX) : number).to_s,
|
|
125
|
-
date: urn_date(segment_matching(rest, YEAR_PATTERN)),
|
|
126
|
-
languages: urn_languages(segment_matching(rest, LANGUAGES_PATTERN)),
|
|
127
|
-
)
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
def require_number!(segment)
|
|
131
|
-
return unless segment.nil? || segment.empty?
|
|
132
|
-
|
|
133
|
-
raise Pubid::UrnParser::Errors::ParseError,
|
|
134
|
-
"JCGM URN has no document number"
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
def segment_matching(segments, pattern)
|
|
138
|
-
segments.find { |segment| segment.match?(pattern) }
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# The ordinal, normalized the way `Identifiers::Meeting.ordinal` does it
|
|
142
|
-
# (`number.to_i`), so "011" reads back as "11" and a missing or
|
|
143
|
-
# non-numeric segment as "0" — the behaviour of the previous
|
|
144
|
-
# render-and-re-parse implementation.
|
|
145
|
-
def meeting_number(segment)
|
|
146
|
-
segment.to_i.to_s
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
# nil for an absent year; a Date for a well-formed one. The grammar
|
|
150
|
-
# accepts only a 19xx/20xx year, so anything else is a malformed URN and
|
|
151
|
-
# must still be rejected now that no re-parse validates it.
|
|
152
|
-
def urn_date(segment)
|
|
153
|
-
return nil if segment.nil? || segment.empty?
|
|
154
|
-
|
|
155
|
-
unless segment.match?(YEAR_PATTERN)
|
|
156
|
-
raise Pubid::UrnParser::Errors::ParseError,
|
|
157
|
-
"Invalid year in JCGM URN: #{segment.inspect}"
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
Pubid::Components::Date.new(year: segment)
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
# "en" -> (E), "en,fr" -> (E/F). `original_code` is what the renderer
|
|
164
|
-
# prints, so it is restored from the code rather than left nil.
|
|
165
|
-
def urn_languages(segment)
|
|
166
|
-
return nil if segment.nil? || segment.empty?
|
|
167
|
-
|
|
168
|
-
segment.split(",").map do |code|
|
|
169
|
-
Pubid::Components::Language.new(
|
|
170
|
-
code: code,
|
|
171
|
-
original_code: LANGUAGE_LETTERS.fetch(code, code),
|
|
172
|
-
)
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
end
|
|
176
|
-
end
|
|
177
|
-
end
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jis
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Corrigendum identifier type
|
|
7
|
-
# Format: {base}/CORRIGENDUM {number}:{year}
|
|
8
|
-
# Example: JIS B 3700-11:1996/CORRIGENDUM 1:2002
|
|
9
|
-
class Corrigendum < SupplementIdentifier
|
|
10
|
-
def supplement_notation
|
|
11
|
-
"CORRIGENDUM #{number}:#{year_with_reaffirmation}"
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
data/lib/pubid/jis/renderer.rb
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jis
|
|
5
|
-
# Human-readable renderer for JIS identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "JIS A 0001:1999"
|
|
9
|
-
# "JIS TR Z 8301:2019"
|
|
10
|
-
# "JIS B 3700-11:1996/CORRIGENDUM 1:2002"
|
|
11
|
-
# "JIS K 2151:2004/EXPL"
|
|
12
|
-
#
|
|
13
|
-
# The renderer is registered as the `:human` format in the JIS format
|
|
14
|
-
# registry and invoked via `render(format: :human)`.
|
|
15
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
16
|
-
PUBLISHER = "JIS"
|
|
17
|
-
|
|
18
|
-
def render(context: nil, **opts)
|
|
19
|
-
id = @id
|
|
20
|
-
|
|
21
|
-
case id
|
|
22
|
-
when SupplementIdentifier
|
|
23
|
-
render_supplement(id)
|
|
24
|
-
when SingleIdentifier
|
|
25
|
-
render_single(id)
|
|
26
|
-
else
|
|
27
|
-
render_base(id)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
private
|
|
32
|
-
|
|
33
|
-
def with_publisher?(id)
|
|
34
|
-
id.with_publisher != false
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def render_base(id)
|
|
38
|
-
result = "#{PUBLISHER} #{id.code}"
|
|
39
|
-
result += ":#{id.year_with_reaffirmation}" if id.year
|
|
40
|
-
result += "(#{id.language})" if id.language
|
|
41
|
-
result += "(規格群)" if id.all_parts?
|
|
42
|
-
result + id.symbol_suffix
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def render_single(id)
|
|
46
|
-
with_pub = with_publisher?(id)
|
|
47
|
-
parts = []
|
|
48
|
-
parts << PUBLISHER if with_pub
|
|
49
|
-
parts << id.type_prefix if id.class.method_defined?(:type_prefix) && id.type_prefix
|
|
50
|
-
result = parts.join(" ")
|
|
51
|
-
result += " " if result.length.positive?
|
|
52
|
-
result += id.code.to_s
|
|
53
|
-
result += ":#{id.year_with_reaffirmation}" if id.year
|
|
54
|
-
result += "(#{id.language})" if id.language
|
|
55
|
-
result += "(規格群)" if id.all_parts?
|
|
56
|
-
result += id.symbol_suffix
|
|
57
|
-
result
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def render_supplement(id)
|
|
61
|
-
with_pub = with_publisher?(id)
|
|
62
|
-
result = id.base.to_s(with_publisher: with_pub)
|
|
63
|
-
result += "/#{id.supplement_notation}"
|
|
64
|
-
result += id.symbol_suffix
|
|
65
|
-
result
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
data/lib/pubid/jis/urn_parser.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jis
|
|
5
|
-
# Parses JIS URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits: `urn:jis:{code}:{year}` where code is the
|
|
8
|
-
# classification letter + number (e.g., "X 0201").
|
|
9
|
-
#
|
|
10
|
-
# Examples:
|
|
11
|
-
# - urn:jis:X 0201:1997 → JIS X 0201:1997
|
|
12
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
13
|
-
def parse_urn(urn)
|
|
14
|
-
body = strip_namespace(urn)
|
|
15
|
-
parts = split_parts(body)
|
|
16
|
-
code, year = parts
|
|
17
|
-
text = "JIS #{code}"
|
|
18
|
-
text += ":#{year}" if year
|
|
19
|
-
flavor_parse(text)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|