pubid 2.0.0.alpha.10 → 2.0.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +51 -54
- data/data/iec/update_codes.yaml +0 -3
- data/data/ieee/update_codes.yaml +1 -107
- data/data/nist/update_codes.yaml +0 -35
- data/lib/pubid/amca/builder.rb +6 -6
- data/lib/pubid/amca/identifier.rb +16 -2
- data/lib/pubid/amca/identifiers/base.rb +46 -74
- data/lib/pubid/amca/identifiers/interpretation.rb +30 -17
- data/lib/pubid/amca/identifiers/publication.rb +27 -14
- data/lib/pubid/amca/identifiers/standard.rb +5 -3
- data/lib/pubid/amca/identifiers.rb +1 -0
- data/lib/pubid/amca/parser.rb +1 -1
- data/lib/pubid/amca/scheme.rb +16 -0
- data/lib/pubid/amca/single_identifier.rb +24 -1
- data/lib/pubid/amca/urn_generator.rb +3 -4
- data/lib/pubid/amca.rb +3 -50
- data/lib/pubid/ansi/builder.rb +5 -7
- data/lib/pubid/ansi/identifier.rb +1 -19
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +1 -2
- data/lib/pubid/ansi/identifiers/standard.rb +3 -2
- data/lib/pubid/ansi/parser.rb +1 -1
- data/lib/pubid/ansi/scheme.rb +15 -0
- data/lib/pubid/ansi/single_identifier.rb +31 -2
- data/lib/pubid/ansi/urn_generator.rb +38 -3
- data/lib/pubid/ansi.rb +6 -47
- data/lib/pubid/api/builder.rb +72 -45
- data/lib/pubid/api/identifier.rb +9 -30
- data/lib/pubid/api/identifiers/base.rb +14 -2
- data/lib/pubid/api/identifiers/bulletin.rb +2 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +2 -0
- data/lib/pubid/api/identifiers/mpms.rb +28 -10
- data/lib/pubid/api/identifiers/publication.rb +2 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +2 -0
- data/lib/pubid/api/identifiers/specification.rb +2 -0
- data/lib/pubid/api/identifiers/standard.rb +2 -0
- data/lib/pubid/api/identifiers/technical_report.rb +2 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +16 -0
- data/lib/pubid/api/parser.rb +1 -1
- data/lib/pubid/api/scheme.rb +66 -0
- data/lib/pubid/api/single_identifier.rb +32 -10
- data/lib/pubid/api/urn_generator.rb +18 -0
- data/lib/pubid/api.rb +5 -56
- data/lib/pubid/ashrae/builder.rb +35 -56
- data/lib/pubid/ashrae/identifier.rb +16 -6
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +11 -7
- data/lib/pubid/ashrae/identifiers/addendum.rb +20 -9
- data/lib/pubid/ashrae/identifiers/base.rb +15 -111
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +16 -8
- data/lib/pubid/ashrae/identifiers/errata.rb +10 -9
- data/lib/pubid/ashrae/identifiers/guideline.rb +0 -3
- data/lib/pubid/ashrae/identifiers/interpretation.rb +10 -16
- data/lib/pubid/ashrae/identifiers/standard.rb +0 -3
- data/lib/pubid/ashrae/identifiers.rb +1 -0
- data/lib/pubid/ashrae/parser.rb +16 -40
- data/lib/pubid/ashrae/scheme.rb +53 -0
- data/lib/pubid/ashrae/single_identifier.rb +14 -1
- data/lib/pubid/ashrae/supplement_identifier.rb +6 -21
- data/lib/pubid/ashrae/urn_generator.rb +10 -8
- data/lib/pubid/ashrae.rb +2 -58
- data/lib/pubid/asme/builder.rb +2 -11
- data/lib/pubid/asme/components/code.rb +2 -10
- data/lib/pubid/asme/identifier.rb +0 -9
- data/lib/pubid/asme/identifiers/base.rb +60 -0
- data/lib/pubid/asme/identifiers/standard.rb +2 -86
- data/lib/pubid/asme/parser.rb +1 -1
- data/lib/pubid/asme/scheme.rb +37 -0
- data/lib/pubid/asme/single_identifier.rb +2 -11
- data/lib/pubid/asme/urn_generator.rb +2 -2
- data/lib/pubid/asme.rb +1 -47
- data/lib/pubid/astm/builder.rb +3 -10
- data/lib/pubid/astm/components/code.rb +0 -9
- data/lib/pubid/astm/identifier.rb +0 -9
- data/lib/pubid/astm/identifiers/adjunct.rb +9 -16
- data/lib/pubid/astm/identifiers/data_series.rb +14 -2
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +34 -25
- data/lib/pubid/astm/identifiers/manual.rb +25 -8
- data/lib/pubid/astm/identifiers/monograph.rb +14 -2
- data/lib/pubid/astm/identifiers/research_report.rb +5 -8
- data/lib/pubid/astm/identifiers/standard.rb +37 -8
- data/lib/pubid/astm/identifiers/technical_report.rb +13 -2
- data/lib/pubid/astm/identifiers/work_in_progress.rb +10 -1
- data/lib/pubid/astm/parser.rb +1 -1
- data/lib/pubid/astm/scheme.rb +55 -0
- data/lib/pubid/astm/single_identifier.rb +10 -32
- data/lib/pubid/astm/urn_generator.rb +5 -7
- data/lib/pubid/astm.rb +27 -44
- data/lib/pubid/bsi/builder.rb +107 -119
- data/lib/pubid/bsi/identifier.rb +25 -4
- data/lib/pubid/bsi/identifiers/addendum_document.rb +37 -3
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +47 -19
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +39 -8
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +55 -2
- data/lib/pubid/bsi/identifiers/amendment.rb +22 -30
- data/lib/pubid/bsi/identifiers/base.rb +11 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +7 -1
- data/lib/pubid/bsi/identifiers/british_standard.rb +1 -2
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +87 -13
- data/lib/pubid/bsi/identifiers/committee_document.rb +17 -10
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +87 -19
- data/lib/pubid/bsi/identifiers/corrigendum.rb +10 -26
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +36 -0
- data/lib/pubid/bsi/identifiers/disc.rb +29 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +46 -2
- data/lib/pubid/bsi/identifiers/electronic_book.rb +38 -2
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +21 -10
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +47 -0
- data/lib/pubid/bsi/identifiers/flex.rb +34 -3
- data/lib/pubid/bsi/identifiers/handbook.rb +17 -1
- data/lib/pubid/bsi/identifiers/index.rb +32 -0
- data/lib/pubid/bsi/identifiers/method.rb +41 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +29 -4
- data/lib/pubid/bsi/identifiers/practice_guide.rb +7 -1
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +54 -2
- data/lib/pubid/bsi/identifiers/published_document.rb +54 -2
- data/lib/pubid/bsi/identifiers/section.rb +30 -0
- data/lib/pubid/bsi/identifiers/set.rb +20 -14
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -10
- data/lib/pubid/bsi/identifiers/supplement_document.rb +25 -3
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +46 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +47 -2
- data/lib/pubid/bsi/identifiers/test_method.rb +32 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +22 -7
- data/lib/pubid/bsi/identifiers.rb +1 -0
- data/lib/pubid/bsi/parser.rb +6 -20
- data/lib/pubid/bsi/scheme.rb +243 -0
- data/lib/pubid/bsi/single_identifier.rb +82 -94
- data/lib/pubid/bsi/urn_generator.rb +5 -13
- data/lib/pubid/bsi.rb +2 -252
- data/lib/pubid/builder/base.rb +13 -62
- data/lib/pubid/bundled_identifier.rb +10 -18
- data/lib/pubid/ccsds/builder.rb +4 -5
- data/lib/pubid/ccsds/identifier.rb +3 -63
- data/lib/pubid/ccsds/identifiers/base.rb +51 -14
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +8 -9
- data/lib/pubid/ccsds/parser.rb +3 -5
- data/lib/pubid/ccsds/scheme.rb +57 -0
- data/lib/pubid/ccsds/single_identifier.rb +3 -6
- data/lib/pubid/ccsds/supplement_identifier.rb +13 -17
- data/lib/pubid/ccsds/urn_generator.rb +6 -6
- data/lib/pubid/ccsds.rb +1 -44
- data/lib/pubid/cen_cenelec/builder.rb +29 -61
- data/lib/pubid/cen_cenelec/identifier.rb +5 -28
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +4 -9
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +12 -2
- data/lib/pubid/cen_cenelec/identifiers/base.rb +46 -5
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +27 -6
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +17 -2
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +4 -62
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +7 -20
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +6 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/parser.rb +1 -1
- data/lib/pubid/cen_cenelec/scheme.rb +164 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +91 -10
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +7 -6
- data/lib/pubid/cen_cenelec/urn_generator.rb +7 -7
- data/lib/pubid/cen_cenelec.rb +1 -188
- data/lib/pubid/cie/builder.rb +24 -149
- data/lib/pubid/cie/components/code.rb +72 -0
- data/lib/pubid/cie/identifier.rb +5 -20
- data/lib/pubid/cie/identifiers/bundle.rb +5 -35
- data/lib/pubid/cie/identifiers/conference.rb +6 -11
- data/lib/pubid/cie/identifiers/corrigendum.rb +23 -17
- data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
- data/lib/pubid/cie/identifiers/identical.rb +9 -9
- data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
- data/lib/pubid/cie/identifiers/standard.rb +8 -43
- data/lib/pubid/cie/identifiers/supplement.rb +25 -27
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +3 -7
- data/lib/pubid/cie/identifiers.rb +0 -2
- data/lib/pubid/cie/parser.rb +6 -55
- data/lib/pubid/cie/scheme.rb +64 -0
- data/lib/pubid/cie/single_identifier.rb +5 -44
- data/lib/pubid/cie/supplement_identifier.rb +16 -29
- data/lib/pubid/cie/urn_generator.rb +8 -11
- data/lib/pubid/cie.rb +2 -57
- data/lib/pubid/components/code.rb +8 -22
- data/lib/pubid/components/date.rb +18 -41
- data/lib/pubid/components/edition.rb +6 -9
- data/lib/pubid/components/language.rb +4 -6
- data/lib/pubid/components/locality.rb +1 -10
- data/lib/pubid/components/publisher.rb +6 -9
- data/lib/pubid/components/stage.rb +14 -5
- data/lib/pubid/components/type.rb +15 -5
- data/lib/pubid/components/typed_stage.rb +8 -11
- data/lib/pubid/components.rb +0 -4
- data/lib/pubid/core/update_codes.rb +7 -28
- data/lib/pubid/csa/builder.rb +48 -48
- data/lib/pubid/csa/composite_identifier.rb +7 -18
- data/lib/pubid/csa/identifier.rb +78 -191
- data/lib/pubid/csa/identifiers/base.rb +123 -0
- data/lib/pubid/csa/identifiers/bundled.rb +9 -25
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
- data/lib/pubid/csa/identifiers/cec.rb +103 -40
- data/lib/pubid/csa/identifiers/combined.rb +69 -97
- data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
- data/lib/pubid/csa/identifiers/package.rb +4 -4
- data/lib/pubid/csa/identifiers/series.rb +104 -0
- data/lib/pubid/csa/parser.rb +8 -12
- data/lib/pubid/csa/scheme.rb +44 -0
- data/lib/pubid/csa/single_identifier.rb +5 -94
- data/lib/pubid/csa/urn_generator.rb +2 -9
- data/lib/pubid/csa/wrapper_identifier.rb +10 -43
- data/lib/pubid/csa.rb +1 -56
- data/lib/pubid/etsi/builder.rb +4 -13
- data/lib/pubid/etsi/components/code.rb +9 -10
- data/lib/pubid/etsi/components/version.rb +5 -0
- data/lib/pubid/etsi/identifier.rb +12 -2
- data/lib/pubid/etsi/identifiers/base.rb +24 -60
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +4 -207
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +14 -46
- data/lib/pubid/etsi/identifiers.rb +1 -0
- data/lib/pubid/etsi/parser.rb +3 -9
- data/lib/pubid/etsi/scheme.rb +42 -0
- data/lib/pubid/etsi.rb +2 -52
- data/lib/pubid/export/data_class_exporter.rb +59 -0
- data/lib/pubid/export/exporter.rb +47 -6
- data/lib/pubid/export/flavor_exporter.rb +276 -124
- data/lib/pubid/export/ieee_exporter.rb +78 -0
- data/lib/pubid/export/itu_exporter.rb +66 -0
- data/lib/pubid/export/nist_exporter.rb +64 -0
- data/lib/pubid/export/registry_exporter.rb +90 -0
- data/lib/pubid/export/scheme_exporter.rb +70 -0
- data/lib/pubid/export.rb +6 -0
- data/lib/pubid/identifier.rb +37 -920
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/identifier_registry.rb +198 -0
- data/lib/pubid/idf/builder.rb +7 -7
- data/lib/pubid/idf/identifier.rb +13 -23
- data/lib/pubid/idf/identifiers/amendment.rb +1 -2
- data/lib/pubid/idf/identifiers/corrigendum.rb +1 -2
- data/lib/pubid/idf/identifiers/international_standard.rb +1 -2
- data/lib/pubid/idf/identifiers/reviewed_method.rb +1 -2
- data/lib/pubid/idf/parser.rb +5 -6
- data/lib/pubid/idf/scheme.rb +61 -0
- data/lib/pubid/idf/supplement_identifier.rb +13 -5
- data/lib/pubid/idf/urn_generator.rb +39 -4
- data/lib/pubid/idf.rb +1 -65
- data/lib/pubid/iec/builder.rb +91 -92
- data/lib/pubid/iec/components/code.rb +32 -9
- data/lib/pubid/iec/components/publisher.rb +1 -1
- data/lib/pubid/iec/identifier.rb +8 -328
- data/lib/pubid/iec/identifiers/amendment.rb +5 -8
- data/lib/pubid/iec/identifiers/base.rb +31 -7
- data/lib/pubid/iec/identifiers/component_specification.rb +13 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +12 -1
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +30 -29
- data/lib/pubid/iec/identifiers/corrigendum.rb +5 -4
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +36 -43
- data/lib/pubid/iec/identifiers/guide.rb +18 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +9 -24
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +3 -2
- data/lib/pubid/iec/identifiers/operational_document.rb +13 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +15 -2
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +24 -26
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +13 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +13 -2
- data/lib/pubid/iec/identifiers/technical_report.rb +21 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +21 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +12 -1
- data/lib/pubid/iec/identifiers/test_report_form.rb +46 -3
- data/lib/pubid/iec/identifiers/vap_identifier.rb +34 -33
- data/lib/pubid/iec/identifiers/white_paper.rb +13 -3
- data/lib/pubid/iec/identifiers/working_document.rb +60 -26
- data/lib/pubid/iec/parser.rb +42 -73
- data/lib/pubid/iec/scheme.rb +71 -0
- data/lib/pubid/iec/single_identifier.rb +23 -15
- data/lib/pubid/iec/supplement_identifier.rb +67 -84
- data/lib/pubid/iec/urn_generator.rb +143 -195
- data/lib/pubid/iec/urn_parser.rb +246 -85
- data/lib/pubid/iec.rb +66 -45
- data/lib/pubid/ieee/aiee/builder.rb +3 -17
- data/lib/pubid/ieee/aiee/identifier.rb +62 -46
- data/lib/pubid/ieee/aiee/parser.rb +1 -1
- data/lib/pubid/ieee/builder.rb +81 -398
- data/lib/pubid/ieee/components/code.rb +0 -8
- data/lib/pubid/ieee/components/draft.rb +0 -54
- data/lib/pubid/ieee/components/relationship.rb +149 -5
- data/lib/pubid/ieee/identifier.rb +11 -3
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +14 -62
- data/lib/pubid/ieee/identifiers/base.rb +547 -340
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +12 -6
- data/lib/pubid/ieee/identifiers/corrigendum.rb +12 -15
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +13 -24
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +7 -3
- data/lib/pubid/ieee/identifiers/dual_published.rb +7 -58
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +11 -99
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +11 -25
- data/lib/pubid/ieee/identifiers/joint_development.rb +15 -66
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +24 -58
- data/lib/pubid/ieee/identifiers/nesc/base.rb +19 -90
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +5 -20
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +5 -16
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +2 -11
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +3 -18
- data/lib/pubid/ieee/identifiers/nesc.rb +0 -1
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +9 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +6 -29
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +11 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +39 -4
- data/lib/pubid/ieee/identifiers/standard.rb +2 -5
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +7 -26
- data/lib/pubid/ieee/identifiers.rb +1 -2
- data/lib/pubid/ieee/ire/builder.rb +6 -7
- data/lib/pubid/ieee/ire/identifier.rb +33 -48
- data/lib/pubid/ieee/ire/parser.rb +1 -1
- data/lib/pubid/ieee/nesc/builder.rb +20 -33
- data/lib/pubid/ieee/nesc/parser.rb +15 -16
- data/lib/pubid/ieee/parser.rb +44 -462
- data/lib/pubid/ieee/scheme.rb +90 -0
- data/lib/pubid/ieee/typed_stages.rb +1 -12
- data/lib/pubid/ieee/urn_generator.rb +8 -35
- data/lib/pubid/ieee.rb +2 -133
- data/lib/pubid/ieee_debug.rb +1 -0
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +17 -5
- data/lib/pubid/iho/identifiers/base.rb +30 -64
- data/lib/pubid/iho/identifiers/bibliographic.rb +5 -1
- data/lib/pubid/iho/identifiers/circular_letter.rb +5 -1
- data/lib/pubid/iho/identifiers/miscellaneous.rb +5 -1
- data/lib/pubid/iho/identifiers/publication.rb +5 -1
- data/lib/pubid/iho/identifiers/standard.rb +5 -1
- data/lib/pubid/iho/identifiers.rb +1 -0
- data/lib/pubid/iho/parser.rb +4 -4
- data/lib/pubid/iho/scheme.rb +29 -0
- data/lib/pubid/iho/urn_generator.rb +3 -3
- data/lib/pubid/iho.rb +3 -59
- data/lib/pubid/iso/builder.rb +57 -68
- data/lib/pubid/iso/bundled_identifier.rb +3 -56
- data/lib/pubid/iso/combined_identifier.rb +4 -6
- data/lib/pubid/iso/components/code.rb +19 -7
- data/lib/pubid/iso/components/publisher.rb +8 -10
- data/lib/pubid/iso/components.rb +4 -2
- data/lib/pubid/iso/identifier.rb +11 -260
- data/lib/pubid/iso/identifiers/addendum.rb +6 -9
- data/lib/pubid/iso/identifiers/amendment.rb +4 -8
- data/lib/pubid/iso/identifiers/base.rb +115 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +1 -0
- data/lib/pubid/iso/identifiers/directives.rb +2 -8
- data/lib/pubid/iso/identifiers/directives_supplement.rb +26 -55
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +1 -0
- data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
- data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +4 -10
- data/lib/pubid/iso/identifiers/pas.rb +2 -2
- data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
- data/lib/pubid/iso/identifiers/supplement.rb +3 -11
- data/lib/pubid/iso/identifiers/tc_document.rb +15 -44
- data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
- data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
- data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
- data/lib/pubid/iso/identifiers.rb +1 -0
- data/lib/pubid/iso/parser.rb +19 -43
- data/lib/pubid/iso/scheme.rb +187 -0
- data/lib/pubid/iso/single_identifier.rb +7 -6
- data/lib/pubid/iso/supplement_identifier.rb +3 -29
- data/lib/pubid/iso/urn_generator.rb +177 -78
- data/lib/pubid/iso/urn_parser.rb +10 -29
- data/lib/pubid/iso.rb +2 -188
- data/lib/pubid/itu/builder.rb +41 -230
- data/lib/pubid/itu/components/code.rb +12 -57
- data/lib/pubid/itu/components/sector.rb +4 -15
- data/lib/pubid/itu/components/series.rb +4 -0
- data/lib/pubid/itu/identifier.rb +51 -2
- data/lib/pubid/itu/identifiers/amendment.rb +31 -7
- data/lib/pubid/itu/identifiers/annex.rb +4 -13
- data/lib/pubid/itu/identifiers/base.rb +128 -456
- data/lib/pubid/itu/identifiers/combined_identifier.rb +25 -99
- data/lib/pubid/itu/identifiers/corrigendum.rb +25 -16
- data/lib/pubid/itu/identifiers/recommendation.rb +4 -3
- data/lib/pubid/itu/identifiers/special_publication.rb +3 -3
- data/lib/pubid/itu/identifiers/supplement.rb +16 -119
- data/lib/pubid/itu/identifiers.rb +1 -10
- data/lib/pubid/itu/model.rb +1 -1
- data/lib/pubid/itu/parser.rb +27 -481
- data/lib/pubid/itu/scheme.rb +174 -0
- data/lib/pubid/itu/urn_generator.rb +6 -36
- data/lib/pubid/itu.rb +2 -58
- data/lib/pubid/jcgm/builder.rb +19 -37
- data/lib/pubid/jcgm/identifier.rb +0 -10
- data/lib/pubid/jcgm/identifiers/amendment.rb +11 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +15 -3
- data/lib/pubid/jcgm/identifiers.rb +0 -2
- data/lib/pubid/jcgm/parser.rb +7 -74
- data/lib/pubid/jcgm/scheme.rb +60 -0
- data/lib/pubid/jcgm/single_identifier.rb +14 -84
- data/lib/pubid/jcgm/supplement_identifier.rb +4 -39
- data/lib/pubid/jcgm/urn_generator.rb +19 -25
- data/lib/pubid/jcgm.rb +2 -57
- data/lib/pubid/jis/builder.rb +52 -44
- data/lib/pubid/jis/components/code.rb +59 -0
- data/lib/pubid/{astm → jis}/components.rb +1 -1
- data/lib/pubid/jis/identifier.rb +5 -181
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/base.rb +72 -0
- data/lib/pubid/jis/identifiers/standard.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_report.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +6 -32
- data/lib/pubid/jis/scheme.rb +49 -0
- data/lib/pubid/jis/single_identifier.rb +12 -6
- data/lib/pubid/jis/supplement_identifier.rb +14 -17
- data/lib/pubid/jis.rb +2 -48
- data/lib/pubid/nist/builder.rb +1765 -146
- data/lib/pubid/nist/components/code.rb +20 -9
- data/lib/pubid/nist/components/edition.rb +0 -16
- data/lib/pubid/nist/components/publisher.rb +24 -0
- data/lib/pubid/nist/components/supplement.rb +21 -91
- data/lib/pubid/nist/components.rb +1 -0
- data/lib/pubid/nist/configuration.rb +2 -12
- data/lib/pubid/nist/identifiers/base.rb +417 -662
- data/lib/pubid/nist/identifiers/circular.rb +5 -17
- data/lib/pubid/nist/identifiers/circular_supplement.rb +6 -16
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -3
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +5 -7
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +5 -18
- data/lib/pubid/nist/identifiers/crpl_report.rb +13 -16
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -18
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -3
- data/lib/pubid/nist/identifiers/handbook.rb +4 -12
- data/lib/pubid/nist/identifiers/internal_report.rb +7 -15
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -3
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +11 -20
- data/lib/pubid/nist/identifiers/monograph.rb +11 -22
- data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
- data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
- data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
- data/lib/pubid/nist/identifiers/report.rb +10 -19
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -12
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -4
- data/lib/pubid/nist/identifiers.rb +1 -1
- data/lib/pubid/nist/parser.rb +429 -97
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +34 -35
- data/lib/pubid/nist/urn_generator.rb +8 -14
- data/lib/pubid/nist.rb +5 -107
- data/lib/pubid/oiml/builder.rb +10 -91
- data/lib/pubid/oiml/components/code.rb +0 -17
- data/lib/pubid/oiml/identifier.rb +0 -53
- data/lib/pubid/oiml/identifiers/annex.rb +46 -13
- data/lib/pubid/oiml/identifiers/base.rb +36 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +0 -2
- data/lib/pubid/oiml/identifiers/document.rb +0 -2
- data/lib/pubid/oiml/identifiers/expert_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/guide.rb +0 -2
- data/lib/pubid/oiml/identifiers/recommendation.rb +0 -2
- data/lib/pubid/oiml/identifiers/seminar_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/vocabulary.rb +0 -2
- data/lib/pubid/oiml/identifiers.rb +1 -3
- data/lib/pubid/oiml/parser.rb +17 -118
- data/lib/pubid/oiml/scheme.rb +46 -0
- data/lib/pubid/oiml/single_identifier.rb +43 -66
- data/lib/pubid/oiml/supplement_identifier.rb +17 -62
- data/lib/pubid/oiml/urn_generator.rb +8 -22
- data/lib/pubid/oiml.rb +1 -56
- data/lib/pubid/parser.rb +0 -1
- data/lib/pubid/parsers/mr_string.rb +7 -120
- data/lib/pubid/plateau/builder.rb +4 -8
- data/lib/pubid/plateau/identifiers/base.rb +36 -40
- data/lib/pubid/plateau/identifiers/handbook.rb +7 -1
- data/lib/pubid/plateau/identifiers/technical_report.rb +5 -1
- data/lib/pubid/plateau/identifiers.rb +1 -0
- data/lib/pubid/plateau/parser.rb +6 -16
- data/lib/pubid/plateau/scheme.rb +45 -0
- data/lib/pubid/plateau/supplement_identifier.rb +15 -11
- data/lib/pubid/plateau.rb +1 -58
- data/lib/pubid/renderers/base.rb +0 -47
- data/lib/pubid/renderers/directives_renderer.rb +14 -27
- data/lib/pubid/renderers/guide_renderer.rb +1 -7
- data/lib/pubid/renderers/human_readable.rb +9 -34
- data/lib/pubid/renderers/iwa_renderer.rb +1 -5
- data/lib/pubid/renderers/mr_string.rb +6 -54
- data/lib/pubid/renderers/supplement_renderer.rb +2 -5
- data/lib/pubid/renderers.rb +0 -1
- data/lib/pubid/rendering/base.rb +73 -0
- data/lib/pubid/rendering/common.rb +211 -0
- data/lib/pubid/rendering/context.rb +21 -33
- data/lib/pubid/rendering/format.rb +25 -0
- data/lib/pubid/rendering/numbering.rb +7 -25
- data/lib/pubid/rendering/supplement.rb +4 -4
- data/lib/pubid/rendering.rb +3 -0
- data/lib/pubid/sae/builder.rb +1 -1
- data/lib/pubid/sae/components/date.rb +0 -8
- data/lib/pubid/sae/components/type.rb +1 -5
- data/lib/pubid/sae/identifier.rb +12 -2
- data/lib/pubid/sae/identifiers/base.rb +28 -33
- data/lib/pubid/sae/identifiers.rb +1 -0
- data/lib/pubid/sae/parser.rb +1 -1
- data/lib/pubid/sae/scheme.rb +47 -0
- data/lib/pubid/sae/urn_generator.rb +10 -2
- data/lib/pubid/sae.rb +2 -49
- data/lib/pubid/scheme.rb +207 -0
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +10 -424
- data/lib/tasks/export.rake +5 -6
- data/lib/tasks/website-data.json +1796 -1854
- metadata +45 -307
- data/data/bipm/update_codes.yaml +0 -9
- data/data/nist/series.yaml +0 -155
- data/lib/pubid/adobe/builder.rb +0 -52
- data/lib/pubid/adobe/identifier.rb +0 -47
- data/lib/pubid/adobe/identifiers/publication.rb +0 -31
- data/lib/pubid/adobe/identifiers/tech_note.rb +0 -32
- data/lib/pubid/adobe/identifiers.rb +0 -10
- data/lib/pubid/adobe/parser.rb +0 -136
- data/lib/pubid/adobe/renderer.rb +0 -39
- data/lib/pubid/adobe/urn_generator.rb +0 -42
- data/lib/pubid/adobe/urn_parser.rb +0 -69
- data/lib/pubid/adobe.rb +0 -60
- data/lib/pubid/amca/renderer.rb +0 -82
- data/lib/pubid/amca/urn_parser.rb +0 -28
- data/lib/pubid/ansi/renderer.rb +0 -53
- data/lib/pubid/ansi/urn_parser.rb +0 -23
- data/lib/pubid/api/identifiers.rb +0 -18
- data/lib/pubid/api/renderer.rb +0 -98
- data/lib/pubid/api/urn_parser.rb +0 -35
- data/lib/pubid/ashrae/renderer.rb +0 -117
- data/lib/pubid/ashrae/urn_parser.rb +0 -27
- data/lib/pubid/asme/renderer.rb +0 -66
- data/lib/pubid/asme/urn_parser.rb +0 -31
- data/lib/pubid/astm/identifiers/code_number.rb +0 -81
- data/lib/pubid/astm/identifiers.rb +0 -19
- data/lib/pubid/astm/renderer.rb +0 -172
- data/lib/pubid/astm/urn_parser.rb +0 -30
- data/lib/pubid/bipm/builder.rb +0 -163
- data/lib/pubid/bipm/identifier.rb +0 -285
- data/lib/pubid/bipm/identifiers/committee_document.rb +0 -36
- data/lib/pubid/bipm/identifiers/guide.rb +0 -35
- data/lib/pubid/bipm/identifiers/meeting.rb +0 -53
- data/lib/pubid/bipm/identifiers/mep.rb +0 -33
- data/lib/pubid/bipm/identifiers/metrologia_article.rb +0 -48
- data/lib/pubid/bipm/identifiers/si_brochure.rb +0 -33
- data/lib/pubid/bipm/identifiers.rb +0 -15
- data/lib/pubid/bipm/parser.rb +0 -237
- data/lib/pubid/bipm/renderer.rb +0 -118
- data/lib/pubid/bipm/urn_generator.rb +0 -58
- data/lib/pubid/bipm/urn_parser.rb +0 -60
- data/lib/pubid/bipm.rb +0 -91
- data/lib/pubid/bsi/renderer.rb +0 -1064
- data/lib/pubid/bsi/urn_parser.rb +0 -52
- data/lib/pubid/calconnect/builder.rb +0 -38
- data/lib/pubid/calconnect/identifier.rb +0 -121
- data/lib/pubid/calconnect/identifiers/standard.rb +0 -29
- data/lib/pubid/calconnect/identifiers.rb +0 -9
- data/lib/pubid/calconnect/parser.rb +0 -54
- data/lib/pubid/calconnect/renderer.rb +0 -36
- data/lib/pubid/calconnect/urn_generator.rb +0 -33
- data/lib/pubid/calconnect/urn_parser.rb +0 -34
- data/lib/pubid/calconnect.rb +0 -82
- data/lib/pubid/ccsds/urn_parser.rb +0 -20
- data/lib/pubid/cen_cenelec/renderer.rb +0 -261
- data/lib/pubid/cen_cenelec/urn_parser.rb +0 -28
- data/lib/pubid/cie/identifiers/code_attributes.rb +0 -52
- data/lib/pubid/cie/identifiers/proceedings.rb +0 -41
- data/lib/pubid/cie/urn_parser.rb +0 -28
- data/lib/pubid/components/adoption.rb +0 -104
- data/lib/pubid/components/iteration.rb +0 -32
- data/lib/pubid/components/relationship.rb +0 -151
- data/lib/pubid/components/supplement.rb +0 -184
- data/lib/pubid/csa/renderer.rb +0 -300
- data/lib/pubid/csa/urn_parser.rb +0 -33
- data/lib/pubid/doi/builder.rb +0 -18
- data/lib/pubid/doi/identifier.rb +0 -49
- data/lib/pubid/doi/identifiers/resource.rb +0 -30
- data/lib/pubid/doi/identifiers.rb +0 -9
- data/lib/pubid/doi/parser.rb +0 -52
- data/lib/pubid/doi/renderer.rb +0 -13
- data/lib/pubid/doi.rb +0 -55
- data/lib/pubid/easc/builder.rb +0 -55
- data/lib/pubid/easc/identifier.rb +0 -59
- data/lib/pubid/easc/identifiers/pmg.rb +0 -20
- data/lib/pubid/easc/identifiers/rmg.rb +0 -19
- data/lib/pubid/easc/identifiers.rb +0 -10
- data/lib/pubid/easc/parser.rb +0 -88
- data/lib/pubid/easc/renderer.rb +0 -48
- data/lib/pubid/easc/urn_generator.rb +0 -46
- data/lib/pubid/easc/urn_parser.rb +0 -57
- data/lib/pubid/easc.rb +0 -52
- data/lib/pubid/ecma/builder.rb +0 -45
- data/lib/pubid/ecma/identifier.rb +0 -147
- data/lib/pubid/ecma/identifiers/memento.rb +0 -30
- data/lib/pubid/ecma/identifiers/standard.rb +0 -31
- data/lib/pubid/ecma/identifiers/technical_report.rb +0 -31
- data/lib/pubid/ecma/identifiers.rb +0 -11
- data/lib/pubid/ecma/parser.rb +0 -76
- data/lib/pubid/ecma/renderer.rb +0 -67
- data/lib/pubid/ecma/urn_generator.rb +0 -46
- data/lib/pubid/ecma/urn_parser.rb +0 -51
- data/lib/pubid/ecma.rb +0 -67
- data/lib/pubid/errors.rb +0 -79
- data/lib/pubid/etsi/renderer.rb +0 -48
- data/lib/pubid/etsi/urn_parser.rb +0 -34
- data/lib/pubid/gb/builder.rb +0 -45
- data/lib/pubid/gb/identifier.rb +0 -67
- data/lib/pubid/gb/identifiers/standard.rb +0 -34
- data/lib/pubid/gb/identifiers.rb +0 -9
- data/lib/pubid/gb/parser.rb +0 -63
- data/lib/pubid/gb/renderer.rb +0 -35
- data/lib/pubid/gb.rb +0 -87
- data/lib/pubid/gost/builder.rb +0 -148
- data/lib/pubid/gost/identifier.rb +0 -47
- data/lib/pubid/gost/identifiers/foreign_reference.rb +0 -25
- data/lib/pubid/gost/identifiers/harmonized.rb +0 -39
- data/lib/pubid/gost/identifiers/identical_adoption.rb +0 -39
- data/lib/pubid/gost/identifiers/interstate_standard.rb +0 -20
- data/lib/pubid/gost/identifiers/national_standard.rb +0 -19
- data/lib/pubid/gost/identifiers.rb +0 -13
- data/lib/pubid/gost/parser.rb +0 -105
- data/lib/pubid/gost/renderer.rb +0 -48
- data/lib/pubid/gost/urn_generator.rb +0 -46
- data/lib/pubid/gost/urn_parser.rb +0 -52
- data/lib/pubid/gost.rb +0 -49
- data/lib/pubid/iala/builder.rb +0 -102
- data/lib/pubid/iala/identifier.rb +0 -90
- data/lib/pubid/iala/identifiers/advice.rb +0 -15
- data/lib/pubid/iala/identifiers/annex.rb +0 -57
- data/lib/pubid/iala/identifiers/general_assembly.rb +0 -19
- data/lib/pubid/iala/identifiers/guideline.rb +0 -17
- data/lib/pubid/iala/identifiers/letter.rb +0 -16
- data/lib/pubid/iala/identifiers/manual.rb +0 -18
- data/lib/pubid/iala/identifiers/model_course.rb +0 -17
- data/lib/pubid/iala/identifiers/recommendation.rb +0 -17
- data/lib/pubid/iala/identifiers/report.rb +0 -16
- data/lib/pubid/iala/identifiers/resolution.rb +0 -16
- data/lib/pubid/iala/identifiers/standard.rb +0 -17
- data/lib/pubid/iala/identifiers.rb +0 -19
- data/lib/pubid/iala/parser.rb +0 -138
- data/lib/pubid/iala/renderer.rb +0 -36
- data/lib/pubid/iala/urn_generator.rb +0 -49
- data/lib/pubid/iala/urn_parser.rb +0 -67
- data/lib/pubid/iala.rb +0 -71
- data/lib/pubid/iana/builder.rb +0 -22
- data/lib/pubid/iana/identifier.rb +0 -140
- data/lib/pubid/iana/identifiers/registry.rb +0 -69
- data/lib/pubid/iana/identifiers.rb +0 -9
- data/lib/pubid/iana/parser.rb +0 -38
- data/lib/pubid/iana/renderer.rb +0 -32
- data/lib/pubid/iana/urn_generator.rb +0 -19
- data/lib/pubid/iana/urn_parser.rb +0 -24
- data/lib/pubid/iana.rb +0 -69
- data/lib/pubid/idf/renderer.rb +0 -84
- data/lib/pubid/idf/urn_parser.rb +0 -25
- data/lib/pubid/iec/components.rb +0 -14
- data/lib/pubid/iec/identifiers/technical_group.rb +0 -30
- data/lib/pubid/iec/identifiers.rb +0 -31
- data/lib/pubid/iec/renderer.rb +0 -267
- data/lib/pubid/ieee/compaction.rb +0 -121
- data/lib/pubid/ieee/identifiers/amendment.rb +0 -40
- data/lib/pubid/ieee/identifiers/code_number.rb +0 -82
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +0 -32
- data/lib/pubid/ieee/pre_parser.rb +0 -301
- data/lib/pubid/ieee/renderer.rb +0 -408
- data/lib/pubid/ieee/urn_parser.rb +0 -34
- data/lib/pubid/ietf/builder.rb +0 -78
- data/lib/pubid/ietf/identifier.rb +0 -5
- data/lib/pubid/ietf/identifiers/base.rb +0 -72
- data/lib/pubid/ietf/identifiers/bcp.rb +0 -36
- data/lib/pubid/ietf/identifiers/fyi.rb +0 -36
- data/lib/pubid/ietf/identifiers/internet_draft.rb +0 -45
- data/lib/pubid/ietf/identifiers/rfc.rb +0 -27
- data/lib/pubid/ietf/identifiers/serialization.rb +0 -51
- data/lib/pubid/ietf/identifiers/std.rb +0 -36
- data/lib/pubid/ietf/identifiers.rb +0 -14
- data/lib/pubid/ietf/parser.rb +0 -61
- data/lib/pubid/ietf/renderer.rb +0 -64
- data/lib/pubid/ietf/urn_generator.rb +0 -37
- data/lib/pubid/ietf/urn_parser.rb +0 -43
- data/lib/pubid/ietf.rb +0 -85
- data/lib/pubid/iho/renderer.rb +0 -30
- data/lib/pubid/iho/urn_parser.rb +0 -58
- data/lib/pubid/isbn/builder.rb +0 -44
- data/lib/pubid/isbn/check_digit.rb +0 -53
- data/lib/pubid/isbn/identifier.rb +0 -81
- data/lib/pubid/isbn/identifiers/book.rb +0 -30
- data/lib/pubid/isbn/identifiers.rb +0 -9
- data/lib/pubid/isbn/parser.rb +0 -45
- data/lib/pubid/isbn/renderer.rb +0 -16
- data/lib/pubid/isbn.rb +0 -52
- data/lib/pubid/iso/normalizer.rb +0 -89
- data/lib/pubid/itu/components/designation.rb +0 -35
- data/lib/pubid/itu/components.rb +0 -12
- data/lib/pubid/itu/identifiers/addendum.rb +0 -15
- data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +0 -87
- data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +0 -92
- data/lib/pubid/itu/identifiers/errata.rb +0 -15
- data/lib/pubid/itu/identifiers/handbook.rb +0 -38
- data/lib/pubid/itu/identifiers/question.rb +0 -63
- data/lib/pubid/itu/identifiers/report.rb +0 -39
- data/lib/pubid/itu/identifiers/standard_serialization.rb +0 -58
- data/lib/pubid/itu/urn_parser.rb +0 -31
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +0 -34
- data/lib/pubid/jcgm/identifiers/meeting.rb +0 -47
- data/lib/pubid/jcgm/renderer.rb +0 -89
- data/lib/pubid/jcgm/urn_parser.rb +0 -177
- data/lib/pubid/jis/identifiers/corrigendum.rb +0 -16
- data/lib/pubid/jis/renderer.rb +0 -69
- data/lib/pubid/jis/urn_parser.rb +0 -23
- data/lib/pubid/nist/caster.rb +0 -1234
- data/lib/pubid/nist/circular_supplement_builder.rb +0 -293
- data/lib/pubid/nist/identifier.rb +0 -8
- data/lib/pubid/nist/identifiers/dated_document.rb +0 -49
- data/lib/pubid/nist/parser_output_normalizer.rb +0 -233
- data/lib/pubid/nist/preprocessor.rb +0 -443
- data/lib/pubid/nist/renderer.rb +0 -43
- data/lib/pubid/nist/router.rb +0 -149
- data/lib/pubid/nist/series/base.rb +0 -58
- data/lib/pubid/nist/series/crpl.rb +0 -13
- data/lib/pubid/nist/series/fips.rb +0 -14
- data/lib/pubid/nist/series/ir.rb +0 -57
- data/lib/pubid/nist/series/letter_preserving.rb +0 -15
- data/lib/pubid/nist/series/mono.rb +0 -19
- data/lib/pubid/nist/series/ncstar.rb +0 -20
- data/lib/pubid/nist/series.rb +0 -49
- data/lib/pubid/nist/urn_parser.rb +0 -67
- data/lib/pubid/oasis/builder.rb +0 -79
- data/lib/pubid/oasis/identifier.rb +0 -160
- data/lib/pubid/oasis/identifiers/standard.rb +0 -29
- data/lib/pubid/oasis/identifiers.rb +0 -9
- data/lib/pubid/oasis/parser.rb +0 -34
- data/lib/pubid/oasis/renderer.rb +0 -29
- data/lib/pubid/oasis/urn_generator.rb +0 -25
- data/lib/pubid/oasis/urn_parser.rb +0 -22
- data/lib/pubid/oasis.rb +0 -79
- data/lib/pubid/ogc/builder.rb +0 -33
- data/lib/pubid/ogc/identifier.rb +0 -81
- data/lib/pubid/ogc/identifiers/document.rb +0 -26
- data/lib/pubid/ogc/identifiers.rb +0 -10
- data/lib/pubid/ogc/parser.rb +0 -40
- data/lib/pubid/ogc/renderer.rb +0 -33
- data/lib/pubid/ogc/urn_generator.rb +0 -14
- data/lib/pubid/ogc/urn_parser.rb +0 -22
- data/lib/pubid/ogc.rb +0 -71
- data/lib/pubid/oiml/identifiers/bulletin.rb +0 -137
- data/lib/pubid/oiml/identifiers/code_number.rb +0 -90
- data/lib/pubid/oiml/identifiers/errata.rb +0 -15
- data/lib/pubid/oiml/renderer.rb +0 -232
- data/lib/pubid/oiml/urn_parser.rb +0 -39
- data/lib/pubid/omg/builder.rb +0 -19
- data/lib/pubid/omg/identifier.rb +0 -47
- data/lib/pubid/omg/identifiers/specification.rb +0 -32
- data/lib/pubid/omg/identifiers.rb +0 -9
- data/lib/pubid/omg/parser.rb +0 -40
- data/lib/pubid/omg/renderer.rb +0 -19
- data/lib/pubid/omg.rb +0 -51
- data/lib/pubid/parser/grammar.rb +0 -74
- data/lib/pubid/plateau/identifier.rb +0 -4
- data/lib/pubid/plateau/renderer.rb +0 -51
- data/lib/pubid/plateau/urn_parser.rb +0 -43
- data/lib/pubid/prefixes_support.rb +0 -51
- data/lib/pubid/renderers/annotator.rb +0 -233
- data/lib/pubid/sae/renderer.rb +0 -36
- data/lib/pubid/sae/urn_parser.rb +0 -36
- data/lib/pubid/tgpp/builder.rb +0 -41
- data/lib/pubid/tgpp/identifier.rb +0 -107
- data/lib/pubid/tgpp/identifiers/technical_report.rb +0 -32
- data/lib/pubid/tgpp/identifiers/technical_specification.rb +0 -33
- data/lib/pubid/tgpp/identifiers.rb +0 -11
- data/lib/pubid/tgpp/parser.rb +0 -78
- data/lib/pubid/tgpp/renderer.rb +0 -52
- data/lib/pubid/tgpp/urn_generator.rb +0 -39
- data/lib/pubid/tgpp/urn_parser.rb +0 -30
- data/lib/pubid/tgpp.rb +0 -83
- data/lib/pubid/type_resolver.rb +0 -59
- data/lib/pubid/un/builder.rb +0 -42
- data/lib/pubid/un/identifier.rb +0 -40
- data/lib/pubid/un/identifiers/document.rb +0 -24
- data/lib/pubid/un/identifiers.rb +0 -9
- data/lib/pubid/un/parser.rb +0 -25
- data/lib/pubid/un/renderer.rb +0 -11
- data/lib/pubid/un.rb +0 -46
- data/lib/pubid/urn_parser/base.rb +0 -81
- data/lib/pubid/urn_parser/errors.rb +0 -16
- data/lib/pubid/urn_parser.rb +0 -14
- data/lib/pubid/w3c/builder.rb +0 -55
- data/lib/pubid/w3c/identifier.rb +0 -130
- data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +0 -31
- data/lib/pubid/w3c/identifiers/draft_note.rb +0 -31
- data/lib/pubid/w3c/identifiers/note.rb +0 -30
- data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/standard.rb +0 -12
- data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/working_draft.rb +0 -30
- data/lib/pubid/w3c/identifiers.rb +0 -25
- data/lib/pubid/w3c/parser.rb +0 -43
- data/lib/pubid/w3c/renderer.rb +0 -35
- data/lib/pubid/w3c/urn_generator.rb +0 -18
- data/lib/pubid/w3c/urn_parser.rb +0 -36
- data/lib/pubid/w3c.rb +0 -67
- data/lib/pubid/xsf/builder.rb +0 -17
- data/lib/pubid/xsf/identifier.rb +0 -66
- data/lib/pubid/xsf/identifiers/xep.rb +0 -31
- data/lib/pubid/xsf/identifiers.rb +0 -9
- data/lib/pubid/xsf/parser.rb +0 -25
- data/lib/pubid/xsf/renderer.rb +0 -23
- data/lib/pubid/xsf/urn_generator.rb +0 -13
- data/lib/pubid/xsf/urn_parser.rb +0 -18
- data/lib/pubid/xsf.rb +0 -81
|
@@ -4,7 +4,7 @@ module Pubid
|
|
|
4
4
|
module Iho
|
|
5
5
|
# Generates URN strings for IHO identifiers.
|
|
6
6
|
#
|
|
7
|
-
# Format: urn:iho:{type-letter-lowercase}:{
|
|
7
|
+
# Format: urn:iho:{type-letter-lowercase}:{code}[:ap.{appendix}][:part.{part}][:annex.{annex}][:suppl.{supplement}][:{version}]
|
|
8
8
|
# Example: urn:iho:s:44:5.0.0 for "IHO S-44 5.0.0".
|
|
9
9
|
class UrnGenerator
|
|
10
10
|
attr_reader :identifier
|
|
@@ -15,8 +15,8 @@ module Pubid
|
|
|
15
15
|
|
|
16
16
|
def generate
|
|
17
17
|
parts = ["urn", "iho"]
|
|
18
|
-
parts << identifier.
|
|
19
|
-
parts << identifier.
|
|
18
|
+
parts << identifier.type[:short].to_s.downcase
|
|
19
|
+
parts << identifier.code.to_s
|
|
20
20
|
parts << "ap.#{identifier.appendix}" if identifier.appendix
|
|
21
21
|
parts << "part.#{identifier.part}" if identifier.part
|
|
22
22
|
parts << "annex.#{identifier.annex}" if identifier.annex
|
data/lib/pubid/iho.rb
CHANGED
|
@@ -2,75 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Iho
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Sole IHO publisher token (see the parser grammar).
|
|
8
|
-
PREFIXES = ["IHO"].freeze
|
|
9
|
-
|
|
10
5
|
autoload :Builder, "#{__dir__}/iho/builder"
|
|
11
|
-
autoload :Identifier,
|
|
6
|
+
autoload :Identifier, "#{__dir__}/iho/identifier"
|
|
12
7
|
autoload :Identifiers, "#{__dir__}/iho/identifiers"
|
|
13
8
|
autoload :Parser, "#{__dir__}/iho/parser"
|
|
14
|
-
autoload :
|
|
9
|
+
autoload :Scheme, "#{__dir__}/iho/scheme"
|
|
15
10
|
autoload :UrnGenerator, "#{__dir__}/iho/urn_generator"
|
|
16
|
-
autoload :UrnParser, "#{__dir__}/iho/urn_parser"
|
|
17
11
|
|
|
18
12
|
# Parse an IHO identifier string into an identifier object
|
|
19
13
|
# @param identifier [String] The IHO identifier string to parse
|
|
20
|
-
# @return [Pubid::Iho::
|
|
14
|
+
# @return [Pubid::Iho::Identifiers::Base] The appropriate identifier object
|
|
21
15
|
def self.parse(identifier)
|
|
22
16
|
Identifier.parse(identifier)
|
|
23
17
|
end
|
|
24
|
-
|
|
25
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
26
|
-
Identifier.format_registry = FormatRegistry.new(parent: ::Pubid::Identifier.format_registry)
|
|
27
|
-
Identifier.format_registry.register(:human, renderer: Iho::Renderer)
|
|
28
|
-
|
|
29
|
-
# Auto-discover all identifier types from the Identifiers namespace.
|
|
30
|
-
# @return [Array<Class>] identifier classes (Pubid::Identifier subclasses)
|
|
31
|
-
def self.identifier_types
|
|
32
|
-
@identifier_types ||= Identifiers.constants
|
|
33
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
34
|
-
.select { |c| c.is_a?(Class) && c < Pubid::Identifier }
|
|
35
|
-
# Exclude the flavor base itself by identity (Identifier is now an
|
|
36
|
-
# alias for Pubid::Iho::Identifier, so name-based matching misses it).
|
|
37
|
-
.reject { |c| c == Identifier }
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Build typed stage index from identifier types
|
|
41
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
42
|
-
def self.all_typed_stages
|
|
43
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
44
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
45
|
-
klass.const_get(:TYPED_STAGES)
|
|
46
|
-
else
|
|
47
|
-
[]
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# Lookup: type code -> identifier class
|
|
53
|
-
# @param code [String, Symbol] the type key to find
|
|
54
|
-
# @return [Class, nil] the matching identifier class
|
|
55
|
-
def self.locate_type(code)
|
|
56
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# Lookup: abbreviation -> typed stage
|
|
60
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
61
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
62
|
-
def self.locate_stage(abbr)
|
|
63
|
-
abbr_str = abbr.to_s.upcase
|
|
64
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# Look up an identifier class by its IHO series letter (S/P/M/B/C).
|
|
68
|
-
# @param letter [String]
|
|
69
|
-
# @return [Class<Identifier>]
|
|
70
|
-
def self.identifier_klass_for_type_letter(letter)
|
|
71
|
-
@by_letter ||= identifier_types.to_h { |klass| [klass.type[:short], klass] }
|
|
72
|
-
@by_letter.fetch(letter.to_s)
|
|
73
|
-
end
|
|
74
18
|
end
|
|
75
19
|
end
|
|
76
20
|
|
data/lib/pubid/iso/builder.rb
CHANGED
|
@@ -3,20 +3,13 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Iso
|
|
5
5
|
class Builder < Pubid::Builder::Base
|
|
6
|
-
def initialize
|
|
7
|
-
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
# Override the base implementation to avoid relying on @scheme.
|
|
11
|
-
# @param typed_stage_string [String, nil]
|
|
12
|
-
# @return [Pubid::Components::TypedStage, nil]
|
|
13
|
-
def locate_typed_stage(typed_stage_string)
|
|
14
|
-
Pubid::Iso.locate_stage(typed_stage_string.to_s)
|
|
6
|
+
def initialize(scheme)
|
|
7
|
+
@scheme = scheme
|
|
15
8
|
end
|
|
16
9
|
|
|
17
10
|
def locate_identifier_klass(parsed_hash)
|
|
18
11
|
# If there is a joint_identifier, we need to use a CombinedIdentifier
|
|
19
|
-
# which takes `
|
|
12
|
+
# which takes `base_identifier` and `additional_identifiers`
|
|
20
13
|
if parsed_hash[:joint_identifier]
|
|
21
14
|
return CombinedIdentifier
|
|
22
15
|
end
|
|
@@ -32,29 +25,19 @@ module Pubid
|
|
|
32
25
|
return Identifiers::TcDocument
|
|
33
26
|
end
|
|
34
27
|
|
|
35
|
-
# An explicit document type (e.g. from a URN's `:tr:`/`:ts:` token) pins
|
|
36
|
-
# the class regardless of the stage. The stage and type are separate URN
|
|
37
|
-
# fields, but the stage is later folded into `:type_with_stage` (e.g.
|
|
38
|
-
# "WDA" for 90.93), which would otherwise mis-resolve the class to the
|
|
39
|
-
# stage's owning type (IS). Consume the hint here, before assign_attributes.
|
|
40
|
-
if (doc_type = parsed_hash.delete(:document_type))
|
|
41
|
-
type_stage = locate_typed_stage(doc_type)
|
|
42
|
-
return Pubid::Iso.locate_type(type_stage.type_code) if type_stage
|
|
43
|
-
end
|
|
44
|
-
|
|
45
28
|
# Check the `:type_with_stage` to determine the identifier class
|
|
46
29
|
# 1. :type_with_stage will be nil if:
|
|
47
30
|
# a) It is an IS.
|
|
48
31
|
# b) It is a Directive Supplements. The "SUP" keyword may be entirely missing, and hence nil. If the base type_with_stage is a directive, then if the type_with_stage is blank, it is a directive supplement.
|
|
49
32
|
|
|
50
|
-
if parsed_hash[:type_with_stage].nil? && parsed_hash[:
|
|
33
|
+
if parsed_hash[:type_with_stage].nil? && parsed_hash[:base_identifier] && parsed_hash[:base_identifier][:type_with_stage] == "DIR"
|
|
51
34
|
# Directive Supplement without "SUP" keyword
|
|
52
35
|
parsed_hash[:type_with_stage] = "SUP"
|
|
53
36
|
end
|
|
54
37
|
|
|
55
38
|
typed_stage = locate_typed_stage(parsed_hash[:type_with_stage])
|
|
56
39
|
|
|
57
|
-
|
|
40
|
+
@scheme.locate_identifier_klass_by_type_code(typed_stage.type_code)
|
|
58
41
|
end
|
|
59
42
|
|
|
60
43
|
def build(parsed_hash)
|
|
@@ -106,7 +89,7 @@ module Pubid
|
|
|
106
89
|
# If typed_stage, stage, or type are still nil after building,
|
|
107
90
|
# set them to the default International Standard values
|
|
108
91
|
if identifier.typed_stage.nil?
|
|
109
|
-
default_typed_stage =
|
|
92
|
+
default_typed_stage = @scheme.locate_typed_stage_by_abbr("")
|
|
110
93
|
identifier.typed_stage = default_typed_stage
|
|
111
94
|
identifier.stage = default_typed_stage.to_stage
|
|
112
95
|
identifier.type = default_typed_stage.to_type
|
|
@@ -125,37 +108,14 @@ module Pubid
|
|
|
125
108
|
end
|
|
126
109
|
end
|
|
127
110
|
|
|
128
|
-
# ISO normalizes em/en dashes, slashes, and spaces to hyphens so that
|
|
129
|
-
# "4037/1979", "4037-1979", and "ISO/IEC DIR 1 IEC" all split cleanly.
|
|
130
|
-
def normalize_number_with_part(value)
|
|
131
|
-
value.to_s
|
|
132
|
-
.tr("#{Parser::DASH_CHARS.join}/", "-")
|
|
133
|
-
.gsub(" ", "-")
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
# LEGACY: "ISO 4037-1979" used a hyphen where the modern form is
|
|
137
|
-
# "ISO 4037:1979". When the part looks like a 4-digit year in a
|
|
138
|
-
# plausible range, treat it as a date instead of a part number.
|
|
139
|
-
def extract_legacy_year(number, part, code_class)
|
|
140
|
-
return nil unless part&.match?(/^\d{4}$/)
|
|
141
|
-
|
|
142
|
-
year_value = part.to_i
|
|
143
|
-
return nil unless year_value.between?(1900, 2099)
|
|
144
|
-
|
|
145
|
-
{
|
|
146
|
-
number: code_class.new(value: number),
|
|
147
|
-
date: ::Pubid::Components::Date.new(year: part),
|
|
148
|
-
}
|
|
149
|
-
end
|
|
150
|
-
|
|
151
111
|
def cast(type, value)
|
|
152
112
|
case type
|
|
153
|
-
when :
|
|
113
|
+
when :base_identifier
|
|
154
114
|
# If it has a base identifier, we need to build a supplement
|
|
155
115
|
# We assume that the base identifier is already a valid Identifier object
|
|
156
116
|
build(value)
|
|
157
117
|
|
|
158
|
-
# If there is a
|
|
118
|
+
# If there is a base_identifier, and it has a joint_identifier, we need to use a CombinedIdentifier.
|
|
159
119
|
|
|
160
120
|
when :publisher, :directives_supplement_body, :supplement_publisher
|
|
161
121
|
# value can be either a string OR a hash with publisher + copublisher
|
|
@@ -165,12 +125,7 @@ module Pubid
|
|
|
165
125
|
copublisher: value[:copublisher],
|
|
166
126
|
)
|
|
167
127
|
else
|
|
168
|
-
|
|
169
|
-
# (e.g. a TC document, which skips the copublisher merge) matches
|
|
170
|
-
# the [] convention used by copublisher-merged parses and by
|
|
171
|
-
# Identifier.create. Otherwise equality fails on [] vs nil.
|
|
172
|
-
Pubid::Iso::Components::Publisher.new(publisher: value,
|
|
173
|
-
copublisher: [])
|
|
128
|
+
Pubid::Iso::Components::Publisher.new(publisher: value)
|
|
174
129
|
end
|
|
175
130
|
|
|
176
131
|
when :copublishers
|
|
@@ -197,7 +152,45 @@ module Pubid
|
|
|
197
152
|
# or "105/F" ('F' is part)
|
|
198
153
|
# or "5843/6" ('6' is part)
|
|
199
154
|
# LEGACY: "4037-1979" (number-year, year should become date)
|
|
200
|
-
|
|
155
|
+
|
|
156
|
+
# Split the number into parts
|
|
157
|
+
normalized_value = value.to_s.tr("#{Parser::DASH_CHARS.join}/", "-")
|
|
158
|
+
|
|
159
|
+
# for "1 IEC" ('IEC' is part) (in case of "ISO/IEC DIR 1 IEC")
|
|
160
|
+
normalized_value.gsub!(" ", "-")
|
|
161
|
+
|
|
162
|
+
parts = normalized_value.split("-").reject(&:empty?)
|
|
163
|
+
number = parts.shift # The first part is always the number
|
|
164
|
+
part = parts.shift&.strip # The second part is the part, if present
|
|
165
|
+
subpart = parts.any? ? parts.join("-") : nil # The remaining parts form the subpart, if present
|
|
166
|
+
|
|
167
|
+
# LEGACY FORMAT FIX: If "part" is a 4-digit year (1900-2099), move it to date field
|
|
168
|
+
# This handles legacy formats like "ISO 4037-1979" where hyphen was used instead of colon
|
|
169
|
+
if part&.match?(/^\d{4}$/)
|
|
170
|
+
year_value = part.to_i
|
|
171
|
+
# Only treat as year if in reasonable year range (excludes part numbers like "1751")
|
|
172
|
+
if year_value.between?(1900, 2099)
|
|
173
|
+
return {
|
|
174
|
+
number: Pubid::Iso::Components::Code.new(number: number),
|
|
175
|
+
date: Pubid::Components::Date.new(year: part),
|
|
176
|
+
}
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
part = convert_roman_to_integer(part)
|
|
181
|
+
|
|
182
|
+
code_hash = { number: Pubid::Iso::Components::Code.new(number: number) }
|
|
183
|
+
|
|
184
|
+
if part
|
|
185
|
+
code_hash[:part] = Pubid::Iso::Components::Code.new(number: part)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
if subpart
|
|
189
|
+
code_hash[:subpart] =
|
|
190
|
+
Pubid::Iso::Components::Code.new(number: subpart)
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
code_hash
|
|
201
194
|
|
|
202
195
|
when :directives_type
|
|
203
196
|
# nothing to do here, just return nil
|
|
@@ -225,22 +218,17 @@ module Pubid
|
|
|
225
218
|
}
|
|
226
219
|
when :stage_iteration
|
|
227
220
|
# "1" or "2"
|
|
228
|
-
Pubid::Components::
|
|
221
|
+
Pubid::Iso::Components::Code.new(number: value.to_s)
|
|
229
222
|
|
|
230
223
|
when :date
|
|
231
224
|
parse_date(value)
|
|
232
225
|
|
|
233
|
-
when :undated_marker
|
|
234
|
-
# ISO/IEC undated reference (e.g. "ISO 16634:--") — explicit
|
|
235
|
-
# publication-date slot with no year; round-trips via date.render.
|
|
236
|
-
{ date: Pubid::Components::Date.new(undated: true) }
|
|
237
|
-
|
|
238
226
|
when :edition
|
|
239
227
|
# value can be "Ed.2", "Ed 2", "ED1", "Edition 13", or just "Ed"
|
|
240
228
|
original_text = value.to_s
|
|
241
229
|
# Extract just the digit(s) for the number field
|
|
242
230
|
number_string = original_text.match(/\d+/)&.to_s
|
|
243
|
-
number_code = number_string ? Pubid::Iso::Components::Code.new(
|
|
231
|
+
number_code = number_string ? Pubid::Iso::Components::Code.new(number: number_string) : nil
|
|
244
232
|
Pubid::Components::Edition.new(number: number_code,
|
|
245
233
|
original_text: original_text)
|
|
246
234
|
|
|
@@ -255,13 +243,14 @@ module Pubid
|
|
|
255
243
|
when :joint_identifier
|
|
256
244
|
case value[:publisher]
|
|
257
245
|
when "IDF"
|
|
258
|
-
|
|
246
|
+
require_relative "../idf/builder"
|
|
247
|
+
Idf::Builder.new.build(value)
|
|
259
248
|
end
|
|
260
249
|
|
|
261
250
|
when :subgroup
|
|
262
251
|
# Handle JTC 1 subgroup in directives (ISO/IEC JTC 1 DIR)
|
|
263
252
|
# Store as a component for potential use in rendering
|
|
264
|
-
Pubid::Iso::Components::Code.new(
|
|
253
|
+
Pubid::Iso::Components::Code.new(number: value.to_s)
|
|
265
254
|
|
|
266
255
|
when :supplements
|
|
267
256
|
# Handle bundled supplements (+ operator)
|
|
@@ -275,11 +264,11 @@ module Pubid
|
|
|
275
264
|
# TC Document attributes
|
|
276
265
|
when :tc_type, :sc_type, :wg_type
|
|
277
266
|
# TC, SC, WG types are code components
|
|
278
|
-
Pubid::Iso::Components::Code.new(
|
|
267
|
+
Pubid::Iso::Components::Code.new(number: value.to_s)
|
|
279
268
|
|
|
280
269
|
when :tc_number, :sc_number, :wg_number
|
|
281
270
|
# TC, SC, WG numbers are code components
|
|
282
|
-
Pubid::Iso::Components::Code.new(
|
|
271
|
+
Pubid::Iso::Components::Code.new(number: value.to_s)
|
|
283
272
|
|
|
284
273
|
when :year
|
|
285
274
|
# For TC documents with year, convert to Date
|
|
@@ -290,7 +279,7 @@ module Pubid
|
|
|
290
279
|
# For regular identifiers, this is handled in :number_with_part
|
|
291
280
|
if value.is_a?(Parslet::Slice) || value.is_a?(String) ||
|
|
292
281
|
value.is_a?(Integer)
|
|
293
|
-
Pubid::Iso::Components::Code.new(
|
|
282
|
+
Pubid::Iso::Components::Code.new(number: value.to_s)
|
|
294
283
|
else
|
|
295
284
|
value
|
|
296
285
|
end
|
|
@@ -299,7 +288,7 @@ module Pubid
|
|
|
299
288
|
# Raw stage code from URN parser (e.g., "10.00", "50.00")
|
|
300
289
|
# Convert to type_with_stage format for builder
|
|
301
290
|
# Look up the typed stage from stage code
|
|
302
|
-
typed_stage =
|
|
291
|
+
typed_stage = Scheme.locate_typed_stage_by_stage_code(value.to_s)
|
|
303
292
|
if typed_stage
|
|
304
293
|
typed_stage.abbr.is_a?(Array) ? typed_stage.abbr.first : typed_stage.abbr
|
|
305
294
|
else
|
|
@@ -10,57 +10,6 @@ module Pubid
|
|
|
10
10
|
collection: true
|
|
11
11
|
attribute :type, :string, default: -> { "bundled_identifier" }
|
|
12
12
|
|
|
13
|
-
# Serialize the bundle structure. The inherited common-field maps read the
|
|
14
|
-
# delegated base_document values; suppress them (base_document carries
|
|
15
|
-
# them) and serialize base_document + the supplements collection instead,
|
|
16
|
-
# routing each through from_hash on load.
|
|
17
|
-
key_value do
|
|
18
|
-
# Serialized key is "base" (consistent with supplements); the attribute
|
|
19
|
-
# stays base_document.
|
|
20
|
-
map "base",
|
|
21
|
-
with: { to: :base_document_to_kv, from: :base_document_from_kv }
|
|
22
|
-
map "supplements",
|
|
23
|
-
with: { to: :supplements_to_kv, from: :supplements_from_kv }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def base_document_to_kv(model, doc)
|
|
27
|
-
return unless model.base_document
|
|
28
|
-
|
|
29
|
-
doc.add_child(Lutaml::KeyValue::DataModel::Element.new(
|
|
30
|
-
"base", model.base_document.to_hash
|
|
31
|
-
))
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def base_document_from_kv(model, value)
|
|
35
|
-
model.base_document = ::Pubid::Iso::Identifier.from_hash(value) if value
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def supplements_to_kv(model, doc)
|
|
39
|
-
return unless model.supplements&.any?
|
|
40
|
-
|
|
41
|
-
doc.add_child(Lutaml::KeyValue::DataModel::Element.new(
|
|
42
|
-
"supplements", model.supplements.map(&:to_hash)
|
|
43
|
-
))
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def supplements_from_kv(model, value)
|
|
47
|
-
model.supplements = Array(value).map do |h|
|
|
48
|
-
::Pubid::Iso::Identifier.from_hash(h)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
# The delegated common fields are carried by base_document; don't duplicate
|
|
53
|
-
# them at the bundle level.
|
|
54
|
-
def number_to_kv(_model, _doc); end
|
|
55
|
-
def part_to_kv(_model, _doc); end
|
|
56
|
-
def subpart_to_kv(_model, _doc); end
|
|
57
|
-
def year_to_kv(_model, _doc); end
|
|
58
|
-
def month_to_kv(_model, _doc); end
|
|
59
|
-
def day_to_kv(_model, _doc); end
|
|
60
|
-
def publisher_to_kv(_model, _doc); end
|
|
61
|
-
def copublishers_to_kv(_model, _doc); end
|
|
62
|
-
def stage_to_kv(_model, _doc); end
|
|
63
|
-
|
|
64
13
|
# Delegate key attributes to base_document for easier access in tests
|
|
65
14
|
def publisher
|
|
66
15
|
base_document&.publisher
|
|
@@ -86,17 +35,15 @@ module Pubid
|
|
|
86
35
|
base_document&.copublishers
|
|
87
36
|
end
|
|
88
37
|
|
|
89
|
-
# See the note on Pubid::BundledIdentifier#to_s: `**opts` carries flags
|
|
90
|
-
# this list does not name, `annotated:` above all.
|
|
91
38
|
def to_s(lang: :en, lang_single: false, with_edition: false, format: nil,
|
|
92
|
-
stage_format_long: nil, with_date: nil
|
|
39
|
+
stage_format_long: nil, with_date: nil)
|
|
93
40
|
parts = [base_document.to_s(lang: lang, lang_single: lang_single,
|
|
94
|
-
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date
|
|
41
|
+
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date)]
|
|
95
42
|
|
|
96
43
|
# Add each supplement with "+" separator
|
|
97
44
|
supplements.each do |supplement|
|
|
98
45
|
supplement_str = supplement.to_supplement_s(lang: lang, lang_single: lang_single,
|
|
99
|
-
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date
|
|
46
|
+
with_edition: with_edition, format: format, stage_format_long: stage_format_long, with_date: with_date)
|
|
100
47
|
parts << "+ #{supplement_str}"
|
|
101
48
|
end
|
|
102
49
|
|
|
@@ -4,18 +4,16 @@ module Pubid
|
|
|
4
4
|
module Iso
|
|
5
5
|
# Identifier that represents a supplement to a base identifier.
|
|
6
6
|
class CombinedIdentifier < Identifier
|
|
7
|
-
attribute :
|
|
7
|
+
attribute :base_identifier, Identifier, polymorphic: true
|
|
8
8
|
attribute :additional_identifiers, ::Pubid::Identifier,
|
|
9
9
|
polymorphic: true, collection: true
|
|
10
10
|
attribute :type, :string, default: -> { "combined_identifier" }
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
# which the closed signature used to reject outright.
|
|
14
|
-
def to_s(lang: :en, lang_single: false, **opts)
|
|
12
|
+
def to_s(lang: :en, lang_single: false)
|
|
15
13
|
[
|
|
16
|
-
|
|
14
|
+
base_identifier.to_s(lang: lang, lang_single: lang_single),
|
|
17
15
|
additional_identifiers.map do |id|
|
|
18
|
-
id.to_s(lang: lang, lang_single: lang_single
|
|
16
|
+
id.to_s(lang: lang, lang_single: lang_single)
|
|
19
17
|
end,
|
|
20
18
|
].flatten.join(" | ")
|
|
21
19
|
end
|
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
3
5
|
module Pubid
|
|
4
6
|
module Iso
|
|
5
7
|
module Components
|
|
6
|
-
# Code component for ISO identifiers.
|
|
7
|
-
#
|
|
8
|
-
# Inherits +value+ and +parts+ from the shared Code; overrides
|
|
9
|
-
# rendering to join parts with "-" (ISO convention). Equality and
|
|
10
|
-
# hash are inherited from the shared Code (compare all fields).
|
|
11
8
|
class Code < ::Pubid::Components::Code
|
|
9
|
+
attribute :number, :string
|
|
10
|
+
attribute :parts, :string, collection: true
|
|
11
|
+
|
|
12
|
+
def value
|
|
13
|
+
number || self[:value]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def render(context: nil)
|
|
17
|
+
result = value.to_s
|
|
18
|
+
result += parts.map { |p| "-#{p}" }.join if parts&.any?
|
|
19
|
+
result
|
|
20
|
+
end
|
|
21
|
+
|
|
12
22
|
def to_s
|
|
13
23
|
result = value.to_s
|
|
14
24
|
result += parts.map { |p| "-#{p}" }.join if parts&.any?
|
|
15
25
|
result
|
|
16
26
|
end
|
|
17
27
|
|
|
18
|
-
def
|
|
19
|
-
|
|
28
|
+
def ==(other)
|
|
29
|
+
return false unless other.is_a?(Code)
|
|
30
|
+
|
|
31
|
+
value == other.value && parts == other.parts
|
|
20
32
|
end
|
|
21
33
|
end
|
|
22
34
|
end
|
|
@@ -16,10 +16,6 @@ module Pubid
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def render(context: nil)
|
|
19
|
-
if context&.urn?
|
|
20
|
-
return publisher&.downcase
|
|
21
|
-
end
|
|
22
|
-
|
|
23
19
|
return publisher unless copublisher&.any?
|
|
24
20
|
|
|
25
21
|
publisher + copublisher.map { |cp| "/#{cp}" }.join
|
|
@@ -42,17 +38,19 @@ module Pubid
|
|
|
42
38
|
def ==(other)
|
|
43
39
|
return false unless other.is_a?(Publisher)
|
|
44
40
|
|
|
45
|
-
|
|
46
|
-
# .create (e.g. from an index hash) leaves it nil. Treat the empty
|
|
47
|
-
# collection and "no collection" as equal so both forms compare.
|
|
48
|
-
publisher == other.publisher &&
|
|
49
|
-
copublisher.to_a == other.copublisher.to_a
|
|
41
|
+
publisher == other.publisher && copublisher == other.copublisher
|
|
50
42
|
end
|
|
51
43
|
|
|
44
|
+
# Returns hash code for publisher component
|
|
45
|
+
# @return [Integer] hash code
|
|
46
|
+
# @note Memoized for performance
|
|
52
47
|
def hash
|
|
53
|
-
@hash ||= [publisher, copublisher
|
|
48
|
+
@hash ||= [publisher, copublisher].compact.map(&:hash).hash
|
|
54
49
|
end
|
|
55
50
|
|
|
51
|
+
# Checks equality using hash for consistency
|
|
52
|
+
# @param other [Object] object to compare with
|
|
53
|
+
# @return [Boolean] true if equal
|
|
56
54
|
def eql?(other)
|
|
57
55
|
hash == other.hash && self == other
|
|
58
56
|
end
|
data/lib/pubid/iso/components.rb
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Iso
|
|
5
5
|
module Components
|
|
6
|
-
|
|
7
|
-
autoload :Publisher, "#{__dir__}/components/publisher"
|
|
6
|
+
# ISO-specific components
|
|
8
7
|
end
|
|
9
8
|
end
|
|
10
9
|
end
|
|
10
|
+
|
|
11
|
+
require_relative "components/code"
|
|
12
|
+
require_relative "components/publisher"
|