pubid 2.0.0.alpha.10 → 2.0.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +51 -54
- data/data/iec/update_codes.yaml +0 -3
- data/data/ieee/update_codes.yaml +1 -107
- data/data/nist/update_codes.yaml +0 -35
- data/lib/pubid/amca/builder.rb +6 -6
- data/lib/pubid/amca/identifier.rb +16 -2
- data/lib/pubid/amca/identifiers/base.rb +46 -74
- data/lib/pubid/amca/identifiers/interpretation.rb +30 -17
- data/lib/pubid/amca/identifiers/publication.rb +27 -14
- data/lib/pubid/amca/identifiers/standard.rb +5 -3
- data/lib/pubid/amca/identifiers.rb +1 -0
- data/lib/pubid/amca/parser.rb +1 -1
- data/lib/pubid/amca/scheme.rb +16 -0
- data/lib/pubid/amca/single_identifier.rb +24 -1
- data/lib/pubid/amca/urn_generator.rb +3 -4
- data/lib/pubid/amca.rb +3 -50
- data/lib/pubid/ansi/builder.rb +5 -7
- data/lib/pubid/ansi/identifier.rb +1 -19
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +1 -2
- data/lib/pubid/ansi/identifiers/standard.rb +3 -2
- data/lib/pubid/ansi/parser.rb +1 -1
- data/lib/pubid/ansi/scheme.rb +15 -0
- data/lib/pubid/ansi/single_identifier.rb +31 -2
- data/lib/pubid/ansi/urn_generator.rb +38 -3
- data/lib/pubid/ansi.rb +6 -47
- data/lib/pubid/api/builder.rb +72 -45
- data/lib/pubid/api/identifier.rb +9 -30
- data/lib/pubid/api/identifiers/base.rb +14 -2
- data/lib/pubid/api/identifiers/bulletin.rb +2 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +2 -0
- data/lib/pubid/api/identifiers/mpms.rb +28 -10
- data/lib/pubid/api/identifiers/publication.rb +2 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +2 -0
- data/lib/pubid/api/identifiers/specification.rb +2 -0
- data/lib/pubid/api/identifiers/standard.rb +2 -0
- data/lib/pubid/api/identifiers/technical_report.rb +2 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +16 -0
- data/lib/pubid/api/parser.rb +1 -1
- data/lib/pubid/api/scheme.rb +66 -0
- data/lib/pubid/api/single_identifier.rb +32 -10
- data/lib/pubid/api/urn_generator.rb +18 -0
- data/lib/pubid/api.rb +5 -56
- data/lib/pubid/ashrae/builder.rb +35 -56
- data/lib/pubid/ashrae/identifier.rb +16 -6
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +11 -7
- data/lib/pubid/ashrae/identifiers/addendum.rb +20 -9
- data/lib/pubid/ashrae/identifiers/base.rb +15 -111
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +16 -8
- data/lib/pubid/ashrae/identifiers/errata.rb +10 -9
- data/lib/pubid/ashrae/identifiers/guideline.rb +0 -3
- data/lib/pubid/ashrae/identifiers/interpretation.rb +10 -16
- data/lib/pubid/ashrae/identifiers/standard.rb +0 -3
- data/lib/pubid/ashrae/identifiers.rb +1 -0
- data/lib/pubid/ashrae/parser.rb +16 -40
- data/lib/pubid/ashrae/scheme.rb +53 -0
- data/lib/pubid/ashrae/single_identifier.rb +14 -1
- data/lib/pubid/ashrae/supplement_identifier.rb +6 -21
- data/lib/pubid/ashrae/urn_generator.rb +10 -8
- data/lib/pubid/ashrae.rb +2 -58
- data/lib/pubid/asme/builder.rb +2 -11
- data/lib/pubid/asme/components/code.rb +2 -10
- data/lib/pubid/asme/identifier.rb +0 -9
- data/lib/pubid/asme/identifiers/base.rb +60 -0
- data/lib/pubid/asme/identifiers/standard.rb +2 -86
- data/lib/pubid/asme/parser.rb +1 -1
- data/lib/pubid/asme/scheme.rb +37 -0
- data/lib/pubid/asme/single_identifier.rb +2 -11
- data/lib/pubid/asme/urn_generator.rb +2 -2
- data/lib/pubid/asme.rb +1 -47
- data/lib/pubid/astm/builder.rb +3 -10
- data/lib/pubid/astm/components/code.rb +0 -9
- data/lib/pubid/astm/identifier.rb +0 -9
- data/lib/pubid/astm/identifiers/adjunct.rb +9 -16
- data/lib/pubid/astm/identifiers/data_series.rb +14 -2
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +34 -25
- data/lib/pubid/astm/identifiers/manual.rb +25 -8
- data/lib/pubid/astm/identifiers/monograph.rb +14 -2
- data/lib/pubid/astm/identifiers/research_report.rb +5 -8
- data/lib/pubid/astm/identifiers/standard.rb +37 -8
- data/lib/pubid/astm/identifiers/technical_report.rb +13 -2
- data/lib/pubid/astm/identifiers/work_in_progress.rb +10 -1
- data/lib/pubid/astm/parser.rb +1 -1
- data/lib/pubid/astm/scheme.rb +55 -0
- data/lib/pubid/astm/single_identifier.rb +10 -32
- data/lib/pubid/astm/urn_generator.rb +5 -7
- data/lib/pubid/astm.rb +27 -44
- data/lib/pubid/bsi/builder.rb +107 -119
- data/lib/pubid/bsi/identifier.rb +25 -4
- data/lib/pubid/bsi/identifiers/addendum_document.rb +37 -3
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +47 -19
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +39 -8
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +55 -2
- data/lib/pubid/bsi/identifiers/amendment.rb +22 -30
- data/lib/pubid/bsi/identifiers/base.rb +11 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +7 -1
- data/lib/pubid/bsi/identifiers/british_standard.rb +1 -2
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +87 -13
- data/lib/pubid/bsi/identifiers/committee_document.rb +17 -10
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +87 -19
- data/lib/pubid/bsi/identifiers/corrigendum.rb +10 -26
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +36 -0
- data/lib/pubid/bsi/identifiers/disc.rb +29 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +46 -2
- data/lib/pubid/bsi/identifiers/electronic_book.rb +38 -2
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +21 -10
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +47 -0
- data/lib/pubid/bsi/identifiers/flex.rb +34 -3
- data/lib/pubid/bsi/identifiers/handbook.rb +17 -1
- data/lib/pubid/bsi/identifiers/index.rb +32 -0
- data/lib/pubid/bsi/identifiers/method.rb +41 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +29 -4
- data/lib/pubid/bsi/identifiers/practice_guide.rb +7 -1
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +54 -2
- data/lib/pubid/bsi/identifiers/published_document.rb +54 -2
- data/lib/pubid/bsi/identifiers/section.rb +30 -0
- data/lib/pubid/bsi/identifiers/set.rb +20 -14
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -10
- data/lib/pubid/bsi/identifiers/supplement_document.rb +25 -3
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +46 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +47 -2
- data/lib/pubid/bsi/identifiers/test_method.rb +32 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +22 -7
- data/lib/pubid/bsi/identifiers.rb +1 -0
- data/lib/pubid/bsi/parser.rb +6 -20
- data/lib/pubid/bsi/scheme.rb +243 -0
- data/lib/pubid/bsi/single_identifier.rb +82 -94
- data/lib/pubid/bsi/urn_generator.rb +5 -13
- data/lib/pubid/bsi.rb +2 -252
- data/lib/pubid/builder/base.rb +13 -62
- data/lib/pubid/bundled_identifier.rb +10 -18
- data/lib/pubid/ccsds/builder.rb +4 -5
- data/lib/pubid/ccsds/identifier.rb +3 -63
- data/lib/pubid/ccsds/identifiers/base.rb +51 -14
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +8 -9
- data/lib/pubid/ccsds/parser.rb +3 -5
- data/lib/pubid/ccsds/scheme.rb +57 -0
- data/lib/pubid/ccsds/single_identifier.rb +3 -6
- data/lib/pubid/ccsds/supplement_identifier.rb +13 -17
- data/lib/pubid/ccsds/urn_generator.rb +6 -6
- data/lib/pubid/ccsds.rb +1 -44
- data/lib/pubid/cen_cenelec/builder.rb +29 -61
- data/lib/pubid/cen_cenelec/identifier.rb +5 -28
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +4 -9
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +12 -2
- data/lib/pubid/cen_cenelec/identifiers/base.rb +46 -5
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +27 -6
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +17 -2
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +4 -62
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +7 -20
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +6 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/parser.rb +1 -1
- data/lib/pubid/cen_cenelec/scheme.rb +164 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +91 -10
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +7 -6
- data/lib/pubid/cen_cenelec/urn_generator.rb +7 -7
- data/lib/pubid/cen_cenelec.rb +1 -188
- data/lib/pubid/cie/builder.rb +24 -149
- data/lib/pubid/cie/components/code.rb +72 -0
- data/lib/pubid/cie/identifier.rb +5 -20
- data/lib/pubid/cie/identifiers/bundle.rb +5 -35
- data/lib/pubid/cie/identifiers/conference.rb +6 -11
- data/lib/pubid/cie/identifiers/corrigendum.rb +23 -17
- data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
- data/lib/pubid/cie/identifiers/identical.rb +9 -9
- data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
- data/lib/pubid/cie/identifiers/standard.rb +8 -43
- data/lib/pubid/cie/identifiers/supplement.rb +25 -27
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +3 -7
- data/lib/pubid/cie/identifiers.rb +0 -2
- data/lib/pubid/cie/parser.rb +6 -55
- data/lib/pubid/cie/scheme.rb +64 -0
- data/lib/pubid/cie/single_identifier.rb +5 -44
- data/lib/pubid/cie/supplement_identifier.rb +16 -29
- data/lib/pubid/cie/urn_generator.rb +8 -11
- data/lib/pubid/cie.rb +2 -57
- data/lib/pubid/components/code.rb +8 -22
- data/lib/pubid/components/date.rb +18 -41
- data/lib/pubid/components/edition.rb +6 -9
- data/lib/pubid/components/language.rb +4 -6
- data/lib/pubid/components/locality.rb +1 -10
- data/lib/pubid/components/publisher.rb +6 -9
- data/lib/pubid/components/stage.rb +14 -5
- data/lib/pubid/components/type.rb +15 -5
- data/lib/pubid/components/typed_stage.rb +8 -11
- data/lib/pubid/components.rb +0 -4
- data/lib/pubid/core/update_codes.rb +7 -28
- data/lib/pubid/csa/builder.rb +48 -48
- data/lib/pubid/csa/composite_identifier.rb +7 -18
- data/lib/pubid/csa/identifier.rb +78 -191
- data/lib/pubid/csa/identifiers/base.rb +123 -0
- data/lib/pubid/csa/identifiers/bundled.rb +9 -25
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
- data/lib/pubid/csa/identifiers/cec.rb +103 -40
- data/lib/pubid/csa/identifiers/combined.rb +69 -97
- data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
- data/lib/pubid/csa/identifiers/package.rb +4 -4
- data/lib/pubid/csa/identifiers/series.rb +104 -0
- data/lib/pubid/csa/parser.rb +8 -12
- data/lib/pubid/csa/scheme.rb +44 -0
- data/lib/pubid/csa/single_identifier.rb +5 -94
- data/lib/pubid/csa/urn_generator.rb +2 -9
- data/lib/pubid/csa/wrapper_identifier.rb +10 -43
- data/lib/pubid/csa.rb +1 -56
- data/lib/pubid/etsi/builder.rb +4 -13
- data/lib/pubid/etsi/components/code.rb +9 -10
- data/lib/pubid/etsi/components/version.rb +5 -0
- data/lib/pubid/etsi/identifier.rb +12 -2
- data/lib/pubid/etsi/identifiers/base.rb +24 -60
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +4 -207
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +14 -46
- data/lib/pubid/etsi/identifiers.rb +1 -0
- data/lib/pubid/etsi/parser.rb +3 -9
- data/lib/pubid/etsi/scheme.rb +42 -0
- data/lib/pubid/etsi.rb +2 -52
- data/lib/pubid/export/data_class_exporter.rb +59 -0
- data/lib/pubid/export/exporter.rb +47 -6
- data/lib/pubid/export/flavor_exporter.rb +276 -124
- data/lib/pubid/export/ieee_exporter.rb +78 -0
- data/lib/pubid/export/itu_exporter.rb +66 -0
- data/lib/pubid/export/nist_exporter.rb +64 -0
- data/lib/pubid/export/registry_exporter.rb +90 -0
- data/lib/pubid/export/scheme_exporter.rb +70 -0
- data/lib/pubid/export.rb +6 -0
- data/lib/pubid/identifier.rb +37 -920
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/identifier_registry.rb +198 -0
- data/lib/pubid/idf/builder.rb +7 -7
- data/lib/pubid/idf/identifier.rb +13 -23
- data/lib/pubid/idf/identifiers/amendment.rb +1 -2
- data/lib/pubid/idf/identifiers/corrigendum.rb +1 -2
- data/lib/pubid/idf/identifiers/international_standard.rb +1 -2
- data/lib/pubid/idf/identifiers/reviewed_method.rb +1 -2
- data/lib/pubid/idf/parser.rb +5 -6
- data/lib/pubid/idf/scheme.rb +61 -0
- data/lib/pubid/idf/supplement_identifier.rb +13 -5
- data/lib/pubid/idf/urn_generator.rb +39 -4
- data/lib/pubid/idf.rb +1 -65
- data/lib/pubid/iec/builder.rb +91 -92
- data/lib/pubid/iec/components/code.rb +32 -9
- data/lib/pubid/iec/components/publisher.rb +1 -1
- data/lib/pubid/iec/identifier.rb +8 -328
- data/lib/pubid/iec/identifiers/amendment.rb +5 -8
- data/lib/pubid/iec/identifiers/base.rb +31 -7
- data/lib/pubid/iec/identifiers/component_specification.rb +13 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +12 -1
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +30 -29
- data/lib/pubid/iec/identifiers/corrigendum.rb +5 -4
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +36 -43
- data/lib/pubid/iec/identifiers/guide.rb +18 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +9 -24
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +3 -2
- data/lib/pubid/iec/identifiers/operational_document.rb +13 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +15 -2
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +24 -26
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +13 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +13 -2
- data/lib/pubid/iec/identifiers/technical_report.rb +21 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +21 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +12 -1
- data/lib/pubid/iec/identifiers/test_report_form.rb +46 -3
- data/lib/pubid/iec/identifiers/vap_identifier.rb +34 -33
- data/lib/pubid/iec/identifiers/white_paper.rb +13 -3
- data/lib/pubid/iec/identifiers/working_document.rb +60 -26
- data/lib/pubid/iec/parser.rb +42 -73
- data/lib/pubid/iec/scheme.rb +71 -0
- data/lib/pubid/iec/single_identifier.rb +23 -15
- data/lib/pubid/iec/supplement_identifier.rb +67 -84
- data/lib/pubid/iec/urn_generator.rb +143 -195
- data/lib/pubid/iec/urn_parser.rb +246 -85
- data/lib/pubid/iec.rb +66 -45
- data/lib/pubid/ieee/aiee/builder.rb +3 -17
- data/lib/pubid/ieee/aiee/identifier.rb +62 -46
- data/lib/pubid/ieee/aiee/parser.rb +1 -1
- data/lib/pubid/ieee/builder.rb +81 -398
- data/lib/pubid/ieee/components/code.rb +0 -8
- data/lib/pubid/ieee/components/draft.rb +0 -54
- data/lib/pubid/ieee/components/relationship.rb +149 -5
- data/lib/pubid/ieee/identifier.rb +11 -3
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +14 -62
- data/lib/pubid/ieee/identifiers/base.rb +547 -340
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +12 -6
- data/lib/pubid/ieee/identifiers/corrigendum.rb +12 -15
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +13 -24
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +7 -3
- data/lib/pubid/ieee/identifiers/dual_published.rb +7 -58
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +11 -99
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +11 -25
- data/lib/pubid/ieee/identifiers/joint_development.rb +15 -66
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +24 -58
- data/lib/pubid/ieee/identifiers/nesc/base.rb +19 -90
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +5 -20
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +5 -16
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +2 -11
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +3 -18
- data/lib/pubid/ieee/identifiers/nesc.rb +0 -1
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +9 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +6 -29
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +11 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +39 -4
- data/lib/pubid/ieee/identifiers/standard.rb +2 -5
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +7 -26
- data/lib/pubid/ieee/identifiers.rb +1 -2
- data/lib/pubid/ieee/ire/builder.rb +6 -7
- data/lib/pubid/ieee/ire/identifier.rb +33 -48
- data/lib/pubid/ieee/ire/parser.rb +1 -1
- data/lib/pubid/ieee/nesc/builder.rb +20 -33
- data/lib/pubid/ieee/nesc/parser.rb +15 -16
- data/lib/pubid/ieee/parser.rb +44 -462
- data/lib/pubid/ieee/scheme.rb +90 -0
- data/lib/pubid/ieee/typed_stages.rb +1 -12
- data/lib/pubid/ieee/urn_generator.rb +8 -35
- data/lib/pubid/ieee.rb +2 -133
- data/lib/pubid/ieee_debug.rb +1 -0
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +17 -5
- data/lib/pubid/iho/identifiers/base.rb +30 -64
- data/lib/pubid/iho/identifiers/bibliographic.rb +5 -1
- data/lib/pubid/iho/identifiers/circular_letter.rb +5 -1
- data/lib/pubid/iho/identifiers/miscellaneous.rb +5 -1
- data/lib/pubid/iho/identifiers/publication.rb +5 -1
- data/lib/pubid/iho/identifiers/standard.rb +5 -1
- data/lib/pubid/iho/identifiers.rb +1 -0
- data/lib/pubid/iho/parser.rb +4 -4
- data/lib/pubid/iho/scheme.rb +29 -0
- data/lib/pubid/iho/urn_generator.rb +3 -3
- data/lib/pubid/iho.rb +3 -59
- data/lib/pubid/iso/builder.rb +57 -68
- data/lib/pubid/iso/bundled_identifier.rb +3 -56
- data/lib/pubid/iso/combined_identifier.rb +4 -6
- data/lib/pubid/iso/components/code.rb +19 -7
- data/lib/pubid/iso/components/publisher.rb +8 -10
- data/lib/pubid/iso/components.rb +4 -2
- data/lib/pubid/iso/identifier.rb +11 -260
- data/lib/pubid/iso/identifiers/addendum.rb +6 -9
- data/lib/pubid/iso/identifiers/amendment.rb +4 -8
- data/lib/pubid/iso/identifiers/base.rb +115 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +1 -0
- data/lib/pubid/iso/identifiers/directives.rb +2 -8
- data/lib/pubid/iso/identifiers/directives_supplement.rb +26 -55
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +1 -0
- data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
- data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +4 -10
- data/lib/pubid/iso/identifiers/pas.rb +2 -2
- data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
- data/lib/pubid/iso/identifiers/supplement.rb +3 -11
- data/lib/pubid/iso/identifiers/tc_document.rb +15 -44
- data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
- data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
- data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
- data/lib/pubid/iso/identifiers.rb +1 -0
- data/lib/pubid/iso/parser.rb +19 -43
- data/lib/pubid/iso/scheme.rb +187 -0
- data/lib/pubid/iso/single_identifier.rb +7 -6
- data/lib/pubid/iso/supplement_identifier.rb +3 -29
- data/lib/pubid/iso/urn_generator.rb +177 -78
- data/lib/pubid/iso/urn_parser.rb +10 -29
- data/lib/pubid/iso.rb +2 -188
- data/lib/pubid/itu/builder.rb +41 -230
- data/lib/pubid/itu/components/code.rb +12 -57
- data/lib/pubid/itu/components/sector.rb +4 -15
- data/lib/pubid/itu/components/series.rb +4 -0
- data/lib/pubid/itu/identifier.rb +51 -2
- data/lib/pubid/itu/identifiers/amendment.rb +31 -7
- data/lib/pubid/itu/identifiers/annex.rb +4 -13
- data/lib/pubid/itu/identifiers/base.rb +128 -456
- data/lib/pubid/itu/identifiers/combined_identifier.rb +25 -99
- data/lib/pubid/itu/identifiers/corrigendum.rb +25 -16
- data/lib/pubid/itu/identifiers/recommendation.rb +4 -3
- data/lib/pubid/itu/identifiers/special_publication.rb +3 -3
- data/lib/pubid/itu/identifiers/supplement.rb +16 -119
- data/lib/pubid/itu/identifiers.rb +1 -10
- data/lib/pubid/itu/model.rb +1 -1
- data/lib/pubid/itu/parser.rb +27 -481
- data/lib/pubid/itu/scheme.rb +174 -0
- data/lib/pubid/itu/urn_generator.rb +6 -36
- data/lib/pubid/itu.rb +2 -58
- data/lib/pubid/jcgm/builder.rb +19 -37
- data/lib/pubid/jcgm/identifier.rb +0 -10
- data/lib/pubid/jcgm/identifiers/amendment.rb +11 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +15 -3
- data/lib/pubid/jcgm/identifiers.rb +0 -2
- data/lib/pubid/jcgm/parser.rb +7 -74
- data/lib/pubid/jcgm/scheme.rb +60 -0
- data/lib/pubid/jcgm/single_identifier.rb +14 -84
- data/lib/pubid/jcgm/supplement_identifier.rb +4 -39
- data/lib/pubid/jcgm/urn_generator.rb +19 -25
- data/lib/pubid/jcgm.rb +2 -57
- data/lib/pubid/jis/builder.rb +52 -44
- data/lib/pubid/jis/components/code.rb +59 -0
- data/lib/pubid/{astm → jis}/components.rb +1 -1
- data/lib/pubid/jis/identifier.rb +5 -181
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/base.rb +72 -0
- data/lib/pubid/jis/identifiers/standard.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_report.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +6 -32
- data/lib/pubid/jis/scheme.rb +49 -0
- data/lib/pubid/jis/single_identifier.rb +12 -6
- data/lib/pubid/jis/supplement_identifier.rb +14 -17
- data/lib/pubid/jis.rb +2 -48
- data/lib/pubid/nist/builder.rb +1765 -146
- data/lib/pubid/nist/components/code.rb +20 -9
- data/lib/pubid/nist/components/edition.rb +0 -16
- data/lib/pubid/nist/components/publisher.rb +24 -0
- data/lib/pubid/nist/components/supplement.rb +21 -91
- data/lib/pubid/nist/components.rb +1 -0
- data/lib/pubid/nist/configuration.rb +2 -12
- data/lib/pubid/nist/identifiers/base.rb +417 -662
- data/lib/pubid/nist/identifiers/circular.rb +5 -17
- data/lib/pubid/nist/identifiers/circular_supplement.rb +6 -16
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -3
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +5 -7
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +5 -18
- data/lib/pubid/nist/identifiers/crpl_report.rb +13 -16
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -18
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -3
- data/lib/pubid/nist/identifiers/handbook.rb +4 -12
- data/lib/pubid/nist/identifiers/internal_report.rb +7 -15
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -3
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +11 -20
- data/lib/pubid/nist/identifiers/monograph.rb +11 -22
- data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
- data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
- data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
- data/lib/pubid/nist/identifiers/report.rb +10 -19
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -12
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -4
- data/lib/pubid/nist/identifiers.rb +1 -1
- data/lib/pubid/nist/parser.rb +429 -97
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +34 -35
- data/lib/pubid/nist/urn_generator.rb +8 -14
- data/lib/pubid/nist.rb +5 -107
- data/lib/pubid/oiml/builder.rb +10 -91
- data/lib/pubid/oiml/components/code.rb +0 -17
- data/lib/pubid/oiml/identifier.rb +0 -53
- data/lib/pubid/oiml/identifiers/annex.rb +46 -13
- data/lib/pubid/oiml/identifiers/base.rb +36 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +0 -2
- data/lib/pubid/oiml/identifiers/document.rb +0 -2
- data/lib/pubid/oiml/identifiers/expert_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/guide.rb +0 -2
- data/lib/pubid/oiml/identifiers/recommendation.rb +0 -2
- data/lib/pubid/oiml/identifiers/seminar_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/vocabulary.rb +0 -2
- data/lib/pubid/oiml/identifiers.rb +1 -3
- data/lib/pubid/oiml/parser.rb +17 -118
- data/lib/pubid/oiml/scheme.rb +46 -0
- data/lib/pubid/oiml/single_identifier.rb +43 -66
- data/lib/pubid/oiml/supplement_identifier.rb +17 -62
- data/lib/pubid/oiml/urn_generator.rb +8 -22
- data/lib/pubid/oiml.rb +1 -56
- data/lib/pubid/parser.rb +0 -1
- data/lib/pubid/parsers/mr_string.rb +7 -120
- data/lib/pubid/plateau/builder.rb +4 -8
- data/lib/pubid/plateau/identifiers/base.rb +36 -40
- data/lib/pubid/plateau/identifiers/handbook.rb +7 -1
- data/lib/pubid/plateau/identifiers/technical_report.rb +5 -1
- data/lib/pubid/plateau/identifiers.rb +1 -0
- data/lib/pubid/plateau/parser.rb +6 -16
- data/lib/pubid/plateau/scheme.rb +45 -0
- data/lib/pubid/plateau/supplement_identifier.rb +15 -11
- data/lib/pubid/plateau.rb +1 -58
- data/lib/pubid/renderers/base.rb +0 -47
- data/lib/pubid/renderers/directives_renderer.rb +14 -27
- data/lib/pubid/renderers/guide_renderer.rb +1 -7
- data/lib/pubid/renderers/human_readable.rb +9 -34
- data/lib/pubid/renderers/iwa_renderer.rb +1 -5
- data/lib/pubid/renderers/mr_string.rb +6 -54
- data/lib/pubid/renderers/supplement_renderer.rb +2 -5
- data/lib/pubid/renderers.rb +0 -1
- data/lib/pubid/rendering/base.rb +73 -0
- data/lib/pubid/rendering/common.rb +211 -0
- data/lib/pubid/rendering/context.rb +21 -33
- data/lib/pubid/rendering/format.rb +25 -0
- data/lib/pubid/rendering/numbering.rb +7 -25
- data/lib/pubid/rendering/supplement.rb +4 -4
- data/lib/pubid/rendering.rb +3 -0
- data/lib/pubid/sae/builder.rb +1 -1
- data/lib/pubid/sae/components/date.rb +0 -8
- data/lib/pubid/sae/components/type.rb +1 -5
- data/lib/pubid/sae/identifier.rb +12 -2
- data/lib/pubid/sae/identifiers/base.rb +28 -33
- data/lib/pubid/sae/identifiers.rb +1 -0
- data/lib/pubid/sae/parser.rb +1 -1
- data/lib/pubid/sae/scheme.rb +47 -0
- data/lib/pubid/sae/urn_generator.rb +10 -2
- data/lib/pubid/sae.rb +2 -49
- data/lib/pubid/scheme.rb +207 -0
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +10 -424
- data/lib/tasks/export.rake +5 -6
- data/lib/tasks/website-data.json +1796 -1854
- metadata +45 -307
- data/data/bipm/update_codes.yaml +0 -9
- data/data/nist/series.yaml +0 -155
- data/lib/pubid/adobe/builder.rb +0 -52
- data/lib/pubid/adobe/identifier.rb +0 -47
- data/lib/pubid/adobe/identifiers/publication.rb +0 -31
- data/lib/pubid/adobe/identifiers/tech_note.rb +0 -32
- data/lib/pubid/adobe/identifiers.rb +0 -10
- data/lib/pubid/adobe/parser.rb +0 -136
- data/lib/pubid/adobe/renderer.rb +0 -39
- data/lib/pubid/adobe/urn_generator.rb +0 -42
- data/lib/pubid/adobe/urn_parser.rb +0 -69
- data/lib/pubid/adobe.rb +0 -60
- data/lib/pubid/amca/renderer.rb +0 -82
- data/lib/pubid/amca/urn_parser.rb +0 -28
- data/lib/pubid/ansi/renderer.rb +0 -53
- data/lib/pubid/ansi/urn_parser.rb +0 -23
- data/lib/pubid/api/identifiers.rb +0 -18
- data/lib/pubid/api/renderer.rb +0 -98
- data/lib/pubid/api/urn_parser.rb +0 -35
- data/lib/pubid/ashrae/renderer.rb +0 -117
- data/lib/pubid/ashrae/urn_parser.rb +0 -27
- data/lib/pubid/asme/renderer.rb +0 -66
- data/lib/pubid/asme/urn_parser.rb +0 -31
- data/lib/pubid/astm/identifiers/code_number.rb +0 -81
- data/lib/pubid/astm/identifiers.rb +0 -19
- data/lib/pubid/astm/renderer.rb +0 -172
- data/lib/pubid/astm/urn_parser.rb +0 -30
- data/lib/pubid/bipm/builder.rb +0 -163
- data/lib/pubid/bipm/identifier.rb +0 -285
- data/lib/pubid/bipm/identifiers/committee_document.rb +0 -36
- data/lib/pubid/bipm/identifiers/guide.rb +0 -35
- data/lib/pubid/bipm/identifiers/meeting.rb +0 -53
- data/lib/pubid/bipm/identifiers/mep.rb +0 -33
- data/lib/pubid/bipm/identifiers/metrologia_article.rb +0 -48
- data/lib/pubid/bipm/identifiers/si_brochure.rb +0 -33
- data/lib/pubid/bipm/identifiers.rb +0 -15
- data/lib/pubid/bipm/parser.rb +0 -237
- data/lib/pubid/bipm/renderer.rb +0 -118
- data/lib/pubid/bipm/urn_generator.rb +0 -58
- data/lib/pubid/bipm/urn_parser.rb +0 -60
- data/lib/pubid/bipm.rb +0 -91
- data/lib/pubid/bsi/renderer.rb +0 -1064
- data/lib/pubid/bsi/urn_parser.rb +0 -52
- data/lib/pubid/calconnect/builder.rb +0 -38
- data/lib/pubid/calconnect/identifier.rb +0 -121
- data/lib/pubid/calconnect/identifiers/standard.rb +0 -29
- data/lib/pubid/calconnect/identifiers.rb +0 -9
- data/lib/pubid/calconnect/parser.rb +0 -54
- data/lib/pubid/calconnect/renderer.rb +0 -36
- data/lib/pubid/calconnect/urn_generator.rb +0 -33
- data/lib/pubid/calconnect/urn_parser.rb +0 -34
- data/lib/pubid/calconnect.rb +0 -82
- data/lib/pubid/ccsds/urn_parser.rb +0 -20
- data/lib/pubid/cen_cenelec/renderer.rb +0 -261
- data/lib/pubid/cen_cenelec/urn_parser.rb +0 -28
- data/lib/pubid/cie/identifiers/code_attributes.rb +0 -52
- data/lib/pubid/cie/identifiers/proceedings.rb +0 -41
- data/lib/pubid/cie/urn_parser.rb +0 -28
- data/lib/pubid/components/adoption.rb +0 -104
- data/lib/pubid/components/iteration.rb +0 -32
- data/lib/pubid/components/relationship.rb +0 -151
- data/lib/pubid/components/supplement.rb +0 -184
- data/lib/pubid/csa/renderer.rb +0 -300
- data/lib/pubid/csa/urn_parser.rb +0 -33
- data/lib/pubid/doi/builder.rb +0 -18
- data/lib/pubid/doi/identifier.rb +0 -49
- data/lib/pubid/doi/identifiers/resource.rb +0 -30
- data/lib/pubid/doi/identifiers.rb +0 -9
- data/lib/pubid/doi/parser.rb +0 -52
- data/lib/pubid/doi/renderer.rb +0 -13
- data/lib/pubid/doi.rb +0 -55
- data/lib/pubid/easc/builder.rb +0 -55
- data/lib/pubid/easc/identifier.rb +0 -59
- data/lib/pubid/easc/identifiers/pmg.rb +0 -20
- data/lib/pubid/easc/identifiers/rmg.rb +0 -19
- data/lib/pubid/easc/identifiers.rb +0 -10
- data/lib/pubid/easc/parser.rb +0 -88
- data/lib/pubid/easc/renderer.rb +0 -48
- data/lib/pubid/easc/urn_generator.rb +0 -46
- data/lib/pubid/easc/urn_parser.rb +0 -57
- data/lib/pubid/easc.rb +0 -52
- data/lib/pubid/ecma/builder.rb +0 -45
- data/lib/pubid/ecma/identifier.rb +0 -147
- data/lib/pubid/ecma/identifiers/memento.rb +0 -30
- data/lib/pubid/ecma/identifiers/standard.rb +0 -31
- data/lib/pubid/ecma/identifiers/technical_report.rb +0 -31
- data/lib/pubid/ecma/identifiers.rb +0 -11
- data/lib/pubid/ecma/parser.rb +0 -76
- data/lib/pubid/ecma/renderer.rb +0 -67
- data/lib/pubid/ecma/urn_generator.rb +0 -46
- data/lib/pubid/ecma/urn_parser.rb +0 -51
- data/lib/pubid/ecma.rb +0 -67
- data/lib/pubid/errors.rb +0 -79
- data/lib/pubid/etsi/renderer.rb +0 -48
- data/lib/pubid/etsi/urn_parser.rb +0 -34
- data/lib/pubid/gb/builder.rb +0 -45
- data/lib/pubid/gb/identifier.rb +0 -67
- data/lib/pubid/gb/identifiers/standard.rb +0 -34
- data/lib/pubid/gb/identifiers.rb +0 -9
- data/lib/pubid/gb/parser.rb +0 -63
- data/lib/pubid/gb/renderer.rb +0 -35
- data/lib/pubid/gb.rb +0 -87
- data/lib/pubid/gost/builder.rb +0 -148
- data/lib/pubid/gost/identifier.rb +0 -47
- data/lib/pubid/gost/identifiers/foreign_reference.rb +0 -25
- data/lib/pubid/gost/identifiers/harmonized.rb +0 -39
- data/lib/pubid/gost/identifiers/identical_adoption.rb +0 -39
- data/lib/pubid/gost/identifiers/interstate_standard.rb +0 -20
- data/lib/pubid/gost/identifiers/national_standard.rb +0 -19
- data/lib/pubid/gost/identifiers.rb +0 -13
- data/lib/pubid/gost/parser.rb +0 -105
- data/lib/pubid/gost/renderer.rb +0 -48
- data/lib/pubid/gost/urn_generator.rb +0 -46
- data/lib/pubid/gost/urn_parser.rb +0 -52
- data/lib/pubid/gost.rb +0 -49
- data/lib/pubid/iala/builder.rb +0 -102
- data/lib/pubid/iala/identifier.rb +0 -90
- data/lib/pubid/iala/identifiers/advice.rb +0 -15
- data/lib/pubid/iala/identifiers/annex.rb +0 -57
- data/lib/pubid/iala/identifiers/general_assembly.rb +0 -19
- data/lib/pubid/iala/identifiers/guideline.rb +0 -17
- data/lib/pubid/iala/identifiers/letter.rb +0 -16
- data/lib/pubid/iala/identifiers/manual.rb +0 -18
- data/lib/pubid/iala/identifiers/model_course.rb +0 -17
- data/lib/pubid/iala/identifiers/recommendation.rb +0 -17
- data/lib/pubid/iala/identifiers/report.rb +0 -16
- data/lib/pubid/iala/identifiers/resolution.rb +0 -16
- data/lib/pubid/iala/identifiers/standard.rb +0 -17
- data/lib/pubid/iala/identifiers.rb +0 -19
- data/lib/pubid/iala/parser.rb +0 -138
- data/lib/pubid/iala/renderer.rb +0 -36
- data/lib/pubid/iala/urn_generator.rb +0 -49
- data/lib/pubid/iala/urn_parser.rb +0 -67
- data/lib/pubid/iala.rb +0 -71
- data/lib/pubid/iana/builder.rb +0 -22
- data/lib/pubid/iana/identifier.rb +0 -140
- data/lib/pubid/iana/identifiers/registry.rb +0 -69
- data/lib/pubid/iana/identifiers.rb +0 -9
- data/lib/pubid/iana/parser.rb +0 -38
- data/lib/pubid/iana/renderer.rb +0 -32
- data/lib/pubid/iana/urn_generator.rb +0 -19
- data/lib/pubid/iana/urn_parser.rb +0 -24
- data/lib/pubid/iana.rb +0 -69
- data/lib/pubid/idf/renderer.rb +0 -84
- data/lib/pubid/idf/urn_parser.rb +0 -25
- data/lib/pubid/iec/components.rb +0 -14
- data/lib/pubid/iec/identifiers/technical_group.rb +0 -30
- data/lib/pubid/iec/identifiers.rb +0 -31
- data/lib/pubid/iec/renderer.rb +0 -267
- data/lib/pubid/ieee/compaction.rb +0 -121
- data/lib/pubid/ieee/identifiers/amendment.rb +0 -40
- data/lib/pubid/ieee/identifiers/code_number.rb +0 -82
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +0 -32
- data/lib/pubid/ieee/pre_parser.rb +0 -301
- data/lib/pubid/ieee/renderer.rb +0 -408
- data/lib/pubid/ieee/urn_parser.rb +0 -34
- data/lib/pubid/ietf/builder.rb +0 -78
- data/lib/pubid/ietf/identifier.rb +0 -5
- data/lib/pubid/ietf/identifiers/base.rb +0 -72
- data/lib/pubid/ietf/identifiers/bcp.rb +0 -36
- data/lib/pubid/ietf/identifiers/fyi.rb +0 -36
- data/lib/pubid/ietf/identifiers/internet_draft.rb +0 -45
- data/lib/pubid/ietf/identifiers/rfc.rb +0 -27
- data/lib/pubid/ietf/identifiers/serialization.rb +0 -51
- data/lib/pubid/ietf/identifiers/std.rb +0 -36
- data/lib/pubid/ietf/identifiers.rb +0 -14
- data/lib/pubid/ietf/parser.rb +0 -61
- data/lib/pubid/ietf/renderer.rb +0 -64
- data/lib/pubid/ietf/urn_generator.rb +0 -37
- data/lib/pubid/ietf/urn_parser.rb +0 -43
- data/lib/pubid/ietf.rb +0 -85
- data/lib/pubid/iho/renderer.rb +0 -30
- data/lib/pubid/iho/urn_parser.rb +0 -58
- data/lib/pubid/isbn/builder.rb +0 -44
- data/lib/pubid/isbn/check_digit.rb +0 -53
- data/lib/pubid/isbn/identifier.rb +0 -81
- data/lib/pubid/isbn/identifiers/book.rb +0 -30
- data/lib/pubid/isbn/identifiers.rb +0 -9
- data/lib/pubid/isbn/parser.rb +0 -45
- data/lib/pubid/isbn/renderer.rb +0 -16
- data/lib/pubid/isbn.rb +0 -52
- data/lib/pubid/iso/normalizer.rb +0 -89
- data/lib/pubid/itu/components/designation.rb +0 -35
- data/lib/pubid/itu/components.rb +0 -12
- data/lib/pubid/itu/identifiers/addendum.rb +0 -15
- data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +0 -87
- data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +0 -92
- data/lib/pubid/itu/identifiers/errata.rb +0 -15
- data/lib/pubid/itu/identifiers/handbook.rb +0 -38
- data/lib/pubid/itu/identifiers/question.rb +0 -63
- data/lib/pubid/itu/identifiers/report.rb +0 -39
- data/lib/pubid/itu/identifiers/standard_serialization.rb +0 -58
- data/lib/pubid/itu/urn_parser.rb +0 -31
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +0 -34
- data/lib/pubid/jcgm/identifiers/meeting.rb +0 -47
- data/lib/pubid/jcgm/renderer.rb +0 -89
- data/lib/pubid/jcgm/urn_parser.rb +0 -177
- data/lib/pubid/jis/identifiers/corrigendum.rb +0 -16
- data/lib/pubid/jis/renderer.rb +0 -69
- data/lib/pubid/jis/urn_parser.rb +0 -23
- data/lib/pubid/nist/caster.rb +0 -1234
- data/lib/pubid/nist/circular_supplement_builder.rb +0 -293
- data/lib/pubid/nist/identifier.rb +0 -8
- data/lib/pubid/nist/identifiers/dated_document.rb +0 -49
- data/lib/pubid/nist/parser_output_normalizer.rb +0 -233
- data/lib/pubid/nist/preprocessor.rb +0 -443
- data/lib/pubid/nist/renderer.rb +0 -43
- data/lib/pubid/nist/router.rb +0 -149
- data/lib/pubid/nist/series/base.rb +0 -58
- data/lib/pubid/nist/series/crpl.rb +0 -13
- data/lib/pubid/nist/series/fips.rb +0 -14
- data/lib/pubid/nist/series/ir.rb +0 -57
- data/lib/pubid/nist/series/letter_preserving.rb +0 -15
- data/lib/pubid/nist/series/mono.rb +0 -19
- data/lib/pubid/nist/series/ncstar.rb +0 -20
- data/lib/pubid/nist/series.rb +0 -49
- data/lib/pubid/nist/urn_parser.rb +0 -67
- data/lib/pubid/oasis/builder.rb +0 -79
- data/lib/pubid/oasis/identifier.rb +0 -160
- data/lib/pubid/oasis/identifiers/standard.rb +0 -29
- data/lib/pubid/oasis/identifiers.rb +0 -9
- data/lib/pubid/oasis/parser.rb +0 -34
- data/lib/pubid/oasis/renderer.rb +0 -29
- data/lib/pubid/oasis/urn_generator.rb +0 -25
- data/lib/pubid/oasis/urn_parser.rb +0 -22
- data/lib/pubid/oasis.rb +0 -79
- data/lib/pubid/ogc/builder.rb +0 -33
- data/lib/pubid/ogc/identifier.rb +0 -81
- data/lib/pubid/ogc/identifiers/document.rb +0 -26
- data/lib/pubid/ogc/identifiers.rb +0 -10
- data/lib/pubid/ogc/parser.rb +0 -40
- data/lib/pubid/ogc/renderer.rb +0 -33
- data/lib/pubid/ogc/urn_generator.rb +0 -14
- data/lib/pubid/ogc/urn_parser.rb +0 -22
- data/lib/pubid/ogc.rb +0 -71
- data/lib/pubid/oiml/identifiers/bulletin.rb +0 -137
- data/lib/pubid/oiml/identifiers/code_number.rb +0 -90
- data/lib/pubid/oiml/identifiers/errata.rb +0 -15
- data/lib/pubid/oiml/renderer.rb +0 -232
- data/lib/pubid/oiml/urn_parser.rb +0 -39
- data/lib/pubid/omg/builder.rb +0 -19
- data/lib/pubid/omg/identifier.rb +0 -47
- data/lib/pubid/omg/identifiers/specification.rb +0 -32
- data/lib/pubid/omg/identifiers.rb +0 -9
- data/lib/pubid/omg/parser.rb +0 -40
- data/lib/pubid/omg/renderer.rb +0 -19
- data/lib/pubid/omg.rb +0 -51
- data/lib/pubid/parser/grammar.rb +0 -74
- data/lib/pubid/plateau/identifier.rb +0 -4
- data/lib/pubid/plateau/renderer.rb +0 -51
- data/lib/pubid/plateau/urn_parser.rb +0 -43
- data/lib/pubid/prefixes_support.rb +0 -51
- data/lib/pubid/renderers/annotator.rb +0 -233
- data/lib/pubid/sae/renderer.rb +0 -36
- data/lib/pubid/sae/urn_parser.rb +0 -36
- data/lib/pubid/tgpp/builder.rb +0 -41
- data/lib/pubid/tgpp/identifier.rb +0 -107
- data/lib/pubid/tgpp/identifiers/technical_report.rb +0 -32
- data/lib/pubid/tgpp/identifiers/technical_specification.rb +0 -33
- data/lib/pubid/tgpp/identifiers.rb +0 -11
- data/lib/pubid/tgpp/parser.rb +0 -78
- data/lib/pubid/tgpp/renderer.rb +0 -52
- data/lib/pubid/tgpp/urn_generator.rb +0 -39
- data/lib/pubid/tgpp/urn_parser.rb +0 -30
- data/lib/pubid/tgpp.rb +0 -83
- data/lib/pubid/type_resolver.rb +0 -59
- data/lib/pubid/un/builder.rb +0 -42
- data/lib/pubid/un/identifier.rb +0 -40
- data/lib/pubid/un/identifiers/document.rb +0 -24
- data/lib/pubid/un/identifiers.rb +0 -9
- data/lib/pubid/un/parser.rb +0 -25
- data/lib/pubid/un/renderer.rb +0 -11
- data/lib/pubid/un.rb +0 -46
- data/lib/pubid/urn_parser/base.rb +0 -81
- data/lib/pubid/urn_parser/errors.rb +0 -16
- data/lib/pubid/urn_parser.rb +0 -14
- data/lib/pubid/w3c/builder.rb +0 -55
- data/lib/pubid/w3c/identifier.rb +0 -130
- data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +0 -31
- data/lib/pubid/w3c/identifiers/draft_note.rb +0 -31
- data/lib/pubid/w3c/identifiers/note.rb +0 -30
- data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/standard.rb +0 -12
- data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/working_draft.rb +0 -30
- data/lib/pubid/w3c/identifiers.rb +0 -25
- data/lib/pubid/w3c/parser.rb +0 -43
- data/lib/pubid/w3c/renderer.rb +0 -35
- data/lib/pubid/w3c/urn_generator.rb +0 -18
- data/lib/pubid/w3c/urn_parser.rb +0 -36
- data/lib/pubid/w3c.rb +0 -67
- data/lib/pubid/xsf/builder.rb +0 -17
- data/lib/pubid/xsf/identifier.rb +0 -66
- data/lib/pubid/xsf/identifiers/xep.rb +0 -31
- data/lib/pubid/xsf/identifiers.rb +0 -9
- data/lib/pubid/xsf/parser.rb +0 -25
- data/lib/pubid/xsf/renderer.rb +0 -23
- data/lib/pubid/xsf/urn_generator.rb +0 -13
- data/lib/pubid/xsf/urn_parser.rb +0 -18
- data/lib/pubid/xsf.rb +0 -81
data/lib/pubid/astm.rb
CHANGED
|
@@ -1,55 +1,38 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "parslet"
|
|
4
|
+
require "lutaml/model"
|
|
5
|
+
require_relative "identifier"
|
|
6
|
+
require_relative "astm/identifier"
|
|
7
|
+
require_relative "astm/components/code"
|
|
8
|
+
require_relative "astm/single_identifier"
|
|
9
|
+
require_relative "astm/parser"
|
|
10
|
+
require_relative "astm/builder"
|
|
11
|
+
|
|
12
|
+
# Identifier classes
|
|
13
|
+
require_relative "astm/identifiers/base"
|
|
14
|
+
require_relative "astm/identifiers/standard"
|
|
15
|
+
require_relative "astm/identifiers/iso_dual_published"
|
|
16
|
+
require_relative "astm/identifiers/manual"
|
|
17
|
+
require_relative "astm/identifiers/research_report"
|
|
18
|
+
require_relative "astm/identifiers/data_series"
|
|
19
|
+
require_relative "astm/identifiers/technical_report"
|
|
20
|
+
require_relative "astm/identifiers/monograph"
|
|
21
|
+
require_relative "astm/identifiers/adjunct"
|
|
22
|
+
require_relative "astm/identifiers/work_in_progress"
|
|
23
|
+
|
|
24
|
+
# Scheme (must be loaded after identifiers)
|
|
25
|
+
require_relative "astm/scheme"
|
|
26
|
+
|
|
3
27
|
module Pubid
|
|
4
28
|
module Astm
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Sole ASTM publisher token (see the parser's `publisher` rule).
|
|
8
|
-
PREFIXES = ["ASTM"].freeze
|
|
9
|
-
|
|
10
|
-
autoload :Components, "#{__dir__}/astm/components"
|
|
11
|
-
autoload :Identifier, "#{__dir__}/astm/identifier"
|
|
12
|
-
autoload :Identifiers, "#{__dir__}/astm/identifiers"
|
|
13
|
-
autoload :SingleIdentifier, "#{__dir__}/astm/single_identifier"
|
|
14
|
-
autoload :Parser, "#{__dir__}/astm/parser"
|
|
15
|
-
autoload :Builder, "#{__dir__}/astm/builder"
|
|
16
|
-
autoload :Renderer, "#{__dir__}/astm/renderer"
|
|
17
|
-
autoload :UrnGenerator, "#{__dir__}/astm/urn_generator"
|
|
18
|
-
autoload :UrnParser, "#{__dir__}/astm/urn_parser"
|
|
19
|
-
|
|
20
29
|
def self.parse(str)
|
|
21
30
|
Identifier.parse(str)
|
|
22
31
|
end
|
|
23
|
-
|
|
24
|
-
def self.identifier_types
|
|
25
|
-
@identifier_types ||= Identifiers.constants
|
|
26
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
27
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
28
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def self.all_typed_stages
|
|
32
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
33
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
34
|
-
klass.const_get(:TYPED_STAGES)
|
|
35
|
-
else
|
|
36
|
-
[]
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def self.locate_type(code)
|
|
42
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def self.locate_stage(abbr)
|
|
46
|
-
abbr_str = abbr.to_s.upcase
|
|
47
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
48
|
-
end
|
|
49
32
|
end
|
|
33
|
+
|
|
34
|
+
# Register this flavor with the Pubid registry
|
|
50
35
|
end
|
|
51
36
|
|
|
37
|
+
# Register Uastm flavor with the registry
|
|
52
38
|
Pubid::Registry.register(:astm, Pubid::Astm)
|
|
53
|
-
|
|
54
|
-
Pubid::Astm::SingleIdentifier.format_registry = Pubid::FormatRegistry.new(parent: Pubid::Identifier.format_registry)
|
|
55
|
-
Pubid::Astm::SingleIdentifier.format_registry.register(:human, renderer: Pubid::Astm::Renderer)
|
data/lib/pubid/bsi/builder.rb
CHANGED
|
@@ -3,19 +3,12 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Bsi
|
|
5
5
|
class Builder < Pubid::Builder::Base
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
abbr: ["BS"],
|
|
13
|
-
name: "British Standard",
|
|
14
|
-
harmonized_stages: %w[60.00 60.60],
|
|
15
|
-
).freeze
|
|
16
|
-
|
|
17
|
-
def self.build(parsed_data)
|
|
18
|
-
new.build(parsed_data)
|
|
6
|
+
def initialize(scheme)
|
|
7
|
+
@scheme = scheme
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.build(parsed_data, scheme = Scheme.new)
|
|
11
|
+
new(scheme).build(parsed_data)
|
|
19
12
|
end
|
|
20
13
|
|
|
21
14
|
def build(data)
|
|
@@ -114,14 +107,22 @@ module Pubid
|
|
|
114
107
|
if data[:na_prefix]
|
|
115
108
|
return build_national_annex(data, supplements_data)
|
|
116
109
|
elsif data[:adopted_string]
|
|
117
|
-
#
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
#
|
|
121
|
-
|
|
110
|
+
# Check for multi-level adoptions
|
|
111
|
+
identifier = build_adopted_identifier(data)
|
|
112
|
+
|
|
113
|
+
# Wrap with consolidated if supplements present
|
|
114
|
+
if supplements_data.any?
|
|
115
|
+
identifier = wrap_with_consolidated(identifier,
|
|
116
|
+
supplements_data)
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# Wrap with ExpertCommentary if needed
|
|
120
|
+
identifier = wrap_with_expert_commentary(identifier) if data[:expert_commentary]
|
|
121
|
+
|
|
122
|
+
return identifier
|
|
122
123
|
end
|
|
123
124
|
|
|
124
|
-
# Determine identifier class using
|
|
125
|
+
# Determine identifier class using Scheme
|
|
125
126
|
identifier = locate_identifier_klass(data).new
|
|
126
127
|
assign_attributes(identifier, data)
|
|
127
128
|
|
|
@@ -131,11 +132,8 @@ module Pubid
|
|
|
131
132
|
supplements_data)
|
|
132
133
|
end
|
|
133
134
|
|
|
134
|
-
# Wrap with ExpertCommentary if needed
|
|
135
|
-
|
|
136
|
-
if data[:expert_commentary] || data[:expert_commentary_full]
|
|
137
|
-
identifier = wrap_with_expert_commentary(identifier)
|
|
138
|
-
end
|
|
135
|
+
# Wrap with ExpertCommentary if needed
|
|
136
|
+
identifier = wrap_with_expert_commentary(identifier) if data[:expert_commentary]
|
|
139
137
|
|
|
140
138
|
identifier
|
|
141
139
|
end
|
|
@@ -164,7 +162,7 @@ module Pubid
|
|
|
164
162
|
|
|
165
163
|
# Build attributes hash (conditional arguments must be handled separately)
|
|
166
164
|
attrs = {
|
|
167
|
-
number: number_val,
|
|
165
|
+
number: Components::Code.new(value: number_val),
|
|
168
166
|
issue_number: issue_number,
|
|
169
167
|
index_format: format,
|
|
170
168
|
}
|
|
@@ -181,7 +179,7 @@ module Pubid
|
|
|
181
179
|
|
|
182
180
|
# Build attributes hash
|
|
183
181
|
attrs = {
|
|
184
|
-
number: number_val,
|
|
182
|
+
number: Components::Code.new(value: number_val),
|
|
185
183
|
}
|
|
186
184
|
attrs[:date] = Components::Date.new(year: year_val) if year_val
|
|
187
185
|
|
|
@@ -206,9 +204,9 @@ module Pubid
|
|
|
206
204
|
|
|
207
205
|
# Build attributes hash
|
|
208
206
|
attrs = {
|
|
209
|
-
number: number_val,
|
|
207
|
+
number: Components::Code.new(value: number_val),
|
|
210
208
|
}
|
|
211
|
-
attrs[:part] = part_val if part_val
|
|
209
|
+
attrs[:part] = Components::Code.new(value: part_val) if part_val
|
|
212
210
|
attrs[:date] = Components::Date.new(year: year_val) if year_val
|
|
213
211
|
|
|
214
212
|
Identifiers::ExplanatorySupplement.new(attrs)
|
|
@@ -248,13 +246,13 @@ module Pubid
|
|
|
248
246
|
|
|
249
247
|
# Build attributes hash
|
|
250
248
|
attrs = {
|
|
251
|
-
number: number_val,
|
|
249
|
+
number: Components::Code.new(value: number_val),
|
|
252
250
|
method_code: method_code,
|
|
253
251
|
method_to: method_to,
|
|
254
252
|
method_and: method_and,
|
|
255
253
|
is_plural: is_plural,
|
|
256
254
|
}
|
|
257
|
-
attrs[:part] = part_val if part_val
|
|
255
|
+
attrs[:part] = Components::Code.new(value: part_val) if part_val
|
|
258
256
|
attrs[:date] = Components::Date.new(year: year_val) if year_val
|
|
259
257
|
|
|
260
258
|
Identifiers::Method.new(attrs)
|
|
@@ -280,7 +278,7 @@ module Pubid
|
|
|
280
278
|
|
|
281
279
|
# Build attributes hash
|
|
282
280
|
attrs = {
|
|
283
|
-
number: number_val,
|
|
281
|
+
number: Components::Code.new(value: number_val),
|
|
284
282
|
test_series: test_series,
|
|
285
283
|
test_id: test_id,
|
|
286
284
|
}
|
|
@@ -313,7 +311,7 @@ module Pubid
|
|
|
313
311
|
|
|
314
312
|
# Build attributes hash (conditional arguments must be handled separately)
|
|
315
313
|
attrs = {
|
|
316
|
-
number: number_val,
|
|
314
|
+
number: Components::Code.new(value: number_val),
|
|
317
315
|
section_id: section_id,
|
|
318
316
|
section_format: format,
|
|
319
317
|
}
|
|
@@ -343,7 +341,7 @@ module Pubid
|
|
|
343
341
|
|
|
344
342
|
# Build attributes hash
|
|
345
343
|
attrs = {
|
|
346
|
-
number: number_val,
|
|
344
|
+
number: Components::Code.new(value: number_val),
|
|
347
345
|
}
|
|
348
346
|
attrs[:spec_code] = Components::Code.new(value: spec_code) if spec_code
|
|
349
347
|
if publisher_val
|
|
@@ -373,9 +371,9 @@ module Pubid
|
|
|
373
371
|
|
|
374
372
|
# Build attributes hash
|
|
375
373
|
attrs = {
|
|
376
|
-
number: number_val,
|
|
374
|
+
number: Components::Code.new(value: number_val),
|
|
377
375
|
}
|
|
378
|
-
attrs[:part] = part_val if part_val
|
|
376
|
+
attrs[:part] = Components::Code.new(value: part_val) if part_val
|
|
379
377
|
attrs[:publisher] = Components::Publisher.new(body: "DISC")
|
|
380
378
|
attrs[:date] = Components::Date.new(year: year_val) if year_val
|
|
381
379
|
|
|
@@ -432,9 +430,9 @@ module Pubid
|
|
|
432
430
|
# Build attributes hash
|
|
433
431
|
attrs = {
|
|
434
432
|
prefix: prefix_val,
|
|
435
|
-
number: number_val,
|
|
433
|
+
number: Components::Code.new(value: number_val),
|
|
436
434
|
}
|
|
437
|
-
attrs[:part] = part_val if part_val
|
|
435
|
+
attrs[:part] = Components::Code.new(value: part_val) if part_val
|
|
438
436
|
attrs[:iteration] = iteration_val if iteration_val
|
|
439
437
|
attrs[:edition] = final_edition if final_edition
|
|
440
438
|
attrs[:publisher] = Components::Publisher.new(body: "BS")
|
|
@@ -456,20 +454,20 @@ module Pubid
|
|
|
456
454
|
# Build base identifier
|
|
457
455
|
base_id = SingleIdentifier.new(
|
|
458
456
|
publisher: Components::Publisher.new(body: "BS"),
|
|
459
|
-
number: base_number,
|
|
457
|
+
number: Components::Code.new(value: base_number),
|
|
460
458
|
)
|
|
461
459
|
|
|
462
460
|
# Build identifiers for each part
|
|
463
461
|
id1 = SingleIdentifier.new(
|
|
464
462
|
publisher: Components::Publisher.new(body: "BS"),
|
|
465
|
-
number: base_number,
|
|
466
|
-
part: part1,
|
|
463
|
+
number: Components::Code.new(value: base_number),
|
|
464
|
+
part: Components::Code.new(value: part1),
|
|
467
465
|
)
|
|
468
466
|
|
|
469
467
|
id2 = SingleIdentifier.new(
|
|
470
468
|
publisher: Components::Publisher.new(body: "BS"),
|
|
471
|
-
number: base_number,
|
|
472
|
-
part: part2,
|
|
469
|
+
number: Components::Code.new(value: base_number),
|
|
470
|
+
part: Components::Code.new(value: part2),
|
|
473
471
|
)
|
|
474
472
|
|
|
475
473
|
Identifiers::BundledIdentifier.new(
|
|
@@ -636,7 +634,7 @@ module Pubid
|
|
|
636
634
|
publisher: Components::Publisher.new(body: publisher_val),
|
|
637
635
|
)
|
|
638
636
|
id.prefix = prefix_val if prefix_val && !prefix_val.empty?
|
|
639
|
-
id.number = number_val if number_val
|
|
637
|
+
id.number = Components::Code.new(value: number_val) if number_val
|
|
640
638
|
|
|
641
639
|
id.explicit_prefix = has_explicit_publisher || has_explicit_prefix
|
|
642
640
|
id.explicit_publisher = has_explicit_publisher
|
|
@@ -646,11 +644,11 @@ module Pubid
|
|
|
646
644
|
parts_array = parts_val[:parts]
|
|
647
645
|
if parts_array.any?
|
|
648
646
|
part_str = parts_array.first[:part].to_s
|
|
649
|
-
id.part = part_str
|
|
647
|
+
id.part = Components::Code.new(value: part_str)
|
|
650
648
|
end
|
|
651
649
|
# Handle space-separated part (direct part attribute)
|
|
652
650
|
elsif space_separated_part_val
|
|
653
|
-
id.part = space_separated_part_val.to_s
|
|
651
|
+
id.part = Components::Code.new(value: space_separated_part_val.to_s)
|
|
654
652
|
# Mark this part as space-separated for rendering
|
|
655
653
|
id.space_separated_part = true
|
|
656
654
|
end
|
|
@@ -674,7 +672,7 @@ module Pubid
|
|
|
674
672
|
topic = @original_data[:expert_commentary_topic]&.to_s
|
|
675
673
|
|
|
676
674
|
Identifiers::ExpertCommentary.new(
|
|
677
|
-
|
|
675
|
+
base_identifier: base_id,
|
|
678
676
|
format: format,
|
|
679
677
|
topic: topic,
|
|
680
678
|
)
|
|
@@ -724,7 +722,7 @@ module Pubid
|
|
|
724
722
|
end
|
|
725
723
|
|
|
726
724
|
Identifiers::SupplementDocument.new(
|
|
727
|
-
|
|
725
|
+
base_identifier: base_id,
|
|
728
726
|
supplement_number: data[:supplement_number].to_s,
|
|
729
727
|
supplement_year: data[:supplement_year].to_i,
|
|
730
728
|
supplement_type: supplement_type,
|
|
@@ -771,7 +769,7 @@ module Pubid
|
|
|
771
769
|
end
|
|
772
770
|
|
|
773
771
|
Identifiers::AddendumDocument.new(
|
|
774
|
-
|
|
772
|
+
base_identifier: base_id,
|
|
775
773
|
addendum_number: data[:addendum_number].to_s,
|
|
776
774
|
addendum_year: data[:addendum_year].to_i,
|
|
777
775
|
addendum_type: addendum_type,
|
|
@@ -790,10 +788,8 @@ module Pubid
|
|
|
790
788
|
corrigendum = !amd_data[:corrigendum].nil?
|
|
791
789
|
parenthesized = !data[:parenthesized_amd].nil?
|
|
792
790
|
|
|
793
|
-
# NOTE `amd_data[:amendment_number]` above is a PARSE-TREE key and keeps
|
|
794
|
-
# its name; only the attribute moved to `number`.
|
|
795
791
|
attrs = {
|
|
796
|
-
|
|
792
|
+
amendment_number: Components::Code.new(value: amendment_number),
|
|
797
793
|
corrigendum: corrigendum,
|
|
798
794
|
parenthesized: parenthesized,
|
|
799
795
|
}
|
|
@@ -811,10 +807,8 @@ module Pubid
|
|
|
811
807
|
# Could also use a more sophisticated algorithm for year conversion
|
|
812
808
|
full_year = year_val ? "20#{year_val}" : nil
|
|
813
809
|
|
|
814
|
-
# NOTE `data[:document_number]` above is a PARSE-TREE key and keeps its
|
|
815
|
-
# name; only the attribute moved to `number`.
|
|
816
810
|
attrs = {
|
|
817
|
-
|
|
811
|
+
document_number: document_number,
|
|
818
812
|
}
|
|
819
813
|
attrs[:date] = Components::Date.new(year: full_year.to_i) if full_year
|
|
820
814
|
|
|
@@ -841,7 +835,7 @@ module Pubid
|
|
|
841
835
|
base_id = build(base_data)
|
|
842
836
|
|
|
843
837
|
Identifiers::ValueAddedPublication.new(
|
|
844
|
-
|
|
838
|
+
base_identifier: base_id,
|
|
845
839
|
format: format,
|
|
846
840
|
)
|
|
847
841
|
end
|
|
@@ -886,14 +880,14 @@ module Pubid
|
|
|
886
880
|
|
|
887
881
|
if supp[:type] == :amendment
|
|
888
882
|
Identifiers::Amendment.new(
|
|
889
|
-
|
|
883
|
+
base_identifier: nil, # NA supplements don't wrap base
|
|
890
884
|
amendment_number: supp[:number],
|
|
891
885
|
amendment_year: year_val&.to_i,
|
|
892
886
|
separator: supp[:separator] || "+",
|
|
893
887
|
)
|
|
894
888
|
else
|
|
895
889
|
Identifiers::Corrigendum.new(
|
|
896
|
-
|
|
890
|
+
base_identifier: nil,
|
|
897
891
|
corrigendum_number: supp[:number],
|
|
898
892
|
corrigendum_year: year_val&.to_i,
|
|
899
893
|
separator: supp[:separator] || "+",
|
|
@@ -921,7 +915,6 @@ module Pubid
|
|
|
921
915
|
number: (supp_data[:amd_number] || supp_data[:cor_number])&.to_s,
|
|
922
916
|
year: (supp_data[:amd_year] || supp_data[:cor_year])&.to_s,
|
|
923
917
|
separator: separator,
|
|
924
|
-
amd_suffix_form: !(supp_data[:amd_sep_plus] || supp_data[:amd_sep_slash]),
|
|
925
918
|
}
|
|
926
919
|
end
|
|
927
920
|
end
|
|
@@ -941,19 +934,17 @@ module Pubid
|
|
|
941
934
|
return Identifiers::AdoptedEuropeanNorm if parsed_hash[:adopted_string]&.match?(/^EN\s+\d/)
|
|
942
935
|
return Identifiers::AdoptedInternationalStandard if parsed_hash[:adopted_string]
|
|
943
936
|
|
|
944
|
-
# Use type to determine class via
|
|
945
|
-
# Unknown abbreviations fall back to DEFAULT_TYPED_STAGE (published BS).
|
|
937
|
+
# Use type to determine class via Scheme
|
|
946
938
|
type_str = parsed_hash[:type] || parsed_hash[:stage] || ""
|
|
947
|
-
typed_stage =
|
|
948
|
-
|
|
939
|
+
typed_stage = @scheme.locate_typed_stage_by_abbr(type_str)
|
|
940
|
+
@scheme.locate_identifier_klass_by_type_code(typed_stage.type_code)
|
|
949
941
|
end
|
|
950
942
|
|
|
951
943
|
def cast(type, value)
|
|
952
944
|
case type
|
|
953
945
|
when :type
|
|
954
|
-
# Lookup from register
|
|
955
|
-
|
|
956
|
-
typed_stage = Bsi.locate_stage(value.to_s.upcase) || DEFAULT_TYPED_STAGE
|
|
946
|
+
# Lookup from register
|
|
947
|
+
typed_stage = @scheme.locate_typed_stage_by_abbr(value || "")
|
|
957
948
|
{
|
|
958
949
|
stage: typed_stage.to_stage,
|
|
959
950
|
type: typed_stage.to_type,
|
|
@@ -973,7 +964,7 @@ module Pubid
|
|
|
973
964
|
value&.to_s
|
|
974
965
|
|
|
975
966
|
when :number
|
|
976
|
-
value.to_s
|
|
967
|
+
Components::Code.new(value: value.to_s)
|
|
977
968
|
|
|
978
969
|
when :parts
|
|
979
970
|
# Extract parts - handle both formats:
|
|
@@ -987,25 +978,26 @@ module Pubid
|
|
|
987
978
|
# Check if subpart is already separated (new format from part_with_subpart rule)
|
|
988
979
|
if first_part.key?(:subpart)
|
|
989
980
|
{
|
|
990
|
-
part: part_str,
|
|
991
|
-
subpart: first_part[:subpart].to_s,
|
|
981
|
+
part: Components::Code.new(value: part_str),
|
|
982
|
+
subpart: Components::Code.new(value: first_part[:subpart].to_s),
|
|
992
983
|
}
|
|
993
984
|
else
|
|
994
985
|
# Old format - split on dash to get part and subpart
|
|
995
986
|
part_components = part_str.split("-")
|
|
996
|
-
result = { part: part_components.first }
|
|
987
|
+
result = { part: Components::Code.new(value: part_components.first) }
|
|
997
988
|
if part_components.length > 1
|
|
998
|
-
result[:subpart] =
|
|
989
|
+
result[:subpart] =
|
|
990
|
+
Components::Code.new(value: part_components[1])
|
|
999
991
|
end
|
|
1000
992
|
result
|
|
1001
993
|
end
|
|
1002
994
|
end
|
|
1003
995
|
|
|
1004
996
|
when :part
|
|
1005
|
-
value[:part].to_s if value.is_a?(Hash)
|
|
997
|
+
Components::Code.new(value: value[:part].to_s) if value.is_a?(Hash)
|
|
1006
998
|
|
|
1007
999
|
when :subpart
|
|
1008
|
-
value.to_s
|
|
1000
|
+
Components::Code.new(value: value.to_s)
|
|
1009
1001
|
|
|
1010
1002
|
when :year, :date
|
|
1011
1003
|
# Only create date if value is present
|
|
@@ -1156,10 +1148,8 @@ module Pubid
|
|
|
1156
1148
|
# Extract ExComm suffix before parsing (it should be preserved in data[:expert_commentary])
|
|
1157
1149
|
# Remove it from adopted_string so ISO/IEC parsers don't choke on it
|
|
1158
1150
|
# Handle all three formats: "Expert Commentary", "ExComm", "ExComm (Fire)"
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
if adopted_str.match?(/expert commentary$/i)
|
|
1162
|
-
adopted_str = adopted_str.sub(/expert commentary$/i, "")
|
|
1151
|
+
if adopted_str.end_with?("Expert Commentary")
|
|
1152
|
+
adopted_str = adopted_str.sub(/Expert Commentary$/, "")
|
|
1163
1153
|
data[:expert_commentary_full] = "Expert Commentary"
|
|
1164
1154
|
data[:expert_commentary] = true unless data.key?(:expert_commentary)
|
|
1165
1155
|
# Update @original_data so wrap_with_expert_commentary can access it
|
|
@@ -1168,8 +1158,8 @@ module Pubid
|
|
|
1168
1158
|
@original_data[:expert_commentary] =
|
|
1169
1159
|
true
|
|
1170
1160
|
end
|
|
1171
|
-
elsif adopted_str.
|
|
1172
|
-
adopted_str = adopted_str.sub(/
|
|
1161
|
+
elsif adopted_str.end_with?("ExComm (")
|
|
1162
|
+
adopted_str = adopted_str.sub(/ExComm \(.*\)$/, "")
|
|
1173
1163
|
data[:expert_commentary_full] = "Expert Commentary"
|
|
1174
1164
|
data[:expert_commentary] = true unless data.key?(:expert_commentary)
|
|
1175
1165
|
@original_data[:expert_commentary_full] = "Expert Commentary"
|
|
@@ -1177,10 +1167,10 @@ module Pubid
|
|
|
1177
1167
|
@original_data[:expert_commentary] =
|
|
1178
1168
|
true
|
|
1179
1169
|
end
|
|
1180
|
-
elsif adopted_str.
|
|
1170
|
+
elsif adopted_str.include?("ExComm (")
|
|
1181
1171
|
# Extract topic from "ExComm (Fire)"
|
|
1182
|
-
topic_match = adopted_str.match(/
|
|
1183
|
-
adopted_str = adopted_str.sub(/
|
|
1172
|
+
topic_match = adopted_str.match(/ExComm\s*\(([^)]+)\)/)
|
|
1173
|
+
adopted_str = adopted_str.sub(/ExComm\s*\(.*\)$/, "")
|
|
1184
1174
|
data[:expert_commentary_topic] = topic_match[1] if topic_match
|
|
1185
1175
|
data[:expert_commentary] = true unless data.key?(:expert_commentary)
|
|
1186
1176
|
if topic_match
|
|
@@ -1191,9 +1181,9 @@ module Pubid
|
|
|
1191
1181
|
@original_data[:expert_commentary] =
|
|
1192
1182
|
true
|
|
1193
1183
|
end
|
|
1194
|
-
elsif adopted_str.match?(/
|
|
1184
|
+
elsif adopted_str.match?(/ExComm\s*$/)
|
|
1195
1185
|
# Abbreviated form "ExComm" at the end
|
|
1196
|
-
adopted_str = adopted_str.sub(/
|
|
1186
|
+
adopted_str = adopted_str.sub(/ExComm\s*$/, "")
|
|
1197
1187
|
data[:expert_commentary] = true unless data.key?(:expert_commentary)
|
|
1198
1188
|
unless @original_data.key?(:expert_commentary)
|
|
1199
1189
|
@original_data[:expert_commentary] =
|
|
@@ -1259,10 +1249,9 @@ module Pubid
|
|
|
1259
1249
|
# BSI uses +A1:2020 format, but ISO/IEC parsers can't handle this
|
|
1260
1250
|
# Patterns: +A1:2020, +A11:2021, +AMD1:2001, +C1:2020
|
|
1261
1251
|
extracted_supplements = []
|
|
1262
|
-
# Match patterns like: +A1:2020, +A11:2021, +AMD1:2001, +C1:2020, +COR1:2020
|
|
1263
|
-
# and the year-less compact forms +A2 / +C1 (the ":YYYY" is optional).
|
|
1252
|
+
# Match patterns like: +A1:2020, +A11:2021, +AMD1:2001, +C1:2020, +COR1:2020
|
|
1264
1253
|
# Must be at end of string or followed by space (not colon, which is part of date)
|
|
1265
|
-
adopted_str_clean = adopted_str_clean.gsub(/([+])(A(\d+)|AMD(\d+)|C(\d+)|COR(\d+))(
|
|
1254
|
+
adopted_str_clean = adopted_str_clean.gsub(/([+])(A(\d+)|AMD(\d+)|C(\d+)|COR(\d+)):(\d{4})(?:\s|$)/) do |_match|
|
|
1266
1255
|
separator = $1 # "+" or "/"
|
|
1267
1256
|
type_code = $2 || $3 || $4 || $5 || $6
|
|
1268
1257
|
$2 || $3 || $4 || $5 || $6
|
|
@@ -1287,8 +1276,6 @@ module Pubid
|
|
|
1287
1276
|
number: supp_number,
|
|
1288
1277
|
year: year,
|
|
1289
1278
|
separator: separator,
|
|
1290
|
-
# compact "+A"/"/A" join form (not the trailing " AMD5" suffix form)
|
|
1291
|
-
amd_suffix_form: false,
|
|
1292
1279
|
}
|
|
1293
1280
|
|
|
1294
1281
|
"" # Remove from adopted_string
|
|
@@ -1304,7 +1291,6 @@ module Pubid
|
|
|
1304
1291
|
number: amd_number,
|
|
1305
1292
|
year: nil,
|
|
1306
1293
|
separator: nil, # No separator for AMD without year
|
|
1307
|
-
amd_suffix_form: true, # trailing " AMD5" suffix form
|
|
1308
1294
|
}
|
|
1309
1295
|
"" # Remove from adopted_string
|
|
1310
1296
|
end.strip
|
|
@@ -1326,15 +1312,8 @@ module Pubid
|
|
|
1326
1312
|
|
|
1327
1313
|
adopted_id = nil
|
|
1328
1314
|
|
|
1329
|
-
# Check for EN ISO or EN IEC patterns (triple-level)
|
|
1330
|
-
|
|
1331
|
-
# match accepts "CEN ISO/TS 12180-1:2007" (the "EN ISO" is inside
|
|
1332
|
-
# "CEN ISO"), but `sub(/^EN\s+/, "")` then changes nothing, so
|
|
1333
|
-
# adopted_id stayed nil and the whole parse returned nil for 49
|
|
1334
|
-
# "DD CEN ISO/..." identifiers in BSI's own pass fixtures. Anchored,
|
|
1335
|
-
# a "CEN ..." string falls through to the CEN branch below, which is
|
|
1336
|
-
# where it belongs.
|
|
1337
|
-
if adopted_str_clean.match?(/\AEN\s+(ISO\/IEC|IEC|ISO)/)
|
|
1315
|
+
# Check for EN ISO or EN IEC patterns (triple-level)
|
|
1316
|
+
if adopted_str_clean.match?(/EN\s+(ISO\/IEC|IEC|ISO)/)
|
|
1338
1317
|
# Parse the ISO/IEC part
|
|
1339
1318
|
iso_iec_str = adopted_str_clean.sub(/^EN\s+/, "")
|
|
1340
1319
|
|
|
@@ -1377,9 +1356,6 @@ module Pubid
|
|
|
1377
1356
|
# Return appropriate wrapper based on adoption type
|
|
1378
1357
|
if adopted_id
|
|
1379
1358
|
# If adopted_id is a CEN identifier (in Cen module), use AdoptedEuropeanNorm
|
|
1380
|
-
# The Expert-commentary suffix is represented uniformly by an outer
|
|
1381
|
-
# ExpertCommentary wrapper (below), never a boolean on the inner norm,
|
|
1382
|
-
# so that #base_document peels cleanly to the bare standard.
|
|
1383
1359
|
identifier = if adopted_id.class.name.start_with?("Pubid::CenCenelec::")
|
|
1384
1360
|
Identifiers::AdoptedEuropeanNorm.new(
|
|
1385
1361
|
publisher: Components::Publisher.new(body: bsi_prefix),
|
|
@@ -1387,6 +1363,10 @@ module Pubid
|
|
|
1387
1363
|
edition: final_edition&.to_s,
|
|
1388
1364
|
translation_lang: data[:translation_lang]&.to_s,
|
|
1389
1365
|
translation_upper: data[:translation_upper]&.to_s,
|
|
1366
|
+
# Pass expert_commentary data so ConsolidatedIdentifier can render it
|
|
1367
|
+
expert_commentary: data[:expert_commentary],
|
|
1368
|
+
# Pass expert_commentary_topic if present
|
|
1369
|
+
expert_commentary_topic: data[:expert_commentary_topic],
|
|
1390
1370
|
# Pass translation_suffix_type for rendering
|
|
1391
1371
|
translation_suffix_type: data[:translation_suffix_type]&.to_s,
|
|
1392
1372
|
# Pass reaffirmation_year for rendering
|
|
@@ -1400,6 +1380,11 @@ module Pubid
|
|
|
1400
1380
|
edition: final_edition&.to_s,
|
|
1401
1381
|
translation_lang: data[:translation_lang]&.to_s,
|
|
1402
1382
|
translation_upper: data[:translation_upper]&.to_s,
|
|
1383
|
+
# Pass expert_commentary data ONLY if no supplements
|
|
1384
|
+
# When supplements are present, ConsolidatedIdentifier will add ExComm later
|
|
1385
|
+
expert_commentary: data[:expert_commentary] && extracted_supplements.none?,
|
|
1386
|
+
# Pass expert_commentary_topic if present and no supplements
|
|
1387
|
+
expert_commentary_topic: (data[:expert_commentary_topic] if extracted_supplements.none?),
|
|
1403
1388
|
# Pass translation_suffix_type for rendering
|
|
1404
1389
|
translation_suffix_type: data[:translation_suffix_type]&.to_s,
|
|
1405
1390
|
# Pass reaffirmation_year for rendering
|
|
@@ -1407,13 +1392,20 @@ module Pubid
|
|
|
1407
1392
|
)
|
|
1408
1393
|
end
|
|
1409
1394
|
|
|
1410
|
-
# Wrap supplements
|
|
1411
|
-
#
|
|
1412
|
-
#
|
|
1395
|
+
# NEW: Wrap with supplements if any were extracted from adopted_string
|
|
1396
|
+
# This must happen BEFORE wrapping with ExpertCommentary so that supplements
|
|
1397
|
+
# render before ExComm suffix
|
|
1413
1398
|
if extracted_supplements.any?
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1399
|
+
# When supplements are present, wrap with ConsolidatedIdentifier
|
|
1400
|
+
# Pass expert_commentary data so ConsolidatedIdentifier can render it later
|
|
1401
|
+
identifier = wrap_with_consolidated(
|
|
1402
|
+
identifier,
|
|
1403
|
+
extracted_supplements,
|
|
1404
|
+
expert_commentary: data[:expert_commentary],
|
|
1405
|
+
expert_commentary_topic: data[:expert_commentary_topic],
|
|
1406
|
+
)
|
|
1407
|
+
elsif data[:expert_commentary]
|
|
1408
|
+
# When no supplements but ExComm present, wrap with ExpertCommentary
|
|
1417
1409
|
identifier = wrap_with_expert_commentary(identifier)
|
|
1418
1410
|
end
|
|
1419
1411
|
|
|
@@ -1421,17 +1413,17 @@ module Pubid
|
|
|
1421
1413
|
end
|
|
1422
1414
|
end
|
|
1423
1415
|
|
|
1424
|
-
def wrap_with_consolidated(
|
|
1416
|
+
def wrap_with_consolidated(base_identifier, supplements_data,
|
|
1425
1417
|
expert_commentary: nil, expert_commentary_topic: nil)
|
|
1426
|
-
# If expert_commentary data is provided, set it on the
|
|
1418
|
+
# If expert_commentary data is provided, set it on the base_identifier
|
|
1427
1419
|
# This allows ConsolidatedIdentifier to render the ExComm suffix correctly
|
|
1428
1420
|
if expert_commentary
|
|
1429
|
-
base_attrs =
|
|
1421
|
+
base_attrs = base_identifier.class.attributes
|
|
1430
1422
|
if base_attrs.key?(:expert_commentary)
|
|
1431
|
-
|
|
1423
|
+
base_identifier.expert_commentary = expert_commentary
|
|
1432
1424
|
end
|
|
1433
1425
|
if expert_commentary_topic && base_attrs.key?(:expert_commentary_topic)
|
|
1434
|
-
|
|
1426
|
+
base_identifier.expert_commentary_topic = expert_commentary_topic
|
|
1435
1427
|
end
|
|
1436
1428
|
end
|
|
1437
1429
|
|
|
@@ -1446,15 +1438,14 @@ expert_commentary: nil, expert_commentary_topic: nil)
|
|
|
1446
1438
|
|
|
1447
1439
|
if supp[:type] == :amendment
|
|
1448
1440
|
Identifiers::Amendment.new(
|
|
1449
|
-
|
|
1441
|
+
base_identifier: base_identifier,
|
|
1450
1442
|
amendment_number: supp[:number],
|
|
1451
1443
|
amendment_year: year_val&.to_i,
|
|
1452
1444
|
separator: supp[:separator] || "+",
|
|
1453
|
-
amd_suffix_form: supp[:amd_suffix_form] ? true : false,
|
|
1454
1445
|
)
|
|
1455
1446
|
else
|
|
1456
1447
|
Identifiers::Corrigendum.new(
|
|
1457
|
-
|
|
1448
|
+
base_identifier: base_identifier,
|
|
1458
1449
|
corrigendum_number: supp[:number],
|
|
1459
1450
|
corrigendum_year: year_val&.to_i,
|
|
1460
1451
|
separator: supp[:separator] || "+",
|
|
@@ -1463,7 +1454,7 @@ expert_commentary: nil, expert_commentary_topic: nil)
|
|
|
1463
1454
|
end
|
|
1464
1455
|
|
|
1465
1456
|
Identifiers::ConsolidatedIdentifier.new(
|
|
1466
|
-
identifiers: [
|
|
1457
|
+
identifiers: [base_identifier] + supplement_ids,
|
|
1467
1458
|
)
|
|
1468
1459
|
end
|
|
1469
1460
|
|
|
@@ -1484,9 +1475,6 @@ expert_commentary: nil, expert_commentary_topic: nil)
|
|
|
1484
1475
|
number: (supp_data[:amd_number] || supp_data[:cor_number])&.to_s,
|
|
1485
1476
|
year: (supp_data[:amd_year] || supp_data[:cor_year])&.to_s,
|
|
1486
1477
|
separator: separator,
|
|
1487
|
-
# The compact "+A"/"/A" amendment rule captures an explicit separator;
|
|
1488
|
-
# the trailing " AMD5" suffix form does not.
|
|
1489
|
-
amd_suffix_form: !(supp_data[:amd_sep_plus] || supp_data[:amd_sep_slash]),
|
|
1490
1478
|
}
|
|
1491
1479
|
end
|
|
1492
1480
|
end
|