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
|
@@ -4,9 +4,6 @@ module Pubid
|
|
|
4
4
|
module Iso
|
|
5
5
|
# Generates RFC 5141-bis compliant URNs from ISO identifiers
|
|
6
6
|
#
|
|
7
|
-
# Components render themselves via `component.render(context: URN_CONTEXT)`;
|
|
8
|
-
# this class orchestrates them into the URN string structure.
|
|
9
|
-
#
|
|
10
7
|
# RFC 5141-bis extensions implemented:
|
|
11
8
|
# - Explicit language specification (explicit > implicit)
|
|
12
9
|
# - Extended copublisher syntax (dynamic combinations)
|
|
@@ -15,39 +12,44 @@ module Pubid
|
|
|
15
12
|
# - Supplement chain ordering semantics
|
|
16
13
|
# - Bundled identifier syntax
|
|
17
14
|
class UrnGenerator
|
|
18
|
-
URN_CONTEXT = Rendering::RenderingContext.urn.freeze
|
|
19
|
-
private_constant :URN_CONTEXT
|
|
20
|
-
|
|
21
15
|
# Stage code mapping for RFC 5141-bis typed stages
|
|
16
|
+
# Maps TypedStage stage_code to URN stage abbreviation
|
|
22
17
|
TYPED_STAGE_MAP = {
|
|
23
|
-
wd: "WD",
|
|
24
|
-
wds: "WDS",
|
|
25
|
-
cd: "CD",
|
|
26
|
-
cdv: "CDV",
|
|
27
|
-
dis: "DIS",
|
|
28
|
-
fdis: "FDIS",
|
|
29
|
-
pdam: "PDAM",
|
|
30
|
-
dam: "DAM",
|
|
31
|
-
fdamd: "FDAM",
|
|
32
|
-
dcor: "DCOR",
|
|
33
|
-
fdcor: "FDCOR",
|
|
34
|
-
cdts: "CDTS",
|
|
35
|
-
dts: "DTS",
|
|
36
|
-
fdts: "FDTS",
|
|
18
|
+
wd: "WD", # Working Draft
|
|
19
|
+
wds: "WDS", # Working Draft Study
|
|
20
|
+
cd: "CD", # Committee Draft
|
|
21
|
+
cdv: "CDV", # Committee Draft for Vote
|
|
22
|
+
dis: "DIS", # Draft International Standard
|
|
23
|
+
fdis: "FDIS", # Final Draft International Standard
|
|
24
|
+
pdam: "PDAM", # Proposed Draft Amendment
|
|
25
|
+
dam: "DAM", # Draft Amendment
|
|
26
|
+
fdamd: "FDAM", # Final Draft Amendment (note: stage_code is fdamd)
|
|
27
|
+
dcor: "DCOR", # Draft Corrigendum
|
|
28
|
+
fdcor: "FDCOR", # Final Draft Corrigendum
|
|
29
|
+
cdts: "CDTS", # Committee Draft Technical Specification
|
|
30
|
+
dts: "DTS", # Draft Technical Specification
|
|
31
|
+
fdts: "FDTS", # Final Draft Technical Specification
|
|
37
32
|
}.freeze
|
|
38
33
|
|
|
34
|
+
# Document type mapping for RFC 5141-bis extended types
|
|
39
35
|
TYPE_CODE_MAP = {
|
|
40
|
-
dir: "dir",
|
|
41
|
-
dir_sup: "dir-sup",
|
|
42
|
-
iwa_sup: "iwa-sup",
|
|
36
|
+
dir: "dir", # Directive
|
|
37
|
+
dir_sup: "dir-sup", # Directive Supplement
|
|
38
|
+
iwa_sup: "iwa-sup", # IWA Supplement
|
|
43
39
|
}.freeze
|
|
44
40
|
|
|
45
41
|
attr_reader :identifier
|
|
46
42
|
|
|
43
|
+
# Initialize URN generator
|
|
44
|
+
#
|
|
45
|
+
# @param identifier [Identifier] The ISO identifier to generate URN for
|
|
47
46
|
def initialize(identifier)
|
|
48
47
|
@identifier = identifier
|
|
49
48
|
end
|
|
50
49
|
|
|
50
|
+
# Generate complete URN string
|
|
51
|
+
#
|
|
52
|
+
# @return [String] The URN in format urn:iso:std:...
|
|
51
53
|
def generate
|
|
52
54
|
if identifier.is_a?(SupplementIdentifier)
|
|
53
55
|
generate_supplement_urn
|
|
@@ -58,63 +60,111 @@ module Pubid
|
|
|
58
60
|
|
|
59
61
|
protected
|
|
60
62
|
|
|
63
|
+
# Generate URN for base identifier (SingleIdentifier)
|
|
61
64
|
def generate_base_urn
|
|
62
65
|
parts = ["urn", "iso", "std"]
|
|
66
|
+
|
|
67
|
+
# Publisher (lowercase, hyphen-separated)
|
|
63
68
|
parts << originator_component
|
|
69
|
+
|
|
70
|
+
# Type (for non-IS types like TR, TS, Guide)
|
|
64
71
|
type_comp = type_component
|
|
65
72
|
parts << type_comp if type_comp
|
|
66
|
-
|
|
73
|
+
|
|
74
|
+
# Number
|
|
75
|
+
parts << identifier.number.value if identifier.number
|
|
76
|
+
|
|
77
|
+
# Part (with colon-dash prefix)
|
|
67
78
|
part_comp = part_component
|
|
68
79
|
parts << part_comp if part_comp
|
|
80
|
+
|
|
81
|
+
# Stage (only for non-published documents)
|
|
69
82
|
stage_comp = stage_component
|
|
70
|
-
parts << stage_comp if stage_comp
|
|
83
|
+
parts << stage_comp if stage_comp
|
|
84
|
+
|
|
85
|
+
# Year (for published documents and when edition is present)
|
|
71
86
|
year_comp = year_component
|
|
72
87
|
parts << year_comp if year_comp
|
|
88
|
+
|
|
89
|
+
# Edition
|
|
73
90
|
edition_comp = edition_component
|
|
74
91
|
parts << edition_comp if edition_comp
|
|
92
|
+
|
|
93
|
+
# Language (RFC 5141-bis: explicit specification)
|
|
75
94
|
lang_comp = language_component
|
|
76
95
|
parts << lang_comp if lang_comp
|
|
77
|
-
|
|
96
|
+
|
|
78
97
|
parts.join(":")
|
|
79
98
|
end
|
|
80
99
|
|
|
100
|
+
# Generate URN for supplement identifier
|
|
101
|
+
# Handles multi-level supplements by walking up the chain
|
|
81
102
|
def generate_supplement_urn
|
|
103
|
+
# Walk up supplement chain to collect all supplements
|
|
82
104
|
current = identifier
|
|
83
105
|
supplement_chain = []
|
|
84
106
|
|
|
85
107
|
while current.is_a?(SupplementIdentifier)
|
|
86
|
-
supplement_chain.unshift(current)
|
|
87
|
-
current = current.
|
|
108
|
+
supplement_chain.unshift(current) # Add to front (reverse order)
|
|
109
|
+
current = current.base_identifier
|
|
88
110
|
end
|
|
89
111
|
|
|
112
|
+
# Now 'current' is the base document (not a supplement)
|
|
90
113
|
base_id = current
|
|
114
|
+
|
|
115
|
+
# Build URN from base identifier
|
|
91
116
|
parts = ["urn", "iso", "std"]
|
|
92
117
|
|
|
93
118
|
if base_id
|
|
94
119
|
base_gen = self.class.new(base_id)
|
|
120
|
+
|
|
121
|
+
# Publisher
|
|
95
122
|
parts << base_gen.originator_component
|
|
123
|
+
|
|
124
|
+
# Type (for non-IS types like TR, TS, Guide)
|
|
96
125
|
type_comp = base_gen.type_component
|
|
97
126
|
parts << type_comp if type_comp
|
|
98
|
-
|
|
127
|
+
|
|
128
|
+
# Number
|
|
129
|
+
parts << base_id.number.value if base_id.number
|
|
130
|
+
|
|
131
|
+
# Part
|
|
99
132
|
part_comp = base_gen.part_component
|
|
100
133
|
parts << part_comp if part_comp
|
|
101
134
|
|
|
135
|
+
# Collect ALL editions (base + supplements) and add them here
|
|
136
|
+
# This ensures editions come before all supplement chains
|
|
102
137
|
all_editions = []
|
|
138
|
+
|
|
139
|
+
# Base edition first
|
|
103
140
|
edition_comp = base_gen.edition_component
|
|
104
141
|
all_editions << edition_comp if edition_comp
|
|
142
|
+
|
|
143
|
+
# Then supplement editions
|
|
105
144
|
supplement_chain.each do |supp|
|
|
106
145
|
if supp.edition&.number
|
|
107
|
-
all_editions << supp.edition.
|
|
146
|
+
all_editions << "ed-#{supp.edition.number}"
|
|
108
147
|
end
|
|
109
148
|
end
|
|
149
|
+
|
|
150
|
+
# Add all editions to parts
|
|
110
151
|
parts.concat(all_editions)
|
|
111
152
|
|
|
153
|
+
# Base stage logic:
|
|
154
|
+
# - Include if base is proposal stage (10.xx) and supplement has different stage
|
|
155
|
+
# - Don't include if base is approval/publication stage (50.xx, 60.xx)
|
|
156
|
+
# - Don't include if supplement has same stage as base
|
|
112
157
|
base_stage_comp = base_gen.stage_component
|
|
113
158
|
if base_stage_comp
|
|
159
|
+
# Check if any supplement has a stage
|
|
114
160
|
supplement_stages = supplement_chain.filter_map do |supp|
|
|
115
|
-
self.class.new(supp)
|
|
161
|
+
supp_gen = self.class.new(supp)
|
|
162
|
+
supp_gen.stage_component
|
|
116
163
|
end
|
|
117
164
|
|
|
165
|
+
# Only include base stage if:
|
|
166
|
+
# 1. No supplements have a stage, OR
|
|
167
|
+
# 2. Base is proposal stage (starts with "stage-10.") AND supplements don't duplicate it
|
|
118
168
|
if supplement_stages.empty?
|
|
119
169
|
parts << base_stage_comp
|
|
120
170
|
elsif base_stage_comp.start_with?("stage-10.") && !supplement_stages.include?(base_stage_comp)
|
|
@@ -122,96 +172,127 @@ module Pubid
|
|
|
122
172
|
end
|
|
123
173
|
end
|
|
124
174
|
|
|
175
|
+
# Base language (if present)
|
|
125
176
|
if base_id.languages&.any?
|
|
126
|
-
|
|
177
|
+
lang_comp = base_id.languages.map(&:code).join(",")
|
|
178
|
+
parts << lang_comp
|
|
127
179
|
end
|
|
128
180
|
end
|
|
129
181
|
|
|
182
|
+
# Now flatten all supplements in order
|
|
130
183
|
supplement_chain.each do |supp|
|
|
131
184
|
supp_gen = self.class.new(supp)
|
|
185
|
+
|
|
186
|
+
# Supplement stage (for draft supplements)
|
|
187
|
+
# Note: editions are added at base level, not here
|
|
132
188
|
stage_comp = supp_gen.stage_component
|
|
133
189
|
parts << stage_comp if stage_comp
|
|
190
|
+
|
|
191
|
+
# Supplement type code (amd, cor, sup)
|
|
134
192
|
suppl_type = supp_gen.supplement_type_component
|
|
135
193
|
parts << suppl_type if suppl_type
|
|
136
194
|
|
|
195
|
+
# Year and version (following RFC 5141-bis supplement semantics)
|
|
137
196
|
if supp.date
|
|
138
|
-
|
|
197
|
+
# With date: year:vN
|
|
198
|
+
parts << supp.date.year.to_s
|
|
199
|
+
|
|
200
|
+
# Version with "v" prefix
|
|
201
|
+
# Amendments/Corrigenda keep iteration, generic Supplements don't
|
|
139
202
|
if supp.number
|
|
140
203
|
if supp.stage_iteration && !supp.is_a?(Pubid::Iso::Identifiers::Supplement)
|
|
141
|
-
parts << "v#{supp.number.
|
|
204
|
+
parts << "v#{supp.number.value}.#{supp.stage_iteration.value}"
|
|
142
205
|
else
|
|
143
|
-
parts << "v#{supp.number.
|
|
206
|
+
parts << "v#{supp.number.value}"
|
|
144
207
|
end
|
|
145
208
|
end
|
|
146
209
|
else
|
|
147
|
-
|
|
210
|
+
# Without date: N:v1 (number directly, then "v1")
|
|
211
|
+
if supp.number
|
|
212
|
+
parts << supp.number.value
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
# Always add "v1" when no date
|
|
216
|
+
# Amendments/Corrigenda keep iteration, generic Supplements don't
|
|
148
217
|
if supp.stage_iteration && !supp.is_a?(Pubid::Iso::Identifiers::Supplement)
|
|
149
|
-
parts << "v1.#{supp.stage_iteration.
|
|
218
|
+
parts << "v1.#{supp.stage_iteration.value}"
|
|
150
219
|
else
|
|
151
220
|
parts << "v1"
|
|
152
221
|
end
|
|
153
222
|
end
|
|
154
223
|
|
|
224
|
+
# Supplement language (RFC 5141-bis: explicit specification)
|
|
155
225
|
if supp.languages&.any?
|
|
156
|
-
|
|
226
|
+
lang_comp = supp.languages.map(&:code).join(",")
|
|
227
|
+
parts << lang_comp
|
|
157
228
|
end
|
|
158
229
|
end
|
|
159
230
|
|
|
160
|
-
parts << "ser" if identifier.all_parts
|
|
161
231
|
parts.join(":")
|
|
162
232
|
end
|
|
163
233
|
|
|
234
|
+
# Generate originator component (publisher with copublishers)
|
|
235
|
+
# RFC 5141-bis: supports dynamic copublisher combinations
|
|
164
236
|
def originator_component
|
|
237
|
+
# For identifiers like IWA that don't render publisher, default to "iso"
|
|
165
238
|
return "iso" unless identifier.publisher
|
|
166
239
|
|
|
167
240
|
copubs = identifier.copublishers || []
|
|
241
|
+
|
|
242
|
+
# Collect all publishers in order
|
|
168
243
|
publishers = [identifier.publisher] + copubs
|
|
169
|
-
publishers.map { |p| p.render(context: URN_CONTEXT) }.join("-")
|
|
170
|
-
end
|
|
171
244
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
klass.type[:key]
|
|
176
|
-
else
|
|
177
|
-
identifier.typed_stage&.type_code
|
|
178
|
-
end
|
|
245
|
+
# Convert to lowercase and join with hyphen
|
|
246
|
+
# Keep original order (not alphabetical) for backward compatibility
|
|
247
|
+
publishers.map(&:body).map(&:downcase).join("-")
|
|
179
248
|
end
|
|
180
249
|
|
|
250
|
+
# Generate type component
|
|
251
|
+
# RFC 5141-bis: supports extended document types (dir, dir-sup, iwa-sup)
|
|
181
252
|
def type_component
|
|
182
253
|
return nil unless identifier.typed_stage
|
|
183
254
|
|
|
184
|
-
type_code =
|
|
255
|
+
type_code = identifier.typed_stage.type_code
|
|
256
|
+
# International Standard is default (skip it)
|
|
185
257
|
return nil if !type_code || type_code.to_s == "is"
|
|
186
258
|
|
|
259
|
+
# Check for extended type codes first (RFC 5141-bis)
|
|
187
260
|
type_code_sym = type_code.to_sym
|
|
188
261
|
extended_type = TYPE_CODE_MAP[type_code_sym]
|
|
189
262
|
return extended_type if extended_type
|
|
190
263
|
|
|
264
|
+
# Use urn_type_code override if available (e.g., Recommendation uses 'r')
|
|
191
265
|
urn_override = identifier.urn_type_code
|
|
192
266
|
return urn_override if urn_override
|
|
193
267
|
|
|
268
|
+
# Default: use type_code as-is (already a string)
|
|
194
269
|
type_code.to_s
|
|
195
270
|
end
|
|
196
271
|
|
|
272
|
+
# Generate part component
|
|
197
273
|
def part_component
|
|
198
274
|
return nil unless identifier.part
|
|
199
275
|
|
|
200
|
-
result = "-#{identifier.part.
|
|
201
|
-
result += "-#{identifier.subpart.
|
|
276
|
+
result = "-#{identifier.part.value}"
|
|
277
|
+
result += "-#{identifier.subpart.value}" if identifier.subpart
|
|
202
278
|
result
|
|
203
279
|
end
|
|
204
280
|
|
|
281
|
+
# Generate stage component
|
|
282
|
+
# RFC 5141-bis: supports typed stage codes (WD, CD, DIS, FDIS, etc.)
|
|
205
283
|
def stage_component
|
|
206
284
|
return nil unless identifier.typed_stage
|
|
207
285
|
|
|
208
286
|
stage_code = identifier.typed_stage.stage_code
|
|
209
287
|
return nil if !stage_code || stage_code == :published
|
|
210
288
|
|
|
289
|
+
# Try combined stage+type code first (e.g., "cdts" for CD+TS)
|
|
290
|
+
# This handles typed stages where stage_code differs from the full typed stage code
|
|
211
291
|
combined_key = nil
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
292
|
+
if identifier.typed_stage.type_code &&
|
|
293
|
+
identifier.typed_stage.type_code != "is" &&
|
|
294
|
+
identifier.typed_stage.type_code.to_s != ""
|
|
295
|
+
combined_key = :"#{stage_code}#{identifier.typed_stage.type_code}"
|
|
215
296
|
end
|
|
216
297
|
|
|
217
298
|
stage_abbr = if combined_key && TYPED_STAGE_MAP.key?(combined_key)
|
|
@@ -221,86 +302,104 @@ module Pubid
|
|
|
221
302
|
end
|
|
222
303
|
|
|
223
304
|
if stage_abbr
|
|
305
|
+
|
|
306
|
+
# Add iteration if present (no 'v' prefix for iterations)
|
|
224
307
|
if identifier.stage_iteration
|
|
225
|
-
return "#{stage_abbr}.#{identifier.stage_iteration.
|
|
308
|
+
return "#{stage_abbr}.#{identifier.stage_iteration.value}"
|
|
226
309
|
end
|
|
227
310
|
|
|
228
311
|
return stage_abbr
|
|
229
312
|
end
|
|
230
313
|
|
|
314
|
+
# Fallback: use harmonized stage codes for unmapped stages
|
|
315
|
+
# This handles stages like PWI, NP, AWI, PRF that don't have typed abbreviations
|
|
231
316
|
harmonized_codes = identifier.typed_stage.harmonized_stages
|
|
232
317
|
return nil unless harmonized_codes&.any?
|
|
233
318
|
|
|
319
|
+
# Use first harmonized code from the array
|
|
234
320
|
harmonized_code = harmonized_codes.first
|
|
235
321
|
|
|
322
|
+
# Skip published documents (60.00, 60.60) EXCEPT for PRF (Proof) stage
|
|
323
|
+
# PRF is at 60.00 but should still be included in URNs
|
|
236
324
|
if harmonized_code.start_with?("60.") && stage_code.to_s != "prf"
|
|
237
325
|
return nil
|
|
238
326
|
end
|
|
239
327
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
else
|
|
243
|
-
"stage-#{harmonized_code}"
|
|
244
|
-
end
|
|
328
|
+
# Format as stage-XX.XX
|
|
329
|
+
stage_part = "stage-#{harmonized_code}"
|
|
245
330
|
|
|
331
|
+
# For base identifiers (not supplements), include iteration in stage code
|
|
332
|
+
# For supplements, iteration goes in the version part (v1.2)
|
|
246
333
|
if identifier.stage_iteration && !identifier.is_a?(SupplementIdentifier)
|
|
247
|
-
stage_part += ".v#{identifier.stage_iteration.
|
|
334
|
+
stage_part += ".v#{identifier.stage_iteration.value}"
|
|
248
335
|
end
|
|
249
336
|
|
|
250
337
|
stage_part
|
|
251
338
|
end
|
|
252
339
|
|
|
340
|
+
# Generate edition component
|
|
253
341
|
def edition_component
|
|
254
342
|
return nil unless identifier.edition&.number
|
|
255
343
|
|
|
256
|
-
identifier.edition.
|
|
344
|
+
"ed-#{identifier.edition.number}"
|
|
257
345
|
end
|
|
258
346
|
|
|
347
|
+
# Generate year component
|
|
259
348
|
def year_component
|
|
260
|
-
return nil unless identifier.date&.
|
|
261
|
-
|
|
262
|
-
#
|
|
263
|
-
|
|
349
|
+
return nil unless identifier.date&.year
|
|
350
|
+
|
|
351
|
+
# ISO base identifiers (SingleIdentifier) use undated URN format (no year)
|
|
352
|
+
# Supplements include their own year in the supplement section
|
|
264
353
|
return nil if identifier.is_a?(Pubid::Iso::SingleIdentifier)
|
|
265
354
|
|
|
266
|
-
identifier.date.
|
|
355
|
+
identifier.date.year.to_s
|
|
267
356
|
end
|
|
268
357
|
|
|
358
|
+
# Generate language component
|
|
359
|
+
# RFC 5141-bis: explicit specification guidance (explicit > implicit)
|
|
360
|
+
# URN spec: all values in lowercase
|
|
269
361
|
def language_component
|
|
270
362
|
return nil unless identifier.languages&.any?
|
|
271
363
|
|
|
272
|
-
|
|
273
|
-
end
|
|
274
|
-
|
|
275
|
-
def language_segment(languages)
|
|
276
|
-
languages.map { |l| l.render(context: URN_CONTEXT) }.join(",")
|
|
364
|
+
identifier.languages.map(&:code).map(&:downcase).join(",")
|
|
277
365
|
end
|
|
278
366
|
|
|
367
|
+
# Generate supplement type component
|
|
279
368
|
def supplement_type_component
|
|
280
369
|
return nil unless identifier.typed_stage
|
|
281
370
|
|
|
282
371
|
urn_override = identifier.urn_supplement_type
|
|
283
372
|
return urn_override if urn_override
|
|
284
373
|
|
|
285
|
-
|
|
374
|
+
identifier.typed_stage.type_code.to_s
|
|
286
375
|
end
|
|
287
376
|
|
|
377
|
+
# Generate supplement year/version components
|
|
378
|
+
# Returns array of parts to be joined with ":"
|
|
288
379
|
def supplement_year_version_components
|
|
289
380
|
parts = []
|
|
290
381
|
|
|
291
382
|
if identifier.date
|
|
292
|
-
|
|
383
|
+
# With year: year:version
|
|
384
|
+
parts << identifier.date.year.to_s
|
|
385
|
+
|
|
386
|
+
# Version number with "v" prefix
|
|
293
387
|
if identifier.number
|
|
294
388
|
parts << if identifier.stage_iteration
|
|
295
|
-
"v#{identifier.number.
|
|
389
|
+
"v#{identifier.number.value}.#{identifier.stage_iteration.value}"
|
|
296
390
|
else
|
|
297
|
-
"v#{identifier.number.
|
|
391
|
+
"v#{identifier.number.value}"
|
|
298
392
|
end
|
|
299
393
|
end
|
|
300
394
|
else
|
|
301
|
-
|
|
395
|
+
# Without year: number directly or "v1"
|
|
396
|
+
if identifier.number
|
|
397
|
+
parts << identifier.number.value
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
# Version with iteration if present
|
|
302
401
|
parts << if identifier.stage_iteration
|
|
303
|
-
"v1.#{identifier.stage_iteration.
|
|
402
|
+
"v1.#{identifier.stage_iteration.value}"
|
|
304
403
|
else
|
|
305
404
|
"v1"
|
|
306
405
|
end
|
data/lib/pubid/iso/urn_parser.rb
CHANGED
|
@@ -71,15 +71,6 @@ module Pubid
|
|
|
71
71
|
|
|
72
72
|
parts = urn.sub("urn:iso:std:", "").split(":")
|
|
73
73
|
|
|
74
|
-
# Series suffix: a trailing "ser" marks an all-parts identifier. Strip
|
|
75
|
-
# it before component parsing so it is not misread as a language or
|
|
76
|
-
# supplement token (which previously rendered as "(SER)").
|
|
77
|
-
all_parts = false
|
|
78
|
-
if parts.last == "ser"
|
|
79
|
-
parts.pop
|
|
80
|
-
all_parts = true
|
|
81
|
-
end
|
|
82
|
-
|
|
83
74
|
# Parse publisher(s) - first part
|
|
84
75
|
publishers = parse_publisher(parts.shift)
|
|
85
76
|
|
|
@@ -221,8 +212,7 @@ module Pubid
|
|
|
221
212
|
|
|
222
213
|
# Build the identifier hash
|
|
223
214
|
build_identifier(publishers, number, part, subpart, type_code, stage_code, stage_iteration,
|
|
224
|
-
harmonized_stage_code, stage_from_abbr, year, edition, languages, supplements
|
|
225
|
-
all_parts)
|
|
215
|
+
harmonized_stage_code, stage_from_abbr, year, edition, languages, supplements)
|
|
226
216
|
end
|
|
227
217
|
|
|
228
218
|
private
|
|
@@ -231,7 +221,7 @@ module Pubid
|
|
|
231
221
|
# Used when URN doesn't specify a type code (defaults to IS)
|
|
232
222
|
# Prefers the most specific (non-published) stage
|
|
233
223
|
def scheme_is_typed_stage_by_harmonized(harmonized_code)
|
|
234
|
-
candidates = Pubid::Iso.all_typed_stages.select do |ts|
|
|
224
|
+
candidates = Pubid::Iso::Scheme.instance.all_typed_stages.select do |ts|
|
|
235
225
|
ts.type_code.to_s == "is" && ts.harmonized_stages&.include?(harmonized_code)
|
|
236
226
|
end
|
|
237
227
|
|
|
@@ -312,8 +302,7 @@ module Pubid
|
|
|
312
302
|
|
|
313
303
|
# Build identifier from parsed components
|
|
314
304
|
def build_identifier(publishers, number, part, subpart, type_code, stage_code, stage_iteration,
|
|
315
|
-
harmonized_stage_code, stage_from_abbr, year, edition, languages, supplements
|
|
316
|
-
all_parts = false)
|
|
305
|
+
harmonized_stage_code, stage_from_abbr, year, edition, languages, supplements)
|
|
317
306
|
# Start with base document hash
|
|
318
307
|
base_hash = {
|
|
319
308
|
publisher: publishers.first,
|
|
@@ -336,11 +325,6 @@ module Pubid
|
|
|
336
325
|
# Add type_with_stage if type_code is present
|
|
337
326
|
if type_code && type_code != :is
|
|
338
327
|
base_hash[:type_with_stage] = type_code.to_s.upcase
|
|
339
|
-
# Pin the document class to the explicit URN type token. The stage
|
|
340
|
-
# block below may overwrite :type_with_stage with the stage's abbr
|
|
341
|
-
# (e.g. "WDA" for 90.93, which only exists as an IS-typed stage), so
|
|
342
|
-
# the builder needs this hint to keep e.g. TR a TechnicalReport.
|
|
343
|
-
base_hash[:document_type] = type_code.to_s.upcase
|
|
344
328
|
end
|
|
345
329
|
|
|
346
330
|
# Add stage if present
|
|
@@ -353,9 +337,9 @@ module Pubid
|
|
|
353
337
|
# The stage_from_abbr is the value from TYPED_STAGE_REVERSE_MAP
|
|
354
338
|
# We need to find the reverse to get the original abbreviation
|
|
355
339
|
abbr_str = TYPED_STAGE_REVERSE_MAP.key(stage_from_abbr)
|
|
356
|
-
typed_stage =
|
|
340
|
+
typed_stage = Scheme.locate_typed_stage_by_abbr(abbr_str) if abbr_str
|
|
357
341
|
# If no exact match, fall back to stage_code lookup
|
|
358
|
-
typed_stage ||=
|
|
342
|
+
typed_stage ||= Scheme.locate_typed_stage_by_stage_code(stage_from_abbr)
|
|
359
343
|
else
|
|
360
344
|
# Stage came from a harmonized code (e.g., stage-20.20)
|
|
361
345
|
# Look up by harmonized stage code
|
|
@@ -365,12 +349,12 @@ module Pubid
|
|
|
365
349
|
end
|
|
366
350
|
|
|
367
351
|
# Fall back to any typed stage if IS not found or type_code is specified
|
|
368
|
-
typed_stage ||=
|
|
352
|
+
typed_stage ||= Scheme.locate_typed_stage_by_harmonized_code(stage_code.to_s)
|
|
369
353
|
|
|
370
354
|
# Special handling for stage "40.00": prefer DIS over FCD when parsing from URN
|
|
371
355
|
# This is because FCD is a legacy stage that maps to DIS in URN format
|
|
372
356
|
if stage_code.to_s == "40.00" && typed_stage && typed_stage.stage_code.to_s == "fcd"
|
|
373
|
-
dis_stage =
|
|
357
|
+
dis_stage = Scheme.instance.all_typed_stages.detect do |ts|
|
|
374
358
|
ts.stage_code.to_s == "dis" && ts.harmonized_stages&.include?("40.00")
|
|
375
359
|
end
|
|
376
360
|
typed_stage = dis_stage if dis_stage
|
|
@@ -400,7 +384,7 @@ module Pubid
|
|
|
400
384
|
supp_hash = {}
|
|
401
385
|
|
|
402
386
|
if supp[:stage]
|
|
403
|
-
typed_stage =
|
|
387
|
+
typed_stage = Scheme.locate_typed_stage_by_stage_code(supp[:stage])
|
|
404
388
|
supp_hash[:type_with_stage] = if
|
|
405
389
|
typed_stage
|
|
406
390
|
typed_stage.abbr.is_a?(Array) ? typed_stage.abbr.first : typed_stage.abbr
|
|
@@ -425,16 +409,13 @@ typed_stage
|
|
|
425
409
|
|
|
426
410
|
# Wrap current identifier with supplement
|
|
427
411
|
base_hash = {
|
|
428
|
-
|
|
412
|
+
base_identifier: base_hash,
|
|
429
413
|
**supp_hash,
|
|
430
414
|
}
|
|
431
415
|
end
|
|
432
416
|
|
|
433
|
-
# all_parts belongs on the outermost identifier (after any supplement wrapping)
|
|
434
|
-
base_hash[:all_parts] = true if all_parts
|
|
435
|
-
|
|
436
417
|
# Build the final identifier
|
|
437
|
-
builder = Pubid::Iso::Builder.new
|
|
418
|
+
builder = Pubid::Iso::Builder.new(Pubid::Iso::Scheme.new)
|
|
438
419
|
builder.build(base_hash)
|
|
439
420
|
end
|
|
440
421
|
end
|