pubid 2.0.0.alpha.10 → 2.0.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +51 -54
- data/data/iec/update_codes.yaml +0 -3
- data/data/ieee/update_codes.yaml +1 -107
- data/data/nist/update_codes.yaml +0 -35
- data/lib/pubid/amca/builder.rb +6 -6
- data/lib/pubid/amca/identifier.rb +16 -2
- data/lib/pubid/amca/identifiers/base.rb +46 -74
- data/lib/pubid/amca/identifiers/interpretation.rb +30 -17
- data/lib/pubid/amca/identifiers/publication.rb +27 -14
- data/lib/pubid/amca/identifiers/standard.rb +5 -3
- data/lib/pubid/amca/identifiers.rb +1 -0
- data/lib/pubid/amca/parser.rb +1 -1
- data/lib/pubid/amca/scheme.rb +16 -0
- data/lib/pubid/amca/single_identifier.rb +24 -1
- data/lib/pubid/amca/urn_generator.rb +3 -4
- data/lib/pubid/amca.rb +3 -50
- data/lib/pubid/ansi/builder.rb +5 -7
- data/lib/pubid/ansi/identifier.rb +1 -19
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +1 -2
- data/lib/pubid/ansi/identifiers/standard.rb +3 -2
- data/lib/pubid/ansi/parser.rb +1 -1
- data/lib/pubid/ansi/scheme.rb +15 -0
- data/lib/pubid/ansi/single_identifier.rb +31 -2
- data/lib/pubid/ansi/urn_generator.rb +38 -3
- data/lib/pubid/ansi.rb +6 -47
- data/lib/pubid/api/builder.rb +72 -45
- data/lib/pubid/api/identifier.rb +9 -30
- data/lib/pubid/api/identifiers/base.rb +14 -2
- data/lib/pubid/api/identifiers/bulletin.rb +2 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +2 -0
- data/lib/pubid/api/identifiers/mpms.rb +28 -10
- data/lib/pubid/api/identifiers/publication.rb +2 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +2 -0
- data/lib/pubid/api/identifiers/specification.rb +2 -0
- data/lib/pubid/api/identifiers/standard.rb +2 -0
- data/lib/pubid/api/identifiers/technical_report.rb +2 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +16 -0
- data/lib/pubid/api/parser.rb +1 -1
- data/lib/pubid/api/scheme.rb +66 -0
- data/lib/pubid/api/single_identifier.rb +32 -10
- data/lib/pubid/api/urn_generator.rb +18 -0
- data/lib/pubid/api.rb +5 -56
- data/lib/pubid/ashrae/builder.rb +35 -56
- data/lib/pubid/ashrae/identifier.rb +16 -6
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +11 -7
- data/lib/pubid/ashrae/identifiers/addendum.rb +20 -9
- data/lib/pubid/ashrae/identifiers/base.rb +15 -111
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +16 -8
- data/lib/pubid/ashrae/identifiers/errata.rb +10 -9
- data/lib/pubid/ashrae/identifiers/guideline.rb +0 -3
- data/lib/pubid/ashrae/identifiers/interpretation.rb +10 -16
- data/lib/pubid/ashrae/identifiers/standard.rb +0 -3
- data/lib/pubid/ashrae/identifiers.rb +1 -0
- data/lib/pubid/ashrae/parser.rb +16 -40
- data/lib/pubid/ashrae/scheme.rb +53 -0
- data/lib/pubid/ashrae/single_identifier.rb +14 -1
- data/lib/pubid/ashrae/supplement_identifier.rb +6 -21
- data/lib/pubid/ashrae/urn_generator.rb +10 -8
- data/lib/pubid/ashrae.rb +2 -58
- data/lib/pubid/asme/builder.rb +2 -11
- data/lib/pubid/asme/components/code.rb +2 -10
- data/lib/pubid/asme/identifier.rb +0 -9
- data/lib/pubid/asme/identifiers/base.rb +60 -0
- data/lib/pubid/asme/identifiers/standard.rb +2 -86
- data/lib/pubid/asme/parser.rb +1 -1
- data/lib/pubid/asme/scheme.rb +37 -0
- data/lib/pubid/asme/single_identifier.rb +2 -11
- data/lib/pubid/asme/urn_generator.rb +2 -2
- data/lib/pubid/asme.rb +1 -47
- data/lib/pubid/astm/builder.rb +3 -10
- data/lib/pubid/astm/components/code.rb +0 -9
- data/lib/pubid/astm/identifier.rb +0 -9
- data/lib/pubid/astm/identifiers/adjunct.rb +9 -16
- data/lib/pubid/astm/identifiers/data_series.rb +14 -2
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +34 -25
- data/lib/pubid/astm/identifiers/manual.rb +25 -8
- data/lib/pubid/astm/identifiers/monograph.rb +14 -2
- data/lib/pubid/astm/identifiers/research_report.rb +5 -8
- data/lib/pubid/astm/identifiers/standard.rb +37 -8
- data/lib/pubid/astm/identifiers/technical_report.rb +13 -2
- data/lib/pubid/astm/identifiers/work_in_progress.rb +10 -1
- data/lib/pubid/astm/parser.rb +1 -1
- data/lib/pubid/astm/scheme.rb +55 -0
- data/lib/pubid/astm/single_identifier.rb +10 -32
- data/lib/pubid/astm/urn_generator.rb +5 -7
- data/lib/pubid/astm.rb +27 -44
- data/lib/pubid/bsi/builder.rb +107 -119
- data/lib/pubid/bsi/identifier.rb +25 -4
- data/lib/pubid/bsi/identifiers/addendum_document.rb +37 -3
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +47 -19
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +39 -8
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +55 -2
- data/lib/pubid/bsi/identifiers/amendment.rb +22 -30
- data/lib/pubid/bsi/identifiers/base.rb +11 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +7 -1
- data/lib/pubid/bsi/identifiers/british_standard.rb +1 -2
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +87 -13
- data/lib/pubid/bsi/identifiers/committee_document.rb +17 -10
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +87 -19
- data/lib/pubid/bsi/identifiers/corrigendum.rb +10 -26
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +36 -0
- data/lib/pubid/bsi/identifiers/disc.rb +29 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +46 -2
- data/lib/pubid/bsi/identifiers/electronic_book.rb +38 -2
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +21 -10
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +47 -0
- data/lib/pubid/bsi/identifiers/flex.rb +34 -3
- data/lib/pubid/bsi/identifiers/handbook.rb +17 -1
- data/lib/pubid/bsi/identifiers/index.rb +32 -0
- data/lib/pubid/bsi/identifiers/method.rb +41 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +29 -4
- data/lib/pubid/bsi/identifiers/practice_guide.rb +7 -1
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +54 -2
- data/lib/pubid/bsi/identifiers/published_document.rb +54 -2
- data/lib/pubid/bsi/identifiers/section.rb +30 -0
- data/lib/pubid/bsi/identifiers/set.rb +20 -14
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -10
- data/lib/pubid/bsi/identifiers/supplement_document.rb +25 -3
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +46 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +47 -2
- data/lib/pubid/bsi/identifiers/test_method.rb +32 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +22 -7
- data/lib/pubid/bsi/identifiers.rb +1 -0
- data/lib/pubid/bsi/parser.rb +6 -20
- data/lib/pubid/bsi/scheme.rb +243 -0
- data/lib/pubid/bsi/single_identifier.rb +82 -94
- data/lib/pubid/bsi/urn_generator.rb +5 -13
- data/lib/pubid/bsi.rb +2 -252
- data/lib/pubid/builder/base.rb +13 -62
- data/lib/pubid/bundled_identifier.rb +10 -18
- data/lib/pubid/ccsds/builder.rb +4 -5
- data/lib/pubid/ccsds/identifier.rb +3 -63
- data/lib/pubid/ccsds/identifiers/base.rb +51 -14
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +8 -9
- data/lib/pubid/ccsds/parser.rb +3 -5
- data/lib/pubid/ccsds/scheme.rb +57 -0
- data/lib/pubid/ccsds/single_identifier.rb +3 -6
- data/lib/pubid/ccsds/supplement_identifier.rb +13 -17
- data/lib/pubid/ccsds/urn_generator.rb +6 -6
- data/lib/pubid/ccsds.rb +1 -44
- data/lib/pubid/cen_cenelec/builder.rb +29 -61
- data/lib/pubid/cen_cenelec/identifier.rb +5 -28
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +4 -9
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +12 -2
- data/lib/pubid/cen_cenelec/identifiers/base.rb +46 -5
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +27 -6
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +17 -2
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +4 -62
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +7 -20
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +6 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/parser.rb +1 -1
- data/lib/pubid/cen_cenelec/scheme.rb +164 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +91 -10
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +7 -6
- data/lib/pubid/cen_cenelec/urn_generator.rb +7 -7
- data/lib/pubid/cen_cenelec.rb +1 -188
- data/lib/pubid/cie/builder.rb +24 -149
- data/lib/pubid/cie/components/code.rb +72 -0
- data/lib/pubid/cie/identifier.rb +5 -20
- data/lib/pubid/cie/identifiers/bundle.rb +5 -35
- data/lib/pubid/cie/identifiers/conference.rb +6 -11
- data/lib/pubid/cie/identifiers/corrigendum.rb +23 -17
- data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
- data/lib/pubid/cie/identifiers/identical.rb +9 -9
- data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
- data/lib/pubid/cie/identifiers/standard.rb +8 -43
- data/lib/pubid/cie/identifiers/supplement.rb +25 -27
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +3 -7
- data/lib/pubid/cie/identifiers.rb +0 -2
- data/lib/pubid/cie/parser.rb +6 -55
- data/lib/pubid/cie/scheme.rb +64 -0
- data/lib/pubid/cie/single_identifier.rb +5 -44
- data/lib/pubid/cie/supplement_identifier.rb +16 -29
- data/lib/pubid/cie/urn_generator.rb +8 -11
- data/lib/pubid/cie.rb +2 -57
- data/lib/pubid/components/code.rb +8 -22
- data/lib/pubid/components/date.rb +18 -41
- data/lib/pubid/components/edition.rb +6 -9
- data/lib/pubid/components/language.rb +4 -6
- data/lib/pubid/components/locality.rb +1 -10
- data/lib/pubid/components/publisher.rb +6 -9
- data/lib/pubid/components/stage.rb +14 -5
- data/lib/pubid/components/type.rb +15 -5
- data/lib/pubid/components/typed_stage.rb +8 -11
- data/lib/pubid/components.rb +0 -4
- data/lib/pubid/core/update_codes.rb +7 -28
- data/lib/pubid/csa/builder.rb +48 -48
- data/lib/pubid/csa/composite_identifier.rb +7 -18
- data/lib/pubid/csa/identifier.rb +78 -191
- data/lib/pubid/csa/identifiers/base.rb +123 -0
- data/lib/pubid/csa/identifiers/bundled.rb +9 -25
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
- data/lib/pubid/csa/identifiers/cec.rb +103 -40
- data/lib/pubid/csa/identifiers/combined.rb +69 -97
- data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
- data/lib/pubid/csa/identifiers/package.rb +4 -4
- data/lib/pubid/csa/identifiers/series.rb +104 -0
- data/lib/pubid/csa/parser.rb +8 -12
- data/lib/pubid/csa/scheme.rb +44 -0
- data/lib/pubid/csa/single_identifier.rb +5 -94
- data/lib/pubid/csa/urn_generator.rb +2 -9
- data/lib/pubid/csa/wrapper_identifier.rb +10 -43
- data/lib/pubid/csa.rb +1 -56
- data/lib/pubid/etsi/builder.rb +4 -13
- data/lib/pubid/etsi/components/code.rb +9 -10
- data/lib/pubid/etsi/components/version.rb +5 -0
- data/lib/pubid/etsi/identifier.rb +12 -2
- data/lib/pubid/etsi/identifiers/base.rb +24 -60
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +4 -207
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +14 -46
- data/lib/pubid/etsi/identifiers.rb +1 -0
- data/lib/pubid/etsi/parser.rb +3 -9
- data/lib/pubid/etsi/scheme.rb +42 -0
- data/lib/pubid/etsi.rb +2 -52
- data/lib/pubid/export/data_class_exporter.rb +59 -0
- data/lib/pubid/export/exporter.rb +47 -6
- data/lib/pubid/export/flavor_exporter.rb +276 -124
- data/lib/pubid/export/ieee_exporter.rb +78 -0
- data/lib/pubid/export/itu_exporter.rb +66 -0
- data/lib/pubid/export/nist_exporter.rb +64 -0
- data/lib/pubid/export/registry_exporter.rb +90 -0
- data/lib/pubid/export/scheme_exporter.rb +70 -0
- data/lib/pubid/export.rb +6 -0
- data/lib/pubid/identifier.rb +37 -920
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/identifier_registry.rb +198 -0
- data/lib/pubid/idf/builder.rb +7 -7
- data/lib/pubid/idf/identifier.rb +13 -23
- data/lib/pubid/idf/identifiers/amendment.rb +1 -2
- data/lib/pubid/idf/identifiers/corrigendum.rb +1 -2
- data/lib/pubid/idf/identifiers/international_standard.rb +1 -2
- data/lib/pubid/idf/identifiers/reviewed_method.rb +1 -2
- data/lib/pubid/idf/parser.rb +5 -6
- data/lib/pubid/idf/scheme.rb +61 -0
- data/lib/pubid/idf/supplement_identifier.rb +13 -5
- data/lib/pubid/idf/urn_generator.rb +39 -4
- data/lib/pubid/idf.rb +1 -65
- data/lib/pubid/iec/builder.rb +91 -92
- data/lib/pubid/iec/components/code.rb +32 -9
- data/lib/pubid/iec/components/publisher.rb +1 -1
- data/lib/pubid/iec/identifier.rb +8 -328
- data/lib/pubid/iec/identifiers/amendment.rb +5 -8
- data/lib/pubid/iec/identifiers/base.rb +31 -7
- data/lib/pubid/iec/identifiers/component_specification.rb +13 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +12 -1
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +30 -29
- data/lib/pubid/iec/identifiers/corrigendum.rb +5 -4
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +36 -43
- data/lib/pubid/iec/identifiers/guide.rb +18 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +9 -24
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +3 -2
- data/lib/pubid/iec/identifiers/operational_document.rb +13 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +15 -2
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +24 -26
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +13 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +13 -2
- data/lib/pubid/iec/identifiers/technical_report.rb +21 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +21 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +12 -1
- data/lib/pubid/iec/identifiers/test_report_form.rb +46 -3
- data/lib/pubid/iec/identifiers/vap_identifier.rb +34 -33
- data/lib/pubid/iec/identifiers/white_paper.rb +13 -3
- data/lib/pubid/iec/identifiers/working_document.rb +60 -26
- data/lib/pubid/iec/parser.rb +42 -73
- data/lib/pubid/iec/scheme.rb +71 -0
- data/lib/pubid/iec/single_identifier.rb +23 -15
- data/lib/pubid/iec/supplement_identifier.rb +67 -84
- data/lib/pubid/iec/urn_generator.rb +143 -195
- data/lib/pubid/iec/urn_parser.rb +246 -85
- data/lib/pubid/iec.rb +66 -45
- data/lib/pubid/ieee/aiee/builder.rb +3 -17
- data/lib/pubid/ieee/aiee/identifier.rb +62 -46
- data/lib/pubid/ieee/aiee/parser.rb +1 -1
- data/lib/pubid/ieee/builder.rb +81 -398
- data/lib/pubid/ieee/components/code.rb +0 -8
- data/lib/pubid/ieee/components/draft.rb +0 -54
- data/lib/pubid/ieee/components/relationship.rb +149 -5
- data/lib/pubid/ieee/identifier.rb +11 -3
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +14 -62
- data/lib/pubid/ieee/identifiers/base.rb +547 -340
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +12 -6
- data/lib/pubid/ieee/identifiers/corrigendum.rb +12 -15
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +13 -24
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +7 -3
- data/lib/pubid/ieee/identifiers/dual_published.rb +7 -58
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +11 -99
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +11 -25
- data/lib/pubid/ieee/identifiers/joint_development.rb +15 -66
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +24 -58
- data/lib/pubid/ieee/identifiers/nesc/base.rb +19 -90
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +5 -20
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +5 -16
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +2 -11
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +3 -18
- data/lib/pubid/ieee/identifiers/nesc.rb +0 -1
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +9 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +6 -29
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +11 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +39 -4
- data/lib/pubid/ieee/identifiers/standard.rb +2 -5
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +7 -26
- data/lib/pubid/ieee/identifiers.rb +1 -2
- data/lib/pubid/ieee/ire/builder.rb +6 -7
- data/lib/pubid/ieee/ire/identifier.rb +33 -48
- data/lib/pubid/ieee/ire/parser.rb +1 -1
- data/lib/pubid/ieee/nesc/builder.rb +20 -33
- data/lib/pubid/ieee/nesc/parser.rb +15 -16
- data/lib/pubid/ieee/parser.rb +44 -462
- data/lib/pubid/ieee/scheme.rb +90 -0
- data/lib/pubid/ieee/typed_stages.rb +1 -12
- data/lib/pubid/ieee/urn_generator.rb +8 -35
- data/lib/pubid/ieee.rb +2 -133
- data/lib/pubid/ieee_debug.rb +1 -0
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +17 -5
- data/lib/pubid/iho/identifiers/base.rb +30 -64
- data/lib/pubid/iho/identifiers/bibliographic.rb +5 -1
- data/lib/pubid/iho/identifiers/circular_letter.rb +5 -1
- data/lib/pubid/iho/identifiers/miscellaneous.rb +5 -1
- data/lib/pubid/iho/identifiers/publication.rb +5 -1
- data/lib/pubid/iho/identifiers/standard.rb +5 -1
- data/lib/pubid/iho/identifiers.rb +1 -0
- data/lib/pubid/iho/parser.rb +4 -4
- data/lib/pubid/iho/scheme.rb +29 -0
- data/lib/pubid/iho/urn_generator.rb +3 -3
- data/lib/pubid/iho.rb +3 -59
- data/lib/pubid/iso/builder.rb +57 -68
- data/lib/pubid/iso/bundled_identifier.rb +3 -56
- data/lib/pubid/iso/combined_identifier.rb +4 -6
- data/lib/pubid/iso/components/code.rb +19 -7
- data/lib/pubid/iso/components/publisher.rb +8 -10
- data/lib/pubid/iso/components.rb +4 -2
- data/lib/pubid/iso/identifier.rb +11 -260
- data/lib/pubid/iso/identifiers/addendum.rb +6 -9
- data/lib/pubid/iso/identifiers/amendment.rb +4 -8
- data/lib/pubid/iso/identifiers/base.rb +115 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +1 -0
- data/lib/pubid/iso/identifiers/directives.rb +2 -8
- data/lib/pubid/iso/identifiers/directives_supplement.rb +26 -55
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +1 -0
- data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
- data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +4 -10
- data/lib/pubid/iso/identifiers/pas.rb +2 -2
- data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
- data/lib/pubid/iso/identifiers/supplement.rb +3 -11
- data/lib/pubid/iso/identifiers/tc_document.rb +15 -44
- data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
- data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
- data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
- data/lib/pubid/iso/identifiers.rb +1 -0
- data/lib/pubid/iso/parser.rb +19 -43
- data/lib/pubid/iso/scheme.rb +187 -0
- data/lib/pubid/iso/single_identifier.rb +7 -6
- data/lib/pubid/iso/supplement_identifier.rb +3 -29
- data/lib/pubid/iso/urn_generator.rb +177 -78
- data/lib/pubid/iso/urn_parser.rb +10 -29
- data/lib/pubid/iso.rb +2 -188
- data/lib/pubid/itu/builder.rb +41 -230
- data/lib/pubid/itu/components/code.rb +12 -57
- data/lib/pubid/itu/components/sector.rb +4 -15
- data/lib/pubid/itu/components/series.rb +4 -0
- data/lib/pubid/itu/identifier.rb +51 -2
- data/lib/pubid/itu/identifiers/amendment.rb +31 -7
- data/lib/pubid/itu/identifiers/annex.rb +4 -13
- data/lib/pubid/itu/identifiers/base.rb +128 -456
- data/lib/pubid/itu/identifiers/combined_identifier.rb +25 -99
- data/lib/pubid/itu/identifiers/corrigendum.rb +25 -16
- data/lib/pubid/itu/identifiers/recommendation.rb +4 -3
- data/lib/pubid/itu/identifiers/special_publication.rb +3 -3
- data/lib/pubid/itu/identifiers/supplement.rb +16 -119
- data/lib/pubid/itu/identifiers.rb +1 -10
- data/lib/pubid/itu/model.rb +1 -1
- data/lib/pubid/itu/parser.rb +27 -481
- data/lib/pubid/itu/scheme.rb +174 -0
- data/lib/pubid/itu/urn_generator.rb +6 -36
- data/lib/pubid/itu.rb +2 -58
- data/lib/pubid/jcgm/builder.rb +19 -37
- data/lib/pubid/jcgm/identifier.rb +0 -10
- data/lib/pubid/jcgm/identifiers/amendment.rb +11 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +15 -3
- data/lib/pubid/jcgm/identifiers.rb +0 -2
- data/lib/pubid/jcgm/parser.rb +7 -74
- data/lib/pubid/jcgm/scheme.rb +60 -0
- data/lib/pubid/jcgm/single_identifier.rb +14 -84
- data/lib/pubid/jcgm/supplement_identifier.rb +4 -39
- data/lib/pubid/jcgm/urn_generator.rb +19 -25
- data/lib/pubid/jcgm.rb +2 -57
- data/lib/pubid/jis/builder.rb +52 -44
- data/lib/pubid/jis/components/code.rb +59 -0
- data/lib/pubid/{astm → jis}/components.rb +1 -1
- data/lib/pubid/jis/identifier.rb +5 -181
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/base.rb +72 -0
- data/lib/pubid/jis/identifiers/standard.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_report.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +6 -32
- data/lib/pubid/jis/scheme.rb +49 -0
- data/lib/pubid/jis/single_identifier.rb +12 -6
- data/lib/pubid/jis/supplement_identifier.rb +14 -17
- data/lib/pubid/jis.rb +2 -48
- data/lib/pubid/nist/builder.rb +1765 -146
- data/lib/pubid/nist/components/code.rb +20 -9
- data/lib/pubid/nist/components/edition.rb +0 -16
- data/lib/pubid/nist/components/publisher.rb +24 -0
- data/lib/pubid/nist/components/supplement.rb +21 -91
- data/lib/pubid/nist/components.rb +1 -0
- data/lib/pubid/nist/configuration.rb +2 -12
- data/lib/pubid/nist/identifiers/base.rb +417 -662
- data/lib/pubid/nist/identifiers/circular.rb +5 -17
- data/lib/pubid/nist/identifiers/circular_supplement.rb +6 -16
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -3
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +5 -7
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +5 -18
- data/lib/pubid/nist/identifiers/crpl_report.rb +13 -16
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -18
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -3
- data/lib/pubid/nist/identifiers/handbook.rb +4 -12
- data/lib/pubid/nist/identifiers/internal_report.rb +7 -15
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -3
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +11 -20
- data/lib/pubid/nist/identifiers/monograph.rb +11 -22
- data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
- data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
- data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
- data/lib/pubid/nist/identifiers/report.rb +10 -19
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -12
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -4
- data/lib/pubid/nist/identifiers.rb +1 -1
- data/lib/pubid/nist/parser.rb +429 -97
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +34 -35
- data/lib/pubid/nist/urn_generator.rb +8 -14
- data/lib/pubid/nist.rb +5 -107
- data/lib/pubid/oiml/builder.rb +10 -91
- data/lib/pubid/oiml/components/code.rb +0 -17
- data/lib/pubid/oiml/identifier.rb +0 -53
- data/lib/pubid/oiml/identifiers/annex.rb +46 -13
- data/lib/pubid/oiml/identifiers/base.rb +36 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +0 -2
- data/lib/pubid/oiml/identifiers/document.rb +0 -2
- data/lib/pubid/oiml/identifiers/expert_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/guide.rb +0 -2
- data/lib/pubid/oiml/identifiers/recommendation.rb +0 -2
- data/lib/pubid/oiml/identifiers/seminar_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/vocabulary.rb +0 -2
- data/lib/pubid/oiml/identifiers.rb +1 -3
- data/lib/pubid/oiml/parser.rb +17 -118
- data/lib/pubid/oiml/scheme.rb +46 -0
- data/lib/pubid/oiml/single_identifier.rb +43 -66
- data/lib/pubid/oiml/supplement_identifier.rb +17 -62
- data/lib/pubid/oiml/urn_generator.rb +8 -22
- data/lib/pubid/oiml.rb +1 -56
- data/lib/pubid/parser.rb +0 -1
- data/lib/pubid/parsers/mr_string.rb +7 -120
- data/lib/pubid/plateau/builder.rb +4 -8
- data/lib/pubid/plateau/identifiers/base.rb +36 -40
- data/lib/pubid/plateau/identifiers/handbook.rb +7 -1
- data/lib/pubid/plateau/identifiers/technical_report.rb +5 -1
- data/lib/pubid/plateau/identifiers.rb +1 -0
- data/lib/pubid/plateau/parser.rb +6 -16
- data/lib/pubid/plateau/scheme.rb +45 -0
- data/lib/pubid/plateau/supplement_identifier.rb +15 -11
- data/lib/pubid/plateau.rb +1 -58
- data/lib/pubid/renderers/base.rb +0 -47
- data/lib/pubid/renderers/directives_renderer.rb +14 -27
- data/lib/pubid/renderers/guide_renderer.rb +1 -7
- data/lib/pubid/renderers/human_readable.rb +9 -34
- data/lib/pubid/renderers/iwa_renderer.rb +1 -5
- data/lib/pubid/renderers/mr_string.rb +6 -54
- data/lib/pubid/renderers/supplement_renderer.rb +2 -5
- data/lib/pubid/renderers.rb +0 -1
- data/lib/pubid/rendering/base.rb +73 -0
- data/lib/pubid/rendering/common.rb +211 -0
- data/lib/pubid/rendering/context.rb +21 -33
- data/lib/pubid/rendering/format.rb +25 -0
- data/lib/pubid/rendering/numbering.rb +7 -25
- data/lib/pubid/rendering/supplement.rb +4 -4
- data/lib/pubid/rendering.rb +3 -0
- data/lib/pubid/sae/builder.rb +1 -1
- data/lib/pubid/sae/components/date.rb +0 -8
- data/lib/pubid/sae/components/type.rb +1 -5
- data/lib/pubid/sae/identifier.rb +12 -2
- data/lib/pubid/sae/identifiers/base.rb +28 -33
- data/lib/pubid/sae/identifiers.rb +1 -0
- data/lib/pubid/sae/parser.rb +1 -1
- data/lib/pubid/sae/scheme.rb +47 -0
- data/lib/pubid/sae/urn_generator.rb +10 -2
- data/lib/pubid/sae.rb +2 -49
- data/lib/pubid/scheme.rb +207 -0
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +10 -424
- data/lib/tasks/export.rake +5 -6
- data/lib/tasks/website-data.json +1796 -1854
- metadata +45 -307
- data/data/bipm/update_codes.yaml +0 -9
- data/data/nist/series.yaml +0 -155
- data/lib/pubid/adobe/builder.rb +0 -52
- data/lib/pubid/adobe/identifier.rb +0 -47
- data/lib/pubid/adobe/identifiers/publication.rb +0 -31
- data/lib/pubid/adobe/identifiers/tech_note.rb +0 -32
- data/lib/pubid/adobe/identifiers.rb +0 -10
- data/lib/pubid/adobe/parser.rb +0 -136
- data/lib/pubid/adobe/renderer.rb +0 -39
- data/lib/pubid/adobe/urn_generator.rb +0 -42
- data/lib/pubid/adobe/urn_parser.rb +0 -69
- data/lib/pubid/adobe.rb +0 -60
- data/lib/pubid/amca/renderer.rb +0 -82
- data/lib/pubid/amca/urn_parser.rb +0 -28
- data/lib/pubid/ansi/renderer.rb +0 -53
- data/lib/pubid/ansi/urn_parser.rb +0 -23
- data/lib/pubid/api/identifiers.rb +0 -18
- data/lib/pubid/api/renderer.rb +0 -98
- data/lib/pubid/api/urn_parser.rb +0 -35
- data/lib/pubid/ashrae/renderer.rb +0 -117
- data/lib/pubid/ashrae/urn_parser.rb +0 -27
- data/lib/pubid/asme/renderer.rb +0 -66
- data/lib/pubid/asme/urn_parser.rb +0 -31
- data/lib/pubid/astm/identifiers/code_number.rb +0 -81
- data/lib/pubid/astm/identifiers.rb +0 -19
- data/lib/pubid/astm/renderer.rb +0 -172
- data/lib/pubid/astm/urn_parser.rb +0 -30
- data/lib/pubid/bipm/builder.rb +0 -163
- data/lib/pubid/bipm/identifier.rb +0 -285
- data/lib/pubid/bipm/identifiers/committee_document.rb +0 -36
- data/lib/pubid/bipm/identifiers/guide.rb +0 -35
- data/lib/pubid/bipm/identifiers/meeting.rb +0 -53
- data/lib/pubid/bipm/identifiers/mep.rb +0 -33
- data/lib/pubid/bipm/identifiers/metrologia_article.rb +0 -48
- data/lib/pubid/bipm/identifiers/si_brochure.rb +0 -33
- data/lib/pubid/bipm/identifiers.rb +0 -15
- data/lib/pubid/bipm/parser.rb +0 -237
- data/lib/pubid/bipm/renderer.rb +0 -118
- data/lib/pubid/bipm/urn_generator.rb +0 -58
- data/lib/pubid/bipm/urn_parser.rb +0 -60
- data/lib/pubid/bipm.rb +0 -91
- data/lib/pubid/bsi/renderer.rb +0 -1064
- data/lib/pubid/bsi/urn_parser.rb +0 -52
- data/lib/pubid/calconnect/builder.rb +0 -38
- data/lib/pubid/calconnect/identifier.rb +0 -121
- data/lib/pubid/calconnect/identifiers/standard.rb +0 -29
- data/lib/pubid/calconnect/identifiers.rb +0 -9
- data/lib/pubid/calconnect/parser.rb +0 -54
- data/lib/pubid/calconnect/renderer.rb +0 -36
- data/lib/pubid/calconnect/urn_generator.rb +0 -33
- data/lib/pubid/calconnect/urn_parser.rb +0 -34
- data/lib/pubid/calconnect.rb +0 -82
- data/lib/pubid/ccsds/urn_parser.rb +0 -20
- data/lib/pubid/cen_cenelec/renderer.rb +0 -261
- data/lib/pubid/cen_cenelec/urn_parser.rb +0 -28
- data/lib/pubid/cie/identifiers/code_attributes.rb +0 -52
- data/lib/pubid/cie/identifiers/proceedings.rb +0 -41
- data/lib/pubid/cie/urn_parser.rb +0 -28
- data/lib/pubid/components/adoption.rb +0 -104
- data/lib/pubid/components/iteration.rb +0 -32
- data/lib/pubid/components/relationship.rb +0 -151
- data/lib/pubid/components/supplement.rb +0 -184
- data/lib/pubid/csa/renderer.rb +0 -300
- data/lib/pubid/csa/urn_parser.rb +0 -33
- data/lib/pubid/doi/builder.rb +0 -18
- data/lib/pubid/doi/identifier.rb +0 -49
- data/lib/pubid/doi/identifiers/resource.rb +0 -30
- data/lib/pubid/doi/identifiers.rb +0 -9
- data/lib/pubid/doi/parser.rb +0 -52
- data/lib/pubid/doi/renderer.rb +0 -13
- data/lib/pubid/doi.rb +0 -55
- data/lib/pubid/easc/builder.rb +0 -55
- data/lib/pubid/easc/identifier.rb +0 -59
- data/lib/pubid/easc/identifiers/pmg.rb +0 -20
- data/lib/pubid/easc/identifiers/rmg.rb +0 -19
- data/lib/pubid/easc/identifiers.rb +0 -10
- data/lib/pubid/easc/parser.rb +0 -88
- data/lib/pubid/easc/renderer.rb +0 -48
- data/lib/pubid/easc/urn_generator.rb +0 -46
- data/lib/pubid/easc/urn_parser.rb +0 -57
- data/lib/pubid/easc.rb +0 -52
- data/lib/pubid/ecma/builder.rb +0 -45
- data/lib/pubid/ecma/identifier.rb +0 -147
- data/lib/pubid/ecma/identifiers/memento.rb +0 -30
- data/lib/pubid/ecma/identifiers/standard.rb +0 -31
- data/lib/pubid/ecma/identifiers/technical_report.rb +0 -31
- data/lib/pubid/ecma/identifiers.rb +0 -11
- data/lib/pubid/ecma/parser.rb +0 -76
- data/lib/pubid/ecma/renderer.rb +0 -67
- data/lib/pubid/ecma/urn_generator.rb +0 -46
- data/lib/pubid/ecma/urn_parser.rb +0 -51
- data/lib/pubid/ecma.rb +0 -67
- data/lib/pubid/errors.rb +0 -79
- data/lib/pubid/etsi/renderer.rb +0 -48
- data/lib/pubid/etsi/urn_parser.rb +0 -34
- data/lib/pubid/gb/builder.rb +0 -45
- data/lib/pubid/gb/identifier.rb +0 -67
- data/lib/pubid/gb/identifiers/standard.rb +0 -34
- data/lib/pubid/gb/identifiers.rb +0 -9
- data/lib/pubid/gb/parser.rb +0 -63
- data/lib/pubid/gb/renderer.rb +0 -35
- data/lib/pubid/gb.rb +0 -87
- data/lib/pubid/gost/builder.rb +0 -148
- data/lib/pubid/gost/identifier.rb +0 -47
- data/lib/pubid/gost/identifiers/foreign_reference.rb +0 -25
- data/lib/pubid/gost/identifiers/harmonized.rb +0 -39
- data/lib/pubid/gost/identifiers/identical_adoption.rb +0 -39
- data/lib/pubid/gost/identifiers/interstate_standard.rb +0 -20
- data/lib/pubid/gost/identifiers/national_standard.rb +0 -19
- data/lib/pubid/gost/identifiers.rb +0 -13
- data/lib/pubid/gost/parser.rb +0 -105
- data/lib/pubid/gost/renderer.rb +0 -48
- data/lib/pubid/gost/urn_generator.rb +0 -46
- data/lib/pubid/gost/urn_parser.rb +0 -52
- data/lib/pubid/gost.rb +0 -49
- data/lib/pubid/iala/builder.rb +0 -102
- data/lib/pubid/iala/identifier.rb +0 -90
- data/lib/pubid/iala/identifiers/advice.rb +0 -15
- data/lib/pubid/iala/identifiers/annex.rb +0 -57
- data/lib/pubid/iala/identifiers/general_assembly.rb +0 -19
- data/lib/pubid/iala/identifiers/guideline.rb +0 -17
- data/lib/pubid/iala/identifiers/letter.rb +0 -16
- data/lib/pubid/iala/identifiers/manual.rb +0 -18
- data/lib/pubid/iala/identifiers/model_course.rb +0 -17
- data/lib/pubid/iala/identifiers/recommendation.rb +0 -17
- data/lib/pubid/iala/identifiers/report.rb +0 -16
- data/lib/pubid/iala/identifiers/resolution.rb +0 -16
- data/lib/pubid/iala/identifiers/standard.rb +0 -17
- data/lib/pubid/iala/identifiers.rb +0 -19
- data/lib/pubid/iala/parser.rb +0 -138
- data/lib/pubid/iala/renderer.rb +0 -36
- data/lib/pubid/iala/urn_generator.rb +0 -49
- data/lib/pubid/iala/urn_parser.rb +0 -67
- data/lib/pubid/iala.rb +0 -71
- data/lib/pubid/iana/builder.rb +0 -22
- data/lib/pubid/iana/identifier.rb +0 -140
- data/lib/pubid/iana/identifiers/registry.rb +0 -69
- data/lib/pubid/iana/identifiers.rb +0 -9
- data/lib/pubid/iana/parser.rb +0 -38
- data/lib/pubid/iana/renderer.rb +0 -32
- data/lib/pubid/iana/urn_generator.rb +0 -19
- data/lib/pubid/iana/urn_parser.rb +0 -24
- data/lib/pubid/iana.rb +0 -69
- data/lib/pubid/idf/renderer.rb +0 -84
- data/lib/pubid/idf/urn_parser.rb +0 -25
- data/lib/pubid/iec/components.rb +0 -14
- data/lib/pubid/iec/identifiers/technical_group.rb +0 -30
- data/lib/pubid/iec/identifiers.rb +0 -31
- data/lib/pubid/iec/renderer.rb +0 -267
- data/lib/pubid/ieee/compaction.rb +0 -121
- data/lib/pubid/ieee/identifiers/amendment.rb +0 -40
- data/lib/pubid/ieee/identifiers/code_number.rb +0 -82
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +0 -32
- data/lib/pubid/ieee/pre_parser.rb +0 -301
- data/lib/pubid/ieee/renderer.rb +0 -408
- data/lib/pubid/ieee/urn_parser.rb +0 -34
- data/lib/pubid/ietf/builder.rb +0 -78
- data/lib/pubid/ietf/identifier.rb +0 -5
- data/lib/pubid/ietf/identifiers/base.rb +0 -72
- data/lib/pubid/ietf/identifiers/bcp.rb +0 -36
- data/lib/pubid/ietf/identifiers/fyi.rb +0 -36
- data/lib/pubid/ietf/identifiers/internet_draft.rb +0 -45
- data/lib/pubid/ietf/identifiers/rfc.rb +0 -27
- data/lib/pubid/ietf/identifiers/serialization.rb +0 -51
- data/lib/pubid/ietf/identifiers/std.rb +0 -36
- data/lib/pubid/ietf/identifiers.rb +0 -14
- data/lib/pubid/ietf/parser.rb +0 -61
- data/lib/pubid/ietf/renderer.rb +0 -64
- data/lib/pubid/ietf/urn_generator.rb +0 -37
- data/lib/pubid/ietf/urn_parser.rb +0 -43
- data/lib/pubid/ietf.rb +0 -85
- data/lib/pubid/iho/renderer.rb +0 -30
- data/lib/pubid/iho/urn_parser.rb +0 -58
- data/lib/pubid/isbn/builder.rb +0 -44
- data/lib/pubid/isbn/check_digit.rb +0 -53
- data/lib/pubid/isbn/identifier.rb +0 -81
- data/lib/pubid/isbn/identifiers/book.rb +0 -30
- data/lib/pubid/isbn/identifiers.rb +0 -9
- data/lib/pubid/isbn/parser.rb +0 -45
- data/lib/pubid/isbn/renderer.rb +0 -16
- data/lib/pubid/isbn.rb +0 -52
- data/lib/pubid/iso/normalizer.rb +0 -89
- data/lib/pubid/itu/components/designation.rb +0 -35
- data/lib/pubid/itu/components.rb +0 -12
- data/lib/pubid/itu/identifiers/addendum.rb +0 -15
- data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +0 -87
- data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +0 -92
- data/lib/pubid/itu/identifiers/errata.rb +0 -15
- data/lib/pubid/itu/identifiers/handbook.rb +0 -38
- data/lib/pubid/itu/identifiers/question.rb +0 -63
- data/lib/pubid/itu/identifiers/report.rb +0 -39
- data/lib/pubid/itu/identifiers/standard_serialization.rb +0 -58
- data/lib/pubid/itu/urn_parser.rb +0 -31
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +0 -34
- data/lib/pubid/jcgm/identifiers/meeting.rb +0 -47
- data/lib/pubid/jcgm/renderer.rb +0 -89
- data/lib/pubid/jcgm/urn_parser.rb +0 -177
- data/lib/pubid/jis/identifiers/corrigendum.rb +0 -16
- data/lib/pubid/jis/renderer.rb +0 -69
- data/lib/pubid/jis/urn_parser.rb +0 -23
- data/lib/pubid/nist/caster.rb +0 -1234
- data/lib/pubid/nist/circular_supplement_builder.rb +0 -293
- data/lib/pubid/nist/identifier.rb +0 -8
- data/lib/pubid/nist/identifiers/dated_document.rb +0 -49
- data/lib/pubid/nist/parser_output_normalizer.rb +0 -233
- data/lib/pubid/nist/preprocessor.rb +0 -443
- data/lib/pubid/nist/renderer.rb +0 -43
- data/lib/pubid/nist/router.rb +0 -149
- data/lib/pubid/nist/series/base.rb +0 -58
- data/lib/pubid/nist/series/crpl.rb +0 -13
- data/lib/pubid/nist/series/fips.rb +0 -14
- data/lib/pubid/nist/series/ir.rb +0 -57
- data/lib/pubid/nist/series/letter_preserving.rb +0 -15
- data/lib/pubid/nist/series/mono.rb +0 -19
- data/lib/pubid/nist/series/ncstar.rb +0 -20
- data/lib/pubid/nist/series.rb +0 -49
- data/lib/pubid/nist/urn_parser.rb +0 -67
- data/lib/pubid/oasis/builder.rb +0 -79
- data/lib/pubid/oasis/identifier.rb +0 -160
- data/lib/pubid/oasis/identifiers/standard.rb +0 -29
- data/lib/pubid/oasis/identifiers.rb +0 -9
- data/lib/pubid/oasis/parser.rb +0 -34
- data/lib/pubid/oasis/renderer.rb +0 -29
- data/lib/pubid/oasis/urn_generator.rb +0 -25
- data/lib/pubid/oasis/urn_parser.rb +0 -22
- data/lib/pubid/oasis.rb +0 -79
- data/lib/pubid/ogc/builder.rb +0 -33
- data/lib/pubid/ogc/identifier.rb +0 -81
- data/lib/pubid/ogc/identifiers/document.rb +0 -26
- data/lib/pubid/ogc/identifiers.rb +0 -10
- data/lib/pubid/ogc/parser.rb +0 -40
- data/lib/pubid/ogc/renderer.rb +0 -33
- data/lib/pubid/ogc/urn_generator.rb +0 -14
- data/lib/pubid/ogc/urn_parser.rb +0 -22
- data/lib/pubid/ogc.rb +0 -71
- data/lib/pubid/oiml/identifiers/bulletin.rb +0 -137
- data/lib/pubid/oiml/identifiers/code_number.rb +0 -90
- data/lib/pubid/oiml/identifiers/errata.rb +0 -15
- data/lib/pubid/oiml/renderer.rb +0 -232
- data/lib/pubid/oiml/urn_parser.rb +0 -39
- data/lib/pubid/omg/builder.rb +0 -19
- data/lib/pubid/omg/identifier.rb +0 -47
- data/lib/pubid/omg/identifiers/specification.rb +0 -32
- data/lib/pubid/omg/identifiers.rb +0 -9
- data/lib/pubid/omg/parser.rb +0 -40
- data/lib/pubid/omg/renderer.rb +0 -19
- data/lib/pubid/omg.rb +0 -51
- data/lib/pubid/parser/grammar.rb +0 -74
- data/lib/pubid/plateau/identifier.rb +0 -4
- data/lib/pubid/plateau/renderer.rb +0 -51
- data/lib/pubid/plateau/urn_parser.rb +0 -43
- data/lib/pubid/prefixes_support.rb +0 -51
- data/lib/pubid/renderers/annotator.rb +0 -233
- data/lib/pubid/sae/renderer.rb +0 -36
- data/lib/pubid/sae/urn_parser.rb +0 -36
- data/lib/pubid/tgpp/builder.rb +0 -41
- data/lib/pubid/tgpp/identifier.rb +0 -107
- data/lib/pubid/tgpp/identifiers/technical_report.rb +0 -32
- data/lib/pubid/tgpp/identifiers/technical_specification.rb +0 -33
- data/lib/pubid/tgpp/identifiers.rb +0 -11
- data/lib/pubid/tgpp/parser.rb +0 -78
- data/lib/pubid/tgpp/renderer.rb +0 -52
- data/lib/pubid/tgpp/urn_generator.rb +0 -39
- data/lib/pubid/tgpp/urn_parser.rb +0 -30
- data/lib/pubid/tgpp.rb +0 -83
- data/lib/pubid/type_resolver.rb +0 -59
- data/lib/pubid/un/builder.rb +0 -42
- data/lib/pubid/un/identifier.rb +0 -40
- data/lib/pubid/un/identifiers/document.rb +0 -24
- data/lib/pubid/un/identifiers.rb +0 -9
- data/lib/pubid/un/parser.rb +0 -25
- data/lib/pubid/un/renderer.rb +0 -11
- data/lib/pubid/un.rb +0 -46
- data/lib/pubid/urn_parser/base.rb +0 -81
- data/lib/pubid/urn_parser/errors.rb +0 -16
- data/lib/pubid/urn_parser.rb +0 -14
- data/lib/pubid/w3c/builder.rb +0 -55
- data/lib/pubid/w3c/identifier.rb +0 -130
- data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +0 -31
- data/lib/pubid/w3c/identifiers/draft_note.rb +0 -31
- data/lib/pubid/w3c/identifiers/note.rb +0 -30
- data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/standard.rb +0 -12
- data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/working_draft.rb +0 -30
- data/lib/pubid/w3c/identifiers.rb +0 -25
- data/lib/pubid/w3c/parser.rb +0 -43
- data/lib/pubid/w3c/renderer.rb +0 -35
- data/lib/pubid/w3c/urn_generator.rb +0 -18
- data/lib/pubid/w3c/urn_parser.rb +0 -36
- data/lib/pubid/w3c.rb +0 -67
- data/lib/pubid/xsf/builder.rb +0 -17
- data/lib/pubid/xsf/identifier.rb +0 -66
- data/lib/pubid/xsf/identifiers/xep.rb +0 -31
- data/lib/pubid/xsf/identifiers.rb +0 -9
- data/lib/pubid/xsf/parser.rb +0 -25
- data/lib/pubid/xsf/renderer.rb +0 -23
- data/lib/pubid/xsf/urn_generator.rb +0 -13
- data/lib/pubid/xsf/urn_parser.rb +0 -18
- data/lib/pubid/xsf.rb +0 -81
data/lib/pubid/ccsds/parser.rb
CHANGED
|
@@ -4,7 +4,7 @@ require "parslet"
|
|
|
4
4
|
|
|
5
5
|
module Pubid
|
|
6
6
|
module Ccsds
|
|
7
|
-
class Parser < ::
|
|
7
|
+
class Parser < Parslet::Parser
|
|
8
8
|
rule(:digit) { match["0-9"] }
|
|
9
9
|
rule(:digits) { digit.repeat(1) }
|
|
10
10
|
rule(:alnum) { match["A-Za-z0-9"] }
|
|
@@ -25,10 +25,8 @@ module Pubid
|
|
|
25
25
|
# Type (all possible type letters)
|
|
26
26
|
rule(:type) { dash >> match["A-Z"].as(:type) }
|
|
27
27
|
|
|
28
|
-
# Edition (can have dots like 4.1
|
|
29
|
-
rule(:edition)
|
|
30
|
-
dash >> (match["0-9."].repeat(1) >> match["A-Za-z"].maybe).as(:edition)
|
|
31
|
-
end
|
|
28
|
+
# Edition (can have dots like 4.1)
|
|
29
|
+
rule(:edition) { dash >> match["0-9."].repeat(1).as(:edition) }
|
|
32
30
|
|
|
33
31
|
# Suffix (like -S)
|
|
34
32
|
rule(:suffix) { dash >> match["A-Z"].as(:suffix) }
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ccsds
|
|
5
|
+
class Scheme < Pubid::Scheme
|
|
6
|
+
class << self
|
|
7
|
+
def identifiers
|
|
8
|
+
[
|
|
9
|
+
Identifiers::Base,
|
|
10
|
+
]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def supplement_identifiers
|
|
14
|
+
[
|
|
15
|
+
Identifiers::Corrigendum,
|
|
16
|
+
]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def typed_stages
|
|
20
|
+
identifiers.flat_map { |klass| klass::TYPED_STAGES }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def supplement_typed_stages
|
|
24
|
+
supplement_identifiers.flat_map { |klass| klass::TYPED_STAGES }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def locate_typed_stage_by_abbr(abbr)
|
|
28
|
+
abbr = "" if abbr.nil?
|
|
29
|
+
|
|
30
|
+
typed_stage = (typed_stages + supplement_typed_stages).detect do |ts|
|
|
31
|
+
ts.abbr.include?(abbr)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
unless typed_stage
|
|
35
|
+
raise ArgumentError,
|
|
36
|
+
"Unknown type abbreviation: '#{abbr}'"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
typed_stage
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def locate_identifier_klass_by_type_code(type_code)
|
|
43
|
+
identifier_klass = (identifiers + supplement_identifiers).detect do |klass|
|
|
44
|
+
klass.type[:key].to_s == type_code.to_s
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
unless identifier_klass
|
|
48
|
+
raise ArgumentError,
|
|
49
|
+
"Unknown type code: #{type_code}"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
identifier_klass
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ccsds
|
|
5
|
-
|
|
6
|
-
# Pubid::Ccsds::Identifier module, which is a parser entry point
|
|
7
|
-
# (`self.parse`) — not the base class.
|
|
8
|
-
class SingleIdentifier < ::Pubid::Identifier
|
|
5
|
+
class SingleIdentifier < Identifier
|
|
9
6
|
attribute :publisher, Components::Publisher, default: -> {
|
|
10
7
|
Components::Publisher.new(body: "CCSDS")
|
|
11
8
|
}
|
|
@@ -19,7 +16,7 @@ module Pubid
|
|
|
19
16
|
attribute :type, Components::Type
|
|
20
17
|
attribute :typed_stage, Components::TypedStage
|
|
21
18
|
|
|
22
|
-
def to_s(lang: :en, lang_single: false
|
|
19
|
+
def to_s(lang: :en, lang_single: false)
|
|
23
20
|
result = ""
|
|
24
21
|
|
|
25
22
|
# Publisher
|
|
@@ -47,7 +44,7 @@ module Pubid
|
|
|
47
44
|
# Language (optional)
|
|
48
45
|
result += " - #{language.code} Translated" if language
|
|
49
46
|
|
|
50
|
-
|
|
47
|
+
result
|
|
51
48
|
end
|
|
52
49
|
|
|
53
50
|
def <=>(other)
|
|
@@ -2,30 +2,26 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ccsds
|
|
5
|
-
# Base class for CCSDS supplements (corrigenda, amendments, etc.)
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# recursing forever while building a supplement from a hash.
|
|
10
|
-
class SupplementIdentifier < Identifier
|
|
11
|
-
attribute :base, Identifier, polymorphic: true
|
|
5
|
+
# Base class for CCSDS supplements (corrigenda, amendments, etc.)
|
|
6
|
+
# Following ISO pattern: inherits from Base and uses Lutaml::Model
|
|
7
|
+
class SupplementIdentifier < Identifiers::Base
|
|
8
|
+
attribute :base_identifier, Identifiers::Base, polymorphic: true
|
|
12
9
|
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
map "base", to: :base
|
|
10
|
+
# Delegate methods to base_identifier for convenient access
|
|
11
|
+
def publisher
|
|
12
|
+
base_identifier&.publisher
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def number
|
|
16
|
+
base_identifier&.number
|
|
21
17
|
end
|
|
22
18
|
|
|
23
19
|
def <=>(other)
|
|
24
20
|
return nil unless other.is_a?(SupplementIdentifier)
|
|
25
21
|
|
|
26
22
|
# Compare base identifiers first
|
|
27
|
-
if
|
|
28
|
-
base_cmp =
|
|
23
|
+
if base_identifier && other.base_identifier
|
|
24
|
+
base_cmp = base_identifier <=> other.base_identifier
|
|
29
25
|
return base_cmp unless base_cmp.zero?
|
|
30
26
|
end
|
|
31
27
|
|
|
@@ -47,7 +47,7 @@ module Pubid
|
|
|
47
47
|
edition = maybe(:edition)
|
|
48
48
|
if edition
|
|
49
49
|
e = if edition.is_a?(Pubid::Components::Edition)
|
|
50
|
-
edition.number
|
|
50
|
+
edition.number || edition.value
|
|
51
51
|
else
|
|
52
52
|
edition.to_s
|
|
53
53
|
end
|
|
@@ -91,18 +91,18 @@ module Pubid
|
|
|
91
91
|
|
|
92
92
|
while current.is_a?(SupplementIdentifier)
|
|
93
93
|
supplement_chain.unshift(current)
|
|
94
|
-
current = current.
|
|
94
|
+
current = current.base_identifier
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
base_gen = self.class.new(current)
|
|
98
98
|
base_urn = base_gen.generate_base_urn
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
parts <<
|
|
100
|
+
base_identifier_part = base_urn.sub(/^urn:ccsds:/, "")
|
|
101
|
+
parts << base_identifier_part
|
|
102
102
|
|
|
103
103
|
supplement_chain.each do |supp|
|
|
104
|
-
if supp.number
|
|
105
|
-
parts << "cor.#{supp.number}"
|
|
104
|
+
if supp.number&.value
|
|
105
|
+
parts << "cor.#{supp.number.value}"
|
|
106
106
|
elsif supp.typed_stage
|
|
107
107
|
parts << supp.typed_stage.type_code.to_s
|
|
108
108
|
end
|
data/lib/pubid/ccsds.rb
CHANGED
|
@@ -2,61 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ccsds
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Sole CCSDS publisher token (see the parser's `ccsds_prefix` rule).
|
|
8
|
-
PREFIXES = ["CCSDS"].freeze
|
|
9
|
-
|
|
10
5
|
autoload :Builder, "#{__dir__}/ccsds/builder"
|
|
11
6
|
autoload :Identifier, "#{__dir__}/ccsds/identifier"
|
|
12
7
|
autoload :Identifiers, "#{__dir__}/ccsds/identifiers"
|
|
13
8
|
autoload :Parser, "#{__dir__}/ccsds/parser"
|
|
9
|
+
autoload :Scheme, "#{__dir__}/ccsds/scheme"
|
|
14
10
|
autoload :SingleIdentifier, "#{__dir__}/ccsds/single_identifier"
|
|
15
11
|
autoload :SupplementIdentifier, "#{__dir__}/ccsds/supplement_identifier"
|
|
16
12
|
autoload :UrnGenerator, "#{__dir__}/ccsds/urn_generator"
|
|
17
|
-
autoload :UrnParser, "#{__dir__}/ccsds/urn_parser"
|
|
18
13
|
|
|
19
14
|
def self.parse(identifier)
|
|
20
15
|
Identifier.parse(identifier)
|
|
21
16
|
end
|
|
22
|
-
|
|
23
|
-
# Auto-discover all identifier types from the Identifiers namespace.
|
|
24
|
-
# CCSDS identifier classes extend Lutaml::Model::Serializable directly
|
|
25
|
-
# but do define self.type returning a Hash.
|
|
26
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
27
|
-
def self.identifier_types
|
|
28
|
-
@identifier_types ||= Identifiers.constants
|
|
29
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
30
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
31
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Build typed stage index from identifier types
|
|
35
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
36
|
-
def self.all_typed_stages
|
|
37
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
38
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
39
|
-
klass.const_get(:TYPED_STAGES)
|
|
40
|
-
else
|
|
41
|
-
[]
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Lookup: type code -> identifier class
|
|
47
|
-
# @param code [String, Symbol] the type key to find
|
|
48
|
-
# @return [Class, nil] the matching identifier class
|
|
49
|
-
def self.locate_type(code)
|
|
50
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Lookup: abbreviation -> typed stage
|
|
54
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
55
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
56
|
-
def self.locate_stage(abbr)
|
|
57
|
-
abbr_str = abbr.to_s.upcase
|
|
58
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
59
|
-
end
|
|
60
17
|
end
|
|
61
18
|
end
|
|
62
19
|
|
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module CenCenelec
|
|
5
5
|
class Builder < Pubid::Builder::Base
|
|
6
|
-
def
|
|
7
|
-
|
|
6
|
+
def initialize(scheme)
|
|
7
|
+
@scheme = scheme
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.build(parsed_data, scheme = Scheme.new)
|
|
11
|
+
new(scheme).build(parsed_data)
|
|
8
12
|
end
|
|
9
13
|
|
|
10
14
|
def build(data)
|
|
@@ -33,26 +37,10 @@ module Pubid
|
|
|
33
37
|
return build_standalone_supplement(data)
|
|
34
38
|
end
|
|
35
39
|
|
|
36
|
-
# Implicit adoption: when an EN has no explicit "IEC" prefix but
|
|
37
|
-
# the number falls in the IEC range (60000-79999), treat it as an
|
|
38
|
-
# adoption of the corresponding IEC standard. The lower ISO-only
|
|
39
|
-
# range (1-59999) is intentionally NOT mapped here — too many
|
|
40
|
-
# existing CEN publications (EN Guide N, EN N as a real CEN-assigned
|
|
41
|
-
# number) would change type. Callers who want explicit adoption
|
|
42
|
-
# can still write "EN ISO 12345".
|
|
43
|
-
# (https://github.com/pubid/pubid/issues/249)
|
|
44
|
-
# Skip when parts are present — they would be lost when we rebuild
|
|
45
|
-
# the identifier from just the base number.
|
|
46
|
-
if data[:publisher]&.to_s == "EN" && !data[:adopted_string] &&
|
|
47
|
-
data[:parts].to_a.empty? &&
|
|
48
|
-
(adopted = build_implicit_adoption(data))
|
|
49
|
-
return adopted
|
|
50
|
-
end
|
|
51
|
-
|
|
52
40
|
# Extract supplements before building base identifier (only plus/bundled)
|
|
53
41
|
supplements_data = extract_supplements(data)
|
|
54
42
|
|
|
55
|
-
# Determine identifier class using
|
|
43
|
+
# Determine identifier class using Scheme
|
|
56
44
|
identifier = locate_identifier_klass(data).new
|
|
57
45
|
assign_attributes(identifier, data)
|
|
58
46
|
|
|
@@ -72,18 +60,18 @@ module Pubid
|
|
|
72
60
|
base_data.delete(:amendment_number)
|
|
73
61
|
base_data.delete(:fragment_number)
|
|
74
62
|
|
|
75
|
-
|
|
76
|
-
assign_attributes(
|
|
63
|
+
base_identifier = locate_identifier_klass(base_data).new
|
|
64
|
+
assign_attributes(base_identifier, base_data)
|
|
77
65
|
|
|
78
66
|
# Build Amendment identifier wrapping the base
|
|
79
67
|
amendment = Identifiers::Amendment.new(
|
|
80
|
-
|
|
68
|
+
base_identifier: base_identifier,
|
|
81
69
|
amendment_number: data[:amendment_number].to_s,
|
|
82
70
|
)
|
|
83
71
|
|
|
84
72
|
# Build Fragment wrapping the amendment
|
|
85
73
|
Identifiers::Fragment.new(
|
|
86
|
-
|
|
74
|
+
base_identifier: amendment,
|
|
87
75
|
fragment_number: data[:fragment_number].to_s,
|
|
88
76
|
)
|
|
89
77
|
end
|
|
@@ -95,23 +83,21 @@ module Pubid
|
|
|
95
83
|
# Check if publisher is actually a type code (CWA, HD, ES, CR, ENV act as publisher)
|
|
96
84
|
publisher_str = parsed_hash[:publisher].to_s
|
|
97
85
|
if %w[CWA HD ES CR ENV].include?(publisher_str)
|
|
98
|
-
typed_stage =
|
|
99
|
-
|
|
100
|
-
return klass
|
|
101
|
-
end
|
|
86
|
+
typed_stage = @scheme.locate_typed_stage_by_abbr(publisher_str)
|
|
87
|
+
return @scheme.locate_identifier_klass_by_type_code(typed_stage.type_code)
|
|
102
88
|
end
|
|
103
89
|
|
|
104
|
-
# Use type or stage to determine class via
|
|
90
|
+
# Use type or stage to determine class via Scheme
|
|
105
91
|
type_or_stage = parsed_hash[:type_with_stage] || parsed_hash[:type] || parsed_hash[:stage] || ""
|
|
106
|
-
typed_stage =
|
|
107
|
-
|
|
92
|
+
typed_stage = @scheme.locate_typed_stage_by_abbr(type_or_stage)
|
|
93
|
+
@scheme.locate_identifier_klass_by_type_code(typed_stage.type_code)
|
|
108
94
|
end
|
|
109
95
|
|
|
110
96
|
def cast(type, value)
|
|
111
97
|
case type
|
|
112
98
|
when :type_with_stage
|
|
113
99
|
# Lookup from register
|
|
114
|
-
typed_stage =
|
|
100
|
+
typed_stage = @scheme.locate_typed_stage_by_abbr(value || "")
|
|
115
101
|
{
|
|
116
102
|
stage: typed_stage.to_stage,
|
|
117
103
|
type: typed_stage.to_type,
|
|
@@ -132,7 +118,7 @@ module Pubid
|
|
|
132
118
|
end
|
|
133
119
|
|
|
134
120
|
when :number
|
|
135
|
-
value.to_s
|
|
121
|
+
Components::Code.new(value: value.to_s)
|
|
136
122
|
|
|
137
123
|
when :parts
|
|
138
124
|
# Extract first part, preserve full multi-level part string
|
|
@@ -142,11 +128,11 @@ module Pubid
|
|
|
142
128
|
part_str = parts_array.first[:part].to_s
|
|
143
129
|
|
|
144
130
|
# Store the full part value for multi-level parts
|
|
145
|
-
{ part: part_str }
|
|
131
|
+
{ part: Components::Code.new(value: part_str) }
|
|
146
132
|
end
|
|
147
133
|
|
|
148
134
|
when :part
|
|
149
|
-
value[:part].to_s if value.is_a?(Hash)
|
|
135
|
+
Components::Code.new(value: value[:part].to_s) if value.is_a?(Hash)
|
|
150
136
|
|
|
151
137
|
when :year, :date
|
|
152
138
|
# Check if month is present in the data and include it
|
|
@@ -164,7 +150,7 @@ module Pubid
|
|
|
164
150
|
|
|
165
151
|
when :stage
|
|
166
152
|
# Lookup stage in TYPED_STAGES register
|
|
167
|
-
typed_stage =
|
|
153
|
+
typed_stage = @scheme.locate_typed_stage_by_abbr(value.to_s)
|
|
168
154
|
{
|
|
169
155
|
stage: typed_stage.to_stage,
|
|
170
156
|
typed_stage: typed_stage,
|
|
@@ -223,24 +209,6 @@ module Pubid
|
|
|
223
209
|
)
|
|
224
210
|
end
|
|
225
211
|
|
|
226
|
-
# Implicit adoption by number range. Returns an AdoptedEuropeanNorm
|
|
227
|
-
# wrapping the IEC identifier that the EN number implies, or nil if the
|
|
228
|
-
# number doesn't fall in the IEC range. Limited to IEC range only —
|
|
229
|
-
# see the call site comment for why the ISO range is excluded.
|
|
230
|
-
def build_implicit_adoption(data)
|
|
231
|
-
number = data[:number].to_s
|
|
232
|
-
num_str = number.to_s.strip
|
|
233
|
-
return nil unless num_str.match?(/\A\d{1,6}\z/)
|
|
234
|
-
|
|
235
|
-
num = num_str.to_i
|
|
236
|
-
return nil unless (60_000..79_999).cover?(num)
|
|
237
|
-
|
|
238
|
-
Identifiers::AdoptedEuropeanNorm.new(
|
|
239
|
-
publisher: ["EN"],
|
|
240
|
-
adopted_identifier: Pubid::Iec.parse("IEC #{num_str}"),
|
|
241
|
-
)
|
|
242
|
-
end
|
|
243
|
-
|
|
244
212
|
def build_env_adopted_identifier(data)
|
|
245
213
|
# Parse the adopted identifier string
|
|
246
214
|
adopted_str = data[:adopted_string]&.to_s&.strip
|
|
@@ -259,17 +227,17 @@ module Pubid
|
|
|
259
227
|
)
|
|
260
228
|
end
|
|
261
229
|
|
|
262
|
-
def wrap_with_consolidated(
|
|
230
|
+
def wrap_with_consolidated(base_identifier, supplements_data)
|
|
263
231
|
supplement_ids = supplements_data.map do |supp|
|
|
264
232
|
if supp[:type] == :amendment
|
|
265
233
|
Identifiers::Amendment.new(
|
|
266
|
-
|
|
234
|
+
base_identifier: base_identifier,
|
|
267
235
|
amendment_number: supp[:number],
|
|
268
236
|
amendment_year: supp[:year]&.to_i,
|
|
269
237
|
)
|
|
270
238
|
else
|
|
271
239
|
corr_attrs = {
|
|
272
|
-
|
|
240
|
+
base_identifier: base_identifier,
|
|
273
241
|
corrigendum_number: supp[:number],
|
|
274
242
|
corrigendum_year: supp[:year]&.to_i,
|
|
275
243
|
}
|
|
@@ -279,7 +247,7 @@ module Pubid
|
|
|
279
247
|
end
|
|
280
248
|
|
|
281
249
|
Identifiers::ConsolidatedIdentifier.new(
|
|
282
|
-
identifiers: [
|
|
250
|
+
identifiers: [base_identifier] + supplement_ids,
|
|
283
251
|
)
|
|
284
252
|
end
|
|
285
253
|
|
|
@@ -328,8 +296,8 @@ module Pubid
|
|
|
328
296
|
# Build base identifier first (without supplements)
|
|
329
297
|
base_data = data.dup
|
|
330
298
|
base_data.delete(:supplements)
|
|
331
|
-
|
|
332
|
-
assign_attributes(
|
|
299
|
+
base_identifier = locate_identifier_klass(base_data).new
|
|
300
|
+
assign_attributes(base_identifier, base_data)
|
|
333
301
|
|
|
334
302
|
# Get the first supplement (slash means only one supplement)
|
|
335
303
|
supp_array = data[:supplements]
|
|
@@ -339,13 +307,13 @@ module Pubid
|
|
|
339
307
|
# Build appropriate supplement identifier
|
|
340
308
|
if supp_data[:amd_number]
|
|
341
309
|
Identifiers::Amendment.new(
|
|
342
|
-
|
|
310
|
+
base_identifier: base_identifier,
|
|
343
311
|
amendment_number: supp_data[:amd_number].to_s,
|
|
344
312
|
amendment_year: supp_data[:amd_year]&.to_i,
|
|
345
313
|
)
|
|
346
314
|
else
|
|
347
315
|
corr_attrs = {
|
|
348
|
-
|
|
316
|
+
base_identifier: base_identifier,
|
|
349
317
|
corrigendum_number: supp_data[:cor_number]&.to_s,
|
|
350
318
|
corrigendum_year: (supp_data[:cor_year] || supp_data[:year])&.to_i,
|
|
351
319
|
}
|
|
@@ -2,36 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module CenCenelec
|
|
5
|
-
|
|
6
|
-
# hierarchy — some concrete types descend from Identifiers::Base, others from
|
|
7
|
-
# SingleIdentifier — so this class is the shared parent of BOTH, making every
|
|
8
|
-
# CEN/CENELEC identifier `is_a?(Pubid::CenCenelec::Identifier)` natively (and
|
|
9
|
-
# giving them the shared polymorphic `from_hash`). No facade needed.
|
|
10
|
-
class Identifier < ::Pubid::Identifier
|
|
11
|
-
# `number`/`part`/`subpart` are declared here rather than inherited as a
|
|
12
|
-
# Components::Code: CEN/CENELEC stores a bare string in every one of them.
|
|
13
|
-
# This class is the shared parent of BOTH branches, so one declaration
|
|
14
|
-
# here replaces the three that used to disagree (Identifiers::Base said
|
|
15
|
-
# :string, SingleIdentifier inherited Code, SupplementIdentifier declared
|
|
16
|
-
# Code again). Declaring here is safe because this body lives in one file
|
|
17
|
-
# and is never reopened, so every subclass body opens after it has run
|
|
18
|
-
# (lutaml deep-dups the parent attribute table at class-definition time).
|
|
19
|
-
attribute :number, :string
|
|
20
|
-
attribute :part, :string
|
|
21
|
-
attribute :subpart, :string
|
|
22
|
-
|
|
5
|
+
module Identifier
|
|
23
6
|
def self.parse(identifier)
|
|
24
|
-
|
|
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
|
-
|
|
7
|
+
scheme = Scheme.new
|
|
33
8
|
parsed = Parser.parse(identifier)
|
|
34
|
-
Builder.new.build(parsed)
|
|
9
|
+
Builder.new(scheme).build(parsed)
|
|
10
|
+
rescue Parslet::ParseFailed => e
|
|
11
|
+
raise "Failed to parse CEN identifier '#{identifier}': #{e.message}"
|
|
35
12
|
end
|
|
36
13
|
end
|
|
37
14
|
end
|
|
@@ -8,15 +8,10 @@ module Pubid
|
|
|
8
8
|
class AdoptedEuropeanNorm < EuropeanNorm
|
|
9
9
|
attribute :adopted_identifier, Base, polymorphic: true # ISO/IEC/IEEE object
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# not selected via type-code lookup. Returning nil here prevents
|
|
16
|
-
# identifier_types auto-discovery from shadowing EuropeanNorm (which
|
|
17
|
-
# also reports :en) in CenCenelec.locate_type(:en).
|
|
18
|
-
def self.type
|
|
19
|
-
nil
|
|
11
|
+
def to_s
|
|
12
|
+
result = publisher.is_a?(Array) ? publisher.join("/") : publisher.join("/")
|
|
13
|
+
result += " #{adopted_identifier}" if adopted_identifier
|
|
14
|
+
result
|
|
20
15
|
end
|
|
21
16
|
|
|
22
17
|
# Delegate common methods to adopted identifier
|
|
@@ -6,12 +6,22 @@ module Pubid
|
|
|
6
6
|
# Amendment Identifier
|
|
7
7
|
# Contains a base identifier plus amendment parameters
|
|
8
8
|
class Amendment < Base
|
|
9
|
-
attribute :
|
|
9
|
+
attribute :base_identifier, Base, polymorphic: true
|
|
10
10
|
attribute :amendment_number, :string
|
|
11
11
|
attribute :amendment_year, :integer
|
|
12
12
|
|
|
13
|
+
def to_s
|
|
14
|
+
result = if base_identifier
|
|
15
|
+
"#{base_identifier}/A#{amendment_number}"
|
|
16
|
+
else
|
|
17
|
+
"/A#{amendment_number}"
|
|
18
|
+
end
|
|
19
|
+
result += ":#{amendment_year}" if amendment_year
|
|
20
|
+
result
|
|
21
|
+
end
|
|
22
|
+
|
|
13
23
|
def publisher
|
|
14
|
-
|
|
24
|
+
base_identifier&.publisher
|
|
15
25
|
end
|
|
16
26
|
end
|
|
17
27
|
end
|
|
@@ -3,18 +3,16 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module CenCenelec
|
|
5
5
|
module Identifiers
|
|
6
|
-
# Base CEN identifier
|
|
6
|
+
# Base CEN identifier
|
|
7
7
|
# Format: {PUBLISHER} NUMBER[-PART]:YEAR
|
|
8
|
-
class Base < Pubid::
|
|
8
|
+
class Base < Pubid::Identifier
|
|
9
9
|
# Generate URN for this identifier
|
|
10
10
|
#
|
|
11
11
|
# @return [String] URN representation
|
|
12
12
|
|
|
13
13
|
attribute :publisher, :string, collection: true # EN, CEN, CLC, etc.
|
|
14
14
|
attribute :type, :string # TR, TS, Guide
|
|
15
|
-
|
|
16
|
-
# a same-type redeclaration here is the determinism landmine in
|
|
17
|
-
# miniature, and it moves the generated accessor onto this class.
|
|
15
|
+
attribute :number, :string
|
|
18
16
|
attribute :parts, :string, collection: true
|
|
19
17
|
attribute :year, :integer
|
|
20
18
|
attribute :stage, :string # prEN, FprEN
|
|
@@ -22,6 +20,49 @@ module Pubid
|
|
|
22
20
|
attribute :adopted_identifier, Base, polymorphic: true # Nested identifier object (ISO, IEC, etc.)
|
|
23
21
|
attribute :edition, :string # Edition number
|
|
24
22
|
|
|
23
|
+
def to_s
|
|
24
|
+
result = ""
|
|
25
|
+
|
|
26
|
+
# Stage or Publisher
|
|
27
|
+
if stage
|
|
28
|
+
result += stage
|
|
29
|
+
elsif publisher&.any?
|
|
30
|
+
result += publisher.join("/")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# If we have adopted_identifier, render it (contains all info)
|
|
34
|
+
if adopted_identifier
|
|
35
|
+
result += " #{adopted_identifier}"
|
|
36
|
+
# Don't add our own number/parts/year - they're in adopted_identifier
|
|
37
|
+
else
|
|
38
|
+
# Only render our own fields if no adoption
|
|
39
|
+
# Type - use space for Guide, slash for TR/TS
|
|
40
|
+
if type
|
|
41
|
+
sep = type == "Guide" ? " " : "/"
|
|
42
|
+
result += "#{sep}#{type}"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
result += " #{number}"
|
|
46
|
+
result += parts.map { |p| "-#{p}" }.join if parts&.any?
|
|
47
|
+
result += ":#{year}" if year
|
|
48
|
+
|
|
49
|
+
# Supplements
|
|
50
|
+
if supplements&.any?
|
|
51
|
+
supplements.each do |supp|
|
|
52
|
+
sep = supp[:type] == :amendment ? "/" : "+"
|
|
53
|
+
result += "#{sep}#{supp[:type] == :amendment ? 'A' : 'AC'}"
|
|
54
|
+
result += supp[:number] if supp[:number] && !supp[:number].empty?
|
|
55
|
+
result += ":#{supp[:year]}" if supp[:year]
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Edition
|
|
60
|
+
result += " ED#{edition}" if edition
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
result
|
|
64
|
+
end
|
|
65
|
+
|
|
25
66
|
def ==(other)
|
|
26
67
|
return false unless other.is_a?(Base)
|
|
27
68
|
|