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/cen_cenelec.rb
CHANGED
|
@@ -2,207 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module CenCenelec
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# CEN/CENELEC publisher tokens, mirroring the parser's publisher rules
|
|
8
|
-
# (lib/pubid/cen_cenelec/parser.rb). Adopted-org prefixes (ISO/IEC/CISPR)
|
|
9
|
-
# are excluded — they route to their own SDOs, not to CEN.
|
|
10
|
-
PREFIXES = %w[EN CEN CLC CWA HD ES CR ENV].freeze
|
|
11
|
-
|
|
12
5
|
autoload :Builder, "#{__dir__}/cen_cenelec/builder"
|
|
13
6
|
autoload :Identifier, "#{__dir__}/cen_cenelec/identifier"
|
|
14
7
|
autoload :Identifiers, "#{__dir__}/cen_cenelec/identifiers"
|
|
15
8
|
autoload :Parser, "#{__dir__}/cen_cenelec/parser"
|
|
16
|
-
autoload :
|
|
9
|
+
autoload :Scheme, "#{__dir__}/cen_cenelec/scheme"
|
|
17
10
|
autoload :SingleIdentifier, "#{__dir__}/cen_cenelec/single_identifier"
|
|
18
11
|
autoload :SupplementIdentifier,
|
|
19
12
|
"#{__dir__}/cen_cenelec/supplement_identifier"
|
|
20
13
|
autoload :UrnGenerator, "#{__dir__}/cen_cenelec/urn_generator"
|
|
21
|
-
autoload :UrnParser, "#{__dir__}/cen_cenelec/urn_parser"
|
|
22
|
-
|
|
23
|
-
# TYPED_STAGES_REGISTRY for native CEN types
|
|
24
|
-
# Covers the CEN PROJEX stage-code table per issue #251.
|
|
25
|
-
TYPED_STAGES_REGISTRY = [
|
|
26
|
-
# === European Norm (EN) lifecycle ===
|
|
27
|
-
# Preliminary (pWI EN): proposal/WI stages
|
|
28
|
-
Pubid::Components::TypedStage.new(
|
|
29
|
-
code: :pwien, stage_code: :preliminary, type_code: :en,
|
|
30
|
-
abbr: ["pWI EN"], name: "Preliminary Work Item EN",
|
|
31
|
-
harmonized_stages: %w[00.60 10.98 10.99 20.60],
|
|
32
|
-
),
|
|
33
|
-
# Proposal (prEN): working draft stages
|
|
34
|
-
Pubid::Components::TypedStage.new(
|
|
35
|
-
code: :pren, stage_code: :proposal, type_code: :en,
|
|
36
|
-
abbr: ["prEN"], name: "Proposal European Norm",
|
|
37
|
-
harmonized_stages: %w[30.00 30.20 30.60 30.92 30.97 30.98 30.99],
|
|
38
|
-
),
|
|
39
|
-
# Final Proposal (FprEN): enquiry stages
|
|
40
|
-
Pubid::Components::TypedStage.new(
|
|
41
|
-
code: :fpren, stage_code: :final_proposal, type_code: :en,
|
|
42
|
-
abbr: ["FprEN"], name: "Final Proposal European Norm",
|
|
43
|
-
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.97 40.98 40.99],
|
|
44
|
-
),
|
|
45
|
-
# Formal Vote (FV prEN): COCOR + FV dispatch
|
|
46
|
-
Pubid::Components::TypedStage.new(
|
|
47
|
-
code: :fven, stage_code: :formal_vote, type_code: :en,
|
|
48
|
-
abbr: ["FV prEN"], name: "Formal Vote EN",
|
|
49
|
-
harmonized_stages: %w[43.20 43.60 43.97 43.98 45.97 45.98 45.99],
|
|
50
|
-
),
|
|
51
|
-
# Vote (vEN): enquiry/vote
|
|
52
|
-
Pubid::Components::TypedStage.new(
|
|
53
|
-
code: :ven, stage_code: :vote, type_code: :en,
|
|
54
|
-
abbr: ["vEN"], name: "Vote EN",
|
|
55
|
-
harmonized_stages: %w[50.20 50.60 50.97 50.98],
|
|
56
|
-
),
|
|
57
|
-
# Published (EN): ratification + publication milestones
|
|
58
|
-
Pubid::Components::TypedStage.new(
|
|
59
|
-
code: :puben, stage_code: :published, type_code: :en,
|
|
60
|
-
abbr: ["EN"], name: "European Norm",
|
|
61
|
-
harmonized_stages: %w[60.00 60.55 60.60 65.31 65.51 65.62],
|
|
62
|
-
),
|
|
63
|
-
# Review (rvEN): 2-year review
|
|
64
|
-
Pubid::Components::TypedStage.new(
|
|
65
|
-
code: :rven, stage_code: :review, type_code: :en,
|
|
66
|
-
abbr: ["rvEN"], name: "Review EN",
|
|
67
|
-
harmonized_stages: %w[90.00 90.20 90.60 90.92 90.93 90.98],
|
|
68
|
-
),
|
|
69
|
-
# Reactivation (racEN)
|
|
70
|
-
Pubid::Components::TypedStage.new(
|
|
71
|
-
code: :racen, stage_code: :reactivation, type_code: :en,
|
|
72
|
-
abbr: ["racEN"], name: "Re-activated EN",
|
|
73
|
-
harmonized_stages: %w[96.60],
|
|
74
|
-
),
|
|
75
|
-
# Withdrawn (wdEN)
|
|
76
|
-
Pubid::Components::TypedStage.new(
|
|
77
|
-
code: :wden, stage_code: :withdrawn, type_code: :en,
|
|
78
|
-
abbr: ["wdEN"], name: "Withdrawn EN",
|
|
79
|
-
harmonized_stages: %w[99.60],
|
|
80
|
-
),
|
|
81
|
-
|
|
82
|
-
# === Technical Specification (TS) ===
|
|
83
|
-
Pubid::Components::TypedStage.new(
|
|
84
|
-
code: :pubts, stage_code: :published, type_code: :ts,
|
|
85
|
-
abbr: ["TS"], name: "Technical Specification",
|
|
86
|
-
harmonized_stages: %w[60.00 60.60],
|
|
87
|
-
),
|
|
88
|
-
Pubid::Components::TypedStage.new(
|
|
89
|
-
code: :prts, stage_code: :proposal, type_code: :ts,
|
|
90
|
-
abbr: ["prTS"], name: "Proposal Technical Specification",
|
|
91
|
-
harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
|
|
92
|
-
),
|
|
93
|
-
|
|
94
|
-
# === Technical Report (TR) ===
|
|
95
|
-
Pubid::Components::TypedStage.new(
|
|
96
|
-
code: :pubtr, stage_code: :published, type_code: :tr,
|
|
97
|
-
abbr: ["TR"], name: "Technical Report",
|
|
98
|
-
harmonized_stages: %w[60.00 60.60],
|
|
99
|
-
),
|
|
100
|
-
|
|
101
|
-
# === CEN Workshop Agreement (CWA) ===
|
|
102
|
-
Pubid::Components::TypedStage.new(
|
|
103
|
-
code: :pubcwa, stage_code: :published, type_code: :cwa,
|
|
104
|
-
abbr: ["CWA"], name: "CEN Workshop Agreement",
|
|
105
|
-
harmonized_stages: %w[60.00 60.60],
|
|
106
|
-
),
|
|
107
|
-
|
|
108
|
-
# === Guide ===
|
|
109
|
-
Pubid::Components::TypedStage.new(
|
|
110
|
-
code: :pubguide, stage_code: :published, type_code: :guide,
|
|
111
|
-
abbr: ["Guide"], name: "Guide",
|
|
112
|
-
harmonized_stages: %w[60.00 60.60],
|
|
113
|
-
),
|
|
114
|
-
|
|
115
|
-
# === Harmonization Document (HD) ===
|
|
116
|
-
Pubid::Components::TypedStage.new(
|
|
117
|
-
code: :pubhd, stage_code: :published, type_code: :hd,
|
|
118
|
-
abbr: ["HD"], name: "Harmonization Document",
|
|
119
|
-
harmonized_stages: %w[60.00 60.60],
|
|
120
|
-
),
|
|
121
|
-
|
|
122
|
-
# === European Specification (ES) ===
|
|
123
|
-
Pubid::Components::TypedStage.new(
|
|
124
|
-
code: :pubes, stage_code: :published, type_code: :es,
|
|
125
|
-
abbr: ["ES"], name: "European Specification",
|
|
126
|
-
harmonized_stages: %w[60.00 60.60],
|
|
127
|
-
),
|
|
128
|
-
|
|
129
|
-
# === CEN Report (CR) ===
|
|
130
|
-
Pubid::Components::TypedStage.new(
|
|
131
|
-
code: :pubcr, stage_code: :published, type_code: :cr,
|
|
132
|
-
abbr: ["CR"], name: "CEN Report",
|
|
133
|
-
harmonized_stages: %w[60.00 60.60],
|
|
134
|
-
),
|
|
135
|
-
|
|
136
|
-
# === European Prestandard (ENV) ===
|
|
137
|
-
Pubid::Components::TypedStage.new(
|
|
138
|
-
code: :pubenv, stage_code: :published, type_code: :env,
|
|
139
|
-
abbr: ["ENV"], name: "European Prestandard",
|
|
140
|
-
harmonized_stages: %w[60.00 60.60],
|
|
141
|
-
),
|
|
142
|
-
].freeze
|
|
143
|
-
|
|
144
|
-
# Default typed stage for when no match is found
|
|
145
|
-
DEFAULT_TYPED_STAGE = Pubid::Components::TypedStage.new(
|
|
146
|
-
code: :puben,
|
|
147
|
-
stage_code: :published,
|
|
148
|
-
type_code: :en,
|
|
149
|
-
abbr: ["EN"],
|
|
150
|
-
name: "European Norm",
|
|
151
|
-
harmonized_stages: %w[60.00 60.60],
|
|
152
|
-
).freeze
|
|
153
14
|
|
|
154
15
|
def self.parse(identifier)
|
|
155
|
-
unless identifier.is_a?(String)
|
|
156
|
-
raise Pubid::Errors::InvalidInputError,
|
|
157
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
161
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
162
|
-
end
|
|
163
|
-
|
|
164
16
|
CenCenelec::Identifier.parse(identifier)
|
|
165
17
|
end
|
|
166
|
-
|
|
167
|
-
# Auto-discover all identifier types from the Identifiers namespace
|
|
168
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
169
|
-
def self.identifier_types
|
|
170
|
-
@identifier_types ||= Identifiers.constants
|
|
171
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
172
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
173
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
# Build typed stage index from the module's TYPED_STAGES_REGISTRY
|
|
177
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
178
|
-
def self.all_typed_stages
|
|
179
|
-
TYPED_STAGES_REGISTRY
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
# Lookup: type code -> identifier class
|
|
183
|
-
# @param code [String, Symbol] the type key to find
|
|
184
|
-
# @return [Class, nil] the matching identifier class
|
|
185
|
-
def self.locate_type(code)
|
|
186
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
# Lookup: abbreviation -> typed stage
|
|
190
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
191
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
192
|
-
def self.locate_stage(abbr)
|
|
193
|
-
abbr_str = abbr.to_s.upcase
|
|
194
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
195
|
-
end
|
|
196
18
|
end
|
|
197
19
|
end
|
|
198
20
|
|
|
199
21
|
Pubid::Registry.register(:cen_cenelec, Pubid::CenCenelec)
|
|
200
|
-
Pubid::Registry.register(:cen, Pubid::CenCenelec)
|
|
201
|
-
|
|
202
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
203
|
-
# Register on both root hierarchies: SingleIdentifier and Identifiers::Base
|
|
204
|
-
cen_renderer = Pubid::CenCenelec::Renderer
|
|
205
|
-
Pubid::CenCenelec::SingleIdentifier.format_registry = Pubid::FormatRegistry.new(parent: Pubid::Identifier.format_registry)
|
|
206
|
-
Pubid::CenCenelec::SingleIdentifier.format_registry.register(:human, renderer: cen_renderer)
|
|
207
|
-
Pubid::CenCenelec::Identifiers::Base.format_registry = Pubid::FormatRegistry.new(parent: Pubid::Identifier.format_registry)
|
|
208
|
-
Pubid::CenCenelec::Identifiers::Base.format_registry.register(:human, renderer: cen_renderer)
|
data/lib/pubid/cie/builder.rb
CHANGED
|
@@ -14,30 +14,12 @@ module Pubid
|
|
|
14
14
|
# Determine identifier class based on parsed content
|
|
15
15
|
identifier_class = determine_class(parsed_hash)
|
|
16
16
|
|
|
17
|
-
# Supplement / Corrigendum wrap a nested base.
|
|
18
|
-
if identifier_class == Cie::Identifiers::Corrigendum
|
|
19
|
-
return build_corrigendum(parsed_hash)
|
|
20
|
-
end
|
|
21
|
-
if identifier_class == Cie::Identifiers::Supplement
|
|
22
|
-
return build_supplement(parsed_hash)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
17
|
# Extract attributes with style detection
|
|
26
18
|
attributes = extract_attributes(parsed_hash)
|
|
27
19
|
|
|
28
|
-
# For Bundle,
|
|
20
|
+
# For Bundle identifier, store original string
|
|
29
21
|
if parsed_hash[:bundle_items] && original_string
|
|
30
|
-
attributes
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
# `extract_attributes` builds one attribute hash for every CIE type,
|
|
34
|
-
# but the types do not share one attribute set — only Standard,
|
|
35
|
-
# DualPublished and Identical declare `s_prefix`, while Conference,
|
|
36
|
-
# Bundle, Proceedings and TutorialBundle do not. lutaml used to drop
|
|
37
|
-
# the surplus key without a word; the constructor now refuses it, so
|
|
38
|
-
# the builder has to stop offering it.
|
|
39
|
-
attributes = attributes.select do |key, _|
|
|
40
|
-
identifier_class.attributes.key?(key)
|
|
22
|
+
attributes[:identifiers_string] = original_string
|
|
41
23
|
end
|
|
42
24
|
|
|
43
25
|
# Construct identifier
|
|
@@ -46,85 +28,6 @@ module Pubid
|
|
|
46
28
|
|
|
47
29
|
private
|
|
48
30
|
|
|
49
|
-
# Build a Bundle's attributes from its printed form. Parse each member,
|
|
50
|
-
# then — since a CIE bundle is the parts of one supplement of one standard
|
|
51
|
-
# — hoist the shared base and keep only the differing supplement
|
|
52
|
-
# number/part in each doc. If the members don't share a base (not seen in
|
|
53
|
-
# practice, but the grammar allows it), keep each doc's own base instead.
|
|
54
|
-
def build_bundle(original_string)
|
|
55
|
-
members = split_bundle_members(original_string)
|
|
56
|
-
shared = common_base(members)
|
|
57
|
-
return { ids: members } unless shared
|
|
58
|
-
|
|
59
|
-
ids = members.map do |m|
|
|
60
|
-
Cie::Identifiers::Supplement.new(number: m.number, part: m.part)
|
|
61
|
-
end
|
|
62
|
-
{ base: shared, ids: ids }
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# The publisher prefix is written once, so only the first item carries
|
|
66
|
-
# "CIE "; prepend it to the rest before parsing each member.
|
|
67
|
-
def split_bundle_members(original_string)
|
|
68
|
-
original_string.split(",").each_with_index.map do |item, i|
|
|
69
|
-
ref = i.zero? ? item.strip : "CIE #{item.strip}"
|
|
70
|
-
Cie::Identifier.parse(ref)
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
# The base shared by every member, or nil if they differ (or any is
|
|
75
|
-
# base-less). Compared by canonical hash so structural equality holds.
|
|
76
|
-
def common_base(members)
|
|
77
|
-
bases = members.map(&:base)
|
|
78
|
-
return nil if bases.any?(&:nil?)
|
|
79
|
-
|
|
80
|
-
first = bases.first.to_hash
|
|
81
|
-
bases.all? { |b| b.to_hash == first } ? bases.first : nil
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
# Supplement: nest the base Standard (the stage/year/language belong to
|
|
85
|
-
# the base), keep only the -SPN number/part on the wrapper.
|
|
86
|
-
def build_supplement(parsed_hash)
|
|
87
|
-
a = extract_attributes(parsed_hash)
|
|
88
|
-
base = Cie::Identifiers::Standard.new(
|
|
89
|
-
number: a[:base_number],
|
|
90
|
-
stage: a[:stage],
|
|
91
|
-
s_prefix: a.fetch(:s_prefix, false),
|
|
92
|
-
language: a[:language],
|
|
93
|
-
year: a[:year],
|
|
94
|
-
style: "current", # supplements always use the colon style
|
|
95
|
-
)
|
|
96
|
-
Cie::Identifiers::Supplement.new(
|
|
97
|
-
base: base,
|
|
98
|
-
number: a[:supplement_number],
|
|
99
|
-
part: a[:supplement_part],
|
|
100
|
-
)
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
# Corrigendum: nest the base (a Standard, or a Supplement when the base
|
|
104
|
-
# itself carries -SPN), keep only the /CorN number/year on the wrapper.
|
|
105
|
-
def build_corrigendum(parsed_hash)
|
|
106
|
-
a = extract_attributes(parsed_hash)
|
|
107
|
-
base_std = Cie::Identifiers::Standard.new(
|
|
108
|
-
number: a[:base_number],
|
|
109
|
-
year: a[:base_year],
|
|
110
|
-
style: "current",
|
|
111
|
-
)
|
|
112
|
-
base = if a[:base_supplement]
|
|
113
|
-
Cie::Identifiers::Supplement.new(
|
|
114
|
-
base: base_std,
|
|
115
|
-
number: a[:base_supplement],
|
|
116
|
-
part: a[:base_supplement_part],
|
|
117
|
-
)
|
|
118
|
-
else
|
|
119
|
-
base_std
|
|
120
|
-
end
|
|
121
|
-
Cie::Identifiers::Corrigendum.new(
|
|
122
|
-
base: base,
|
|
123
|
-
number: a[:cor_number],
|
|
124
|
-
year: a[:cor_year],
|
|
125
|
-
)
|
|
126
|
-
end
|
|
127
|
-
|
|
128
31
|
# Determine which identifier class to use
|
|
129
32
|
def determine_class(parsed_hash)
|
|
130
33
|
# Tutorial Bundle (special text format)
|
|
@@ -147,11 +50,6 @@ module Pubid
|
|
|
147
50
|
return Cie::Identifiers::Supplement
|
|
148
51
|
end
|
|
149
52
|
|
|
150
|
-
# Proceedings paper (x-prefixed or standalone)
|
|
151
|
-
if parsed_hash[:paper_code]
|
|
152
|
-
return Cie::Identifiers::Proceedings
|
|
153
|
-
end
|
|
154
|
-
|
|
155
53
|
# Conference (x-prefix)
|
|
156
54
|
if parsed_hash[:conference]
|
|
157
55
|
return Cie::Identifiers::Conference
|
|
@@ -281,69 +179,47 @@ module Pubid
|
|
|
281
179
|
date_sep = "slash" # Special format for identical identifiers
|
|
282
180
|
end
|
|
283
181
|
|
|
284
|
-
#
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
when "slash" then "slash"
|
|
290
|
-
else detect_style_fallback(parsed_hash)
|
|
182
|
+
# Detect style from date separator
|
|
183
|
+
style = if date_sep == "colon"
|
|
184
|
+
"current"
|
|
185
|
+
else
|
|
186
|
+
(date_sep == "dash" ? "legacy" : detect_style_fallback(parsed_hash))
|
|
291
187
|
end
|
|
292
188
|
attributes[:style] = style
|
|
293
189
|
|
|
294
|
-
# Set year if present
|
|
190
|
+
# Set year and separator if present
|
|
295
191
|
attributes[:year] = year_value if year_value
|
|
192
|
+
attributes[:date_separator] = date_sep if date_sep
|
|
296
193
|
|
|
297
|
-
# Extract code
|
|
298
|
-
# identifier; the code's style is the identifier's own `style`).
|
|
194
|
+
# Extract code
|
|
299
195
|
if parsed_hash[:number]
|
|
300
|
-
|
|
196
|
+
code_attrs = { number: extract_value(parsed_hash[:number]),
|
|
197
|
+
style: style }
|
|
301
198
|
if parsed_hash[:part]
|
|
302
|
-
|
|
199
|
+
code_attrs[:part] =
|
|
200
|
+
extract_value(parsed_hash[:part])
|
|
303
201
|
end
|
|
304
202
|
if parsed_hash[:iteration]
|
|
305
|
-
|
|
203
|
+
code_attrs[:iteration] =
|
|
204
|
+
extract_value(parsed_hash[:iteration])
|
|
306
205
|
end
|
|
307
206
|
|
|
308
207
|
# Detect part separator from parser markers
|
|
309
208
|
if parsed_hash[:slash_sep]
|
|
310
|
-
|
|
209
|
+
code_attrs[:part_separator] = "slash"
|
|
311
210
|
elsif parsed_hash[:dash_sep]
|
|
312
|
-
|
|
211
|
+
code_attrs[:part_separator] = "dash"
|
|
313
212
|
end
|
|
213
|
+
|
|
214
|
+
attributes[:code] = Components::Code.new(**code_attrs)
|
|
314
215
|
end
|
|
315
216
|
|
|
316
217
|
# Conference number (separate from regular code)
|
|
317
218
|
if parsed_hash[:conf_number]
|
|
318
|
-
attributes[:
|
|
219
|
+
attributes[:conference_number] =
|
|
319
220
|
extract_value(parsed_hash[:conf_number])
|
|
320
221
|
end
|
|
321
222
|
|
|
322
|
-
# Proceedings paper: the paper itself is the document, so its identity
|
|
323
|
-
# (code + running number, e.g. "OP01") is the flat +number+ for both
|
|
324
|
-
# surface forms. The x-form's parent conference goes to
|
|
325
|
-
# +conference+; the standalone form keeps its +page+ range.
|
|
326
|
-
if parsed_hash[:paper_code]
|
|
327
|
-
attributes[:number] =
|
|
328
|
-
"#{extract_value(parsed_hash[:paper_code])}" \
|
|
329
|
-
"#{extract_value(parsed_hash[:paper_number])}"
|
|
330
|
-
if parsed_hash[:conf_number]
|
|
331
|
-
attributes[:conference] =
|
|
332
|
-
extract_value(parsed_hash[:conf_number])
|
|
333
|
-
end
|
|
334
|
-
end
|
|
335
|
-
if parsed_hash[:page_range]
|
|
336
|
-
attributes[:page] = extract_value(parsed_hash[:page_range])
|
|
337
|
-
end
|
|
338
|
-
|
|
339
|
-
# Conference /slug variant (opaque, verbatim)
|
|
340
|
-
if parsed_hash[:variant]
|
|
341
|
-
attributes[:variant] = extract_value(parsed_hash[:variant])
|
|
342
|
-
end
|
|
343
|
-
|
|
344
|
-
# D-series marker
|
|
345
|
-
attributes[:d_prefix] = true if parsed_hash[:d_prefix]
|
|
346
|
-
|
|
347
223
|
# Extract language (direct lang_code for slash_colon format)
|
|
348
224
|
lang_code = nil
|
|
349
225
|
lang_format = nil
|
|
@@ -449,11 +325,10 @@ module Pubid
|
|
|
449
325
|
extract_value(parsed_hash[:amd_number])
|
|
450
326
|
end
|
|
451
327
|
|
|
452
|
-
#
|
|
453
|
-
# relaton-index key). A comma-list bundle instead keys via its `ids`
|
|
454
|
-
# members through #root, so it needs no stored number.
|
|
328
|
+
# Extract bundle data
|
|
455
329
|
if parsed_hash[:bundle_number]
|
|
456
|
-
attributes[:
|
|
330
|
+
attributes[:bundle_number] =
|
|
331
|
+
extract_value(parsed_hash[:bundle_number])
|
|
457
332
|
end
|
|
458
333
|
|
|
459
334
|
# Extract trailing language from legacy_code_with_year
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Cie
|
|
7
|
+
module Components
|
|
8
|
+
# Code component for CIE identifiers
|
|
9
|
+
# Handles number-part-iteration with style awareness
|
|
10
|
+
class Code < Lutaml::Model::Serializable
|
|
11
|
+
attribute :number, :string # "013", "170", "198"
|
|
12
|
+
attribute :part, :string # "1", "2", "3"
|
|
13
|
+
attribute :iteration, :string # "1" in "006.1"
|
|
14
|
+
attribute :style, :string # "legacy" or "current"
|
|
15
|
+
attribute :part_separator, :string # "slash" or "dash" (preserves original)
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
result = number
|
|
19
|
+
|
|
20
|
+
# Handle part AND iteration together (e.g., "19/2.1")
|
|
21
|
+
if part && iteration
|
|
22
|
+
# Use slash for part, then dot for iteration
|
|
23
|
+
result += "/#{part}.#{iteration}"
|
|
24
|
+
# Handle iteration only (e.g., "006.1", "13.3")
|
|
25
|
+
elsif iteration
|
|
26
|
+
result += ".#{iteration}"
|
|
27
|
+
# Handle part only (separator depends on part_separator or style)
|
|
28
|
+
elsif part
|
|
29
|
+
# Use part_separator if explicitly set (preserves original)
|
|
30
|
+
# Otherwise fall back to style-based separator
|
|
31
|
+
separator = case part_separator
|
|
32
|
+
when "slash"
|
|
33
|
+
"/"
|
|
34
|
+
when "dash"
|
|
35
|
+
"-"
|
|
36
|
+
else
|
|
37
|
+
# Legacy: slash "/" (e.g., "170/1")
|
|
38
|
+
# Current: dash "-" (e.g., "170-1")
|
|
39
|
+
style == "legacy" ? "/" : "-"
|
|
40
|
+
end
|
|
41
|
+
result += "#{separator}#{part}"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
result
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Parse code string with style detection
|
|
48
|
+
def self.parse(code_str, style: :current)
|
|
49
|
+
return nil if code_str.nil? || code_str.strip.empty?
|
|
50
|
+
|
|
51
|
+
# Detect iteration format (dot separator)
|
|
52
|
+
if code_str.include?(".")
|
|
53
|
+
parts = code_str.split(".")
|
|
54
|
+
new(number: parts[0], iteration: parts[1], style: style)
|
|
55
|
+
# Detect part with separator
|
|
56
|
+
elsif code_str.include?("/")
|
|
57
|
+
parts = code_str.split("/")
|
|
58
|
+
new(number: parts[0], part: parts[1], style: "legacy",
|
|
59
|
+
part_separator: "slash")
|
|
60
|
+
elsif code_str.include?("-")
|
|
61
|
+
parts = code_str.split("-", 2) # Limit to 2 parts
|
|
62
|
+
new(number: parts[0], part: parts[1], style: "current",
|
|
63
|
+
part_separator: "dash")
|
|
64
|
+
# Simple number
|
|
65
|
+
else
|
|
66
|
+
new(number: code_str, style: style)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
data/lib/pubid/cie/identifier.rb
CHANGED
|
@@ -2,28 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Cie
|
|
5
|
-
# Base Identifier class for CIE
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
#
|
|
10
|
-
# +style+ is the sole number<->year separator field (there is no separate
|
|
11
|
-
# date_separator): "current" -> ":", "legacy" -> "-", "slash" -> "/".
|
|
12
|
-
# It defaults to "current" (the dominant value), so canonicalize_hash drops
|
|
13
|
-
# it from the majority of rows and from_hash restores it.
|
|
14
|
-
class Identifier < ::Pubid::Identifier
|
|
15
|
-
attribute :style, :string, default: -> { "current" }
|
|
5
|
+
# Base Identifier class for CIE
|
|
6
|
+
# Provides parse() entry point
|
|
7
|
+
class Identifier < Lutaml::Model::Serializable
|
|
8
|
+
attribute :style, :string # "legacy" or "current"
|
|
16
9
|
|
|
10
|
+
# Parse CIE identifier string
|
|
17
11
|
def self.parse(input)
|
|
18
|
-
unless input.is_a?(String)
|
|
19
|
-
raise Pubid::Errors::InvalidInputError,
|
|
20
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
if input.length > Pubid::MAX_INPUT_LENGTH
|
|
24
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
25
|
-
end
|
|
26
|
-
|
|
27
12
|
parsed = Parser.parse(input)
|
|
28
13
|
builder = Builder.new
|
|
29
14
|
builder.build(parsed, original_string: input)
|
|
@@ -5,44 +5,14 @@ require "lutaml/model"
|
|
|
5
5
|
module Pubid
|
|
6
6
|
module Cie
|
|
7
7
|
module Identifiers
|
|
8
|
-
# Bundle identifier for CIE
|
|
9
|
-
#
|
|
8
|
+
# Bundle identifier for CIE
|
|
9
|
+
# Handles comma-separated supplement lists
|
|
10
10
|
# Example: CIE 198-SP1.1:2011,198-SP1.2:2011,198-SP1.3:2011,198-SP1.4:2011
|
|
11
|
-
#
|
|
12
|
-
# A CIE bundle is the parts of one supplement of one standard, so its
|
|
13
|
-
# members share a base document. That shared +base+ is hoisted to the
|
|
14
|
-
# bundle and the +ids+ carry only what differs (supplement number/part);
|
|
15
|
-
# #root walks +base+ to the origin standard for the relaton-index key.
|
|
16
|
-
# (Defensive: if members ever don't share a base, each id keeps its own
|
|
17
|
-
# and +base+ is nil — see Builder#build_bundle.)
|
|
18
11
|
class Bundle < SingleIdentifier
|
|
19
|
-
attribute :
|
|
20
|
-
attribute :ids, Identifier, polymorphic: true, collection: true
|
|
12
|
+
attribute :identifiers_string, :string # Store as string for now
|
|
21
13
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
(base || ids&.first)&.root || self
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# The printed form writes the publisher once: the first member keeps its
|
|
28
|
-
# "CIE " prefix, the rest are bare. A base-less member is re-based onto
|
|
29
|
-
# the bundle's shared base for rendering.
|
|
30
|
-
def to_s(**opts)
|
|
31
|
-
return "" unless ids&.any?
|
|
32
|
-
|
|
33
|
-
result = ids.each_with_index.map do |id, i|
|
|
34
|
-
member = id.base ? id : rebased(id)
|
|
35
|
-
i.zero? ? member.to_s : member.to_s.delete_prefix("CIE ")
|
|
36
|
-
end.join(",")
|
|
37
|
-
|
|
38
|
-
annotate_plain_render(result, **opts)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
private
|
|
42
|
-
|
|
43
|
-
# Attach the bundle's shared base to a base-less member for rendering.
|
|
44
|
-
def rebased(id)
|
|
45
|
-
Supplement.new(base: base, number: id.number, part: id.part)
|
|
14
|
+
def to_s
|
|
15
|
+
identifiers_string || ""
|
|
46
16
|
end
|
|
47
17
|
end
|
|
48
18
|
end
|
|
@@ -9,27 +9,22 @@ module Pubid
|
|
|
9
9
|
# Handles x-prefix conference proceedings
|
|
10
10
|
# Example: CIE x038:2013, CIE x038:2013 Amendment 1
|
|
11
11
|
class Conference < SingleIdentifier
|
|
12
|
-
|
|
13
|
-
attribute :number, :string
|
|
12
|
+
attribute :conference_number, :string
|
|
14
13
|
attribute :amendment_number, :string
|
|
15
|
-
# Techstreet opaque /slug variant (no default -> round-trips cleanly)
|
|
16
|
-
attribute :variant, :string
|
|
17
14
|
|
|
18
|
-
def to_s
|
|
19
|
-
result = "CIE x#{
|
|
15
|
+
def to_s
|
|
16
|
+
result = "CIE x#{conference_number}"
|
|
20
17
|
|
|
21
18
|
# Date with separator
|
|
22
19
|
if year
|
|
23
|
-
|
|
20
|
+
separator = date_separator == "colon" ? ":" : "-"
|
|
21
|
+
result += "#{separator}#{year}"
|
|
24
22
|
end
|
|
25
23
|
|
|
26
24
|
# Amendment if present
|
|
27
25
|
result += " Amendment #{amendment_number}" if amendment_number
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
result += "/#{variant}" if variant
|
|
31
|
-
|
|
32
|
-
annotate_plain_render(result, **opts)
|
|
27
|
+
result
|
|
33
28
|
end
|
|
34
29
|
end
|
|
35
30
|
end
|