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
|
@@ -1,72 +1,25 @@
|
|
|
1
|
+
require_relative "identifier"
|
|
2
|
+
require_relative "single_identifier"
|
|
1
3
|
# frozen_string_literal: true
|
|
2
4
|
|
|
3
5
|
module Pubid
|
|
4
6
|
module Iec
|
|
5
7
|
# Identifier that represents a supplement to a base identifier.
|
|
6
8
|
class SupplementIdentifier < SingleIdentifier
|
|
7
|
-
attribute :
|
|
8
|
-
|
|
9
|
-
# Serialize the supplemented document under "base". The supplement's own
|
|
10
|
-
# number/date/stage come from the inherited common maps; route the nested
|
|
11
|
-
# base hash back through Identifier.from_hash so its concrete subclass (and
|
|
12
|
-
# any further nesting) is reconstructed.
|
|
13
|
-
key_value do
|
|
14
|
-
map "base", with: { to: :base_to_kv, from: :base_from_kv }
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def base_to_kv(model, doc)
|
|
18
|
-
base = model.base
|
|
19
|
-
return unless base
|
|
20
|
-
|
|
21
|
-
# `base` synthesises a base for a supplement that has none
|
|
22
|
-
# (e.g. a bare "+AMD1:2008" nested in a consolidation): a fake doc whose
|
|
23
|
-
# number equals the supplement's own. It renders nothing and the getter
|
|
24
|
-
# recreates it identically on load, so don't persist it. A standalone
|
|
25
|
-
# supplement ("IEC/FDAM 60038-1") instead moves the real base number into
|
|
26
|
-
# the synthetic base (base.number != own number), which must be kept.
|
|
27
|
-
return if model.synthetic_base? && base.number.to_s == model.number.to_s
|
|
28
|
-
|
|
29
|
-
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("base",
|
|
30
|
-
base.to_hash))
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def base_from_kv(model, value)
|
|
34
|
-
return unless value
|
|
35
|
-
|
|
36
|
-
base = ::Pubid::Iec::Identifier.from_hash(value)
|
|
37
|
-
model.base = base
|
|
38
|
-
|
|
39
|
-
# A base of the exact SingleIdentifier class is the synthetic self-base
|
|
40
|
-
# of a standalone supplement ("IEC/FDAM 60038-1"); a real attached base
|
|
41
|
-
# is always a concrete type (InternationalStandard, etc.). Re-engage the
|
|
42
|
-
# synthetic-base state so the supplement renders in standalone form
|
|
43
|
-
# (publisher/TYPE base-number-supp-number) instead of attached form.
|
|
44
|
-
if base.instance_of?(::Pubid::Iec::SingleIdentifier)
|
|
45
|
-
model.mark_synthetic_standalone!
|
|
46
|
-
end
|
|
47
|
-
end
|
|
9
|
+
attribute :base_identifier, Identifier, polymorphic: true
|
|
48
10
|
|
|
49
|
-
#
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# supplement number and flag the synthetic base.
|
|
53
|
-
def mark_synthetic_standalone!
|
|
54
|
-
@synthetic_base = true
|
|
55
|
-
@supplement_number = @number
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Override base getter to ensure it's always created for standalone supplements
|
|
59
|
-
def base
|
|
60
|
-
@base || ensure_base
|
|
11
|
+
# Override base_identifier getter to ensure it's always created for standalone supplements
|
|
12
|
+
def base_identifier
|
|
13
|
+
@base_identifier || ensure_base_identifier
|
|
61
14
|
end
|
|
62
15
|
|
|
63
16
|
# Override number getter to trigger swap for standalone supplements
|
|
64
17
|
def number
|
|
65
|
-
# Guard against recursion in
|
|
18
|
+
# Guard against recursion in ensure_base_identifier
|
|
66
19
|
return @number if @ensuring_base
|
|
67
20
|
|
|
68
21
|
# For standalone supplements, trigger base creation first
|
|
69
|
-
|
|
22
|
+
ensure_base_identifier if @synthetic_base.nil? && publisher && part
|
|
70
23
|
|
|
71
24
|
if @synthetic_base
|
|
72
25
|
@supplement_number || @number
|
|
@@ -85,28 +38,24 @@ module Pubid
|
|
|
85
38
|
end
|
|
86
39
|
end
|
|
87
40
|
|
|
88
|
-
# Delegate publisher and copublishers to
|
|
89
|
-
# a base (a supplement carries the publisher of the document it
|
|
90
|
-
# supplements). Checking base first — rather than `@publisher || base` — is
|
|
91
|
-
# required now that the publisher attribute has an IEC default, which would
|
|
92
|
-
# otherwise mask the delegation.
|
|
41
|
+
# Delegate publisher and copublishers to base_identifier if not set
|
|
93
42
|
def publisher
|
|
94
43
|
return @publisher if @ensuring_base
|
|
95
44
|
|
|
96
|
-
|
|
45
|
+
@publisher || base_identifier&.publisher
|
|
97
46
|
end
|
|
98
47
|
|
|
99
48
|
def copublishers
|
|
100
49
|
return @copublishers if @ensuring_base
|
|
101
50
|
|
|
102
|
-
|
|
51
|
+
@copublishers || base_identifier&.copublishers
|
|
103
52
|
end
|
|
104
53
|
|
|
105
|
-
# Ensure we have a
|
|
54
|
+
# Ensure we have a base_identifier for standalone supplements
|
|
106
55
|
# Creates a synthetic base identifier from supplement attributes if needed
|
|
107
|
-
# Returns the
|
|
108
|
-
def
|
|
109
|
-
return @
|
|
56
|
+
# Returns the base_identifier
|
|
57
|
+
def ensure_base_identifier
|
|
58
|
+
return @base_identifier if @base_identifier
|
|
110
59
|
|
|
111
60
|
# Guard flag to prevent recursion in number getter
|
|
112
61
|
@ensuring_base = true
|
|
@@ -134,20 +83,21 @@ module Pubid
|
|
|
134
83
|
|
|
135
84
|
# Create typed_stage for the base - use "IS" (International Standard) type
|
|
136
85
|
# not the supplement type
|
|
86
|
+
require_relative "../components/typed_stage"
|
|
137
87
|
base.typed_stage = Pubid::Components::TypedStage.new(
|
|
138
88
|
abbr: ["IS"],
|
|
139
89
|
type_code: :is,
|
|
140
90
|
stage_code: :undated,
|
|
141
91
|
)
|
|
142
92
|
|
|
143
|
-
@
|
|
93
|
+
@base_identifier = base
|
|
144
94
|
|
|
145
95
|
# Store the supplement number for getter override
|
|
146
|
-
# The original number is the base number (moved to
|
|
96
|
+
# The original number is the base number (moved to base_identifier)
|
|
147
97
|
# The original part is the supplement number (what we want to return)
|
|
148
98
|
@supplement_number = supplement_number
|
|
149
99
|
|
|
150
|
-
@
|
|
100
|
+
@base_identifier
|
|
151
101
|
ensure
|
|
152
102
|
@ensuring_base = false
|
|
153
103
|
end
|
|
@@ -157,21 +107,54 @@ module Pubid
|
|
|
157
107
|
@synthetic_base ||= false
|
|
158
108
|
end
|
|
159
109
|
|
|
160
|
-
def to_s(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
110
|
+
def to_s(lang: :en, lang_single: false, with_edition: false)
|
|
111
|
+
# Ensure we have a base_identifier for standalone supplements
|
|
112
|
+
ensure_base_identifier
|
|
113
|
+
|
|
114
|
+
# For standalone supplements (synthetic base), use standalone format
|
|
115
|
+
# IEC/FDAM 60038-1, not IEC/IS 60038/FDAM1
|
|
116
|
+
if synthetic_base?
|
|
117
|
+
parts = []
|
|
118
|
+
|
|
119
|
+
# Publisher portion
|
|
120
|
+
if publisher
|
|
121
|
+
parts << publisher.body
|
|
122
|
+
parts << "/#{copublishers.map(&:body).join('/')}" if copublishers&.any?
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
# Supplement type and number with part (use base number)
|
|
126
|
+
abbr = typed_stage.abbr.first
|
|
127
|
+
number_str = base_identifier.number.to_s
|
|
128
|
+
number_str += "-#{number}" if number # supplement number
|
|
129
|
+
number_str += "-#{subpart}" if subpart
|
|
130
|
+
parts << "#{abbr} #{number_str}"
|
|
131
|
+
|
|
132
|
+
result = parts.join("/")
|
|
133
|
+
result += ":#{date.year}" if date
|
|
134
|
+
result += " #{edition}" if edition&.number
|
|
135
|
+
result
|
|
136
|
+
elsif base_identifier
|
|
137
|
+
# Normal supplement with real base identifier
|
|
138
|
+
# Format: "IEC 60050-102:2007/AMD1:2017"
|
|
139
|
+
parts = []
|
|
140
|
+
parts << base_identifier.to_s(lang: lang, lang_single: lang_single,
|
|
141
|
+
with_edition: with_edition)
|
|
142
|
+
|
|
143
|
+
# Supplement notation
|
|
144
|
+
# Use uppercase abbreviation without space: /AMD1, /COR1
|
|
145
|
+
abbr = typed_stage.abbr.first.upcase
|
|
146
|
+
supp_part = "/#{abbr}#{number}"
|
|
147
|
+
supp_part += ":#{date.year}" if date
|
|
148
|
+
parts << supp_part
|
|
149
|
+
|
|
150
|
+
# Add edition if present
|
|
151
|
+
parts << " #{edition}" if edition&.number
|
|
152
|
+
|
|
153
|
+
parts.join
|
|
154
|
+
else
|
|
155
|
+
# Fallback - shouldn't happen
|
|
156
|
+
super
|
|
157
|
+
end
|
|
175
158
|
end
|
|
176
159
|
end
|
|
177
160
|
end
|
|
@@ -2,243 +2,191 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Iec
|
|
5
|
-
# Generates IEC URNs in the positional format used as ground truth by
|
|
6
|
-
# relaton-data-iec:
|
|
7
|
-
#
|
|
8
|
-
# urn:iec:std:{authority}:{number}[-{part}[-{subpart}]]
|
|
9
|
-
# :{date}:{stage-or-type}:{deliverable}:{language}{adjuncts}
|
|
10
|
-
#
|
|
11
|
-
# e.g. +urn:iec:std:iec:60050-102:2007:::+. Absent trailing slots are
|
|
12
|
-
# emitted as empty fields. The all-parts series URN is the one exception:
|
|
13
|
-
# a bare series omits the language slot (8 fields).
|
|
14
|
-
#
|
|
15
|
-
# This used to be a port of relaton-iec's +code_to_urn+, which regex-scraped
|
|
16
|
-
# +identifier.to_s+. Three defects followed from reading the printed form:
|
|
17
|
-
# the stage was folded into the authority slot (+urn:iec:std:iec-np:...+),
|
|
18
|
-
# the edition was never emitted, and the regex was unanchored, so any type
|
|
19
|
-
# token outside its hard-coded list consumed the publisher instead
|
|
20
|
-
# (+IEC/DTS 62271-1+ became +urn:iec:std:dts:62271-1::::+, and every
|
|
21
|
-
# +IECEE TRF ...+ keyed +urn:iec:std:trf:...+). The generator now reads the
|
|
22
|
-
# identifier's own components. The slot ORDER is unchanged, because the
|
|
23
|
-
# published corpus uses it. See issue #360 item 4.
|
|
24
5
|
class UrnGenerator < Pubid::UrnGenerator::Base
|
|
25
|
-
URN_CONTEXT = Rendering::RenderingContext.urn.freeze
|
|
26
|
-
private_constant :URN_CONTEXT
|
|
27
|
-
|
|
28
|
-
# Type codes that occupy the type slot. `is` and `trf` render empty
|
|
29
|
-
# there, as they always have. `tec` and `wp` never appear in the corpus
|
|
30
|
-
# but the legacy grammar accepted them, so they stay recognised.
|
|
31
|
-
TYPE_SLOT_CODES = %w[tr ts pas srd guide tec wp].freeze
|
|
32
|
-
|
|
33
|
-
# Deliverable markers occupying the deliverable slot. "ser" reaches this
|
|
34
|
-
# list as a spelled-out VAP code ("IEC 60034:2026 SER"), which is not the
|
|
35
|
-
# same thing as the `all_parts` series form handled below.
|
|
36
|
-
DELIVERABLES = %w[cmv csv exv prv rlv ser].freeze
|
|
37
|
-
|
|
38
|
-
# Supplement classes that contribute an adjunct, and the token each one
|
|
39
|
-
# writes into it.
|
|
40
|
-
ADJUNCT_TOKENS = {
|
|
41
|
-
"Amendment" => "amd",
|
|
42
|
-
"Corrigendum" => "cor",
|
|
43
|
-
"InterpretationSheet" => "ish",
|
|
44
|
-
}.freeze
|
|
45
|
-
|
|
46
6
|
def generate
|
|
47
|
-
|
|
48
|
-
|
|
7
|
+
case identifier
|
|
8
|
+
when Identifiers::VapIdentifier
|
|
9
|
+
generate_vap_urn
|
|
10
|
+
when Identifiers::FragmentIdentifier
|
|
11
|
+
generate_fragment_urn
|
|
12
|
+
when Identifiers::SheetIdentifier
|
|
13
|
+
generate_sheet_urn
|
|
14
|
+
when SupplementIdentifier
|
|
15
|
+
generate_supplement_urn
|
|
16
|
+
else
|
|
17
|
+
generate_base_urn
|
|
18
|
+
end
|
|
19
|
+
end
|
|
49
20
|
|
|
50
|
-
|
|
51
|
-
return nil if num.nil? || num.empty?
|
|
21
|
+
private
|
|
52
22
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
language = language_slot
|
|
57
|
-
slots << language unless bare_series?(slots, adjuncts, language)
|
|
23
|
+
def generate_vap_urn
|
|
24
|
+
base_gen = self.class.new(identifier.base_identifier)
|
|
25
|
+
base_urn = base_gen.generate
|
|
58
26
|
|
|
59
|
-
|
|
60
|
-
end
|
|
27
|
+
base_part = base_urn.sub(/^urn:iec:std:/, "")
|
|
61
28
|
|
|
62
|
-
|
|
29
|
+
parts = ["urn", "iec", "std", base_part]
|
|
63
30
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
# A CISPR test report form carries no number of its own — the document it
|
|
69
|
-
# reports on sits in `cispr_identifier`, and that is what the URN has
|
|
70
|
-
# always named.
|
|
71
|
-
def document
|
|
72
|
-
doc = identifier.respond_to?(:root) ? identifier.root : identifier
|
|
73
|
-
return doc if doc.nil? || number_segment(doc)
|
|
74
|
-
|
|
75
|
-
maybe_of(doc, :cispr_identifier) || doc
|
|
76
|
-
end
|
|
31
|
+
if identifier.vap_suffix
|
|
32
|
+
suffix = identifier.vap_suffix.to_s
|
|
33
|
+
parts << "vap.#{suffix.downcase}"
|
|
34
|
+
end
|
|
77
35
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
# migration first.
|
|
84
|
-
def authority(doc)
|
|
85
|
-
publishers = [doc.publisher] + Array(doc.copublishers)
|
|
86
|
-
publishers.compact.map { |p| p.body.to_s.split(/\s+/).last.to_s }
|
|
87
|
-
.reject(&:empty?).join("-")
|
|
36
|
+
if identifier.edition&.number
|
|
37
|
+
parts << "ed.#{identifier.edition.number}"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
parts.join(":")
|
|
88
41
|
end
|
|
89
42
|
|
|
90
|
-
def
|
|
91
|
-
|
|
43
|
+
def generate_fragment_urn
|
|
44
|
+
base_gen = self.class.new(identifier.base_identifier)
|
|
45
|
+
base_urn = base_gen.generate
|
|
92
46
|
|
|
93
|
-
|
|
94
|
-
.compact.map(&:to_s).reject(&:empty?).join("-")
|
|
95
|
-
return nil if segment.empty?
|
|
47
|
+
base_part = base_urn.sub(/^urn:iec:std:/, "")
|
|
96
48
|
|
|
97
|
-
|
|
98
|
-
# carries no spaces, so they become hyphens.
|
|
99
|
-
segment.gsub(/\s+/, "-")
|
|
100
|
-
end
|
|
49
|
+
parts = ["urn", "iec", "std", base_part]
|
|
101
50
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
51
|
+
if identifier.fragment_number
|
|
52
|
+
frag_type = identifier.base_identifier.is_a?(Identifiers::Corrigendum) ? "fragc" : "frag"
|
|
53
|
+
parts << "#{frag_type}.#{identifier.fragment_number}"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
if identifier.edition&.number
|
|
57
|
+
parts << "ed.#{identifier.edition.number}"
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
parts.join(":")
|
|
108
61
|
end
|
|
109
62
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
# types: dropping the type would make a draft TS, a draft TR and a draft
|
|
114
|
-
# International Standard collide, and `parse_urn` would resolve every one
|
|
115
|
-
# of them to an International Standard.
|
|
116
|
-
def stage_or_type_slot(doc)
|
|
117
|
-
type = type_token(doc)
|
|
118
|
-
stage = stage_token(doc)
|
|
63
|
+
def generate_sheet_urn
|
|
64
|
+
base_gen = self.class.new(identifier.base_identifier)
|
|
65
|
+
base_urn = base_gen.generate
|
|
119
66
|
|
|
120
|
-
|
|
67
|
+
base_part = base_urn.sub(/^urn:iec:std:/, "")
|
|
121
68
|
|
|
122
|
-
[
|
|
123
|
-
end
|
|
69
|
+
parts = ["urn", "iec", "std", base_part]
|
|
124
70
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
TYPE_SLOT_CODES.include?(code) ? code : ""
|
|
129
|
-
end
|
|
71
|
+
if identifier.sheet_number
|
|
72
|
+
parts << "sheet.#{identifier.sheet_number}"
|
|
73
|
+
end
|
|
130
74
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
stage = maybe_of(doc, :typed_stage)&.to_stage || maybe_of(doc, :stage)
|
|
135
|
-
harmonized = stage&.harmonized_stages&.first.to_s
|
|
136
|
-
return nil if harmonized.empty?
|
|
137
|
-
return nil if published_stage?(stage)
|
|
75
|
+
if identifier.year
|
|
76
|
+
parts << identifier.year
|
|
77
|
+
end
|
|
138
78
|
|
|
139
|
-
"
|
|
79
|
+
parts.join(":")
|
|
140
80
|
end
|
|
141
81
|
|
|
142
|
-
def
|
|
143
|
-
|
|
144
|
-
end
|
|
82
|
+
def generate_base_urn
|
|
83
|
+
parts = ["urn", "iec", "std"]
|
|
145
84
|
|
|
146
|
-
|
|
147
|
-
# is none.
|
|
148
|
-
def deliverable_slot
|
|
149
|
-
return "ser" if maybe_of(identifier, :all_parts)
|
|
85
|
+
parts << publisher_component
|
|
150
86
|
|
|
151
|
-
|
|
152
|
-
|
|
87
|
+
type_comp = type_component
|
|
88
|
+
parts << type_comp if type_comp
|
|
153
89
|
|
|
154
|
-
|
|
155
|
-
|
|
90
|
+
docnumber = docnumber_component
|
|
91
|
+
parts << docnumber if docnumber
|
|
156
92
|
|
|
157
|
-
|
|
158
|
-
|
|
93
|
+
date_str = urn_date_string(identifier.date)
|
|
94
|
+
parts << date_str if date_str
|
|
159
95
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
def vap_codes
|
|
164
|
-
codes = find_down(:vap)
|
|
165
|
-
return "" unless codes
|
|
96
|
+
if identifier.stage_iteration
|
|
97
|
+
parts << "iter.#{identifier.stage_iteration}"
|
|
98
|
+
end
|
|
166
99
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
100
|
+
if identifier.edition&.number
|
|
101
|
+
parts << "ed.#{identifier.edition.number}"
|
|
102
|
+
end
|
|
170
103
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
id = identifier
|
|
175
|
-
while id
|
|
176
|
-
value = maybe_of(id, attribute)
|
|
177
|
-
return value unless value.nil? ||
|
|
178
|
-
(value.respond_to?(:empty?) && value.empty?)
|
|
179
|
-
|
|
180
|
-
id = maybe_of(id, :base) ||
|
|
181
|
-
Array(maybe_of(id, :identifiers)).first
|
|
104
|
+
if identifier.languages&.any?
|
|
105
|
+
lang_codes = identifier.languages.map(&:code).join(",")
|
|
106
|
+
parts << lang_codes
|
|
182
107
|
end
|
|
183
|
-
|
|
108
|
+
|
|
109
|
+
parts.join(":")
|
|
184
110
|
end
|
|
185
111
|
|
|
186
|
-
def
|
|
187
|
-
|
|
188
|
-
|
|
112
|
+
def generate_supplement_urn
|
|
113
|
+
current = identifier
|
|
114
|
+
supplement_chain = []
|
|
115
|
+
|
|
116
|
+
while current.is_a?(SupplementIdentifier)
|
|
117
|
+
supplement_chain.unshift(current)
|
|
118
|
+
current = current.base_identifier
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
base_id = current
|
|
122
|
+
|
|
123
|
+
parts = ["urn", "iec", "std"]
|
|
124
|
+
|
|
125
|
+
if base_id
|
|
126
|
+
parts << publisher_component(base_id)
|
|
127
|
+
|
|
128
|
+
type_comp = type_component(base_id)
|
|
129
|
+
parts << type_comp if type_comp
|
|
130
|
+
|
|
131
|
+
docnumber = docnumber_component(base_id)
|
|
132
|
+
parts << docnumber if docnumber
|
|
133
|
+
|
|
134
|
+
base_date_str = urn_date_string(base_id.date)
|
|
135
|
+
parts << base_date_str if base_date_str
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
supplement_chain.each do |supp|
|
|
139
|
+
suppl_type = supp.typed_stage&.type_code&.to_s
|
|
140
|
+
parts << suppl_type if suppl_type
|
|
189
141
|
|
|
190
|
-
|
|
142
|
+
supp_date_str = urn_date_string(supp.date)
|
|
143
|
+
parts << supp_date_str if supp_date_str
|
|
144
|
+
|
|
145
|
+
if supp.number
|
|
146
|
+
parts << "v#{supp.number}"
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
if supp.stage_iteration
|
|
150
|
+
parts << "iter.#{supp.stage_iteration}"
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
parts.join(":")
|
|
191
155
|
end
|
|
192
156
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
157
|
+
def publisher_component(id = identifier)
|
|
158
|
+
return "iec" unless id&.publisher
|
|
159
|
+
|
|
160
|
+
copubs = id.copublishers || []
|
|
161
|
+
|
|
162
|
+
publishers = [id.publisher] + copubs
|
|
163
|
+
publishers.map(&:to_s).map(&:downcase).join("-")
|
|
200
164
|
end
|
|
201
165
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
case id.class.name.split("::").last
|
|
210
|
-
when "ConsolidatedIdentifier"
|
|
211
|
-
members = Array(id.identifiers)
|
|
212
|
-
adjunct_slots(members.first) +
|
|
213
|
-
members.drop(1).flat_map { |m| adjunct_fields(m, plus: true) }
|
|
214
|
-
when *ADJUNCT_TOKENS.keys
|
|
215
|
-
adjunct_slots(id.base) + adjunct_fields(id, plus: false)
|
|
216
|
-
else
|
|
217
|
-
adjunct_slots(id.respond_to?(:base) ? id.base : nil)
|
|
218
|
-
end
|
|
166
|
+
def type_component(id = identifier)
|
|
167
|
+
return nil unless id&.typed_stage
|
|
168
|
+
|
|
169
|
+
type_code = id.typed_stage.type_code
|
|
170
|
+
return nil if !type_code || type_code.to_s == "is"
|
|
171
|
+
|
|
172
|
+
type_code.to_s
|
|
219
173
|
end
|
|
220
174
|
|
|
221
|
-
def
|
|
222
|
-
|
|
223
|
-
return adjunct_slots(id.respond_to?(:base) ? id.base : nil) unless token
|
|
175
|
+
def docnumber_component(id = identifier)
|
|
176
|
+
return nil unless id&.number
|
|
224
177
|
|
|
225
|
-
|
|
226
|
-
|
|
178
|
+
result = id.number.to_s
|
|
179
|
+
result += "-#{id.part}" if id.part
|
|
180
|
+
result += "-#{id.subpart}" if id.subpart
|
|
181
|
+
result
|
|
227
182
|
end
|
|
228
183
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
# empty URN slot instead of failing loudly.
|
|
236
|
-
def maybe_of(id, attribute)
|
|
237
|
-
return nil unless id.respond_to?(attribute)
|
|
238
|
-
|
|
239
|
-
id.public_send(attribute)
|
|
240
|
-
rescue NoMethodError
|
|
241
|
-
nil
|
|
184
|
+
def urn_date_string(date)
|
|
185
|
+
return nil unless date
|
|
186
|
+
|
|
187
|
+
s = date.year.to_s
|
|
188
|
+
s += "-#{date.month}" if date.month
|
|
189
|
+
s
|
|
242
190
|
end
|
|
243
191
|
end
|
|
244
192
|
end
|