pubid 2.0.0.alpha.10 → 2.0.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +51 -54
- data/data/iec/update_codes.yaml +0 -3
- data/data/ieee/update_codes.yaml +1 -107
- data/data/nist/update_codes.yaml +0 -35
- data/lib/pubid/amca/builder.rb +6 -6
- data/lib/pubid/amca/identifier.rb +16 -2
- data/lib/pubid/amca/identifiers/base.rb +46 -74
- data/lib/pubid/amca/identifiers/interpretation.rb +30 -17
- data/lib/pubid/amca/identifiers/publication.rb +27 -14
- data/lib/pubid/amca/identifiers/standard.rb +5 -3
- data/lib/pubid/amca/identifiers.rb +1 -0
- data/lib/pubid/amca/parser.rb +1 -1
- data/lib/pubid/amca/scheme.rb +16 -0
- data/lib/pubid/amca/single_identifier.rb +24 -1
- data/lib/pubid/amca/urn_generator.rb +3 -4
- data/lib/pubid/amca.rb +3 -50
- data/lib/pubid/ansi/builder.rb +5 -7
- data/lib/pubid/ansi/identifier.rb +1 -19
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +1 -2
- data/lib/pubid/ansi/identifiers/standard.rb +3 -2
- data/lib/pubid/ansi/parser.rb +1 -1
- data/lib/pubid/ansi/scheme.rb +15 -0
- data/lib/pubid/ansi/single_identifier.rb +31 -2
- data/lib/pubid/ansi/urn_generator.rb +38 -3
- data/lib/pubid/ansi.rb +6 -47
- data/lib/pubid/api/builder.rb +72 -45
- data/lib/pubid/api/identifier.rb +9 -30
- data/lib/pubid/api/identifiers/base.rb +14 -2
- data/lib/pubid/api/identifiers/bulletin.rb +2 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +2 -0
- data/lib/pubid/api/identifiers/mpms.rb +28 -10
- data/lib/pubid/api/identifiers/publication.rb +2 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +2 -0
- data/lib/pubid/api/identifiers/specification.rb +2 -0
- data/lib/pubid/api/identifiers/standard.rb +2 -0
- data/lib/pubid/api/identifiers/technical_report.rb +2 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +16 -0
- data/lib/pubid/api/parser.rb +1 -1
- data/lib/pubid/api/scheme.rb +66 -0
- data/lib/pubid/api/single_identifier.rb +32 -10
- data/lib/pubid/api/urn_generator.rb +18 -0
- data/lib/pubid/api.rb +5 -56
- data/lib/pubid/ashrae/builder.rb +35 -56
- data/lib/pubid/ashrae/identifier.rb +16 -6
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +11 -7
- data/lib/pubid/ashrae/identifiers/addendum.rb +20 -9
- data/lib/pubid/ashrae/identifiers/base.rb +15 -111
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +16 -8
- data/lib/pubid/ashrae/identifiers/errata.rb +10 -9
- data/lib/pubid/ashrae/identifiers/guideline.rb +0 -3
- data/lib/pubid/ashrae/identifiers/interpretation.rb +10 -16
- data/lib/pubid/ashrae/identifiers/standard.rb +0 -3
- data/lib/pubid/ashrae/identifiers.rb +1 -0
- data/lib/pubid/ashrae/parser.rb +16 -40
- data/lib/pubid/ashrae/scheme.rb +53 -0
- data/lib/pubid/ashrae/single_identifier.rb +14 -1
- data/lib/pubid/ashrae/supplement_identifier.rb +6 -21
- data/lib/pubid/ashrae/urn_generator.rb +10 -8
- data/lib/pubid/ashrae.rb +2 -58
- data/lib/pubid/asme/builder.rb +2 -11
- data/lib/pubid/asme/components/code.rb +2 -10
- data/lib/pubid/asme/identifier.rb +0 -9
- data/lib/pubid/asme/identifiers/base.rb +60 -0
- data/lib/pubid/asme/identifiers/standard.rb +2 -86
- data/lib/pubid/asme/parser.rb +1 -1
- data/lib/pubid/asme/scheme.rb +37 -0
- data/lib/pubid/asme/single_identifier.rb +2 -11
- data/lib/pubid/asme/urn_generator.rb +2 -2
- data/lib/pubid/asme.rb +1 -47
- data/lib/pubid/astm/builder.rb +3 -10
- data/lib/pubid/astm/components/code.rb +0 -9
- data/lib/pubid/astm/identifier.rb +0 -9
- data/lib/pubid/astm/identifiers/adjunct.rb +9 -16
- data/lib/pubid/astm/identifiers/data_series.rb +14 -2
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +34 -25
- data/lib/pubid/astm/identifiers/manual.rb +25 -8
- data/lib/pubid/astm/identifiers/monograph.rb +14 -2
- data/lib/pubid/astm/identifiers/research_report.rb +5 -8
- data/lib/pubid/astm/identifiers/standard.rb +37 -8
- data/lib/pubid/astm/identifiers/technical_report.rb +13 -2
- data/lib/pubid/astm/identifiers/work_in_progress.rb +10 -1
- data/lib/pubid/astm/parser.rb +1 -1
- data/lib/pubid/astm/scheme.rb +55 -0
- data/lib/pubid/astm/single_identifier.rb +10 -32
- data/lib/pubid/astm/urn_generator.rb +5 -7
- data/lib/pubid/astm.rb +27 -44
- data/lib/pubid/bsi/builder.rb +107 -119
- data/lib/pubid/bsi/identifier.rb +25 -4
- data/lib/pubid/bsi/identifiers/addendum_document.rb +37 -3
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +47 -19
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +39 -8
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +55 -2
- data/lib/pubid/bsi/identifiers/amendment.rb +22 -30
- data/lib/pubid/bsi/identifiers/base.rb +11 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +7 -1
- data/lib/pubid/bsi/identifiers/british_standard.rb +1 -2
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +87 -13
- data/lib/pubid/bsi/identifiers/committee_document.rb +17 -10
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +87 -19
- data/lib/pubid/bsi/identifiers/corrigendum.rb +10 -26
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +36 -0
- data/lib/pubid/bsi/identifiers/disc.rb +29 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +46 -2
- data/lib/pubid/bsi/identifiers/electronic_book.rb +38 -2
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +21 -10
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +47 -0
- data/lib/pubid/bsi/identifiers/flex.rb +34 -3
- data/lib/pubid/bsi/identifiers/handbook.rb +17 -1
- data/lib/pubid/bsi/identifiers/index.rb +32 -0
- data/lib/pubid/bsi/identifiers/method.rb +41 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +29 -4
- data/lib/pubid/bsi/identifiers/practice_guide.rb +7 -1
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +54 -2
- data/lib/pubid/bsi/identifiers/published_document.rb +54 -2
- data/lib/pubid/bsi/identifiers/section.rb +30 -0
- data/lib/pubid/bsi/identifiers/set.rb +20 -14
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -10
- data/lib/pubid/bsi/identifiers/supplement_document.rb +25 -3
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +46 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +47 -2
- data/lib/pubid/bsi/identifiers/test_method.rb +32 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +22 -7
- data/lib/pubid/bsi/identifiers.rb +1 -0
- data/lib/pubid/bsi/parser.rb +6 -20
- data/lib/pubid/bsi/scheme.rb +243 -0
- data/lib/pubid/bsi/single_identifier.rb +82 -94
- data/lib/pubid/bsi/urn_generator.rb +5 -13
- data/lib/pubid/bsi.rb +2 -252
- data/lib/pubid/builder/base.rb +13 -62
- data/lib/pubid/bundled_identifier.rb +10 -18
- data/lib/pubid/ccsds/builder.rb +4 -5
- data/lib/pubid/ccsds/identifier.rb +3 -63
- data/lib/pubid/ccsds/identifiers/base.rb +51 -14
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +8 -9
- data/lib/pubid/ccsds/parser.rb +3 -5
- data/lib/pubid/ccsds/scheme.rb +57 -0
- data/lib/pubid/ccsds/single_identifier.rb +3 -6
- data/lib/pubid/ccsds/supplement_identifier.rb +13 -17
- data/lib/pubid/ccsds/urn_generator.rb +6 -6
- data/lib/pubid/ccsds.rb +1 -44
- data/lib/pubid/cen_cenelec/builder.rb +29 -61
- data/lib/pubid/cen_cenelec/identifier.rb +5 -28
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +4 -9
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +12 -2
- data/lib/pubid/cen_cenelec/identifiers/base.rb +46 -5
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +27 -6
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +17 -2
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +4 -62
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +7 -20
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +6 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/parser.rb +1 -1
- data/lib/pubid/cen_cenelec/scheme.rb +164 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +91 -10
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +7 -6
- data/lib/pubid/cen_cenelec/urn_generator.rb +7 -7
- data/lib/pubid/cen_cenelec.rb +1 -188
- data/lib/pubid/cie/builder.rb +24 -149
- data/lib/pubid/cie/components/code.rb +72 -0
- data/lib/pubid/cie/identifier.rb +5 -20
- data/lib/pubid/cie/identifiers/bundle.rb +5 -35
- data/lib/pubid/cie/identifiers/conference.rb +6 -11
- data/lib/pubid/cie/identifiers/corrigendum.rb +23 -17
- data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
- data/lib/pubid/cie/identifiers/identical.rb +9 -9
- data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
- data/lib/pubid/cie/identifiers/standard.rb +8 -43
- data/lib/pubid/cie/identifiers/supplement.rb +25 -27
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +3 -7
- data/lib/pubid/cie/identifiers.rb +0 -2
- data/lib/pubid/cie/parser.rb +6 -55
- data/lib/pubid/cie/scheme.rb +64 -0
- data/lib/pubid/cie/single_identifier.rb +5 -44
- data/lib/pubid/cie/supplement_identifier.rb +16 -29
- data/lib/pubid/cie/urn_generator.rb +8 -11
- data/lib/pubid/cie.rb +2 -57
- data/lib/pubid/components/code.rb +8 -22
- data/lib/pubid/components/date.rb +18 -41
- data/lib/pubid/components/edition.rb +6 -9
- data/lib/pubid/components/language.rb +4 -6
- data/lib/pubid/components/locality.rb +1 -10
- data/lib/pubid/components/publisher.rb +6 -9
- data/lib/pubid/components/stage.rb +14 -5
- data/lib/pubid/components/type.rb +15 -5
- data/lib/pubid/components/typed_stage.rb +8 -11
- data/lib/pubid/components.rb +0 -4
- data/lib/pubid/core/update_codes.rb +7 -28
- data/lib/pubid/csa/builder.rb +48 -48
- data/lib/pubid/csa/composite_identifier.rb +7 -18
- data/lib/pubid/csa/identifier.rb +78 -191
- data/lib/pubid/csa/identifiers/base.rb +123 -0
- data/lib/pubid/csa/identifiers/bundled.rb +9 -25
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
- data/lib/pubid/csa/identifiers/cec.rb +103 -40
- data/lib/pubid/csa/identifiers/combined.rb +69 -97
- data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
- data/lib/pubid/csa/identifiers/package.rb +4 -4
- data/lib/pubid/csa/identifiers/series.rb +104 -0
- data/lib/pubid/csa/parser.rb +8 -12
- data/lib/pubid/csa/scheme.rb +44 -0
- data/lib/pubid/csa/single_identifier.rb +5 -94
- data/lib/pubid/csa/urn_generator.rb +2 -9
- data/lib/pubid/csa/wrapper_identifier.rb +10 -43
- data/lib/pubid/csa.rb +1 -56
- data/lib/pubid/etsi/builder.rb +4 -13
- data/lib/pubid/etsi/components/code.rb +9 -10
- data/lib/pubid/etsi/components/version.rb +5 -0
- data/lib/pubid/etsi/identifier.rb +12 -2
- data/lib/pubid/etsi/identifiers/base.rb +24 -60
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +4 -207
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +14 -46
- data/lib/pubid/etsi/identifiers.rb +1 -0
- data/lib/pubid/etsi/parser.rb +3 -9
- data/lib/pubid/etsi/scheme.rb +42 -0
- data/lib/pubid/etsi.rb +2 -52
- data/lib/pubid/export/data_class_exporter.rb +59 -0
- data/lib/pubid/export/exporter.rb +47 -6
- data/lib/pubid/export/flavor_exporter.rb +276 -124
- data/lib/pubid/export/ieee_exporter.rb +78 -0
- data/lib/pubid/export/itu_exporter.rb +66 -0
- data/lib/pubid/export/nist_exporter.rb +64 -0
- data/lib/pubid/export/registry_exporter.rb +90 -0
- data/lib/pubid/export/scheme_exporter.rb +70 -0
- data/lib/pubid/export.rb +6 -0
- data/lib/pubid/identifier.rb +37 -920
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/identifier_registry.rb +198 -0
- data/lib/pubid/idf/builder.rb +7 -7
- data/lib/pubid/idf/identifier.rb +13 -23
- data/lib/pubid/idf/identifiers/amendment.rb +1 -2
- data/lib/pubid/idf/identifiers/corrigendum.rb +1 -2
- data/lib/pubid/idf/identifiers/international_standard.rb +1 -2
- data/lib/pubid/idf/identifiers/reviewed_method.rb +1 -2
- data/lib/pubid/idf/parser.rb +5 -6
- data/lib/pubid/idf/scheme.rb +61 -0
- data/lib/pubid/idf/supplement_identifier.rb +13 -5
- data/lib/pubid/idf/urn_generator.rb +39 -4
- data/lib/pubid/idf.rb +1 -65
- data/lib/pubid/iec/builder.rb +91 -92
- data/lib/pubid/iec/components/code.rb +32 -9
- data/lib/pubid/iec/components/publisher.rb +1 -1
- data/lib/pubid/iec/identifier.rb +8 -328
- data/lib/pubid/iec/identifiers/amendment.rb +5 -8
- data/lib/pubid/iec/identifiers/base.rb +31 -7
- data/lib/pubid/iec/identifiers/component_specification.rb +13 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +12 -1
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +30 -29
- data/lib/pubid/iec/identifiers/corrigendum.rb +5 -4
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +36 -43
- data/lib/pubid/iec/identifiers/guide.rb +18 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +9 -24
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +3 -2
- data/lib/pubid/iec/identifiers/operational_document.rb +13 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +15 -2
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +24 -26
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +13 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +13 -2
- data/lib/pubid/iec/identifiers/technical_report.rb +21 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +21 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +12 -1
- data/lib/pubid/iec/identifiers/test_report_form.rb +46 -3
- data/lib/pubid/iec/identifiers/vap_identifier.rb +34 -33
- data/lib/pubid/iec/identifiers/white_paper.rb +13 -3
- data/lib/pubid/iec/identifiers/working_document.rb +60 -26
- data/lib/pubid/iec/parser.rb +42 -73
- data/lib/pubid/iec/scheme.rb +71 -0
- data/lib/pubid/iec/single_identifier.rb +23 -15
- data/lib/pubid/iec/supplement_identifier.rb +67 -84
- data/lib/pubid/iec/urn_generator.rb +143 -195
- data/lib/pubid/iec/urn_parser.rb +246 -85
- data/lib/pubid/iec.rb +66 -45
- data/lib/pubid/ieee/aiee/builder.rb +3 -17
- data/lib/pubid/ieee/aiee/identifier.rb +62 -46
- data/lib/pubid/ieee/aiee/parser.rb +1 -1
- data/lib/pubid/ieee/builder.rb +81 -398
- data/lib/pubid/ieee/components/code.rb +0 -8
- data/lib/pubid/ieee/components/draft.rb +0 -54
- data/lib/pubid/ieee/components/relationship.rb +149 -5
- data/lib/pubid/ieee/identifier.rb +11 -3
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +14 -62
- data/lib/pubid/ieee/identifiers/base.rb +547 -340
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +12 -6
- data/lib/pubid/ieee/identifiers/corrigendum.rb +12 -15
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +13 -24
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +7 -3
- data/lib/pubid/ieee/identifiers/dual_published.rb +7 -58
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +11 -99
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +11 -25
- data/lib/pubid/ieee/identifiers/joint_development.rb +15 -66
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +24 -58
- data/lib/pubid/ieee/identifiers/nesc/base.rb +19 -90
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +5 -20
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +5 -16
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +2 -11
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +3 -18
- data/lib/pubid/ieee/identifiers/nesc.rb +0 -1
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +9 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +6 -29
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +11 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +39 -4
- data/lib/pubid/ieee/identifiers/standard.rb +2 -5
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +7 -26
- data/lib/pubid/ieee/identifiers.rb +1 -2
- data/lib/pubid/ieee/ire/builder.rb +6 -7
- data/lib/pubid/ieee/ire/identifier.rb +33 -48
- data/lib/pubid/ieee/ire/parser.rb +1 -1
- data/lib/pubid/ieee/nesc/builder.rb +20 -33
- data/lib/pubid/ieee/nesc/parser.rb +15 -16
- data/lib/pubid/ieee/parser.rb +44 -462
- data/lib/pubid/ieee/scheme.rb +90 -0
- data/lib/pubid/ieee/typed_stages.rb +1 -12
- data/lib/pubid/ieee/urn_generator.rb +8 -35
- data/lib/pubid/ieee.rb +2 -133
- data/lib/pubid/ieee_debug.rb +1 -0
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +17 -5
- data/lib/pubid/iho/identifiers/base.rb +30 -64
- data/lib/pubid/iho/identifiers/bibliographic.rb +5 -1
- data/lib/pubid/iho/identifiers/circular_letter.rb +5 -1
- data/lib/pubid/iho/identifiers/miscellaneous.rb +5 -1
- data/lib/pubid/iho/identifiers/publication.rb +5 -1
- data/lib/pubid/iho/identifiers/standard.rb +5 -1
- data/lib/pubid/iho/identifiers.rb +1 -0
- data/lib/pubid/iho/parser.rb +4 -4
- data/lib/pubid/iho/scheme.rb +29 -0
- data/lib/pubid/iho/urn_generator.rb +3 -3
- data/lib/pubid/iho.rb +3 -59
- data/lib/pubid/iso/builder.rb +57 -68
- data/lib/pubid/iso/bundled_identifier.rb +3 -56
- data/lib/pubid/iso/combined_identifier.rb +4 -6
- data/lib/pubid/iso/components/code.rb +19 -7
- data/lib/pubid/iso/components/publisher.rb +8 -10
- data/lib/pubid/iso/components.rb +4 -2
- data/lib/pubid/iso/identifier.rb +11 -260
- data/lib/pubid/iso/identifiers/addendum.rb +6 -9
- data/lib/pubid/iso/identifiers/amendment.rb +4 -8
- data/lib/pubid/iso/identifiers/base.rb +115 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +1 -0
- data/lib/pubid/iso/identifiers/directives.rb +2 -8
- data/lib/pubid/iso/identifiers/directives_supplement.rb +26 -55
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +1 -0
- data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
- data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +4 -10
- data/lib/pubid/iso/identifiers/pas.rb +2 -2
- data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
- data/lib/pubid/iso/identifiers/supplement.rb +3 -11
- data/lib/pubid/iso/identifiers/tc_document.rb +15 -44
- data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
- data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
- data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
- data/lib/pubid/iso/identifiers.rb +1 -0
- data/lib/pubid/iso/parser.rb +19 -43
- data/lib/pubid/iso/scheme.rb +187 -0
- data/lib/pubid/iso/single_identifier.rb +7 -6
- data/lib/pubid/iso/supplement_identifier.rb +3 -29
- data/lib/pubid/iso/urn_generator.rb +177 -78
- data/lib/pubid/iso/urn_parser.rb +10 -29
- data/lib/pubid/iso.rb +2 -188
- data/lib/pubid/itu/builder.rb +41 -230
- data/lib/pubid/itu/components/code.rb +12 -57
- data/lib/pubid/itu/components/sector.rb +4 -15
- data/lib/pubid/itu/components/series.rb +4 -0
- data/lib/pubid/itu/identifier.rb +51 -2
- data/lib/pubid/itu/identifiers/amendment.rb +31 -7
- data/lib/pubid/itu/identifiers/annex.rb +4 -13
- data/lib/pubid/itu/identifiers/base.rb +128 -456
- data/lib/pubid/itu/identifiers/combined_identifier.rb +25 -99
- data/lib/pubid/itu/identifiers/corrigendum.rb +25 -16
- data/lib/pubid/itu/identifiers/recommendation.rb +4 -3
- data/lib/pubid/itu/identifiers/special_publication.rb +3 -3
- data/lib/pubid/itu/identifiers/supplement.rb +16 -119
- data/lib/pubid/itu/identifiers.rb +1 -10
- data/lib/pubid/itu/model.rb +1 -1
- data/lib/pubid/itu/parser.rb +27 -481
- data/lib/pubid/itu/scheme.rb +174 -0
- data/lib/pubid/itu/urn_generator.rb +6 -36
- data/lib/pubid/itu.rb +2 -58
- data/lib/pubid/jcgm/builder.rb +19 -37
- data/lib/pubid/jcgm/identifier.rb +0 -10
- data/lib/pubid/jcgm/identifiers/amendment.rb +11 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +15 -3
- data/lib/pubid/jcgm/identifiers.rb +0 -2
- data/lib/pubid/jcgm/parser.rb +7 -74
- data/lib/pubid/jcgm/scheme.rb +60 -0
- data/lib/pubid/jcgm/single_identifier.rb +14 -84
- data/lib/pubid/jcgm/supplement_identifier.rb +4 -39
- data/lib/pubid/jcgm/urn_generator.rb +19 -25
- data/lib/pubid/jcgm.rb +2 -57
- data/lib/pubid/jis/builder.rb +52 -44
- data/lib/pubid/jis/components/code.rb +59 -0
- data/lib/pubid/{astm → jis}/components.rb +1 -1
- data/lib/pubid/jis/identifier.rb +5 -181
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/base.rb +72 -0
- data/lib/pubid/jis/identifiers/standard.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_report.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +6 -32
- data/lib/pubid/jis/scheme.rb +49 -0
- data/lib/pubid/jis/single_identifier.rb +12 -6
- data/lib/pubid/jis/supplement_identifier.rb +14 -17
- data/lib/pubid/jis.rb +2 -48
- data/lib/pubid/nist/builder.rb +1765 -146
- data/lib/pubid/nist/components/code.rb +20 -9
- data/lib/pubid/nist/components/edition.rb +0 -16
- data/lib/pubid/nist/components/publisher.rb +24 -0
- data/lib/pubid/nist/components/supplement.rb +21 -91
- data/lib/pubid/nist/components.rb +1 -0
- data/lib/pubid/nist/configuration.rb +2 -12
- data/lib/pubid/nist/identifiers/base.rb +417 -662
- data/lib/pubid/nist/identifiers/circular.rb +5 -17
- data/lib/pubid/nist/identifiers/circular_supplement.rb +6 -16
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -3
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +5 -7
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +5 -18
- data/lib/pubid/nist/identifiers/crpl_report.rb +13 -16
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -18
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -3
- data/lib/pubid/nist/identifiers/handbook.rb +4 -12
- data/lib/pubid/nist/identifiers/internal_report.rb +7 -15
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -3
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +11 -20
- data/lib/pubid/nist/identifiers/monograph.rb +11 -22
- data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
- data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
- data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
- data/lib/pubid/nist/identifiers/report.rb +10 -19
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -12
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -4
- data/lib/pubid/nist/identifiers.rb +1 -1
- data/lib/pubid/nist/parser.rb +429 -97
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +34 -35
- data/lib/pubid/nist/urn_generator.rb +8 -14
- data/lib/pubid/nist.rb +5 -107
- data/lib/pubid/oiml/builder.rb +10 -91
- data/lib/pubid/oiml/components/code.rb +0 -17
- data/lib/pubid/oiml/identifier.rb +0 -53
- data/lib/pubid/oiml/identifiers/annex.rb +46 -13
- data/lib/pubid/oiml/identifiers/base.rb +36 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +0 -2
- data/lib/pubid/oiml/identifiers/document.rb +0 -2
- data/lib/pubid/oiml/identifiers/expert_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/guide.rb +0 -2
- data/lib/pubid/oiml/identifiers/recommendation.rb +0 -2
- data/lib/pubid/oiml/identifiers/seminar_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/vocabulary.rb +0 -2
- data/lib/pubid/oiml/identifiers.rb +1 -3
- data/lib/pubid/oiml/parser.rb +17 -118
- data/lib/pubid/oiml/scheme.rb +46 -0
- data/lib/pubid/oiml/single_identifier.rb +43 -66
- data/lib/pubid/oiml/supplement_identifier.rb +17 -62
- data/lib/pubid/oiml/urn_generator.rb +8 -22
- data/lib/pubid/oiml.rb +1 -56
- data/lib/pubid/parser.rb +0 -1
- data/lib/pubid/parsers/mr_string.rb +7 -120
- data/lib/pubid/plateau/builder.rb +4 -8
- data/lib/pubid/plateau/identifiers/base.rb +36 -40
- data/lib/pubid/plateau/identifiers/handbook.rb +7 -1
- data/lib/pubid/plateau/identifiers/technical_report.rb +5 -1
- data/lib/pubid/plateau/identifiers.rb +1 -0
- data/lib/pubid/plateau/parser.rb +6 -16
- data/lib/pubid/plateau/scheme.rb +45 -0
- data/lib/pubid/plateau/supplement_identifier.rb +15 -11
- data/lib/pubid/plateau.rb +1 -58
- data/lib/pubid/renderers/base.rb +0 -47
- data/lib/pubid/renderers/directives_renderer.rb +14 -27
- data/lib/pubid/renderers/guide_renderer.rb +1 -7
- data/lib/pubid/renderers/human_readable.rb +9 -34
- data/lib/pubid/renderers/iwa_renderer.rb +1 -5
- data/lib/pubid/renderers/mr_string.rb +6 -54
- data/lib/pubid/renderers/supplement_renderer.rb +2 -5
- data/lib/pubid/renderers.rb +0 -1
- data/lib/pubid/rendering/base.rb +73 -0
- data/lib/pubid/rendering/common.rb +211 -0
- data/lib/pubid/rendering/context.rb +21 -33
- data/lib/pubid/rendering/format.rb +25 -0
- data/lib/pubid/rendering/numbering.rb +7 -25
- data/lib/pubid/rendering/supplement.rb +4 -4
- data/lib/pubid/rendering.rb +3 -0
- data/lib/pubid/sae/builder.rb +1 -1
- data/lib/pubid/sae/components/date.rb +0 -8
- data/lib/pubid/sae/components/type.rb +1 -5
- data/lib/pubid/sae/identifier.rb +12 -2
- data/lib/pubid/sae/identifiers/base.rb +28 -33
- data/lib/pubid/sae/identifiers.rb +1 -0
- data/lib/pubid/sae/parser.rb +1 -1
- data/lib/pubid/sae/scheme.rb +47 -0
- data/lib/pubid/sae/urn_generator.rb +10 -2
- data/lib/pubid/sae.rb +2 -49
- data/lib/pubid/scheme.rb +207 -0
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +10 -424
- data/lib/tasks/export.rake +5 -6
- data/lib/tasks/website-data.json +1796 -1854
- metadata +45 -307
- data/data/bipm/update_codes.yaml +0 -9
- data/data/nist/series.yaml +0 -155
- data/lib/pubid/adobe/builder.rb +0 -52
- data/lib/pubid/adobe/identifier.rb +0 -47
- data/lib/pubid/adobe/identifiers/publication.rb +0 -31
- data/lib/pubid/adobe/identifiers/tech_note.rb +0 -32
- data/lib/pubid/adobe/identifiers.rb +0 -10
- data/lib/pubid/adobe/parser.rb +0 -136
- data/lib/pubid/adobe/renderer.rb +0 -39
- data/lib/pubid/adobe/urn_generator.rb +0 -42
- data/lib/pubid/adobe/urn_parser.rb +0 -69
- data/lib/pubid/adobe.rb +0 -60
- data/lib/pubid/amca/renderer.rb +0 -82
- data/lib/pubid/amca/urn_parser.rb +0 -28
- data/lib/pubid/ansi/renderer.rb +0 -53
- data/lib/pubid/ansi/urn_parser.rb +0 -23
- data/lib/pubid/api/identifiers.rb +0 -18
- data/lib/pubid/api/renderer.rb +0 -98
- data/lib/pubid/api/urn_parser.rb +0 -35
- data/lib/pubid/ashrae/renderer.rb +0 -117
- data/lib/pubid/ashrae/urn_parser.rb +0 -27
- data/lib/pubid/asme/renderer.rb +0 -66
- data/lib/pubid/asme/urn_parser.rb +0 -31
- data/lib/pubid/astm/identifiers/code_number.rb +0 -81
- data/lib/pubid/astm/identifiers.rb +0 -19
- data/lib/pubid/astm/renderer.rb +0 -172
- data/lib/pubid/astm/urn_parser.rb +0 -30
- data/lib/pubid/bipm/builder.rb +0 -163
- data/lib/pubid/bipm/identifier.rb +0 -285
- data/lib/pubid/bipm/identifiers/committee_document.rb +0 -36
- data/lib/pubid/bipm/identifiers/guide.rb +0 -35
- data/lib/pubid/bipm/identifiers/meeting.rb +0 -53
- data/lib/pubid/bipm/identifiers/mep.rb +0 -33
- data/lib/pubid/bipm/identifiers/metrologia_article.rb +0 -48
- data/lib/pubid/bipm/identifiers/si_brochure.rb +0 -33
- data/lib/pubid/bipm/identifiers.rb +0 -15
- data/lib/pubid/bipm/parser.rb +0 -237
- data/lib/pubid/bipm/renderer.rb +0 -118
- data/lib/pubid/bipm/urn_generator.rb +0 -58
- data/lib/pubid/bipm/urn_parser.rb +0 -60
- data/lib/pubid/bipm.rb +0 -91
- data/lib/pubid/bsi/renderer.rb +0 -1064
- data/lib/pubid/bsi/urn_parser.rb +0 -52
- data/lib/pubid/calconnect/builder.rb +0 -38
- data/lib/pubid/calconnect/identifier.rb +0 -121
- data/lib/pubid/calconnect/identifiers/standard.rb +0 -29
- data/lib/pubid/calconnect/identifiers.rb +0 -9
- data/lib/pubid/calconnect/parser.rb +0 -54
- data/lib/pubid/calconnect/renderer.rb +0 -36
- data/lib/pubid/calconnect/urn_generator.rb +0 -33
- data/lib/pubid/calconnect/urn_parser.rb +0 -34
- data/lib/pubid/calconnect.rb +0 -82
- data/lib/pubid/ccsds/urn_parser.rb +0 -20
- data/lib/pubid/cen_cenelec/renderer.rb +0 -261
- data/lib/pubid/cen_cenelec/urn_parser.rb +0 -28
- data/lib/pubid/cie/identifiers/code_attributes.rb +0 -52
- data/lib/pubid/cie/identifiers/proceedings.rb +0 -41
- data/lib/pubid/cie/urn_parser.rb +0 -28
- data/lib/pubid/components/adoption.rb +0 -104
- data/lib/pubid/components/iteration.rb +0 -32
- data/lib/pubid/components/relationship.rb +0 -151
- data/lib/pubid/components/supplement.rb +0 -184
- data/lib/pubid/csa/renderer.rb +0 -300
- data/lib/pubid/csa/urn_parser.rb +0 -33
- data/lib/pubid/doi/builder.rb +0 -18
- data/lib/pubid/doi/identifier.rb +0 -49
- data/lib/pubid/doi/identifiers/resource.rb +0 -30
- data/lib/pubid/doi/identifiers.rb +0 -9
- data/lib/pubid/doi/parser.rb +0 -52
- data/lib/pubid/doi/renderer.rb +0 -13
- data/lib/pubid/doi.rb +0 -55
- data/lib/pubid/easc/builder.rb +0 -55
- data/lib/pubid/easc/identifier.rb +0 -59
- data/lib/pubid/easc/identifiers/pmg.rb +0 -20
- data/lib/pubid/easc/identifiers/rmg.rb +0 -19
- data/lib/pubid/easc/identifiers.rb +0 -10
- data/lib/pubid/easc/parser.rb +0 -88
- data/lib/pubid/easc/renderer.rb +0 -48
- data/lib/pubid/easc/urn_generator.rb +0 -46
- data/lib/pubid/easc/urn_parser.rb +0 -57
- data/lib/pubid/easc.rb +0 -52
- data/lib/pubid/ecma/builder.rb +0 -45
- data/lib/pubid/ecma/identifier.rb +0 -147
- data/lib/pubid/ecma/identifiers/memento.rb +0 -30
- data/lib/pubid/ecma/identifiers/standard.rb +0 -31
- data/lib/pubid/ecma/identifiers/technical_report.rb +0 -31
- data/lib/pubid/ecma/identifiers.rb +0 -11
- data/lib/pubid/ecma/parser.rb +0 -76
- data/lib/pubid/ecma/renderer.rb +0 -67
- data/lib/pubid/ecma/urn_generator.rb +0 -46
- data/lib/pubid/ecma/urn_parser.rb +0 -51
- data/lib/pubid/ecma.rb +0 -67
- data/lib/pubid/errors.rb +0 -79
- data/lib/pubid/etsi/renderer.rb +0 -48
- data/lib/pubid/etsi/urn_parser.rb +0 -34
- data/lib/pubid/gb/builder.rb +0 -45
- data/lib/pubid/gb/identifier.rb +0 -67
- data/lib/pubid/gb/identifiers/standard.rb +0 -34
- data/lib/pubid/gb/identifiers.rb +0 -9
- data/lib/pubid/gb/parser.rb +0 -63
- data/lib/pubid/gb/renderer.rb +0 -35
- data/lib/pubid/gb.rb +0 -87
- data/lib/pubid/gost/builder.rb +0 -148
- data/lib/pubid/gost/identifier.rb +0 -47
- data/lib/pubid/gost/identifiers/foreign_reference.rb +0 -25
- data/lib/pubid/gost/identifiers/harmonized.rb +0 -39
- data/lib/pubid/gost/identifiers/identical_adoption.rb +0 -39
- data/lib/pubid/gost/identifiers/interstate_standard.rb +0 -20
- data/lib/pubid/gost/identifiers/national_standard.rb +0 -19
- data/lib/pubid/gost/identifiers.rb +0 -13
- data/lib/pubid/gost/parser.rb +0 -105
- data/lib/pubid/gost/renderer.rb +0 -48
- data/lib/pubid/gost/urn_generator.rb +0 -46
- data/lib/pubid/gost/urn_parser.rb +0 -52
- data/lib/pubid/gost.rb +0 -49
- data/lib/pubid/iala/builder.rb +0 -102
- data/lib/pubid/iala/identifier.rb +0 -90
- data/lib/pubid/iala/identifiers/advice.rb +0 -15
- data/lib/pubid/iala/identifiers/annex.rb +0 -57
- data/lib/pubid/iala/identifiers/general_assembly.rb +0 -19
- data/lib/pubid/iala/identifiers/guideline.rb +0 -17
- data/lib/pubid/iala/identifiers/letter.rb +0 -16
- data/lib/pubid/iala/identifiers/manual.rb +0 -18
- data/lib/pubid/iala/identifiers/model_course.rb +0 -17
- data/lib/pubid/iala/identifiers/recommendation.rb +0 -17
- data/lib/pubid/iala/identifiers/report.rb +0 -16
- data/lib/pubid/iala/identifiers/resolution.rb +0 -16
- data/lib/pubid/iala/identifiers/standard.rb +0 -17
- data/lib/pubid/iala/identifiers.rb +0 -19
- data/lib/pubid/iala/parser.rb +0 -138
- data/lib/pubid/iala/renderer.rb +0 -36
- data/lib/pubid/iala/urn_generator.rb +0 -49
- data/lib/pubid/iala/urn_parser.rb +0 -67
- data/lib/pubid/iala.rb +0 -71
- data/lib/pubid/iana/builder.rb +0 -22
- data/lib/pubid/iana/identifier.rb +0 -140
- data/lib/pubid/iana/identifiers/registry.rb +0 -69
- data/lib/pubid/iana/identifiers.rb +0 -9
- data/lib/pubid/iana/parser.rb +0 -38
- data/lib/pubid/iana/renderer.rb +0 -32
- data/lib/pubid/iana/urn_generator.rb +0 -19
- data/lib/pubid/iana/urn_parser.rb +0 -24
- data/lib/pubid/iana.rb +0 -69
- data/lib/pubid/idf/renderer.rb +0 -84
- data/lib/pubid/idf/urn_parser.rb +0 -25
- data/lib/pubid/iec/components.rb +0 -14
- data/lib/pubid/iec/identifiers/technical_group.rb +0 -30
- data/lib/pubid/iec/identifiers.rb +0 -31
- data/lib/pubid/iec/renderer.rb +0 -267
- data/lib/pubid/ieee/compaction.rb +0 -121
- data/lib/pubid/ieee/identifiers/amendment.rb +0 -40
- data/lib/pubid/ieee/identifiers/code_number.rb +0 -82
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +0 -32
- data/lib/pubid/ieee/pre_parser.rb +0 -301
- data/lib/pubid/ieee/renderer.rb +0 -408
- data/lib/pubid/ieee/urn_parser.rb +0 -34
- data/lib/pubid/ietf/builder.rb +0 -78
- data/lib/pubid/ietf/identifier.rb +0 -5
- data/lib/pubid/ietf/identifiers/base.rb +0 -72
- data/lib/pubid/ietf/identifiers/bcp.rb +0 -36
- data/lib/pubid/ietf/identifiers/fyi.rb +0 -36
- data/lib/pubid/ietf/identifiers/internet_draft.rb +0 -45
- data/lib/pubid/ietf/identifiers/rfc.rb +0 -27
- data/lib/pubid/ietf/identifiers/serialization.rb +0 -51
- data/lib/pubid/ietf/identifiers/std.rb +0 -36
- data/lib/pubid/ietf/identifiers.rb +0 -14
- data/lib/pubid/ietf/parser.rb +0 -61
- data/lib/pubid/ietf/renderer.rb +0 -64
- data/lib/pubid/ietf/urn_generator.rb +0 -37
- data/lib/pubid/ietf/urn_parser.rb +0 -43
- data/lib/pubid/ietf.rb +0 -85
- data/lib/pubid/iho/renderer.rb +0 -30
- data/lib/pubid/iho/urn_parser.rb +0 -58
- data/lib/pubid/isbn/builder.rb +0 -44
- data/lib/pubid/isbn/check_digit.rb +0 -53
- data/lib/pubid/isbn/identifier.rb +0 -81
- data/lib/pubid/isbn/identifiers/book.rb +0 -30
- data/lib/pubid/isbn/identifiers.rb +0 -9
- data/lib/pubid/isbn/parser.rb +0 -45
- data/lib/pubid/isbn/renderer.rb +0 -16
- data/lib/pubid/isbn.rb +0 -52
- data/lib/pubid/iso/normalizer.rb +0 -89
- data/lib/pubid/itu/components/designation.rb +0 -35
- data/lib/pubid/itu/components.rb +0 -12
- data/lib/pubid/itu/identifiers/addendum.rb +0 -15
- data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +0 -87
- data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +0 -92
- data/lib/pubid/itu/identifiers/errata.rb +0 -15
- data/lib/pubid/itu/identifiers/handbook.rb +0 -38
- data/lib/pubid/itu/identifiers/question.rb +0 -63
- data/lib/pubid/itu/identifiers/report.rb +0 -39
- data/lib/pubid/itu/identifiers/standard_serialization.rb +0 -58
- data/lib/pubid/itu/urn_parser.rb +0 -31
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +0 -34
- data/lib/pubid/jcgm/identifiers/meeting.rb +0 -47
- data/lib/pubid/jcgm/renderer.rb +0 -89
- data/lib/pubid/jcgm/urn_parser.rb +0 -177
- data/lib/pubid/jis/identifiers/corrigendum.rb +0 -16
- data/lib/pubid/jis/renderer.rb +0 -69
- data/lib/pubid/jis/urn_parser.rb +0 -23
- data/lib/pubid/nist/caster.rb +0 -1234
- data/lib/pubid/nist/circular_supplement_builder.rb +0 -293
- data/lib/pubid/nist/identifier.rb +0 -8
- data/lib/pubid/nist/identifiers/dated_document.rb +0 -49
- data/lib/pubid/nist/parser_output_normalizer.rb +0 -233
- data/lib/pubid/nist/preprocessor.rb +0 -443
- data/lib/pubid/nist/renderer.rb +0 -43
- data/lib/pubid/nist/router.rb +0 -149
- data/lib/pubid/nist/series/base.rb +0 -58
- data/lib/pubid/nist/series/crpl.rb +0 -13
- data/lib/pubid/nist/series/fips.rb +0 -14
- data/lib/pubid/nist/series/ir.rb +0 -57
- data/lib/pubid/nist/series/letter_preserving.rb +0 -15
- data/lib/pubid/nist/series/mono.rb +0 -19
- data/lib/pubid/nist/series/ncstar.rb +0 -20
- data/lib/pubid/nist/series.rb +0 -49
- data/lib/pubid/nist/urn_parser.rb +0 -67
- data/lib/pubid/oasis/builder.rb +0 -79
- data/lib/pubid/oasis/identifier.rb +0 -160
- data/lib/pubid/oasis/identifiers/standard.rb +0 -29
- data/lib/pubid/oasis/identifiers.rb +0 -9
- data/lib/pubid/oasis/parser.rb +0 -34
- data/lib/pubid/oasis/renderer.rb +0 -29
- data/lib/pubid/oasis/urn_generator.rb +0 -25
- data/lib/pubid/oasis/urn_parser.rb +0 -22
- data/lib/pubid/oasis.rb +0 -79
- data/lib/pubid/ogc/builder.rb +0 -33
- data/lib/pubid/ogc/identifier.rb +0 -81
- data/lib/pubid/ogc/identifiers/document.rb +0 -26
- data/lib/pubid/ogc/identifiers.rb +0 -10
- data/lib/pubid/ogc/parser.rb +0 -40
- data/lib/pubid/ogc/renderer.rb +0 -33
- data/lib/pubid/ogc/urn_generator.rb +0 -14
- data/lib/pubid/ogc/urn_parser.rb +0 -22
- data/lib/pubid/ogc.rb +0 -71
- data/lib/pubid/oiml/identifiers/bulletin.rb +0 -137
- data/lib/pubid/oiml/identifiers/code_number.rb +0 -90
- data/lib/pubid/oiml/identifiers/errata.rb +0 -15
- data/lib/pubid/oiml/renderer.rb +0 -232
- data/lib/pubid/oiml/urn_parser.rb +0 -39
- data/lib/pubid/omg/builder.rb +0 -19
- data/lib/pubid/omg/identifier.rb +0 -47
- data/lib/pubid/omg/identifiers/specification.rb +0 -32
- data/lib/pubid/omg/identifiers.rb +0 -9
- data/lib/pubid/omg/parser.rb +0 -40
- data/lib/pubid/omg/renderer.rb +0 -19
- data/lib/pubid/omg.rb +0 -51
- data/lib/pubid/parser/grammar.rb +0 -74
- data/lib/pubid/plateau/identifier.rb +0 -4
- data/lib/pubid/plateau/renderer.rb +0 -51
- data/lib/pubid/plateau/urn_parser.rb +0 -43
- data/lib/pubid/prefixes_support.rb +0 -51
- data/lib/pubid/renderers/annotator.rb +0 -233
- data/lib/pubid/sae/renderer.rb +0 -36
- data/lib/pubid/sae/urn_parser.rb +0 -36
- data/lib/pubid/tgpp/builder.rb +0 -41
- data/lib/pubid/tgpp/identifier.rb +0 -107
- data/lib/pubid/tgpp/identifiers/technical_report.rb +0 -32
- data/lib/pubid/tgpp/identifiers/technical_specification.rb +0 -33
- data/lib/pubid/tgpp/identifiers.rb +0 -11
- data/lib/pubid/tgpp/parser.rb +0 -78
- data/lib/pubid/tgpp/renderer.rb +0 -52
- data/lib/pubid/tgpp/urn_generator.rb +0 -39
- data/lib/pubid/tgpp/urn_parser.rb +0 -30
- data/lib/pubid/tgpp.rb +0 -83
- data/lib/pubid/type_resolver.rb +0 -59
- data/lib/pubid/un/builder.rb +0 -42
- data/lib/pubid/un/identifier.rb +0 -40
- data/lib/pubid/un/identifiers/document.rb +0 -24
- data/lib/pubid/un/identifiers.rb +0 -9
- data/lib/pubid/un/parser.rb +0 -25
- data/lib/pubid/un/renderer.rb +0 -11
- data/lib/pubid/un.rb +0 -46
- data/lib/pubid/urn_parser/base.rb +0 -81
- data/lib/pubid/urn_parser/errors.rb +0 -16
- data/lib/pubid/urn_parser.rb +0 -14
- data/lib/pubid/w3c/builder.rb +0 -55
- data/lib/pubid/w3c/identifier.rb +0 -130
- data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +0 -31
- data/lib/pubid/w3c/identifiers/draft_note.rb +0 -31
- data/lib/pubid/w3c/identifiers/note.rb +0 -30
- data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/standard.rb +0 -12
- data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/working_draft.rb +0 -30
- data/lib/pubid/w3c/identifiers.rb +0 -25
- data/lib/pubid/w3c/parser.rb +0 -43
- data/lib/pubid/w3c/renderer.rb +0 -35
- data/lib/pubid/w3c/urn_generator.rb +0 -18
- data/lib/pubid/w3c/urn_parser.rb +0 -36
- data/lib/pubid/w3c.rb +0 -67
- data/lib/pubid/xsf/builder.rb +0 -17
- data/lib/pubid/xsf/identifier.rb +0 -66
- data/lib/pubid/xsf/identifiers/xep.rb +0 -31
- data/lib/pubid/xsf/identifiers.rb +0 -9
- data/lib/pubid/xsf/parser.rb +0 -25
- data/lib/pubid/xsf/renderer.rb +0 -23
- data/lib/pubid/xsf/urn_generator.rb +0 -13
- data/lib/pubid/xsf/urn_parser.rb +0 -18
- data/lib/pubid/xsf.rb +0 -81
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "lutaml/model"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Components
|
|
7
|
-
# Relationship component — captures how one identifier relates to others.
|
|
8
|
-
#
|
|
9
|
-
# Originally modeled as IEEE's Components::Relationship; promoted to the
|
|
10
|
-
# shared namespace because the same relationship vocabulary applies to
|
|
11
|
-
# ISO, IEC, and other flavors that need to express "revises", "amends",
|
|
12
|
-
# "incorporates", "adopts", etc.
|
|
13
|
-
#
|
|
14
|
-
# Shape:
|
|
15
|
-
# - relationship_type: one of the VALID_TYPES constants below.
|
|
16
|
-
# - related_identifiers: array of identifier objects the relationship
|
|
17
|
-
# points at (e.g., the standards being revised).
|
|
18
|
-
# - intermediate_amendments: optional array of identifiers that amended
|
|
19
|
-
# the related identifier between its original publication and the
|
|
20
|
-
# current revision (renders as "... as amended by ...").
|
|
21
|
-
# - approved_amendments_flag: when true and no intermediate_amendments
|
|
22
|
-
# are listed, renders "... and its approved amendments".
|
|
23
|
-
class Relationship < Lutaml::Model::Serializable
|
|
24
|
-
REVISION_OF = "revision_of"
|
|
25
|
-
AMENDMENT_TO = "amendment_to"
|
|
26
|
-
CORRIGENDUM_TO = "corrigendum_to"
|
|
27
|
-
INCORPORATES = "incorporates"
|
|
28
|
-
INCORPORATING = "incorporating"
|
|
29
|
-
ADOPTION_OF = "adoption_of"
|
|
30
|
-
SUPPLEMENT_TO = "supplement_to"
|
|
31
|
-
DRAFT_AMENDMENT_TO = "draft_amendment_to"
|
|
32
|
-
DRAFT_REVISION_OF = "draft_revision_of"
|
|
33
|
-
REAFFIRMATION_OF = "reaffirmation_of"
|
|
34
|
-
REDESIGNATION_OF = "redesignation_of"
|
|
35
|
-
SUPERSEDES = "supersedes"
|
|
36
|
-
PREVIOUSLY_DESIGNATED_AS = "previously_designated_as"
|
|
37
|
-
INCLUDES = "includes"
|
|
38
|
-
|
|
39
|
-
VALID_TYPES = [
|
|
40
|
-
REVISION_OF,
|
|
41
|
-
AMENDMENT_TO,
|
|
42
|
-
CORRIGENDUM_TO,
|
|
43
|
-
INCORPORATES,
|
|
44
|
-
INCORPORATING,
|
|
45
|
-
ADOPTION_OF,
|
|
46
|
-
SUPPLEMENT_TO,
|
|
47
|
-
DRAFT_AMENDMENT_TO,
|
|
48
|
-
DRAFT_REVISION_OF,
|
|
49
|
-
REAFFIRMATION_OF,
|
|
50
|
-
REDESIGNATION_OF,
|
|
51
|
-
SUPERSEDES,
|
|
52
|
-
PREVIOUSLY_DESIGNATED_AS,
|
|
53
|
-
INCLUDES,
|
|
54
|
-
].freeze
|
|
55
|
-
|
|
56
|
-
attribute :relationship_type, :string
|
|
57
|
-
|
|
58
|
-
attr_accessor :related_identifiers, :intermediate_amendments,
|
|
59
|
-
:approved_amendments_flag
|
|
60
|
-
|
|
61
|
-
PREFIXES = {
|
|
62
|
-
REVISION_OF => "Revision of",
|
|
63
|
-
AMENDMENT_TO => "Amendment to",
|
|
64
|
-
CORRIGENDUM_TO => "Corrigendum to",
|
|
65
|
-
INCORPORATES => "incorporates",
|
|
66
|
-
ADOPTION_OF => "Adoption of",
|
|
67
|
-
SUPPLEMENT_TO => "Supplement to",
|
|
68
|
-
DRAFT_AMENDMENT_TO => "Draft Amendment to",
|
|
69
|
-
DRAFT_REVISION_OF => "Draft Revision of",
|
|
70
|
-
REAFFIRMATION_OF => "Reaffirmation of",
|
|
71
|
-
REDESIGNATION_OF => "Redesignation of",
|
|
72
|
-
SUPERSEDES => "Supersedes",
|
|
73
|
-
PREVIOUSLY_DESIGNATED_AS => "Previously designated as",
|
|
74
|
-
INCLUDES => "Includes",
|
|
75
|
-
}.freeze
|
|
76
|
-
|
|
77
|
-
def initialize(**args)
|
|
78
|
-
@related_identifiers = args.delete(:related_identifiers)
|
|
79
|
-
@intermediate_amendments = args.delete(:intermediate_amendments)
|
|
80
|
-
@approved_amendments_flag = args.delete(:approved_amendments_flag)
|
|
81
|
-
super
|
|
82
|
-
normalize_incorporating!
|
|
83
|
-
validate_relationship_type if relationship_type
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def normalize_incorporating!
|
|
87
|
-
return unless relationship_type == INCORPORATING
|
|
88
|
-
|
|
89
|
-
self.relationship_type = INCORPORATES
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def validate_relationship_type
|
|
93
|
-
return if VALID_TYPES.include?(relationship_type)
|
|
94
|
-
|
|
95
|
-
raise ArgumentError,
|
|
96
|
-
"Invalid relationship type: #{relationship_type}. " \
|
|
97
|
-
"Valid types: #{VALID_TYPES.join(', ')}"
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def to_s
|
|
101
|
-
return "" if related_identifiers.nil? || related_identifiers.empty?
|
|
102
|
-
|
|
103
|
-
prefix = format_relationship_prefix
|
|
104
|
-
ids = format_identifier_list(related_identifiers)
|
|
105
|
-
return "#{prefix} #{ids}" unless intermediate_clause?
|
|
106
|
-
|
|
107
|
-
"#{prefix} #{ids} #{intermediate_clause}"
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
def render(context: nil)
|
|
111
|
-
to_s
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
private
|
|
115
|
-
|
|
116
|
-
def intermediate_clause?
|
|
117
|
-
(intermediate_amendments && !intermediate_amendments.empty?) ||
|
|
118
|
-
approved_amendments_flag
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def intermediate_clause
|
|
122
|
-
if intermediate_amendments && !intermediate_amendments.empty?
|
|
123
|
-
"as amended by #{format_identifier_list(intermediate_amendments)}"
|
|
124
|
-
else
|
|
125
|
-
"and its approved amendments"
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def format_relationship_prefix
|
|
130
|
-
PREFIXES.fetch(relationship_type, relationship_type)
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
# Format a list of identifiers using proper English grammar:
|
|
134
|
-
# - Single: "IEEE Std X"
|
|
135
|
-
# - Two: "IEEE Std X and IEEE Std Y"
|
|
136
|
-
# - Three+: "IEEE Std X, IEEE Std Y, and IEEE Std Z" (Oxford comma)
|
|
137
|
-
def format_identifier_list(identifiers)
|
|
138
|
-
return "" if identifiers.nil? || identifiers.empty?
|
|
139
|
-
|
|
140
|
-
case identifiers.length
|
|
141
|
-
when 1
|
|
142
|
-
identifiers.first.to_s
|
|
143
|
-
when 2
|
|
144
|
-
"#{identifiers.first} and #{identifiers.last}"
|
|
145
|
-
else
|
|
146
|
-
"#{identifiers[0..-2].join(', ')}, and #{identifiers.last}"
|
|
147
|
-
end
|
|
148
|
-
end
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
end
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "lutaml/model"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Components
|
|
7
|
-
# Supplement component — a structured value-object representing the
|
|
8
|
-
# supplement-specific data (number, date, stage, iteration, type) of a
|
|
9
|
-
# supplement identifier.
|
|
10
|
-
#
|
|
11
|
-
# Union shape across flavors:
|
|
12
|
-
# - type: "amd" (amendment), "cor" (corrigendum), "err" (errata),
|
|
13
|
-
# "sup" (supplement), or a flavor-specific marker.
|
|
14
|
-
# - number: bare sequence number (string preserves leading zeros, "1A"
|
|
15
|
-
# combos, etc.).
|
|
16
|
-
# - date: publication date of the supplement (Components::Date).
|
|
17
|
-
# - range_end_date: end of a date range; presence of this marks the
|
|
18
|
-
# supplement as a range. (NIST/NBS uses supJan1924-Jun1925.)
|
|
19
|
-
# - stage: the stage the supplement is in (e.g., WD Amd, CD Amd).
|
|
20
|
-
# - iteration: stage iteration (e.g., the ".2" in "WD.2 Amd").
|
|
21
|
-
# - has_revision: "suprev" marker — supplement that itself carries a
|
|
22
|
-
# revision. (NIST-specific.)
|
|
23
|
-
# - suffix: escape hatch for patterns not yet modeled.
|
|
24
|
-
#
|
|
25
|
-
# Format-aware via render(context:). The human form stacks fields in the
|
|
26
|
-
# order they appear in the printed supplement; the URN form joins number
|
|
27
|
-
# and year with ":".
|
|
28
|
-
class Supplement < Lutaml::Model::Serializable
|
|
29
|
-
DEFAULT_TYPE = "sup"
|
|
30
|
-
|
|
31
|
-
attribute :type, :string, default: -> { DEFAULT_TYPE }
|
|
32
|
-
attribute :number, :string
|
|
33
|
-
attribute :date, Date
|
|
34
|
-
attribute :range_end_date, Date
|
|
35
|
-
attribute :stage, Stage
|
|
36
|
-
attribute :iteration, Components::Iteration
|
|
37
|
-
attribute :has_revision, :boolean, default: false
|
|
38
|
-
attribute :suffix, :string
|
|
39
|
-
|
|
40
|
-
IDENTITY_FIELDS = %i[
|
|
41
|
-
type number date range_end_date stage iteration has_revision suffix
|
|
42
|
-
].freeze
|
|
43
|
-
|
|
44
|
-
# Fields whose presence indicates the supplement carries data.
|
|
45
|
-
# `type` is excluded — it always has a value (the default "sup") but
|
|
46
|
-
# doesn't mean the supplement carries content.
|
|
47
|
-
CONTENT_FIELDS = %i[
|
|
48
|
-
number date range_end_date stage iteration has_revision suffix
|
|
49
|
-
].freeze
|
|
50
|
-
|
|
51
|
-
# True when the supplement carries any data. Distinguishes a present-
|
|
52
|
-
# but-empty supplement (bare marker, "sup") from no supplement at all.
|
|
53
|
-
def present?
|
|
54
|
-
CONTENT_FIELDS.any? { |f| present_value?(public_send(f)) }
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# True when this supplement spans a date range (start + end set).
|
|
58
|
-
def range?
|
|
59
|
-
date&.present? && range_end_date&.present?
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def render(context: nil)
|
|
63
|
-
return render_urn if context&.format == :urn
|
|
64
|
-
|
|
65
|
-
render_human
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def to_s(**opts)
|
|
69
|
-
render(context: opts[:context])
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def ==(other)
|
|
73
|
-
return false unless other.is_a?(self.class)
|
|
74
|
-
|
|
75
|
-
identity_fields.all? { |f| public_send(f) == other.public_send(f) }
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
alias eql? ==
|
|
79
|
-
|
|
80
|
-
def hash
|
|
81
|
-
@hash ||= [self.class, *identity_fields.map { |f| public_send(f) }].hash
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
private
|
|
85
|
-
|
|
86
|
-
def identity_fields
|
|
87
|
-
IDENTITY_FIELDS
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def non_empty?(value)
|
|
91
|
-
return false if value.nil?
|
|
92
|
-
|
|
93
|
-
value.is_a?(String) ? !value.empty? : value.present?
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def present_value?(value)
|
|
97
|
-
return value if [true, false].include?(value)
|
|
98
|
-
return false if value.nil?
|
|
99
|
-
|
|
100
|
-
value.is_a?(String) ? !value.empty? : value.present?
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def number?
|
|
104
|
-
non_empty?(number)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def suffix?
|
|
108
|
-
non_empty?(suffix)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def stage_abbr
|
|
112
|
-
return nil if stage.nil? || stage.abbr.nil?
|
|
113
|
-
|
|
114
|
-
abbr = stage.abbr.to_s
|
|
115
|
-
abbr.empty? ? nil : abbr
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
# Human / mr: stack fields in canonical order.
|
|
119
|
-
# "1924" (year)
|
|
120
|
-
# "Jan1924" (month + year)
|
|
121
|
-
# "3/1926" (number + year)
|
|
122
|
-
# "1" (number)
|
|
123
|
-
# "A" (suffix)
|
|
124
|
-
# "Jan1924-Jun1925" (range)
|
|
125
|
-
def render_human
|
|
126
|
-
return early_marker if has_revision || suffix?
|
|
127
|
-
return date_range_string if range?
|
|
128
|
-
|
|
129
|
-
assemble_body
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
def early_marker
|
|
133
|
-
has_revision ? "rev" : suffix.to_s
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def assemble_body
|
|
137
|
-
body = number_or_date_string
|
|
138
|
-
body += iteration_suffix if include_iteration?
|
|
139
|
-
stage_abbr ? "#{stage_abbr}#{body}" : body
|
|
140
|
-
end
|
|
141
|
-
|
|
142
|
-
def include_iteration?
|
|
143
|
-
iteration && stage_abbr.nil?
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
def render_urn
|
|
147
|
-
return "" unless present?
|
|
148
|
-
|
|
149
|
-
[number&.to_s, date&.year&.to_s].compact.reject(&:empty?).join(":")
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
def iteration_suffix
|
|
153
|
-
"-#{iteration.number}"
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
def date_range_string
|
|
157
|
-
"#{date_string(date)}-#{date_string(range_end_date)}"
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
def number_or_date_string
|
|
161
|
-
return date_string(date) unless number?
|
|
162
|
-
|
|
163
|
-
date&.present? ? "#{number}/#{date_string(date)}" : number.to_s
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
# Render the body of a date fragment preserving the original month
|
|
167
|
-
# abbreviation when month is a non-numeric string. Falls back to
|
|
168
|
-
# Components::Date#render when month is numeric.
|
|
169
|
-
def date_string(date_value)
|
|
170
|
-
return "" unless date_value&.present?
|
|
171
|
-
|
|
172
|
-
if month_abbreviation?(date_value)
|
|
173
|
-
"#{date_value.month}#{date_value.year}"
|
|
174
|
-
else
|
|
175
|
-
date_value.render(context: nil)
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
def month_abbreviation?(date_value)
|
|
180
|
-
date_value.month && !date_value.month.match?(/^\d+$/)
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
end
|
data/lib/pubid/csa/renderer.rb
DELETED
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Csa
|
|
5
|
-
# Human-readable renderer for CSA identifiers that extend Pubid::Identifier.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "CSA B149.1:20"
|
|
9
|
-
# "CAN/CSA-C22.2 NO. 60601-1-9:15"
|
|
10
|
-
# "CSA C22.2 NO. 286:23"
|
|
11
|
-
# "CSA MH SERIES 3.14:20"
|
|
12
|
-
#
|
|
13
|
-
# The renderer is registered as the +:human+ format in the CSA format
|
|
14
|
-
# registry and invoked via +render(format: :human)+.
|
|
15
|
-
#
|
|
16
|
-
# Note: Some CSA identifier types (Bundled, Combined, CanadianAdopted,
|
|
17
|
-
# CsaAdopted, Package) extend Lutaml::Model::Serializable directly,
|
|
18
|
-
# not Pubid::Identifier, so they keep their own to_s implementations.
|
|
19
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
20
|
-
def render(context: nil, **_opts)
|
|
21
|
-
id = @id
|
|
22
|
-
@context = context
|
|
23
|
-
|
|
24
|
-
case id
|
|
25
|
-
when Identifiers::Series
|
|
26
|
-
render_series(id)
|
|
27
|
-
when Identifiers::Cec
|
|
28
|
-
render_cec(id)
|
|
29
|
-
else
|
|
30
|
-
render_base(id)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
private
|
|
35
|
-
|
|
36
|
-
# Base rendering: "CSA B149.1:20", "CAN/CSA-C22.2-05"
|
|
37
|
-
def render_base(id)
|
|
38
|
-
prefix = publisher_prefix_for(id)
|
|
39
|
-
|
|
40
|
-
# Handle code_only identifiers (empty string means no prefix)
|
|
41
|
-
if prefix == ""
|
|
42
|
-
# No prefix for code_only identifiers
|
|
43
|
-
parts = []
|
|
44
|
-
else
|
|
45
|
-
# Determine if we need space after prefix
|
|
46
|
-
# CAN/CSA- and CAN3- end with dash, so no space needed
|
|
47
|
-
needs_space = !prefix.end_with?("-")
|
|
48
|
-
|
|
49
|
-
parts = []
|
|
50
|
-
parts << prefix
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Code and year together
|
|
54
|
-
code_part = id.number.to_s if id.number
|
|
55
|
-
|
|
56
|
-
# NO. keyword
|
|
57
|
-
if id.no_number
|
|
58
|
-
code_part += " NO. #{id.no_number}"
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Series prefix and keyword (before year)
|
|
62
|
-
if id.series_prefix
|
|
63
|
-
code_part += " #{id.series_prefix} SERIES"
|
|
64
|
-
elsif id.series
|
|
65
|
-
# SERIES without prefix
|
|
66
|
-
code_part += " SERIES"
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
parts << code_part if code_part
|
|
70
|
-
|
|
71
|
-
# Year with proper format (colon or dash)
|
|
72
|
-
if id.year
|
|
73
|
-
# Use dash if year_format is dash, otherwise colon
|
|
74
|
-
separator = id.year_format == "dash" ? "-" : ":"
|
|
75
|
-
year_part = separator
|
|
76
|
-
year_part += id.year_prefix if id.year_prefix # Add M or F prefix
|
|
77
|
-
year_part += "F" if id.french && id.year_format != "dash" && !id.year_prefix # Only add F if no prefix
|
|
78
|
-
# Convert 4-digit year back to 2-digit for M/F prefix preservation
|
|
79
|
-
# M1983 → M83, F1983 → F83, 1983 → 83, 20xx → xx
|
|
80
|
-
# However, preserve original 4-digit format if the input was 4-digit (original_year_4digit)
|
|
81
|
-
year_str = id.year.to_s
|
|
82
|
-
year_part += if id.original_year_4digit
|
|
83
|
-
# Preserve 4-digit format (e.g., "M1981" stays "M1981")
|
|
84
|
-
year_str
|
|
85
|
-
elsif id.year_prefix&.match?(/^[MF]$/) && year_str.length == 4 && year_str.start_with?("19")
|
|
86
|
-
# M/F + 4-digit year (1900s) → convert to 2-digit with prefix
|
|
87
|
-
year_str[2..3]
|
|
88
|
-
elsif year_str.length == 4 && year_str.start_with?("20")
|
|
89
|
-
# 2000s → just last 2 digits
|
|
90
|
-
year_str[2..3]
|
|
91
|
-
elsif year_str.length == 4 && year_str.start_with?("19") && !id.original_year_4digit
|
|
92
|
-
# 1900s with no M/F prefix, but original was 2-digit (e.g., CAN3-Z299.0-86)
|
|
93
|
-
# Convert back to 2-digit
|
|
94
|
-
year_str[2..3]
|
|
95
|
-
else
|
|
96
|
-
# Other formats - keep as-is
|
|
97
|
-
year_str
|
|
98
|
-
end
|
|
99
|
-
parts[-1] += year_part
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
result = if prefix == ""
|
|
103
|
-
# No prefix, just join parts
|
|
104
|
-
parts.join(" ")
|
|
105
|
-
elsif !prefix.end_with?("-")
|
|
106
|
-
parts.join(" ")
|
|
107
|
-
elsif parts.length == 2
|
|
108
|
-
# No space after dash-ending prefix - join first two parts directly
|
|
109
|
-
# If there are more parts after code, they should still have spaces
|
|
110
|
-
parts.join
|
|
111
|
-
else
|
|
112
|
-
# More than 2 parts shouldn't happen in current design
|
|
113
|
-
parts.join
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# Reaffirmation - preserve original format and determine spacing
|
|
117
|
-
if id.reaffirmation && !id.reaffirmation.to_s.empty?
|
|
118
|
-
result += render_reaffirmation(id)
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
# Package (already has leading space from parser)
|
|
122
|
-
if id.package
|
|
123
|
-
result += id.package
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
result
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
# CEC rendering: "CSA C22.2 NO. 286:23"
|
|
130
|
-
def render_cec(id)
|
|
131
|
-
parts = []
|
|
132
|
-
|
|
133
|
-
# Publisher prefix (CSA, CAN/CSA-, CAN3-)
|
|
134
|
-
prefix = publisher_prefix_for(id)
|
|
135
|
-
|
|
136
|
-
# Determine if we need space after prefix
|
|
137
|
-
# CAN/CSA- and CAN3- end with dash, so no space needed
|
|
138
|
-
needs_space = !prefix.end_with?("-")
|
|
139
|
-
|
|
140
|
-
parts << prefix unless prefix == ""
|
|
141
|
-
|
|
142
|
-
# CEC Part (C22.2, C22.3, etc.)
|
|
143
|
-
parts << id.cec_part.render(context: @context) if id.cec_part
|
|
144
|
-
|
|
145
|
-
# NO. notation - this is the key semantic component
|
|
146
|
-
parts << "NO."
|
|
147
|
-
|
|
148
|
-
# Number after NO.
|
|
149
|
-
parts << id.no_number.render(context: @context) if id.no_number
|
|
150
|
-
|
|
151
|
-
# Determine separator based on prefix ending
|
|
152
|
-
result = if prefix == ""
|
|
153
|
-
parts.join(" ")
|
|
154
|
-
elsif needs_space
|
|
155
|
-
parts.join(" ")
|
|
156
|
-
elsif parts.length <= 2
|
|
157
|
-
# No space after dash-ending prefix (CAN/CSA-, CAN3-)
|
|
158
|
-
# Join first two parts directly, rest with spaces
|
|
159
|
-
parts.join
|
|
160
|
-
else
|
|
161
|
-
parts[0] + parts[1..].join(" ")
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
# Year with proper format (colon or dash)
|
|
165
|
-
if id.year
|
|
166
|
-
# Use dash if year_format is dash, otherwise colon
|
|
167
|
-
separator = id.year_format == "dash" ? "-" : ":"
|
|
168
|
-
year_part = separator
|
|
169
|
-
|
|
170
|
-
# Convert 4-digit year back to 2-digit for display
|
|
171
|
-
year_str = id.year.to_s
|
|
172
|
-
display_year = if year_str.length == 4 && year_str.start_with?("20")
|
|
173
|
-
year_str[2..3]
|
|
174
|
-
elsif year_str.length == 4 && year_str.start_with?("19")
|
|
175
|
-
year_str[2..3]
|
|
176
|
-
else
|
|
177
|
-
year_str
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
# Add prefix if present
|
|
181
|
-
year_part += if id.year_prefix
|
|
182
|
-
id.year_prefix + display_year
|
|
183
|
-
elsif id.french && id.year_format != "dash"
|
|
184
|
-
# Only add F if no prefix already set
|
|
185
|
-
"F#{display_year}"
|
|
186
|
-
else
|
|
187
|
-
display_year
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
result += year_part
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
# Reaffirmation
|
|
194
|
-
if id.reaffirmation && !id.reaffirmation.to_s.empty?
|
|
195
|
-
result += render_reaffirmation(id)
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
result
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
# Series rendering: "CSA MH SERIES 3.14:20"
|
|
202
|
-
def render_series(id)
|
|
203
|
-
result = series_publisher_prefix_portion(id)
|
|
204
|
-
|
|
205
|
-
# Add code FIRST (before SERIES keyword)
|
|
206
|
-
result += id.number.to_s
|
|
207
|
-
|
|
208
|
-
# Add space before series prefix/SERIES keyword
|
|
209
|
-
result += " "
|
|
210
|
-
|
|
211
|
-
# Add series prefix if present
|
|
212
|
-
result += "#{id.series_prefix} " if id.series_prefix && !id.series_prefix.empty?
|
|
213
|
-
|
|
214
|
-
# Add SERIES keyword
|
|
215
|
-
result += "SERIES"
|
|
216
|
-
|
|
217
|
-
# Add year
|
|
218
|
-
result += series_year_portion(id)
|
|
219
|
-
|
|
220
|
-
# Add reaffirmation
|
|
221
|
-
result += render_reaffirmation(id) if id.reaffirmation && !id.reaffirmation.to_s.empty?
|
|
222
|
-
|
|
223
|
-
result
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
private
|
|
227
|
-
|
|
228
|
-
# Reaffirmation rendering helper - shared across Base, Cec, and Series
|
|
229
|
-
def render_reaffirmation(id)
|
|
230
|
-
# Check if year was originally 2-digit (original_year_4digit flag)
|
|
231
|
-
year_was_2digit = !id.original_year_4digit
|
|
232
|
-
|
|
233
|
-
# Check if reaffirmation was originally 4-digit (original_reaffirmation_4digit flag)
|
|
234
|
-
reaffirmation_was_4digit = id.original_reaffirmation_4digit
|
|
235
|
-
|
|
236
|
-
# Preserve original reaffirmation format
|
|
237
|
-
reaffirmation_str = if reaffirmation_was_4digit
|
|
238
|
-
# Original was 4-digit, keep as-is
|
|
239
|
-
id.reaffirmation.to_s
|
|
240
|
-
elsif id.reaffirmation.to_s.length == 4 && id.reaffirmation.to_s.start_with?("19", "20")
|
|
241
|
-
# Original was 2-digit, convert 4-digit storage back to 2-digit
|
|
242
|
-
id.reaffirmation.to_s[2..3]
|
|
243
|
-
else
|
|
244
|
-
# Already 2-digit or other format
|
|
245
|
-
id.reaffirmation.to_s
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
# Determine spacing based on original formats
|
|
249
|
-
if year_was_2digit && reaffirmation_was_4digit
|
|
250
|
-
# Year was 2-digit, reaffirmation was 4-digit → add space
|
|
251
|
-
" (R#{reaffirmation_str})"
|
|
252
|
-
else
|
|
253
|
-
# Both 2-digit, both 4-digit, or other cases → no space
|
|
254
|
-
"(R#{reaffirmation_str})"
|
|
255
|
-
end
|
|
256
|
-
end
|
|
257
|
-
|
|
258
|
-
# The publisher prefix to print. A code_only identifier printed none, so
|
|
259
|
-
# it must not gain the default "CSA" — see SingleIdentifier#code_only.
|
|
260
|
-
def publisher_prefix_for(id)
|
|
261
|
-
return "" if id.respond_to?(:code_only) && id.code_only
|
|
262
|
-
|
|
263
|
-
id.publisher_prefix || "CSA"
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
def series_publisher_prefix_portion(id)
|
|
267
|
-
prefix = publisher_prefix_for(id)
|
|
268
|
-
|
|
269
|
-
# Handle code_only identifiers (empty string means no prefix)
|
|
270
|
-
return "" if prefix == ""
|
|
271
|
-
|
|
272
|
-
# Determine if we need space after prefix
|
|
273
|
-
# CAN/CSA- and CAN3- end with dash, so no space needed
|
|
274
|
-
needs_space = !prefix.end_with?("-")
|
|
275
|
-
|
|
276
|
-
needs_space ? "#{prefix} " : prefix
|
|
277
|
-
end
|
|
278
|
-
|
|
279
|
-
def series_year_portion(id)
|
|
280
|
-
return "" unless id.year
|
|
281
|
-
|
|
282
|
-
# Use dash if year_format is dash, otherwise colon
|
|
283
|
-
separator = id.year_format == "dash" ? "-" : ":"
|
|
284
|
-
year_part = separator
|
|
285
|
-
year_part += id.year_prefix if id.year_prefix # Add M or F prefix
|
|
286
|
-
year_part += "F" if id.french && id.year_format != "dash" && !id.year_prefix # Only add F if no prefix
|
|
287
|
-
|
|
288
|
-
# Convert 4-digit year back to 2-digit
|
|
289
|
-
year_str = id.year.to_s
|
|
290
|
-
year_part += if year_str.length == 4 && year_str.start_with?("20")
|
|
291
|
-
year_str[2..3]
|
|
292
|
-
else
|
|
293
|
-
year_str
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
year_part
|
|
297
|
-
end
|
|
298
|
-
end
|
|
299
|
-
end
|
|
300
|
-
end
|
data/lib/pubid/csa/urn_parser.rb
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Csa
|
|
5
|
-
# Parses CSA URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits:
|
|
8
|
-
# urn:csa:{publisher}:{code}:{year}:format.{format}
|
|
9
|
-
#
|
|
10
|
-
# The trailing `format.X` token records the year-separator style used
|
|
11
|
-
# in the human-readable form (`dash` for `-`, `colon` for `:`).
|
|
12
|
-
#
|
|
13
|
-
# Examples:
|
|
14
|
-
# - urn:csa:csa:Z240.2.1:16:format.dash → CSA Z240.2.1-16
|
|
15
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
16
|
-
YEAR_SEPARATOR = { "dash" => "-", "colon" => ":" }.freeze
|
|
17
|
-
|
|
18
|
-
def parse_urn(urn)
|
|
19
|
-
body = strip_namespace(urn)
|
|
20
|
-
parts = split_parts(body)
|
|
21
|
-
|
|
22
|
-
format_token = parts.find { |p| p.start_with?("format.") }
|
|
23
|
-
separator = YEAR_SEPARATOR.fetch(format_token&.split(".")&.last, "-")
|
|
24
|
-
|
|
25
|
-
payload = parts.reject { |p| p.start_with?("format.") }
|
|
26
|
-
_publisher, code, year = payload
|
|
27
|
-
text = "CSA #{code}"
|
|
28
|
-
text += "#{separator}#{year}" if year
|
|
29
|
-
flavor_parse(text)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
data/lib/pubid/doi/builder.rb
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Doi
|
|
5
|
-
class Builder
|
|
6
|
-
def self.build(parsed_data)
|
|
7
|
-
new.build(parsed_data)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def build(data)
|
|
11
|
-
Identifiers::Resource.new(
|
|
12
|
-
prefix: "10.#{data[:prefix]}",
|
|
13
|
-
suffix: data[:suffix].to_s,
|
|
14
|
-
)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|