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
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "typed_stages"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Ieee
|
|
7
|
+
# Scheme provides registry access for IEEE identifiers
|
|
8
|
+
# Following the proven ISO/IEC/CEN/BSI pattern
|
|
9
|
+
#
|
|
10
|
+
# This class is the single source of truth for:
|
|
11
|
+
# - TypedStage lookup by abbreviation
|
|
12
|
+
# - TypedStage lookup by IEEE draft notation
|
|
13
|
+
# - TypedStage lookup by ISO stage code
|
|
14
|
+
# - Identifier class selection based on type code
|
|
15
|
+
class Scheme < Pubid::Scheme
|
|
16
|
+
class << self
|
|
17
|
+
# Locate typed stage by abbreviation
|
|
18
|
+
# @param abbr [String, nil] stage abbreviation (e.g., "D1", "FDIS", "Std")
|
|
19
|
+
# @return [Components::TypedStage] matching typed stage
|
|
20
|
+
def locate_typed_stage_by_abbr(abbr)
|
|
21
|
+
return TypedStages::DEFAULT_TYPED_STAGE if abbr.nil? || abbr.to_s.strip.empty?
|
|
22
|
+
|
|
23
|
+
# Normalize abbreviation
|
|
24
|
+
abbr_str = abbr.to_s.strip
|
|
25
|
+
|
|
26
|
+
# Find typed stage that includes this abbreviation
|
|
27
|
+
typed_stage = TypedStages::TYPED_STAGES.find { |ts| ts.abbr.include?(abbr_str) }
|
|
28
|
+
|
|
29
|
+
# Fall back to default if not found
|
|
30
|
+
typed_stage || TypedStages::DEFAULT_TYPED_STAGE
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Locate typed stage by IEEE draft notation
|
|
34
|
+
# @param draft [String] IEEE draft notation (e.g., "D1", "D5", "P")
|
|
35
|
+
# @return [Components::TypedStage, nil] matching typed stage
|
|
36
|
+
def locate_typed_stage_by_ieee_draft(draft)
|
|
37
|
+
return nil if draft.nil? || draft.to_s.strip.empty?
|
|
38
|
+
|
|
39
|
+
draft_str = draft.to_s.strip
|
|
40
|
+
|
|
41
|
+
# Try exact match on abbreviation first
|
|
42
|
+
ts = TypedStages::TYPED_STAGES.find { |t| t.abbr.include?(draft_str) }
|
|
43
|
+
return ts if ts
|
|
44
|
+
|
|
45
|
+
# Try match on ieee_draft_equivalent
|
|
46
|
+
TypedStages::TYPED_STAGES.find { |t| t.ieee_draft_equivalent == draft_str }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Locate typed stage by ISO stage code
|
|
50
|
+
# @param stage [String] ISO stage code (e.g., "WD", "CD", "DIS", "FDIS")
|
|
51
|
+
# @return [Components::TypedStage, nil] matching typed stage
|
|
52
|
+
def locate_typed_stage_by_iso_stage(stage)
|
|
53
|
+
return nil if stage.nil? || stage.to_s.strip.empty?
|
|
54
|
+
|
|
55
|
+
TypedStages::TYPED_STAGES.find { |ts| ts.iso_stage_equivalent == stage.to_s.strip }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Locate identifier class by type code
|
|
59
|
+
# @param type_code [String, Symbol] type code (:standard, :draft, :std, :P, etc.)
|
|
60
|
+
# @return [Class] identifier class
|
|
61
|
+
def locate_identifier_klass_by_type_code(type_code)
|
|
62
|
+
type_str = type_code.to_s
|
|
63
|
+
|
|
64
|
+
case type_str
|
|
65
|
+
when "draft", "Draft Std", "Draft", "P"
|
|
66
|
+
# "P" indicates project draft status - maps to ProjectDraftIdentifier
|
|
67
|
+
Identifiers::ProjectDraftIdentifier
|
|
68
|
+
when "standard", "Std", "std"
|
|
69
|
+
Identifiers::Standard
|
|
70
|
+
else
|
|
71
|
+
# Default to base identifier
|
|
72
|
+
Identifiers::Base
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Get all typed stages
|
|
77
|
+
# @return [Array<Components::TypedStage>] all registered typed stages
|
|
78
|
+
def typed_stages
|
|
79
|
+
TypedStages::TYPED_STAGES
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Get default typed stage (published standard)
|
|
83
|
+
# @return [Components::TypedStage] default typed stage
|
|
84
|
+
def default_typed_stage
|
|
85
|
+
TypedStages::DEFAULT_TYPED_STAGE
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -101,7 +101,7 @@ module Pubid
|
|
|
101
101
|
),
|
|
102
102
|
|
|
103
103
|
Components::TypedStage.new(
|
|
104
|
-
abbr: ["CD", "
|
|
104
|
+
abbr: ["CD", "CD2", "CD3"],
|
|
105
105
|
stage_code: "committee_draft",
|
|
106
106
|
type_code: "draft",
|
|
107
107
|
ieee_draft_equivalent: "D2-D3",
|
|
@@ -110,17 +110,6 @@ module Pubid
|
|
|
110
110
|
project_status: true,
|
|
111
111
|
),
|
|
112
112
|
|
|
113
|
-
# Committee Draft for Vote (IEC/ISO-led historical stage)
|
|
114
|
-
Components::TypedStage.new(
|
|
115
|
-
abbr: ["CDV"],
|
|
116
|
-
stage_code: "committee_draft_for_vote",
|
|
117
|
-
type_code: "draft",
|
|
118
|
-
ieee_draft_equivalent: "D2-D3",
|
|
119
|
-
iso_stage_equivalent: "CDV",
|
|
120
|
-
approval_status: "unapproved",
|
|
121
|
-
project_status: true,
|
|
122
|
-
),
|
|
123
|
-
|
|
124
113
|
Components::TypedStage.new(
|
|
125
114
|
abbr: ["DIS"],
|
|
126
115
|
stage_code: "draft_international_standard",
|
|
@@ -17,8 +17,7 @@ module Pubid
|
|
|
17
17
|
cc = code_component
|
|
18
18
|
parts << cc if cc
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
parts << yc if yc
|
|
20
|
+
parts << identifier.year if identifier.year
|
|
22
21
|
|
|
23
22
|
dc = draft_component
|
|
24
23
|
parts << dc if dc
|
|
@@ -40,9 +39,11 @@ module Pubid
|
|
|
40
39
|
parts << "int"
|
|
41
40
|
end
|
|
42
41
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
if special_type != "conformance" && identifier.conf_number
|
|
43
|
+
conf = "conf.#{identifier.conf_number}"
|
|
44
|
+
conf += "-#{identifier.conf_year}" if identifier.conf_year
|
|
45
|
+
parts << conf
|
|
46
|
+
end
|
|
46
47
|
|
|
47
48
|
if identifier.ashrae_number
|
|
48
49
|
ashrae = "ashrae.#{identifier.ashrae_number}"
|
|
@@ -127,7 +128,8 @@ module Pubid
|
|
|
127
128
|
end
|
|
128
129
|
|
|
129
130
|
def publisher_component
|
|
130
|
-
pub =
|
|
131
|
+
pub = identifier.publisher || "IEEE"
|
|
132
|
+
pub = pub.to_s.downcase
|
|
131
133
|
|
|
132
134
|
if identifier.copublisher&.any?
|
|
133
135
|
copubs = identifier.copublisher.map(&:to_s).map(&:downcase)
|
|
@@ -137,18 +139,6 @@ module Pubid
|
|
|
137
139
|
pub
|
|
138
140
|
end
|
|
139
141
|
|
|
140
|
-
# A dual-published document has TWO publishers, and
|
|
141
|
-
# DualPublished#publisher returns them as an Array — which `to_s`
|
|
142
|
-
# rendered into the URN as a literal Ruby array literal, brackets and
|
|
143
|
-
# quotes included: `urn:ieee:["ieee", "asme"]`. Join them the same way a
|
|
144
|
-
# copublisher list is joined above.
|
|
145
|
-
def normalized_publisher
|
|
146
|
-
names = Array(identifier.publisher)
|
|
147
|
-
.map { |p| p.to_s.downcase }.reject(&:empty?)
|
|
148
|
-
|
|
149
|
-
names.empty? ? "ieee" : names.join("-")
|
|
150
|
-
end
|
|
151
|
-
|
|
152
142
|
def type_component
|
|
153
143
|
return nil unless identifier.type
|
|
154
144
|
|
|
@@ -164,23 +154,6 @@ module Pubid
|
|
|
164
154
|
identifier.code_obj.to_s
|
|
165
155
|
end
|
|
166
156
|
|
|
167
|
-
# A multi-designation wrapper (AdoptedStandard, DualPublished,
|
|
168
|
-
# MultiNumberedIdentifier) carries no year of its own — the year sits on
|
|
169
|
-
# the designation it wraps — so the URN dropped it and two editions of
|
|
170
|
-
# one document produced the SAME urn: "AIEE No 15-1944" and
|
|
171
|
-
# "AIEE No 15-1959" both gave urn:ieee:aiee:15.
|
|
172
|
-
#
|
|
173
|
-
# Fixed here, in the one place that reads the year, rather than by
|
|
174
|
-
# defining a `#year` method on each wrapper: `year` is a lutaml attribute
|
|
175
|
-
# on the base and a method of that name would shadow its generated
|
|
176
|
-
# accessor. `#root` already walks to the wrapped designation.
|
|
177
|
-
def year_component
|
|
178
|
-
return identifier.year if identifier.year
|
|
179
|
-
|
|
180
|
-
root = identifier.root
|
|
181
|
-
root.equal?(identifier) ? nil : root.year
|
|
182
|
-
end
|
|
183
|
-
|
|
184
157
|
def draft_component
|
|
185
158
|
return nil unless identifier.draft_obj
|
|
186
159
|
|
data/lib/pubid/ieee.rb
CHANGED
|
@@ -2,27 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ieee
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Publisher prefix. The private PreParser::PUBLISHERS list also holds adopted
|
|
8
|
-
# co-org names (ANSI, AIEE, ASA, ...) that are not leading routing tokens for
|
|
9
|
-
# an IEEE reference, so they are deliberately excluded. The joint ISO/IEC/IEEE
|
|
10
|
-
# form comes from Pubid::JOINT_PREFIXES.
|
|
11
|
-
PREFIXES = ["IEEE"].freeze
|
|
12
|
-
|
|
13
5
|
autoload :Aiee, "#{__dir__}/ieee/aiee"
|
|
14
6
|
autoload :Builder, "#{__dir__}/ieee/builder"
|
|
15
|
-
autoload :Identifier, "#{__dir__}/ieee/
|
|
7
|
+
autoload :Identifier, "#{__dir__}/ieee/identifier"
|
|
16
8
|
autoload :Identifiers, "#{__dir__}/ieee/identifiers"
|
|
17
9
|
autoload :Ire, "#{__dir__}/ieee/ire"
|
|
18
10
|
autoload :Nesc, "#{__dir__}/ieee/nesc"
|
|
19
11
|
autoload :Parser, "#{__dir__}/ieee/parser"
|
|
20
|
-
autoload :
|
|
21
|
-
autoload :Compaction, "#{__dir__}/ieee/compaction"
|
|
22
|
-
autoload :Renderer, "#{__dir__}/ieee/renderer"
|
|
12
|
+
autoload :Scheme, "#{__dir__}/ieee/scheme"
|
|
23
13
|
autoload :TypedStages, "#{__dir__}/ieee/typed_stages"
|
|
24
14
|
autoload :UrnGenerator, "#{__dir__}/ieee/urn_generator"
|
|
25
|
-
autoload :UrnParser, "#{__dir__}/ieee/urn_parser"
|
|
26
15
|
|
|
27
16
|
# Components submodule
|
|
28
17
|
module Components
|
|
@@ -32,132 +21,12 @@ module Pubid
|
|
|
32
21
|
autoload :TypedStage, "#{__dir__}/ieee/components/typed_stage"
|
|
33
22
|
end
|
|
34
23
|
|
|
35
|
-
# Document-number series carrying an IEEE registered trademark ("®").
|
|
36
|
-
# 8802 is the ISO/IEC co-published form of the 802 series.
|
|
37
|
-
REGISTERED_SERIES = %w[802 8802 2030].freeze
|
|
38
|
-
|
|
39
|
-
# The ISO/IEC adoption of IEEE 802: the number alone identifies the series,
|
|
40
|
-
# whatever publishers are printed.
|
|
41
|
-
ISO_ADOPTED_SERIES = "8802"
|
|
42
|
-
|
|
43
24
|
class << self
|
|
44
25
|
def parse(input)
|
|
45
|
-
unless input.is_a?(String)
|
|
46
|
-
raise Pubid::Errors::InvalidInputError,
|
|
47
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
if input.length > Pubid::MAX_INPUT_LENGTH
|
|
51
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
52
|
-
end
|
|
53
|
-
|
|
54
26
|
Identifier.parse(input)
|
|
55
27
|
end
|
|
56
|
-
|
|
57
|
-
# True when the document number belongs to a registered-trademark series.
|
|
58
|
-
# A project number keeps its series identity, so a leading "P" is
|
|
59
|
-
# stripped. `prefix` is the code's letter series, which must be absent
|
|
60
|
-
# (or the bare project "P") — "C802.1" is a different series that merely
|
|
61
|
-
# starts with the same digits. `publishers` guards against claiming an
|
|
62
|
-
# IEEE registered mark for another body that happens to have numbered a
|
|
63
|
-
# document 802 or 2030 — "AIEE Std No. 802" predates the IEEE 802 series
|
|
64
|
-
# by two decades. It is optional: with no publishers given the number
|
|
65
|
-
# decides, which keeps the plain number lookup usable on its own.
|
|
66
|
-
# @param number [String, nil] bare document number ("802", "P802")
|
|
67
|
-
# @param prefix [String, nil] letter series of the code ("C" for C37.09)
|
|
68
|
-
# @param publishers [Array<String>, String, nil] printed publisher tokens
|
|
69
|
-
def registered_series?(number, prefix = nil, publishers: nil)
|
|
70
|
-
return false unless prefix.nil? || prefix.to_s.empty? ||
|
|
71
|
-
prefix.to_s == "P"
|
|
72
|
-
|
|
73
|
-
bare = number.to_s.delete_prefix("P")
|
|
74
|
-
return false unless REGISTERED_SERIES.include?(bare)
|
|
75
|
-
return true if bare == ISO_ADOPTED_SERIES || publishers.nil?
|
|
76
|
-
|
|
77
|
-
Array(publishers).any? { |p| p.to_s.split("/").include?("IEEE") }
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
# IEEE trademark symbol for a document number: ® for the registered
|
|
81
|
-
# series, ™ for everything else. This is the entry point render sites
|
|
82
|
-
# use, because they hold the identifier and so know its number — the
|
|
83
|
-
# symbol must not depend on where in the rendered string the mark lands.
|
|
84
|
-
def trademark_symbol_for(number, prefix = nil, publishers: nil)
|
|
85
|
-
if registered_series?(number, prefix, publishers: publishers)
|
|
86
|
-
"®"
|
|
87
|
-
else
|
|
88
|
-
"™"
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
# IEEE trademark symbol for a rendered identifier string. Kept for
|
|
93
|
-
# external callers only — every render site inside pubid passes the
|
|
94
|
-
# document number to #trademark_symbol_for instead, because the first
|
|
95
|
-
# numeric token of a rendered string is not reliably the document number
|
|
96
|
-
# (a NESC or IRE string starts with the publication year).
|
|
97
|
-
def trademark_symbol(rendered)
|
|
98
|
-
trademark_symbol_for(rendered.to_s[/(?<![0-9A-Za-z])P?(\d+)/, 1])
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
# Auto-discover all identifier types from the Identifiers namespace
|
|
102
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
103
|
-
def identifier_types
|
|
104
|
-
@identifier_types ||= Identifiers.constants
|
|
105
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
106
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
107
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
# Build typed stage index from TypedStages module
|
|
111
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
112
|
-
def all_typed_stages
|
|
113
|
-
@all_typed_stages ||= TypedStages::TYPED_STAGES
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# Lookup: type code -> identifier class
|
|
117
|
-
# @param code [String, Symbol] the type key to find
|
|
118
|
-
# @return [Class, nil] the matching identifier class
|
|
119
|
-
def locate_type(code)
|
|
120
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
# Lookup: abbreviation -> typed stage
|
|
124
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
125
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
126
|
-
def locate_stage(abbr)
|
|
127
|
-
abbr_str = abbr.to_s.upcase
|
|
128
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
# Lookup: IEEE draft notation -> typed stage
|
|
132
|
-
# @param draft [String] IEEE draft notation (e.g., "D1", "D5", "P")
|
|
133
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
134
|
-
def locate_stage_by_ieee_draft(draft)
|
|
135
|
-
return nil if draft.nil? || draft.to_s.strip.empty?
|
|
136
|
-
|
|
137
|
-
draft_str = draft.to_s.strip
|
|
138
|
-
|
|
139
|
-
# Try exact match on abbreviation first
|
|
140
|
-
ts = all_typed_stages.find { |t| t.abbr.include?(draft_str) }
|
|
141
|
-
return ts if ts
|
|
142
|
-
|
|
143
|
-
# Try match on ieee_draft_equivalent
|
|
144
|
-
all_typed_stages.find { |t| t.ieee_draft_equivalent == draft_str }
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
# Lookup: ISO stage code -> typed stage
|
|
148
|
-
# @param stage [String] ISO stage code (e.g., "WD", "CD", "DIS", "FDIS")
|
|
149
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
150
|
-
def locate_stage_by_iso_stage(stage)
|
|
151
|
-
return nil if stage.nil? || stage.to_s.strip.empty?
|
|
152
|
-
|
|
153
|
-
all_typed_stages.find { |ts| ts.iso_stage_equivalent == stage.to_s.strip }
|
|
154
|
-
end
|
|
155
28
|
end
|
|
156
29
|
end
|
|
157
30
|
end
|
|
158
31
|
|
|
159
32
|
Pubid::Registry.register(:ieee, Pubid::Ieee)
|
|
160
|
-
|
|
161
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
162
|
-
Pubid::Ieee::Identifier.format_registry = Pubid::FormatRegistry.new(parent: Pubid::Identifier.format_registry)
|
|
163
|
-
Pubid::Ieee::Identifier.format_registry.register(:human, renderer: Pubid::Ieee::Renderer)
|
data/lib/pubid/ieee_debug.rb
CHANGED
|
@@ -10,6 +10,7 @@ module Pubid
|
|
|
10
10
|
autoload :Ire, "#{__dir__}/ire"
|
|
11
11
|
autoload :Nesc, "#{__dir__}/nesc"
|
|
12
12
|
autoload :Parser, "#{__dir__}/parser"
|
|
13
|
+
autoload :Scheme, "#{__dir__}/scheme"
|
|
13
14
|
autoload :TypedStages, "#{__dir__}/typed_stages"
|
|
14
15
|
autoload :UrnGenerator, "#{__dir__}/urn_generator"
|
|
15
16
|
|
data/lib/pubid/iho/builder.rb
CHANGED
|
@@ -9,7 +9,7 @@ module Pubid
|
|
|
9
9
|
type_letter = stringify(hash[:type])
|
|
10
10
|
|
|
11
11
|
attrs = {
|
|
12
|
-
|
|
12
|
+
code: stringify(hash[:code]),
|
|
13
13
|
appendix: stringify(hash[:appendix]),
|
|
14
14
|
part: stringify(hash[:part]),
|
|
15
15
|
annex: stringify(hash[:annex]),
|
|
@@ -17,7 +17,7 @@ module Pubid
|
|
|
17
17
|
version: stringify(hash[:version]),
|
|
18
18
|
}.compact
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
Scheme.identifier_klass_for_type_letter(type_letter).new(**attrs)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def self.build(parsed)
|
data/lib/pubid/iho/identifier.rb
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
#
|
|
3
|
+
module Pubid
|
|
4
|
+
module Iho
|
|
5
|
+
# Entry point for parsing IHO identifiers.
|
|
6
|
+
module Identifier
|
|
7
|
+
# Parse an IHO identifier string into an identifier object
|
|
8
|
+
# @param identifier [String] The IHO identifier string to parse
|
|
9
|
+
# @return [Pubid::Iho::Identifiers::Base] The appropriate identifier object
|
|
10
|
+
# @raise [Parslet::ParseFailed] If parsing fails
|
|
11
|
+
def self.parse(identifier)
|
|
12
|
+
parsed = Parser.parse(identifier)
|
|
13
|
+
Builder.build(parsed)
|
|
14
|
+
rescue Parslet::ParseFailed => e
|
|
15
|
+
raise "Failed to parse IHO identifier '#{identifier}': #{e.message}"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -2,74 +2,40 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Iho
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Base class for all IHO identifiers.
|
|
7
|
+
#
|
|
8
|
+
# IHO identifiers have the form:
|
|
9
|
+
# IHO {S|P|M|B|C}-{code}[ Ap. {appendix}][ Part {part}][ Annex {annex}][ Suppl {supplement}][ {version}]
|
|
10
|
+
#
|
|
11
|
+
# The leading IHO publisher prefix is optional on input but always
|
|
12
|
+
# emitted on output.
|
|
13
|
+
class Base < Pubid::Identifier
|
|
14
|
+
attribute :publisher, :string, default: "IHO"
|
|
15
|
+
attribute :code, :string
|
|
16
|
+
attribute :appendix, :string
|
|
17
|
+
attribute :part, :string
|
|
18
|
+
attribute :annex, :string
|
|
19
|
+
attribute :supplement, :string
|
|
20
|
+
attribute :version, :string
|
|
21
|
+
|
|
22
|
+
def self.parse(string)
|
|
23
|
+
Iho::Identifier.parse(string)
|
|
22
24
|
end
|
|
23
25
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
+
# Render the identifier as a string in canonical IHO form.
|
|
27
|
+
# @return [String]
|
|
28
|
+
def to_s
|
|
29
|
+
letter = type.is_a?(Hash) ? type[:short].to_s : type.to_s
|
|
30
|
+
rendered = "#{publisher} #{letter}-#{code}"
|
|
31
|
+
rendered << " Ap. #{appendix}" if appendix
|
|
32
|
+
rendered << " Part #{part}" if part
|
|
33
|
+
rendered << " Annex #{annex}" if annex
|
|
34
|
+
rendered << " Suppl #{supplement}" if supplement
|
|
35
|
+
rendered << " #{version}" if version
|
|
36
|
+
rendered
|
|
26
37
|
end
|
|
27
|
-
|
|
28
|
-
parsed = Parser.parse(identifier)
|
|
29
|
-
Builder.build(parsed)
|
|
30
38
|
end
|
|
31
|
-
|
|
32
|
-
# `number` overrides the generic Components::Code attribute with a plain
|
|
33
|
-
# string (same pattern as `part` below); it holds the IHO document
|
|
34
|
-
# number (e.g. "100", "1/21"). Kept as the generic `number` so the
|
|
35
|
-
# relaton index sorts/binary-searches on it natively via `id.number`.
|
|
36
|
-
attribute :number, :string
|
|
37
|
-
attribute :publisher, :string, default: "IHO"
|
|
38
|
-
attribute :appendix, :string
|
|
39
|
-
attribute :part, :string
|
|
40
|
-
attribute :annex, :string
|
|
41
|
-
attribute :supplement, :string
|
|
42
|
-
attribute :version, :string
|
|
43
|
-
|
|
44
|
-
# Polymorphic type map for lutaml::Model key_value serialization: maps
|
|
45
|
-
# each subclass's polymorphic_name to its class name so `from_hash` can
|
|
46
|
-
# re-instantiate the concrete type from `_type`.
|
|
47
|
-
IHO_TYPE_MAP = {
|
|
48
|
-
"pubid:iho:standard" => "Pubid::Iho::Identifiers::Standard",
|
|
49
|
-
"pubid:iho:publication" => "Pubid::Iho::Identifiers::Publication",
|
|
50
|
-
"pubid:iho:miscellaneous" => "Pubid::Iho::Identifiers::Miscellaneous",
|
|
51
|
-
"pubid:iho:bibliographic" => "Pubid::Iho::Identifiers::Bibliographic",
|
|
52
|
-
"pubid:iho:circular-letter" => "Pubid::Iho::Identifiers::CircularLetter",
|
|
53
|
-
}.freeze
|
|
54
|
-
|
|
55
|
-
# The base Pubid::Identifier no longer auto-maps attributes, so each
|
|
56
|
-
# flavor's top class must declare its own key_value mapping. IHO
|
|
57
|
-
# attributes are plain strings, so they map directly. `publisher` is
|
|
58
|
-
# intentionally omitted: it is always the "IHO" default and is restored
|
|
59
|
-
# on load.
|
|
60
|
-
key_value do
|
|
61
|
-
map "_type", to: :_type, polymorphic_map: IHO_TYPE_MAP
|
|
62
|
-
map "number", to: :number
|
|
63
|
-
map "appendix", to: :appendix
|
|
64
|
-
map "part", to: :part
|
|
65
|
-
map "annex", to: :annex
|
|
66
|
-
map "supplement", to: :supplement
|
|
67
|
-
map "version", to: :version
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
# from_hash is the shared polymorphic dispatch on Pubid::Identifier.
|
|
71
|
-
# IHO_TYPE_MAP remains as the key_value polymorphic_map.
|
|
72
39
|
end
|
|
73
|
-
|
|
74
40
|
end
|
|
75
41
|
end
|
|
@@ -5,11 +5,15 @@ module Pubid
|
|
|
5
5
|
module Identifiers
|
|
6
6
|
# IHO Bibliographic Publication (B series).
|
|
7
7
|
# Example: IHO B-4 2.19.0.
|
|
8
|
-
class Bibliographic <
|
|
8
|
+
class Bibliographic < Base
|
|
9
9
|
def self.type
|
|
10
10
|
{ key: :bibliographic, title: "Bibliographic Publication",
|
|
11
11
|
short: "B" }
|
|
12
12
|
end
|
|
13
|
+
|
|
14
|
+
def type
|
|
15
|
+
self.class.type
|
|
16
|
+
end
|
|
13
17
|
end
|
|
14
18
|
end
|
|
15
19
|
end
|
|
@@ -5,10 +5,14 @@ module Pubid
|
|
|
5
5
|
module Identifiers
|
|
6
6
|
# IHO Circular Letter (C series).
|
|
7
7
|
# Example: IHO C-13 1.0.0.
|
|
8
|
-
class CircularLetter <
|
|
8
|
+
class CircularLetter < Base
|
|
9
9
|
def self.type
|
|
10
10
|
{ key: :circular_letter, title: "Circular Letter", short: "C" }
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
def type
|
|
14
|
+
self.class.type
|
|
15
|
+
end
|
|
12
16
|
end
|
|
13
17
|
end
|
|
14
18
|
end
|
|
@@ -5,11 +5,15 @@ module Pubid
|
|
|
5
5
|
module Identifiers
|
|
6
6
|
# IHO Miscellaneous Publication (M series).
|
|
7
7
|
# Example: IHO M-3 2.0.0.
|
|
8
|
-
class Miscellaneous <
|
|
8
|
+
class Miscellaneous < Base
|
|
9
9
|
def self.type
|
|
10
10
|
{ key: :miscellaneous, title: "Miscellaneous Publication",
|
|
11
11
|
short: "M" }
|
|
12
12
|
end
|
|
13
|
+
|
|
14
|
+
def type
|
|
15
|
+
self.class.type
|
|
16
|
+
end
|
|
13
17
|
end
|
|
14
18
|
end
|
|
15
19
|
end
|
|
@@ -5,10 +5,14 @@ module Pubid
|
|
|
5
5
|
module Identifiers
|
|
6
6
|
# IHO Publication (P series).
|
|
7
7
|
# Examples: IHO P-1 1.0.0, IHO P-1/21 1.0.0, IHO P-6-3 1.0.0.
|
|
8
|
-
class Publication <
|
|
8
|
+
class Publication < Base
|
|
9
9
|
def self.type
|
|
10
10
|
{ key: :publication, title: "Publication", short: "P" }
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
def type
|
|
14
|
+
self.class.type
|
|
15
|
+
end
|
|
12
16
|
end
|
|
13
17
|
end
|
|
14
18
|
end
|
|
@@ -5,10 +5,14 @@ module Pubid
|
|
|
5
5
|
module Identifiers
|
|
6
6
|
# IHO Standards and Specifications (S series).
|
|
7
7
|
# Examples: IHO S-44 5.0.0, IHO S-100 Part 4a 1.0.0, IHO S-65 Ap. A 1.0.0.
|
|
8
|
-
class Standard <
|
|
8
|
+
class Standard < Base
|
|
9
9
|
def self.type
|
|
10
10
|
{ key: :standard, title: "Standards and Specifications", short: "S" }
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
def type
|
|
14
|
+
self.class.type
|
|
15
|
+
end
|
|
12
16
|
end
|
|
13
17
|
end
|
|
14
18
|
end
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Iho
|
|
5
5
|
module Identifiers
|
|
6
|
+
autoload :Base, "#{__dir__}/identifiers/base"
|
|
6
7
|
autoload :Bibliographic, "#{__dir__}/identifiers/bibliographic"
|
|
7
8
|
autoload :CircularLetter, "#{__dir__}/identifiers/circular_letter"
|
|
8
9
|
autoload :Miscellaneous, "#{__dir__}/identifiers/miscellaneous"
|
data/lib/pubid/iho/parser.rb
CHANGED
|
@@ -5,7 +5,7 @@ require "parslet"
|
|
|
5
5
|
module Pubid
|
|
6
6
|
module Iho
|
|
7
7
|
# Parser class for IHO identifiers
|
|
8
|
-
class Parser < ::
|
|
8
|
+
class Parser < Parslet::Parser
|
|
9
9
|
rule(:space) { str(" ") }
|
|
10
10
|
rule(:dash) { str("-") }
|
|
11
11
|
rule(:dot) { str(".") }
|
|
@@ -19,8 +19,8 @@ module Pubid
|
|
|
19
19
|
(str(":") >> digits) | (str("/") >> digits) | (dash >> digits) | match("[A-Z]")
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
rule(:
|
|
23
|
-
(digits >> number_suffix.maybe).as(:
|
|
22
|
+
rule(:code) do
|
|
23
|
+
(digits >> number_suffix.maybe).as(:code)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
rule(:appendix) do
|
|
@@ -54,7 +54,7 @@ module Pubid
|
|
|
54
54
|
|
|
55
55
|
rule(:identifier) do
|
|
56
56
|
(str("IHO") >> space).maybe >>
|
|
57
|
-
series >> dash >>
|
|
57
|
+
series >> dash >> code >>
|
|
58
58
|
appendix.maybe >> part.maybe >> annex.maybe >> supplement.maybe >> version.maybe
|
|
59
59
|
end
|
|
60
60
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Iho
|
|
5
|
+
# Scheme registry for IHO identifier types.
|
|
6
|
+
class Scheme < Pubid::Scheme
|
|
7
|
+
IDENTIFIERS = [
|
|
8
|
+
Identifiers::Standard,
|
|
9
|
+
Identifiers::Publication,
|
|
10
|
+
Identifiers::Miscellaneous,
|
|
11
|
+
Identifiers::Bibliographic,
|
|
12
|
+
Identifiers::CircularLetter,
|
|
13
|
+
].freeze
|
|
14
|
+
|
|
15
|
+
def initialize
|
|
16
|
+
@identifiers = IDENTIFIERS
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Look up an identifier class by its IHO series letter (S/P/M/B/C).
|
|
20
|
+
# @param letter [String]
|
|
21
|
+
# @return [Class<Identifiers::Base>]
|
|
22
|
+
# @raise [KeyError] if the letter is not a known IHO series
|
|
23
|
+
def self.identifier_klass_for_type_letter(letter)
|
|
24
|
+
@by_letter ||= IDENTIFIERS.to_h { |klass| [klass.type[:short], klass] }
|
|
25
|
+
@by_letter.fetch(letter.to_s)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|