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,25 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oasis
|
|
5
|
-
# Emits `urn:oasis:<slug>`, echoing the verbatim `original` as a single URN
|
|
6
|
-
# segment (OASIS slugs never contain ":"). The only characters that occur in
|
|
7
|
-
# real records outside the URN-safe set are the space and a stray "]" (both
|
|
8
|
-
# only in a handful of malformed records); these are percent-encoded so the
|
|
9
|
-
# URN stays well-formed, and UrnParser reverses them exactly.
|
|
10
|
-
#
|
|
11
|
-
# "OASIS amqp-core" -> "urn:oasis:amqp-core"
|
|
12
|
-
# "OASIS OSLC-CM-v1.0-CS01" -> "urn:oasis:OSLC-CM-v1.0-CS01"
|
|
13
|
-
class UrnGenerator < Pubid::UrnGenerator::Base
|
|
14
|
-
# Character -> percent-encoding for the non-URN-safe characters that
|
|
15
|
-
# actually appear in OASIS slugs. Kept explicit (not a blanket URI escape)
|
|
16
|
-
# so clean slugs — dots, hyphens, mixed case — pass through unchanged.
|
|
17
|
-
ENCODE = { " " => "%20", "]" => "%5D" }.freeze
|
|
18
|
-
|
|
19
|
-
def generate
|
|
20
|
-
slug = identifier.original.to_s.gsub(/[ \]]/) { |c| ENCODE[c] }
|
|
21
|
-
"urn:oasis:#{slug}"
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oasis
|
|
5
|
-
# Parses OASIS URNs back into identifiers by reconstructing the printed form
|
|
6
|
-
# and delegating to the flavor's text parser.
|
|
7
|
-
#
|
|
8
|
-
# UrnGenerator emits `urn:oasis:<slug>` (single segment) with the space and
|
|
9
|
-
# "]" characters percent-encoded; reverse exactly those two here.
|
|
10
|
-
#
|
|
11
|
-
# urn:oasis:OSLC-CM-v1.0-CS01 -> OASIS OSLC-CM-v1.0-CS01
|
|
12
|
-
# urn:oasis:amqp-core -> OASIS amqp-core
|
|
13
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
14
|
-
DECODE = { "%20" => " ", "%5D" => "]" }.freeze
|
|
15
|
-
|
|
16
|
-
def parse_urn(urn)
|
|
17
|
-
slug = strip_namespace(urn).gsub(/%20|%5D/, DECODE)
|
|
18
|
-
flavor_parse("OASIS #{slug}")
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
data/lib/pubid/oasis.rb
DELETED
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oasis
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Sole OASIS publisher token (see the parser's `prefix` rule). Everything
|
|
8
|
-
# after "OASIS " is a free-form slug, so there are no leading type tokens to
|
|
9
|
-
# exclude.
|
|
10
|
-
PREFIXES = ["OASIS"].freeze
|
|
11
|
-
|
|
12
|
-
autoload :Builder, "#{__dir__}/oasis/builder"
|
|
13
|
-
autoload :Identifier, "#{__dir__}/oasis/identifier"
|
|
14
|
-
autoload :Identifiers, "#{__dir__}/oasis/identifiers"
|
|
15
|
-
autoload :Parser, "#{__dir__}/oasis/parser"
|
|
16
|
-
autoload :Renderer, "#{__dir__}/oasis/renderer"
|
|
17
|
-
autoload :UrnGenerator, "#{__dir__}/oasis/urn_generator"
|
|
18
|
-
autoload :UrnParser, "#{__dir__}/oasis/urn_parser"
|
|
19
|
-
|
|
20
|
-
# Parse an OASIS identifier string
|
|
21
|
-
def self.parse(identifier)
|
|
22
|
-
# Reject pathological inputs before they reach the parser
|
|
23
|
-
# (CodeQL rb/polynomial-redos barrier — inline .length by design).
|
|
24
|
-
unless identifier.is_a?(String)
|
|
25
|
-
raise Pubid::Errors::InvalidInputError,
|
|
26
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
30
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
Identifier.parse(identifier)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
37
|
-
Identifier.format_registry = FormatRegistry.new(parent: Identifier.format_registry)
|
|
38
|
-
Identifier.format_registry.register(:human, renderer: Oasis::Renderer)
|
|
39
|
-
|
|
40
|
-
# Auto-discover all identifier types from the Identifiers namespace
|
|
41
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
42
|
-
def self.identifier_types
|
|
43
|
-
@identifier_types ||= Identifiers.constants
|
|
44
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
45
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
46
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Build typed stage index from identifier types
|
|
50
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
51
|
-
def self.all_typed_stages
|
|
52
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
53
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
54
|
-
klass.const_get(:TYPED_STAGES)
|
|
55
|
-
else
|
|
56
|
-
[]
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Lookup: type code -> identifier class
|
|
62
|
-
# @param code [String, Symbol] the type key to find
|
|
63
|
-
# @return [Class, nil] the matching identifier class
|
|
64
|
-
def self.locate_type(code)
|
|
65
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Lookup: abbreviation -> typed stage
|
|
69
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
70
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
71
|
-
def self.locate_stage(abbr)
|
|
72
|
-
abbr_str = abbr.to_s.upcase
|
|
73
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# Register OASIS flavor with the registry
|
|
79
|
-
Pubid::Registry.register(:oasis, Pubid::Oasis)
|
data/lib/pubid/ogc/builder.rb
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ogc
|
|
5
|
-
# Turns the parse tree into an Ogc::Identifiers::Document. OGC has a single
|
|
6
|
-
# document type, so there is no type dispatch.
|
|
7
|
-
class Builder
|
|
8
|
-
def self.build(parsed_data)
|
|
9
|
-
new.build(parsed_data)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def build(data)
|
|
13
|
-
Identifiers::Document.new(
|
|
14
|
-
year: data[:year].to_s,
|
|
15
|
-
number: data[:number].to_s,
|
|
16
|
-
revision: normalize_revision(data[:revision]),
|
|
17
|
-
)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
# Normalize the revision suffix to its canonical lowercased form (the
|
|
23
|
-
# shape the relaton index stores, e.g. "R1" -> "r1"). nil when there is
|
|
24
|
-
# no revision.
|
|
25
|
-
def normalize_revision(revision)
|
|
26
|
-
return nil if revision.nil?
|
|
27
|
-
|
|
28
|
-
normalized = revision.to_s.strip.downcase
|
|
29
|
-
normalized.empty? ? nil : normalized
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
data/lib/pubid/ogc/identifier.rb
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ogc
|
|
5
|
-
# Base class for every OGC identifier AND the flavor's parse/create entry
|
|
6
|
-
# point. There is a single concrete type (Identifiers::Document), so this
|
|
7
|
-
# base mostly exists to hold the shared attributes and the polymorphic
|
|
8
|
-
# serialization mapping.
|
|
9
|
-
class Identifier < ::Pubid::Identifier
|
|
10
|
-
# OGC ids are digit-leading (`<yy>-<nnn>`) with no publisher token in the
|
|
11
|
-
# printed form. Everything is kept as a string to preserve zero-padding
|
|
12
|
-
# ("032", not 32) and the exact revision suffix.
|
|
13
|
-
attribute :year, :string # the "<yy>" field, e.g. "24"
|
|
14
|
-
attribute :number, :string # the "<nnn>" field, e.g. "032"
|
|
15
|
-
# Optional revision suffix, stored as the full lowercased token including
|
|
16
|
-
# its separator letter: "r1", "c1", "a", "r3a", "r12a". nil when absent.
|
|
17
|
-
attribute :revision, :string
|
|
18
|
-
|
|
19
|
-
# Polymorphic type map for lutaml::Model key_value (de)serialization: maps
|
|
20
|
-
# the concrete class's polymorphic_name to its class name so a stored hash
|
|
21
|
-
# rebuilds the correct identifier type via from_hash.
|
|
22
|
-
OGC_TYPE_MAP = {
|
|
23
|
-
"pubid:ogc:document" => "Pubid::Ogc::Identifiers::Document",
|
|
24
|
-
}.freeze
|
|
25
|
-
|
|
26
|
-
key_value do
|
|
27
|
-
map "_type", to: :_type, polymorphic_map: OGC_TYPE_MAP
|
|
28
|
-
map "year", to: :year
|
|
29
|
-
map "number", to: :number
|
|
30
|
-
map "revision", to: :revision
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# Publisher is always "OGC". A plain constant (not a `publisher` method)
|
|
34
|
-
# so it doesn't shadow the inherited lutaml `publisher` attribute, which
|
|
35
|
-
# would otherwise fail serialization type validation.
|
|
36
|
-
PUBLISHER = "OGC"
|
|
37
|
-
|
|
38
|
-
attr_reader :with_publisher
|
|
39
|
-
|
|
40
|
-
# Basic string representation. Delegates to the human renderer. The
|
|
41
|
-
# printed OGC id carries no publisher token, so with_publisher defaults to
|
|
42
|
-
# false; pass with_publisher: true to prepend "OGC ".
|
|
43
|
-
def to_s(**opts)
|
|
44
|
-
render(format: :human, **opts)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# Capture the with_publisher flag on EVERY render call (default false), so
|
|
48
|
-
# it can never leak across calls: a bare render/to_s always renders
|
|
49
|
-
# without the publisher token regardless of a prior with_publisher: true.
|
|
50
|
-
# The base `render` only forwards `:with_edition` to the renderer, so the
|
|
51
|
-
# flag is threaded via this per-call instance write (the renderer reads
|
|
52
|
-
# `id.with_publisher`).
|
|
53
|
-
def render(format: :human, with_publisher: false, **opts)
|
|
54
|
-
@with_publisher = with_publisher
|
|
55
|
-
super(format: format, **opts)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# from_hash is the shared polymorphic dispatch on Pubid::Identifier.
|
|
59
|
-
# OGC_TYPE_MAP remains as the key_value polymorphic_map.
|
|
60
|
-
|
|
61
|
-
# Parse an OGC identifier string into an identifier object.
|
|
62
|
-
# @param identifier [String] The OGC identifier string to parse
|
|
63
|
-
# @return [Identifier] The document identifier object
|
|
64
|
-
# @raise [Pubid::Errors::InvalidInputError]
|
|
65
|
-
# If the input exceeds the maximum length
|
|
66
|
-
# @raise [Pubid::Errors::ParseError] If parsing fails
|
|
67
|
-
def self.parse(identifier)
|
|
68
|
-
unless identifier.is_a?(String)
|
|
69
|
-
raise Pubid::Errors::InvalidInputError,
|
|
70
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
74
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
Builder.build(Parser.parse(identifier))
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ogc
|
|
5
|
-
module Identifiers
|
|
6
|
-
# The sole OGC identifier type. An OGC document is numbered
|
|
7
|
-
# `<yy>-<nnn>[<revision>]` with no publisher token in the printed form.
|
|
8
|
-
class Document < Identifier
|
|
9
|
-
TYPED_STAGES = [
|
|
10
|
-
Pubid::Components::TypedStage.new(
|
|
11
|
-
code: :ogc,
|
|
12
|
-
stage_code: :published,
|
|
13
|
-
type_code: :ogc,
|
|
14
|
-
abbr: ["OGC"],
|
|
15
|
-
name: "OGC Document",
|
|
16
|
-
harmonized_stages: [],
|
|
17
|
-
),
|
|
18
|
-
].freeze
|
|
19
|
-
|
|
20
|
-
def self.type
|
|
21
|
-
{ key: :ogc, web: :document, title: "OGC Document", short: "OGC" }
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
data/lib/pubid/ogc/parser.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "parslet"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Ogc
|
|
7
|
-
# Parslet grammar for OGC identifiers.
|
|
8
|
-
#
|
|
9
|
-
# Recognizes `<yy>-<nnn>` optionally followed by a revision suffix that
|
|
10
|
-
# begins with a letter (r/c/a/R…) and may carry a trailing letter
|
|
11
|
-
# (e.g. "r3a"). An optional leading "OGC" publisher token is accepted for
|
|
12
|
-
# leniency, though the canonical printed form omits it.
|
|
13
|
-
#
|
|
14
|
-
# Examples: "25-023", "24-032r1", "01-009a", "04-095c1", "OGC 24-032r1".
|
|
15
|
-
class Parser < ::Pubid::Parser::Grammar
|
|
16
|
-
rule(:space) { match["\\s"].repeat(1) }
|
|
17
|
-
rule(:digits) { match["0-9"].repeat(1) }
|
|
18
|
-
|
|
19
|
-
# Optional leading publisher token, e.g. "OGC " — consumed, not captured.
|
|
20
|
-
rule(:publisher) { (str("OGC") >> space).maybe }
|
|
21
|
-
|
|
22
|
-
# Revision suffix: a run of letters/digits that starts after the numeric
|
|
23
|
-
# part (which greedily consumes all digits, so the suffix begins with a
|
|
24
|
-
# separator letter). Kept as a single token for the builder to normalize.
|
|
25
|
-
rule(:revision) { match["A-Za-z0-9"].repeat(1).as(:revision) }
|
|
26
|
-
|
|
27
|
-
rule(:identifier) do
|
|
28
|
-
publisher >>
|
|
29
|
-
digits.as(:year) >> str("-") >> digits.as(:number) >>
|
|
30
|
-
revision.maybe >> space.maybe
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
root(:identifier)
|
|
34
|
-
|
|
35
|
-
def self.parse(input)
|
|
36
|
-
new.parse(input)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
data/lib/pubid/ogc/renderer.rb
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ogc
|
|
5
|
-
# Human-readable renderer for OGC identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces the canonical printed form, e.g.:
|
|
8
|
-
# "24-032r1"
|
|
9
|
-
# "01-009a"
|
|
10
|
-
# "OGC 24-032r1" (only when with_publisher: true)
|
|
11
|
-
#
|
|
12
|
-
# Registered as the `:human` format in the OGC format registry and invoked
|
|
13
|
-
# via `render(format: :human)`.
|
|
14
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
15
|
-
PUBLISHER = "OGC"
|
|
16
|
-
|
|
17
|
-
def render(**_opts)
|
|
18
|
-
id = @id
|
|
19
|
-
result = +""
|
|
20
|
-
result << "#{PUBLISHER} " if with_publisher?(id)
|
|
21
|
-
result << "#{id.year}-#{id.number}"
|
|
22
|
-
result << id.revision.to_s if id.revision
|
|
23
|
-
result
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def with_publisher?(id)
|
|
29
|
-
id.respond_to?(:with_publisher) && id.with_publisher == true
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ogc
|
|
5
|
-
# Emits `urn:ogc:<year>:<number>[:<revision>]`, e.g. `urn:ogc:24:032:r1`.
|
|
6
|
-
class UrnGenerator < Pubid::UrnGenerator::Base
|
|
7
|
-
def generate
|
|
8
|
-
parts = ["urn", "ogc", identifier.year.to_s, identifier.number.to_s]
|
|
9
|
-
parts << identifier.revision.to_s if identifier.revision
|
|
10
|
-
parts.join(":")
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
data/lib/pubid/ogc/urn_parser.rb
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ogc
|
|
5
|
-
# Parses OGC URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits: `urn:ogc:<year>:<number>[:<revision>]`.
|
|
8
|
-
#
|
|
9
|
-
# Examples:
|
|
10
|
-
# - urn:ogc:25:023 → 25-023
|
|
11
|
-
# - urn:ogc:24:032:r1 → 24-032r1
|
|
12
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
13
|
-
def parse_urn(urn)
|
|
14
|
-
body = strip_namespace(urn)
|
|
15
|
-
year, number, revision = split_parts(body)
|
|
16
|
-
text = "#{year}-#{number}"
|
|
17
|
-
text += revision.to_s if revision
|
|
18
|
-
flavor_parse(text)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
data/lib/pubid/ogc.rb
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ogc
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# OGC identifiers are digit-leading (`25-023`) and carry no publisher token
|
|
8
|
-
# in the printed form. Per the PREFIXES inclusion policy, bare numeric
|
|
9
|
-
# patterns are NOT listed (they would make cross-flavor routing ambiguous).
|
|
10
|
-
# Instead the sole entry is the publisher token "OGC", which relaton uses to
|
|
11
|
-
# route a reference to this flavor even though it is not literally present
|
|
12
|
-
# in the id string.
|
|
13
|
-
PREFIXES = ["OGC"].freeze
|
|
14
|
-
|
|
15
|
-
autoload :Builder, "#{__dir__}/ogc/builder"
|
|
16
|
-
autoload :Identifier, "#{__dir__}/ogc/identifier"
|
|
17
|
-
autoload :Identifiers, "#{__dir__}/ogc/identifiers"
|
|
18
|
-
autoload :Parser, "#{__dir__}/ogc/parser"
|
|
19
|
-
autoload :Renderer, "#{__dir__}/ogc/renderer"
|
|
20
|
-
autoload :UrnGenerator, "#{__dir__}/ogc/urn_generator"
|
|
21
|
-
autoload :UrnParser, "#{__dir__}/ogc/urn_parser"
|
|
22
|
-
|
|
23
|
-
# Parse an OGC identifier string
|
|
24
|
-
def self.parse(identifier)
|
|
25
|
-
Identifier.parse(identifier)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
29
|
-
Identifier.format_registry = FormatRegistry.new(parent: Identifier.format_registry)
|
|
30
|
-
Identifier.format_registry.register(:human, renderer: Ogc::Renderer)
|
|
31
|
-
|
|
32
|
-
# Auto-discover all identifier types from the Identifiers namespace
|
|
33
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
34
|
-
def self.identifier_types
|
|
35
|
-
@identifier_types ||= Identifiers.constants
|
|
36
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
37
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
38
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Build typed stage index from identifier types
|
|
42
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
43
|
-
def self.all_typed_stages
|
|
44
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
45
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
46
|
-
klass.const_get(:TYPED_STAGES)
|
|
47
|
-
else
|
|
48
|
-
[]
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Lookup: type code -> identifier class
|
|
54
|
-
# @param code [String, Symbol] the type key to find
|
|
55
|
-
# @return [Class, nil] the matching identifier class
|
|
56
|
-
def self.locate_type(code)
|
|
57
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Lookup: abbreviation -> typed stage
|
|
61
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
62
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
63
|
-
def self.locate_stage(abbr)
|
|
64
|
-
abbr_str = abbr.to_s.upcase
|
|
65
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# Register OGC flavor with the registry
|
|
71
|
-
Pubid::Registry.register(:ogc, Pubid::Ogc)
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oiml
|
|
5
|
-
module Identifiers
|
|
6
|
-
# OIML Bulletin issues and articles. Carries no code — the locator is
|
|
7
|
-
# the (year, issue, sequence) tuple drawn from the issue's place in the
|
|
8
|
-
# periodical hierarchy.
|
|
9
|
-
#
|
|
10
|
-
# Two input forms are accepted, both referring to the same article:
|
|
11
|
-
#
|
|
12
|
-
# structured: "OIML Bulletin 2026-02-11"
|
|
13
|
-
# citation: "OIML Bulletin LXVII(2) 20260211"
|
|
14
|
-
#
|
|
15
|
-
# The structured form is the dataset's primary docid (sortable,
|
|
16
|
-
# deterministic). The citation form is what OIML prints on the article
|
|
17
|
-
# page (`Citation: AUTHOR YEAR OIML Bulletin VOLUME(ISSUE) ARTID`).
|
|
18
|
-
#
|
|
19
|
-
# Volume tracks year deterministically: 1960 = I, year - 1959 = volume.
|
|
20
|
-
# The 8-digit article id is YYYYNNSS — the same three values concatenated,
|
|
21
|
-
# so the citation form is decoded entirely from the article id; the
|
|
22
|
-
# roman volume and parenthesised issue are redundant display.
|
|
23
|
-
#
|
|
24
|
-
# Shapes in relaton-data-oiml:
|
|
25
|
-
# "OIML Bulletin" (periodical)
|
|
26
|
-
# "OIML Bulletin 1960" (volume / year)
|
|
27
|
-
# "OIML Bulletin 1960-03" (issue)
|
|
28
|
-
# "OIML Bulletin 1960-03-01" (article, structured)
|
|
29
|
-
# "OIML Bulletin LXVII(2) 20260211" (article, citation)
|
|
30
|
-
class Bulletin < SingleIdentifier
|
|
31
|
-
# OIML Bulletin volume I was issued in 1960. Volume N corresponds to
|
|
32
|
-
# year (N + BASE_YEAR_OFFSET). Used to translate between the year
|
|
33
|
-
# carried in the structured form and the roman volume in citations.
|
|
34
|
-
BASE_YEAR_OFFSET = 1959
|
|
35
|
-
|
|
36
|
-
# Zero-padded issue number within the year ("01".."04", plus "07"/"10"
|
|
37
|
-
# for the online-bulletin series). Always 2 digits.
|
|
38
|
-
attribute :issue, :string
|
|
39
|
-
# Zero-padded sequence within the issue ("00" = editorial, "01"+ for
|
|
40
|
-
# articles). Always 2 digits.
|
|
41
|
-
attribute :sequence, :string
|
|
42
|
-
|
|
43
|
-
key_value do
|
|
44
|
-
map "issue", to: :issue
|
|
45
|
-
map "sequence", to: :sequence
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# relaton-index keys on `id.root.number.to_s`. Bulletin is the one OIML
|
|
49
|
-
# leaf with no code (it does not include Identifiers::CodeNumber), so
|
|
50
|
-
# it derives the key from the year it already stores: every issue and
|
|
51
|
-
# article of a volume clusters into one bucket, with per-article
|
|
52
|
-
# distinctness coming from the MR slug instead. That is the BIPM
|
|
53
|
-
# Metrologia-volume precedent recorded in CLAUDE.md.
|
|
54
|
-
#
|
|
55
|
-
# A DERIVED READER, deliberately not an attribute: storing it would
|
|
56
|
-
# duplicate `year` in every row, and the key_value block above maps no
|
|
57
|
-
# "number", so nothing is added to the wire format. Safe as a plain
|
|
58
|
-
# method because Bulletin declares no `number` attribute of its own
|
|
59
|
-
# (the ITU itu/identifiers/base.rb precedent).
|
|
60
|
-
#
|
|
61
|
-
# nil for the bare periodical reference "OIML Bulletin", which names no
|
|
62
|
-
# year — a deliberate gap, pinned in spec/pubid/oiml/root_number_spec.rb.
|
|
63
|
-
def number
|
|
64
|
-
date&.year&.to_s
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# The index key above is deliberately coarse — a whole volume in one
|
|
68
|
-
# bucket — which is only defensible because the MR slug stays
|
|
69
|
-
# per-article. The inherited hook reads through `code`, which Bulletin
|
|
70
|
-
# does not have, so it would return nil and collapse every article of a
|
|
71
|
-
# year onto `oiml.bulletin.<year>`; `to_slug` is an output FILENAME, so
|
|
72
|
-
# that is an overwrite. Emit the rest of the locator instead.
|
|
73
|
-
#
|
|
74
|
-
# The year is deliberately NOT included: Renderers::MrString already
|
|
75
|
-
# gives it its own segment (`mr_year`), so repeating it here would
|
|
76
|
-
# render `oiml.bulletin.1960-03-01.1960`.
|
|
77
|
-
def mr_number_with_part
|
|
78
|
-
segments = [issue, sequence].compact
|
|
79
|
-
return nil if segments.empty?
|
|
80
|
-
|
|
81
|
-
segments.join("-")
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def type_string
|
|
85
|
-
"Bulletin"
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# Volume as an arabic string ("67"), derived from the year. nil when
|
|
89
|
-
# the year is absent (bare periodical reference).
|
|
90
|
-
def volume_arabic
|
|
91
|
-
return nil unless date&.year
|
|
92
|
-
|
|
93
|
-
(date.year.to_i - BASE_YEAR_OFFSET).to_s
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
# Volume as a roman-numeral string ("LXVII"), derived from the year.
|
|
97
|
-
# nil when the year is absent.
|
|
98
|
-
def volume_roman
|
|
99
|
-
number = volume_arabic&.to_i
|
|
100
|
-
return nil unless number&.positive?
|
|
101
|
-
|
|
102
|
-
self.class.to_roman(number)
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
# 8-digit oiml.org article id ("20260211"). Composed by concatenating
|
|
106
|
-
# year + issue + sequence. nil unless all three are present.
|
|
107
|
-
def article_id
|
|
108
|
-
return nil unless date&.year && issue && sequence
|
|
109
|
-
|
|
110
|
-
"#{date.year}#{issue}#{sequence}"
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
class << self
|
|
114
|
-
# Convert a positive integer to its roman-numeral representation.
|
|
115
|
-
# Used to render the citation form. The dataset already stores the
|
|
116
|
-
# roman volume verbatim in `extent.locality`, so this conversion is
|
|
117
|
-
# only needed when rendering from the structured form.
|
|
118
|
-
def to_roman(number)
|
|
119
|
-
raise ArgumentError, "volume must be > 0" unless number.positive?
|
|
120
|
-
|
|
121
|
-
ROMAN_TABLE.each_with_object(+"") do |(value, sym), result|
|
|
122
|
-
quotient, number = number.divmod(value)
|
|
123
|
-
result << (sym * quotient)
|
|
124
|
-
end.freeze
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
ROMAN_TABLE = [
|
|
128
|
-
[1000, "M"], [900, "CM"], [500, "D"], [400, "CD"],
|
|
129
|
-
[100, "C"], [90, "XC"], [50, "L"], [40, "XL"],
|
|
130
|
-
[10, "X"], [9, "IX"], [5, "V"], [4, "IV"],
|
|
131
|
-
[1, "I"]
|
|
132
|
-
].freeze
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
end
|