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/bsi.rb
CHANGED
|
@@ -2,21 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Bsi
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Leading tokens a printed BSI reference can start with, curated from the
|
|
8
|
-
# parser grammar (lib/pubid/bsi/parser.rb): the publisher (`bs` => BS/BSI),
|
|
9
|
-
# the native series/type rules that begin references (dd, pd, pas, na, ts,
|
|
10
|
-
# handbook => HB, pp, bip, ep_type), and the "BS <adopted-org>" combos the
|
|
11
|
-
# grammar builds from `bs` + `adopted_org_prefix`. Deliberately EXCLUDES the
|
|
12
|
-
# aerospace single/multi-letter prefixes (see
|
|
13
|
-
# identifiers/aerospace_standard.rb SINGLE_LETTER_PREFIXES / the parser's
|
|
14
|
-
# `single_letter_prefix` rule — A/B/C/S/X ...) because they are dangerously
|
|
15
|
-
# ambiguous and never lead a routable reference on their own; and the bare
|
|
16
|
-
# adopted forms (ISO/IEC/EN alone), which route to their own SDOs.
|
|
17
|
-
PREFIXES = (%w[BS BSI DD PD PAS NA TS HB PP BIP EP] +
|
|
18
|
-
["BS EN", "BS ISO", "BS IEC", "BS EN ISO", "BS EN IEC"]).freeze
|
|
19
|
-
|
|
20
5
|
module Components
|
|
21
6
|
autoload :Code, "#{__dir__}/bsi/components/code"
|
|
22
7
|
autoload :Date, "#{__dir__}/bsi/components/date"
|
|
@@ -27,256 +12,21 @@ module Pubid
|
|
|
27
12
|
autoload :Builder, "#{__dir__}/bsi/builder"
|
|
28
13
|
autoload :Identifier, "#{__dir__}/bsi/identifier"
|
|
29
14
|
autoload :Identifiers, "#{__dir__}/bsi/identifiers"
|
|
30
|
-
|
|
31
|
-
# and defines a conflicting `class Identifier < Lutaml::Model::Serializable`.
|
|
32
|
-
# It is intentionally NOT autoloaded so it can never clash with the real
|
|
33
|
-
# Pubid::Bsi::Identifier (single_identifier.rb).
|
|
15
|
+
autoload :Model, "#{__dir__}/bsi/model"
|
|
34
16
|
autoload :Parser, "#{__dir__}/bsi/parser"
|
|
35
|
-
autoload :
|
|
17
|
+
autoload :Scheme, "#{__dir__}/bsi/scheme"
|
|
36
18
|
autoload :SingleIdentifier, "#{__dir__}/bsi/single_identifier"
|
|
37
19
|
autoload :UrnGenerator, "#{__dir__}/bsi/urn_generator"
|
|
38
|
-
autoload :UrnParser, "#{__dir__}/bsi/urn_parser"
|
|
39
|
-
|
|
40
|
-
# TYPED_STAGES_REGISTRY for native BSI types. Used by Pubid::Bsi.locate_stage
|
|
41
|
-
# to map abbreviations (e.g. "BS", "PD", "Handbook") to typed stages.
|
|
42
|
-
TYPED_STAGES_REGISTRY = [
|
|
43
|
-
# British Standard (BS)
|
|
44
|
-
Pubid::Components::TypedStage.new(
|
|
45
|
-
code: :pubbs,
|
|
46
|
-
stage_code: :published,
|
|
47
|
-
type_code: :bs,
|
|
48
|
-
abbr: ["BS"],
|
|
49
|
-
name: "British Standard",
|
|
50
|
-
harmonized_stages: %w[60.00 60.60],
|
|
51
|
-
),
|
|
52
|
-
Pubid::Components::TypedStage.new(
|
|
53
|
-
code: :drbs,
|
|
54
|
-
stage_code: :draft,
|
|
55
|
-
type_code: :bs,
|
|
56
|
-
abbr: ["Draft BS", "DBS"],
|
|
57
|
-
name: "Draft British Standard",
|
|
58
|
-
harmonized_stages: %w[30.00 30.20 30.60 40.00 40.20 40.60],
|
|
59
|
-
),
|
|
60
|
-
|
|
61
|
-
# Published Document (PD)
|
|
62
|
-
Pubid::Components::TypedStage.new(
|
|
63
|
-
code: :pubpd,
|
|
64
|
-
stage_code: :published,
|
|
65
|
-
type_code: :pd,
|
|
66
|
-
abbr: ["PD"],
|
|
67
|
-
name: "Published Document",
|
|
68
|
-
harmonized_stages: %w[60.00 60.60],
|
|
69
|
-
),
|
|
70
|
-
|
|
71
|
-
# Publicly Available Specification (PAS)
|
|
72
|
-
Pubid::Components::TypedStage.new(
|
|
73
|
-
code: :pubpas,
|
|
74
|
-
stage_code: :published,
|
|
75
|
-
type_code: :pas,
|
|
76
|
-
abbr: ["PAS"],
|
|
77
|
-
name: "Publicly Available Specification",
|
|
78
|
-
harmonized_stages: %w[60.00 60.60],
|
|
79
|
-
),
|
|
80
|
-
|
|
81
|
-
# National Annex (NA)
|
|
82
|
-
Pubid::Components::TypedStage.new(
|
|
83
|
-
code: :pubna,
|
|
84
|
-
stage_code: :published,
|
|
85
|
-
type_code: :na,
|
|
86
|
-
abbr: ["NA"],
|
|
87
|
-
name: "National Annex",
|
|
88
|
-
harmonized_stages: %w[60.00 60.60],
|
|
89
|
-
),
|
|
90
|
-
|
|
91
|
-
# Draft Document (DD)
|
|
92
|
-
Pubid::Components::TypedStage.new(
|
|
93
|
-
code: :pubdd,
|
|
94
|
-
stage_code: :published,
|
|
95
|
-
type_code: :dd,
|
|
96
|
-
abbr: ["DD"],
|
|
97
|
-
name: "Draft Document",
|
|
98
|
-
harmonized_stages: %w[60.00 60.60],
|
|
99
|
-
),
|
|
100
|
-
|
|
101
|
-
# Flex Document
|
|
102
|
-
Pubid::Components::TypedStage.new(
|
|
103
|
-
code: :pubflex,
|
|
104
|
-
stage_code: :published,
|
|
105
|
-
type_code: :flex,
|
|
106
|
-
abbr: ["Flex", "BSI Flex"],
|
|
107
|
-
name: "BSI Flex",
|
|
108
|
-
harmonized_stages: %w[60.00 60.60],
|
|
109
|
-
),
|
|
110
|
-
|
|
111
|
-
# Handbook
|
|
112
|
-
Pubid::Components::TypedStage.new(
|
|
113
|
-
code: :pubhandbook,
|
|
114
|
-
stage_code: :published,
|
|
115
|
-
type_code: :handbook,
|
|
116
|
-
abbr: ["Handbook", "HB"],
|
|
117
|
-
name: "BSI Handbook",
|
|
118
|
-
harmonized_stages: %w[60.00 60.60],
|
|
119
|
-
),
|
|
120
|
-
|
|
121
|
-
# Practice Guide (PP)
|
|
122
|
-
Pubid::Components::TypedStage.new(
|
|
123
|
-
code: :pubpp,
|
|
124
|
-
stage_code: :published,
|
|
125
|
-
type_code: :pp,
|
|
126
|
-
abbr: ["PP"],
|
|
127
|
-
name: "Published Practice",
|
|
128
|
-
harmonized_stages: %w[60.00 60.60],
|
|
129
|
-
),
|
|
130
|
-
|
|
131
|
-
# British Industrial Practice (BIP)
|
|
132
|
-
Pubid::Components::TypedStage.new(
|
|
133
|
-
code: :pubbip,
|
|
134
|
-
stage_code: :published,
|
|
135
|
-
type_code: :bip,
|
|
136
|
-
abbr: ["BIP"],
|
|
137
|
-
name: "British Industrial Practice",
|
|
138
|
-
harmonized_stages: %w[60.00 60.60],
|
|
139
|
-
),
|
|
140
|
-
|
|
141
|
-
# Aerospace/Specialized British Standard (with letter prefix)
|
|
142
|
-
Pubid::Components::TypedStage.new(
|
|
143
|
-
code: :pubaerospace,
|
|
144
|
-
stage_code: :published,
|
|
145
|
-
type_code: :aerospace,
|
|
146
|
-
abbr: ["BS A", "BS AU", "BS C", "BS M", "BS S", "BS L", "BS TA",
|
|
147
|
-
"BS MA", "BS PL", "BS QC", "BS G", "BS HC", "BS F", "BS X", "BS B"],
|
|
148
|
-
name: "Aerospace/Specialized British Standard",
|
|
149
|
-
harmonized_stages: %w[60.00 60.60],
|
|
150
|
-
),
|
|
151
|
-
|
|
152
|
-
# Index
|
|
153
|
-
Pubid::Components::TypedStage.new(
|
|
154
|
-
code: :pubindex,
|
|
155
|
-
stage_code: :published,
|
|
156
|
-
type_code: :index,
|
|
157
|
-
abbr: ["Index"],
|
|
158
|
-
name: "BSI Index",
|
|
159
|
-
harmonized_stages: %w[60.00 60.60],
|
|
160
|
-
),
|
|
161
|
-
|
|
162
|
-
# Method
|
|
163
|
-
Pubid::Components::TypedStage.new(
|
|
164
|
-
code: :pubmethod,
|
|
165
|
-
stage_code: :published,
|
|
166
|
-
type_code: :method,
|
|
167
|
-
abbr: ["Method", "Methods"],
|
|
168
|
-
name: "BSI Method",
|
|
169
|
-
harmonized_stages: %w[60.00 60.60],
|
|
170
|
-
),
|
|
171
|
-
|
|
172
|
-
# Section
|
|
173
|
-
Pubid::Components::TypedStage.new(
|
|
174
|
-
code: :pubsection,
|
|
175
|
-
stage_code: :published,
|
|
176
|
-
type_code: :section,
|
|
177
|
-
abbr: ["Section"],
|
|
178
|
-
name: "BSI Section",
|
|
179
|
-
harmonized_stages: %w[60.00 60.60],
|
|
180
|
-
),
|
|
181
|
-
|
|
182
|
-
# DISC (Delivering Information Solutions to Customers)
|
|
183
|
-
Pubid::Components::TypedStage.new(
|
|
184
|
-
code: :pubdisc,
|
|
185
|
-
stage_code: :published,
|
|
186
|
-
type_code: :disc,
|
|
187
|
-
abbr: ["DISC"],
|
|
188
|
-
name: "DISC",
|
|
189
|
-
harmonized_stages: %w[60.00 60.60],
|
|
190
|
-
),
|
|
191
|
-
|
|
192
|
-
# Detailed Specification (with N or C notation)
|
|
193
|
-
Pubid::Components::TypedStage.new(
|
|
194
|
-
code: :pubdetailed_spec,
|
|
195
|
-
stage_code: :published,
|
|
196
|
-
type_code: :detailed_specification,
|
|
197
|
-
abbr: ["DETAILED SPEC"],
|
|
198
|
-
name: "Detailed Specification",
|
|
199
|
-
harmonized_stages: %w[60.00 60.60],
|
|
200
|
-
),
|
|
201
|
-
|
|
202
|
-
# Standalone Amendment
|
|
203
|
-
Pubid::Components::TypedStage.new(
|
|
204
|
-
code: :standalone_amendment,
|
|
205
|
-
stage_code: :published,
|
|
206
|
-
type_code: :amendment,
|
|
207
|
-
abbr: ["AMD"],
|
|
208
|
-
name: "Amendment",
|
|
209
|
-
harmonized_stages: %w[60.00 60.60],
|
|
210
|
-
),
|
|
211
|
-
|
|
212
|
-
# Technical Specification
|
|
213
|
-
Pubid::Components::TypedStage.new(
|
|
214
|
-
code: :pubts,
|
|
215
|
-
stage_code: :published,
|
|
216
|
-
type_code: :ts,
|
|
217
|
-
abbr: ["TS"],
|
|
218
|
-
name: "Technical Specification",
|
|
219
|
-
harmonized_stages: %w[60.00 60.60],
|
|
220
|
-
),
|
|
221
|
-
].freeze
|
|
222
20
|
|
|
223
21
|
def self.parse(string)
|
|
224
|
-
unless string.is_a?(String)
|
|
225
|
-
raise Pubid::Errors::InvalidInputError,
|
|
226
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
227
|
-
end
|
|
228
|
-
|
|
229
|
-
if string.length > Pubid::MAX_INPUT_LENGTH
|
|
230
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
231
|
-
end
|
|
232
|
-
|
|
233
22
|
Identifier.parse(string)
|
|
234
23
|
end
|
|
235
24
|
|
|
236
25
|
def self.transform(data)
|
|
237
26
|
Builder.build(data)
|
|
238
27
|
end
|
|
239
|
-
|
|
240
|
-
# Auto-discover all identifier types from the Identifiers namespace.
|
|
241
|
-
# Includes classes with explicit type declarations (Hash or nil).
|
|
242
|
-
# @return [Array<Class>] identifier classes (Pubid::Identifier subclasses)
|
|
243
|
-
def self.identifier_types
|
|
244
|
-
@identifier_types ||= Identifiers.constants
|
|
245
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
246
|
-
.select { |c| c.is_a?(Class) && c < Pubid::Identifier }
|
|
247
|
-
.select { |c| c.singleton_methods(false).include?(:type) }
|
|
248
|
-
.reject { |c| c.name&.split("::")&.last == "Base" }
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
# Build typed stage index from the module's TYPED_STAGES_REGISTRY
|
|
252
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
253
|
-
def self.all_typed_stages
|
|
254
|
-
@all_typed_stages ||= TYPED_STAGES_REGISTRY
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
# Lookup: type code -> identifier class
|
|
258
|
-
# @param code [String, Symbol] the type key to find
|
|
259
|
-
# @return [Class, nil] the matching identifier class
|
|
260
|
-
def self.locate_type(code)
|
|
261
|
-
identifier_types.find { |t| t.type&.dig(:key)&.to_s == code.to_s }
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
# Lookup: abbreviation -> typed stage
|
|
265
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
266
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
267
|
-
def self.locate_stage(abbr)
|
|
268
|
-
abbr_str = abbr.to_s.upcase
|
|
269
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
270
|
-
end
|
|
271
28
|
end
|
|
272
29
|
end
|
|
273
30
|
|
|
274
31
|
# Register Ubsi flavor with the registry
|
|
275
32
|
Pubid::Registry.register(:bsi, Pubid::Bsi)
|
|
276
|
-
|
|
277
|
-
# Per-flavor format registry: inherits global formats, overrides :human.
|
|
278
|
-
# SingleIdentifier is the abstract base for every concrete BSI identifier
|
|
279
|
-
# (including Amendment and Corrigendum), so wiring the registry here covers
|
|
280
|
-
# the whole flavor in one shot.
|
|
281
|
-
Pubid::Bsi::SingleIdentifier.format_registry = Pubid::FormatRegistry.new(parent: Pubid::Identifier.format_registry)
|
|
282
|
-
Pubid::Bsi::SingleIdentifier.format_registry.register(:human, renderer: Pubid::Bsi::Renderer)
|
data/lib/pubid/builder/base.rb
CHANGED
|
@@ -5,43 +5,31 @@ module Pubid
|
|
|
5
5
|
# Base class for all flavor-specific builders.
|
|
6
6
|
#
|
|
7
7
|
# Provides the shared build loop that converts parsed data into identifier
|
|
8
|
-
# objects. Flavors subclass and override
|
|
9
|
-
#
|
|
10
|
-
# +default_identifier_class+).
|
|
11
|
-
# - +cast(key, value)+ to transform raw parsed values into components.
|
|
12
|
-
# - +handle_key(identifier, key, value)+ for non-attribute side effects.
|
|
8
|
+
# objects. Flavors subclass and override only `cast` and optionally
|
|
9
|
+
# `default_identifier_class`.
|
|
13
10
|
#
|
|
14
11
|
# The build loop:
|
|
15
12
|
# 1. Flattens array-of-hashes input (from Parslet transforms)
|
|
16
|
-
# 2.
|
|
17
|
-
# 3.
|
|
18
|
-
# 4.
|
|
19
|
-
# 5.
|
|
20
|
-
# 6. Silently skips unknown attributes
|
|
13
|
+
# 2. Iterates each key-value pair
|
|
14
|
+
# 3. Calls `cast(key, value)` to convert raw values to component objects
|
|
15
|
+
# 4. Assigns the result to the identifier via `send`
|
|
16
|
+
# 5. Silently skips unknown attributes (rescue NoMethodError)
|
|
21
17
|
class Base
|
|
22
18
|
attr_reader :identifier
|
|
23
19
|
|
|
24
|
-
def initialize(identifier_class =
|
|
20
|
+
def initialize(identifier_class = default_identifier_class)
|
|
25
21
|
@identifier_class = identifier_class
|
|
26
22
|
end
|
|
27
23
|
|
|
28
24
|
def build(data)
|
|
29
25
|
data = flatten_array(data) if data.is_a?(Array)
|
|
30
|
-
|
|
31
|
-
identifier = identifier_class.new
|
|
26
|
+
identifier = @identifier_class.new
|
|
32
27
|
assign_attributes(identifier, data)
|
|
33
28
|
identifier
|
|
34
29
|
end
|
|
35
30
|
|
|
36
31
|
private
|
|
37
32
|
|
|
38
|
-
# Override in subclasses to dispatch to a specific identifier class
|
|
39
|
-
# based on the shape of the parsed data (type code, supplement marker,
|
|
40
|
-
# etc.). Defaults to +default_identifier_class+.
|
|
41
|
-
def select_class(_data)
|
|
42
|
-
default_identifier_class
|
|
43
|
-
end
|
|
44
|
-
|
|
45
33
|
# Override in subclasses to convert raw parsed values to component objects.
|
|
46
34
|
# Return a Hash to assign multiple attributes, or a single value.
|
|
47
35
|
# Return nil to skip the assignment.
|
|
@@ -99,9 +87,8 @@ module Pubid
|
|
|
99
87
|
}.freeze
|
|
100
88
|
|
|
101
89
|
def locate_typed_stage(typed_stage_string)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
"(rely on the flavor module's locate_stage method)"
|
|
90
|
+
typed_stage_string = "" if typed_stage_string.nil?
|
|
91
|
+
@scheme.locate_typed_stage_by_abbr(typed_stage_string)
|
|
105
92
|
end
|
|
106
93
|
|
|
107
94
|
def convert_roman_to_integer(roman_numeral)
|
|
@@ -125,11 +112,9 @@ module Pubid
|
|
|
125
112
|
|
|
126
113
|
def parse_date(value)
|
|
127
114
|
value = value.to_s
|
|
128
|
-
if value.match?(/^\d{4}(-\d{2})
|
|
129
|
-
year, month
|
|
130
|
-
Pubid::Components::Date.new(year: year,
|
|
131
|
-
month: month || nil,
|
|
132
|
-
day: day || nil)
|
|
115
|
+
if value.match?(/^\d{4}(-\d{2})?$/)
|
|
116
|
+
year, month = value.split("-")
|
|
117
|
+
Pubid::Components::Date.new(year: year, month: month || nil)
|
|
133
118
|
elsif value.is_a?(Integer) || (value.is_a?(String) && value.match?(/^\d{4}$/))
|
|
134
119
|
Pubid::Components::Date.new(year: value)
|
|
135
120
|
else
|
|
@@ -137,40 +122,6 @@ module Pubid
|
|
|
137
122
|
end
|
|
138
123
|
end
|
|
139
124
|
|
|
140
|
-
# Splits a compound document number ("1234", "1234-1", "1234-1-2")
|
|
141
|
-
# into number/part/subpart Code components. Flavor-specific dash/slash
|
|
142
|
-
# normalization lives in +normalize_number_with_part+; legacy year
|
|
143
|
-
# extraction (e.g. ISO "4037-1979") lives in +extract_legacy_year+.
|
|
144
|
-
def parse_number_with_part(value, code_class:)
|
|
145
|
-
normalized = normalize_number_with_part(value)
|
|
146
|
-
parts = normalized.split("-").reject(&:empty?)
|
|
147
|
-
number = parts.shift
|
|
148
|
-
part = parts.shift&.strip
|
|
149
|
-
subpart = parts.any? ? parts.join("-") : nil
|
|
150
|
-
|
|
151
|
-
legacy = extract_legacy_year(number, part, code_class)
|
|
152
|
-
return legacy if legacy
|
|
153
|
-
|
|
154
|
-
part = convert_roman_to_integer(part) if part
|
|
155
|
-
|
|
156
|
-
code_hash = { number: code_class.new(value: number) }
|
|
157
|
-
code_hash[:part] = code_class.new(value: part) if part
|
|
158
|
-
code_hash[:subpart] = code_class.new(value: subpart) if subpart
|
|
159
|
-
code_hash
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
# Hook: normalize the raw number_with_part string before splitting.
|
|
163
|
-
# Override in subclasses for flavor-specific dash/slash/space handling.
|
|
164
|
-
def normalize_number_with_part(value)
|
|
165
|
-
value.to_s
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
# Hook: detect a year masquerading as a part (e.g. "4037-1979") and
|
|
169
|
-
# return a number+date hash, or nil to continue normal splitting.
|
|
170
|
-
def extract_legacy_year(_number, _part, _code_class)
|
|
171
|
-
nil
|
|
172
|
-
end
|
|
173
|
-
|
|
174
125
|
def parse_languages(value)
|
|
175
126
|
original_value = value.to_s
|
|
176
127
|
normalized_value = original_value.gsub("/", ",")
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require_relative "identifier"
|
|
1
2
|
# frozen_string_literal: true
|
|
2
3
|
|
|
3
4
|
module Pubid
|
|
@@ -45,27 +46,22 @@ module Pubid
|
|
|
45
46
|
base_document&.typed_stage
|
|
46
47
|
end
|
|
47
48
|
|
|
48
|
-
# `**opts` carries render flags this method does not name — `annotated:`
|
|
49
|
-
# above all. Without it the closed keyword list raised
|
|
50
|
-
# `ArgumentError: unknown keyword: :annotated` for every bundled
|
|
51
|
-
# identifier, which is worse than a missing span: a wrapper is exactly the
|
|
52
|
-
# shape a consumer renders.
|
|
53
49
|
def to_s(lang: :en, lang_single: false, with_edition: false, format: nil,
|
|
54
|
-
stage_format_long: nil, with_date: nil
|
|
50
|
+
stage_format_long: nil, with_date: nil)
|
|
55
51
|
result = base_document.to_s(lang: lang, lang_single: lang_single,
|
|
56
|
-
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date
|
|
52
|
+
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date)
|
|
57
53
|
|
|
58
54
|
supplements.each do |supplement|
|
|
59
55
|
# ISO DirectivesSupplement always uses " + " (space before)
|
|
60
|
-
# CEN-style supplements (AC, A) without
|
|
61
|
-
# Other ISO supplements with
|
|
56
|
+
# CEN-style supplements (AC, A) without base_identifier use "+" (no space before)
|
|
57
|
+
# Other ISO supplements with base_identifier use " + " (space before)
|
|
62
58
|
if supplement.class.name&.include?("DirectivesSupplement") ||
|
|
63
|
-
(supplement.class.attributes.key?(:
|
|
59
|
+
(supplement.class.attributes.key?(:base_identifier) && !supplement.base_identifier.nil?)
|
|
64
60
|
result += " + #{supplement.to_s(lang: lang, lang_single: lang_single,
|
|
65
|
-
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date
|
|
61
|
+
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date)}"
|
|
66
62
|
else
|
|
67
63
|
result += "+#{supplement.to_s(lang: lang, lang_single: lang_single,
|
|
68
|
-
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date
|
|
64
|
+
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date)}"
|
|
69
65
|
end
|
|
70
66
|
end
|
|
71
67
|
|
|
@@ -107,13 +103,9 @@ stage_format_long: nil, with_date: nil, **opts)
|
|
|
107
103
|
parts << supplement.date.year.to_s
|
|
108
104
|
end
|
|
109
105
|
|
|
110
|
-
# Add supplement number if present
|
|
111
|
-
# `number` is a Components::Code on ::Pubid::Identifier but a plain
|
|
112
|
-
# :string in a growing number of flavors, so read through either.
|
|
106
|
+
# Add supplement number if present
|
|
113
107
|
if supplement.number
|
|
114
|
-
|
|
115
|
-
value = number.respond_to?(:value) ? number.value : number
|
|
116
|
-
parts << "v#{value}"
|
|
108
|
+
parts << "v#{supplement.number.value}"
|
|
117
109
|
end
|
|
118
110
|
end
|
|
119
111
|
end
|
data/lib/pubid/ccsds/builder.rb
CHANGED
|
@@ -34,21 +34,20 @@ module Pubid
|
|
|
34
34
|
# Extract corrigenda numbers
|
|
35
35
|
corr_array = data[:corrigenda]
|
|
36
36
|
corr_array = [corr_array] unless corr_array.is_a?(Array)
|
|
37
|
-
corr_numbers = corr_array.map { |c| c[:cor_number].
|
|
37
|
+
corr_numbers = corr_array.map { |c| c[:cor_number].to_i }
|
|
38
38
|
|
|
39
39
|
# Build base identifier (without corrigenda)
|
|
40
40
|
base_data = data.dup
|
|
41
41
|
base_data.delete(:corrigenda)
|
|
42
42
|
base = build_base(base_data)
|
|
43
43
|
|
|
44
|
-
# Build Corrigendum object for each corrigendum number
|
|
45
|
-
# sequence is stored in the inherited `number` attribute (mirroring ISO).
|
|
44
|
+
# Build Corrigendum object for each corrigendum number
|
|
46
45
|
# Note: CCSDS uses "Cor. 1" format (single corrigendum per identifier)
|
|
47
46
|
# If multiple corrigenda exist, we build the last one wrapping the base
|
|
48
47
|
corr_numbers.reduce(base) do |current_base, cor_num|
|
|
49
48
|
Identifiers::Corrigendum.new(
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
base_identifier: current_base,
|
|
50
|
+
cor_number: cor_num,
|
|
52
51
|
)
|
|
53
52
|
end
|
|
54
53
|
end
|
|
@@ -2,75 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ccsds
|
|
5
|
-
|
|
6
|
-
# point — mirrors Pubid::Iso::Identifier / Pubid::Jis::Identifier. Concrete
|
|
7
|
-
# identifiers (Identifiers::Base, Identifiers::Corrigendum) descend from this
|
|
8
|
-
# class, so a parsed CCSDS id is an instance of Pubid::Ccsds::Identifier and
|
|
9
|
-
# relaton-index can pass this class as `pubid_class` for from_hash/to_hash.
|
|
10
|
-
#
|
|
11
|
-
# Keeping the root abstract (it is never itself a serialized type, so it is
|
|
12
|
-
# absent from CCSDS_TYPE_MAP) is what breaks the polymorphic recursion a
|
|
13
|
-
# supplement's `base` would otherwise hit if it pointed at a
|
|
14
|
-
# concrete type that is also its own superclass.
|
|
15
|
-
class Identifier < ::Pubid::Identifier
|
|
16
|
-
# CCSDS stores every code component as a plain string (the Builder passes
|
|
17
|
-
# strings, never Components::Code/Edition objects), so override the
|
|
18
|
-
# inherited Components::Code/Edition attribute types with :string. This
|
|
19
|
-
# both matches the runtime values and yields a lean, round-trippable
|
|
20
|
-
# key_value (`to_hash`) serialization instead of nested component hashes.
|
|
21
|
-
# `type` (single book-color letter B/G/M/R/Y/O), `suffix`, and `language`
|
|
22
|
-
# are likewise CCSDS-specific plain strings.
|
|
23
|
-
attribute :number, :string
|
|
24
|
-
attribute :part, :string
|
|
25
|
-
attribute :edition, :string
|
|
26
|
-
attribute :type, :string
|
|
27
|
-
attribute :suffix, :string
|
|
28
|
-
attribute :language, :string
|
|
29
|
-
|
|
30
|
-
# Polymorphic type map for lutaml::Model key_value (de)serialization,
|
|
31
|
-
# mapping each concrete class's polymorphic_name to its class name.
|
|
32
|
-
CCSDS_TYPE_MAP = {
|
|
33
|
-
"pubid:ccsds:base" => "Pubid::Ccsds::Identifiers::Base",
|
|
34
|
-
"pubid:ccsds:corrigendum" => "Pubid::Ccsds::Identifiers::Corrigendum",
|
|
35
|
-
}.freeze
|
|
36
|
-
|
|
37
|
-
# The shared Pubid::Identifier no longer auto-maps attributes, so the
|
|
38
|
-
# flavor's root declares the full key_value mapping; subclasses
|
|
39
|
-
# (SupplementIdentifier/Corrigendum) merge their own blocks on top. Every
|
|
40
|
-
# value is a plain string, so a direct `to:` map round-trips.
|
|
41
|
-
key_value do
|
|
42
|
-
map "_type", to: :_type, polymorphic_map: CCSDS_TYPE_MAP
|
|
43
|
-
map "number", to: :number
|
|
44
|
-
map "part", to: :part
|
|
45
|
-
map "edition", to: :edition
|
|
46
|
-
map "type", to: :type
|
|
47
|
-
map "suffix", to: :suffix
|
|
48
|
-
map "language", to: :language
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def publisher
|
|
52
|
-
"CCSDS"
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Parse a CCSDS identifier string into the appropriate identifier object.
|
|
5
|
+
module Identifier
|
|
56
6
|
def self.parse(identifier)
|
|
57
|
-
unless identifier.is_a?(String)
|
|
58
|
-
raise Pubid::Errors::InvalidInputError,
|
|
59
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
63
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
64
|
-
end
|
|
65
|
-
|
|
66
7
|
# Apply legacy update_codes normalization first
|
|
67
8
|
normalized = Core::UpdateCodes.apply(identifier, :ccsds)
|
|
68
9
|
parsed = Pubid::Ccsds::Parser.parse(normalized)
|
|
69
10
|
Pubid::Ccsds::Builder.build(parsed)
|
|
11
|
+
rescue Parslet::ParseFailed => e
|
|
12
|
+
raise "Failed to parse CCSDS identifier '#{identifier}': #{e.message}"
|
|
70
13
|
end
|
|
71
|
-
|
|
72
|
-
# from_hash is the shared polymorphic dispatch on Pubid::Identifier.
|
|
73
|
-
# CCSDS_TYPE_MAP remains as the key_value polymorphic_map.
|
|
74
14
|
end
|
|
75
15
|
end
|
|
76
16
|
end
|
|
@@ -3,15 +3,12 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ccsds
|
|
5
5
|
module Identifiers
|
|
6
|
-
# CCSDS
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
# abstract root Pubid::Ccsds::Identifier; this concrete type only carries
|
|
13
|
-
# its typed stage and rendering.
|
|
14
|
-
class Base < Pubid::Ccsds::Identifier
|
|
6
|
+
# CCSDS identifier
|
|
7
|
+
# Format: CCSDS NUMBER.PART-TYPE-EDITION[-SUFFIX]
|
|
8
|
+
# Example: CCSDS 120.0-G-4, CCSDS 100.0-G-1-S
|
|
9
|
+
class Base < Lutaml::Model::Serializable
|
|
10
|
+
# CCSDS uses a simple architecture without typed stages
|
|
11
|
+
# TYPED_STAGES includes default stage for base identifiers
|
|
15
12
|
TYPED_STAGES = [
|
|
16
13
|
Pubid::Components::TypedStage.new(
|
|
17
14
|
abbr: [""],
|
|
@@ -20,20 +17,60 @@ module Pubid
|
|
|
20
17
|
),
|
|
21
18
|
].freeze
|
|
22
19
|
|
|
20
|
+
# Type information for this identifier class
|
|
21
|
+
#
|
|
22
|
+
# @return [Hash] Type information with key, title, and short form
|
|
23
23
|
def self.type
|
|
24
|
-
{ key: :base,
|
|
24
|
+
{ key: :base, title: "Base Standard", short: nil }
|
|
25
25
|
end
|
|
26
26
|
|
|
27
|
-
#
|
|
28
|
-
#
|
|
29
|
-
|
|
27
|
+
# Generate URN for this identifier
|
|
28
|
+
#
|
|
29
|
+
# @return [String] URN representation
|
|
30
|
+
|
|
31
|
+
# Include CCSDS-specific attributes in serialization
|
|
32
|
+
def base_hash
|
|
33
|
+
hash = super
|
|
34
|
+
# CCSDS uses plain strings for type, edition, suffix
|
|
35
|
+
hash[:type] = type if type
|
|
36
|
+
hash[:suffix] = suffix if suffix
|
|
37
|
+
hash[:language] = language if language
|
|
38
|
+
hash
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
attribute :number, :string
|
|
42
|
+
attribute :part, :string
|
|
43
|
+
attribute :type, :string # B, G, M, R, Y, O, etc.
|
|
44
|
+
attribute :edition, :string
|
|
45
|
+
attribute :suffix, :string # Optional suffix like -S
|
|
46
|
+
attribute :language, :string # Language metadata (e.g., "French", "Russian")
|
|
47
|
+
|
|
48
|
+
def publisher
|
|
49
|
+
"CCSDS"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def to_s
|
|
30
53
|
result = "#{publisher} #{number}"
|
|
31
54
|
result += ".#{part}" if part
|
|
32
55
|
result += "-#{type}" if type
|
|
33
56
|
result += "-#{edition}" if edition
|
|
34
57
|
result += "-#{suffix}" if suffix
|
|
58
|
+
|
|
59
|
+
# Add language metadata
|
|
35
60
|
result += " - #{language} Translated" if language
|
|
36
|
-
|
|
61
|
+
|
|
62
|
+
result
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def ==(other)
|
|
66
|
+
return false unless other.is_a?(Base)
|
|
67
|
+
|
|
68
|
+
number == other.number &&
|
|
69
|
+
part == other.part &&
|
|
70
|
+
type == other.type &&
|
|
71
|
+
edition == other.edition &&
|
|
72
|
+
suffix == other.suffix &&
|
|
73
|
+
language == other.language
|
|
37
74
|
end
|
|
38
75
|
end
|
|
39
76
|
end
|
|
@@ -17,22 +17,21 @@ module Pubid
|
|
|
17
17
|
#
|
|
18
18
|
# @return [Hash] Type information with key, title, and short form
|
|
19
19
|
def self.type
|
|
20
|
-
{ key: :cor,
|
|
21
|
-
web: :corrigendum, title: "Corrigendum", short: "Cor" }
|
|
20
|
+
{ key: :cor, title: "Corrigendum", short: "Cor" }
|
|
22
21
|
end
|
|
23
22
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
base_str
|
|
29
|
-
annotate_plain_render("#{base_str} Cor. #{number}", **opts)
|
|
23
|
+
attribute :cor_number, :integer
|
|
24
|
+
|
|
25
|
+
def to_s
|
|
26
|
+
base_str = base_identifier.to_s
|
|
27
|
+
"#{base_str} Cor. #{cor_number}"
|
|
30
28
|
end
|
|
31
29
|
|
|
32
30
|
def ==(other)
|
|
33
31
|
return false unless other.is_a?(Corrigendum)
|
|
34
32
|
|
|
35
|
-
|
|
33
|
+
base_identifier == other.base_identifier &&
|
|
34
|
+
cor_number == other.cor_number
|
|
36
35
|
end
|
|
37
36
|
end
|
|
38
37
|
end
|