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
|
@@ -15,8 +15,8 @@ module Pubid
|
|
|
15
15
|
|
|
16
16
|
parts << publisher_component
|
|
17
17
|
|
|
18
|
-
if identifier.
|
|
19
|
-
parts << identifier.
|
|
18
|
+
if identifier.code
|
|
19
|
+
parts << identifier.code.to_s
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
year = extract_year
|
|
@@ -37,8 +37,8 @@ module Pubid
|
|
|
37
37
|
stage = maybe(:stage)
|
|
38
38
|
parts << stage.to_s.downcase if stage
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
parts << "sep.#{
|
|
40
|
+
date_separator = maybe(:date_separator)
|
|
41
|
+
parts << "sep.#{date_separator}" if date_separator
|
|
42
42
|
|
|
43
43
|
iec_identifier = maybe(:iec_identifier)
|
|
44
44
|
parts << "iec.#{iec_identifier}" if iec_identifier
|
|
@@ -49,14 +49,11 @@ module Pubid
|
|
|
49
49
|
doc_type = maybe(:doc_type)
|
|
50
50
|
parts << "doctype.#{doc_type}" if doc_type
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
end
|
|
52
|
+
identifiers_string = maybe(:identifiers_string)
|
|
53
|
+
parts << "bundle.#{identifiers_string}" if identifiers_string
|
|
55
54
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
parts << "tut-bundle.#{identifier.number}"
|
|
59
|
-
end
|
|
55
|
+
bundle_number = maybe(:bundle_number)
|
|
56
|
+
parts << "tut-bundle.#{bundle_number}" if bundle_number
|
|
60
57
|
|
|
61
58
|
languages = maybe(:languages)
|
|
62
59
|
if languages&.any?
|
data/lib/pubid/cie.rb
CHANGED
|
@@ -2,12 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Cie
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Sole CIE publisher token (see the parser grammar).
|
|
8
|
-
PREFIXES = ["CIE"].freeze
|
|
9
|
-
|
|
10
5
|
module Components
|
|
6
|
+
autoload :Code, "#{__dir__}/cie/components/code"
|
|
11
7
|
autoload :Language, "#{__dir__}/cie/components/language"
|
|
12
8
|
end
|
|
13
9
|
|
|
@@ -15,67 +11,16 @@ module Pubid
|
|
|
15
11
|
autoload :Identifier, "#{__dir__}/cie/identifier"
|
|
16
12
|
autoload :Identifiers, "#{__dir__}/cie/identifiers"
|
|
17
13
|
autoload :Parser, "#{__dir__}/cie/parser"
|
|
14
|
+
autoload :Scheme, "#{__dir__}/cie/scheme"
|
|
18
15
|
autoload :SingleIdentifier, "#{__dir__}/cie/single_identifier"
|
|
19
16
|
autoload :SupplementIdentifier, "#{__dir__}/cie/supplement_identifier"
|
|
20
17
|
autoload :UrnGenerator, "#{__dir__}/cie/urn_generator"
|
|
21
|
-
autoload :UrnParser, "#{__dir__}/cie/urn_parser"
|
|
22
18
|
|
|
23
19
|
# Main entry point for CIE identifiers
|
|
24
20
|
# Delegates to Identifier.parse
|
|
25
21
|
def self.parse(input)
|
|
26
|
-
unless input.is_a?(String)
|
|
27
|
-
raise Pubid::Errors::InvalidInputError,
|
|
28
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
if input.length > Pubid::MAX_INPUT_LENGTH
|
|
32
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
33
|
-
end
|
|
34
|
-
|
|
35
22
|
Identifier.parse(input)
|
|
36
23
|
end
|
|
37
|
-
|
|
38
|
-
# Auto-discover all identifier types from the Identifiers namespace.
|
|
39
|
-
# CIE identifier classes extend Lutaml::Model::Serializable via
|
|
40
|
-
# SingleIdentifier / SupplementIdentifier, without a self.type Hash.
|
|
41
|
-
# We discover by checking for subclasses of those base types.
|
|
42
|
-
# @return [Array<Class>] identifier classes
|
|
43
|
-
def self.identifier_types
|
|
44
|
-
@identifier_types ||= Identifiers.constants
|
|
45
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
46
|
-
.select { |c| c.is_a?(Class) && (c < SingleIdentifier || c < SupplementIdentifier) }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# Build typed stage index from identifier types.
|
|
50
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
51
|
-
def self.all_typed_stages
|
|
52
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
53
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
54
|
-
klass.const_get(:TYPED_STAGES)
|
|
55
|
-
else
|
|
56
|
-
[]
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Lookup: class name -> identifier class
|
|
62
|
-
# Since CIE lacks self.type, locate by class name suffix
|
|
63
|
-
# @param code [String, Symbol] the type key to find
|
|
64
|
-
# @return [Class, nil] the matching identifier class
|
|
65
|
-
def self.locate_type(code)
|
|
66
|
-
identifier_types.find do |t|
|
|
67
|
-
t.name.split("::").last.gsub(/([A-Z])/, '_\1').downcase.sub(/^_/, "") == code.to_s.downcase ||
|
|
68
|
-
t.name.split("::").last.downcase == code.to_s.downcase
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Lookup: abbreviation -> typed stage
|
|
73
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
74
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
75
|
-
def self.locate_stage(abbr)
|
|
76
|
-
abbr_str = abbr.to_s.upcase
|
|
77
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
78
|
-
end
|
|
79
24
|
end
|
|
80
25
|
end
|
|
81
26
|
|
|
@@ -2,46 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Components
|
|
5
|
-
# Document code/number component.
|
|
6
|
-
#
|
|
7
|
-
# Holds the structured fields that recur across flavors: the main +value+
|
|
8
|
-
# (always present), plus optional +prefix+ (series/type designator),
|
|
9
|
-
# +part+, +subpart+, and free-form +parts+. Subclasses own their
|
|
10
|
-
# composition rules — flavor-specific separators and orderings live in
|
|
11
|
-
# the subclass #to_s / #render override.
|
|
12
5
|
class Code < Lutaml::Model::Serializable
|
|
13
6
|
attribute :value, :string
|
|
14
|
-
attribute :prefix, :string
|
|
15
|
-
attribute :part, :string
|
|
16
|
-
attribute :subpart, :string
|
|
17
|
-
attribute :parts, :string, collection: true
|
|
18
7
|
|
|
19
8
|
def to_s
|
|
20
9
|
value.to_s
|
|
21
10
|
end
|
|
22
11
|
|
|
23
|
-
# Format-aware render seam. Default returns the bare value; subclasses
|
|
24
|
-
# override to compose flavor-specific shapes (e.g. ISO joins parts
|
|
25
|
-
# with "-", NIST joins subpart with ".").
|
|
26
12
|
def render(context: nil)
|
|
27
13
|
value.to_s
|
|
28
14
|
end
|
|
29
15
|
|
|
16
|
+
# Returns hash code for code component
|
|
17
|
+
# @return [Integer] hash code
|
|
18
|
+
# @note Memoized for performance
|
|
30
19
|
def hash
|
|
31
|
-
|
|
20
|
+
@hash ||= value.hash
|
|
32
21
|
end
|
|
33
22
|
|
|
34
|
-
#
|
|
23
|
+
# Checks equality with another code component
|
|
24
|
+
# @param other [Object] object to compare with
|
|
25
|
+
# @return [Boolean] true if equal
|
|
35
26
|
def eql?(other)
|
|
36
27
|
return false unless other.is_a?(self.class)
|
|
37
28
|
|
|
38
|
-
value == other.value
|
|
39
|
-
prefix == other.prefix &&
|
|
40
|
-
part == other.part &&
|
|
41
|
-
subpart == other.subpart &&
|
|
42
|
-
parts == other.parts
|
|
29
|
+
value == other.value
|
|
43
30
|
end
|
|
44
|
-
# rubocop:enable Metrics/AbcSize
|
|
45
31
|
end
|
|
46
32
|
end
|
|
47
33
|
end
|
|
@@ -5,67 +5,44 @@ require "lutaml/model"
|
|
|
5
5
|
module Pubid
|
|
6
6
|
module Components
|
|
7
7
|
# Publication date component
|
|
8
|
-
#
|
|
9
|
-
# Human render: "YYYY" or "YYYY-MM" or "YYYY-MM-DD"; or "--" when the
|
|
10
|
-
# date slot is present but explicitly undated (ISO/IEC undated-reference
|
|
11
|
-
# convention, e.g. "ISO 16634:--"). URN render: year only (RFC 5141-bis
|
|
12
|
-
# URN spec); flavors that drop the slot when undated gate that decision
|
|
13
|
-
# at the URN-generator level, not here.
|
|
14
8
|
class Date < Lutaml::Model::Serializable
|
|
15
9
|
attribute :year, :string
|
|
16
10
|
attribute :month, :string
|
|
17
11
|
attribute :day, :string
|
|
18
|
-
attribute :undated, :boolean, default: false
|
|
19
|
-
|
|
20
|
-
# True when the year is set to a non-empty value, OR the date is
|
|
21
|
-
# explicitly marked undated. An undated date is a meaningful
|
|
22
|
-
# publication-date slot (it is what renders as `:--` in ISO/IEC), so
|
|
23
|
-
# callers that gate rendering on "is there a date at all?" should
|
|
24
|
-
# treat undated as present.
|
|
25
|
-
def present?
|
|
26
|
-
return true if undated
|
|
27
|
-
!year.nil? && !year.to_s.empty?
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def undated?
|
|
31
|
-
!!undated
|
|
32
|
-
end
|
|
33
12
|
|
|
13
|
+
# Render date with optional context for flavor-specific formatting
|
|
14
|
+
#
|
|
15
|
+
# @param _context [RenderingContext] rendering context
|
|
16
|
+
# (for future extensibility)
|
|
17
|
+
# @param _include_month [Boolean] include month in output
|
|
18
|
+
# (for future extensibility)
|
|
19
|
+
# @return [String] rendered date string
|
|
34
20
|
def render(context: nil)
|
|
35
|
-
|
|
36
|
-
return nil unless present?
|
|
37
|
-
return year.to_s if context&.urn?
|
|
38
|
-
return year.to_s unless month
|
|
39
|
-
|
|
40
|
-
result = "#{year}-#{pad2(month)}"
|
|
41
|
-
result += "-#{pad2(day)}" if day
|
|
42
|
-
result
|
|
21
|
+
to_s
|
|
43
22
|
end
|
|
44
23
|
|
|
45
24
|
def to_s(_context: nil, _include_month: false)
|
|
46
|
-
return "--" if undated? && (year.nil? || year.to_s.empty?)
|
|
47
25
|
return year.to_s unless month
|
|
48
26
|
|
|
49
|
-
result = "#{year}-#{
|
|
50
|
-
result += "-#{
|
|
27
|
+
result = "#{year}-#{month}"
|
|
28
|
+
result += "-#{day}" if day
|
|
51
29
|
result
|
|
52
30
|
end
|
|
53
31
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
value.to_s.rjust(2, "0")
|
|
58
|
-
end
|
|
59
|
-
|
|
32
|
+
# Returns hash code for date component
|
|
33
|
+
# @return [Integer] hash code
|
|
34
|
+
# @note Memoized for performance
|
|
60
35
|
def hash
|
|
61
|
-
@hash ||= [year, month, day
|
|
36
|
+
@hash ||= [year, month, day].compact.map(&:hash).hash
|
|
62
37
|
end
|
|
63
38
|
|
|
39
|
+
# Checks equality with another date component
|
|
40
|
+
# @param other [Object] object to compare with
|
|
41
|
+
# @return [Boolean] true if equal
|
|
64
42
|
def eql?(other)
|
|
65
43
|
return false unless other.is_a?(self.class)
|
|
66
44
|
|
|
67
|
-
year == other.year && month == other.month && day == other.day
|
|
68
|
-
undated == other.undated
|
|
45
|
+
year == other.year && month == other.month && day == other.day
|
|
69
46
|
end
|
|
70
47
|
end
|
|
71
48
|
end
|
|
@@ -3,30 +3,27 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Components
|
|
5
5
|
# Edition component (typically a year and number)
|
|
6
|
-
#
|
|
7
|
-
# Human render: "ED#{number}".
|
|
8
|
-
# URN render: "ed-#{number}" per RFC 5141-bis.
|
|
9
6
|
class Edition < Lutaml::Model::Serializable
|
|
10
7
|
attribute :year, :string
|
|
11
|
-
attribute :number, Lutaml::Model::Type::Value
|
|
12
|
-
attribute :original_text, :string
|
|
8
|
+
attribute :number, Lutaml::Model::Type::Value # Accept any value type
|
|
9
|
+
attribute :original_text, :string # Store the exact parsed edition text
|
|
13
10
|
|
|
14
11
|
def to_s
|
|
12
|
+
# Always use canonical format for rendering
|
|
15
13
|
number_value = number.is_a?(Components::Code) ? number.value : number
|
|
16
14
|
number_value ? "ED#{number_value}" : nil
|
|
17
15
|
end
|
|
18
16
|
|
|
17
|
+
# V1 API compatibility - tests expect .value on edition itself
|
|
19
18
|
def value
|
|
20
19
|
number.is_a?(Components::Code) ? number.value : number
|
|
21
20
|
end
|
|
22
21
|
|
|
23
22
|
def render(context: nil)
|
|
24
|
-
|
|
25
|
-
return nil unless number_value
|
|
26
|
-
|
|
27
|
-
context&.urn? ? "ed-#{number_value}" : "ED#{number_value}"
|
|
23
|
+
to_s
|
|
28
24
|
end
|
|
29
25
|
|
|
26
|
+
# Method to get the original parsed format if needed
|
|
30
27
|
def original_format
|
|
31
28
|
original_text
|
|
32
29
|
end
|
|
@@ -3,9 +3,6 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Components
|
|
5
5
|
# Language component (typically a language code)
|
|
6
|
-
#
|
|
7
|
-
# Human render: language code, optionally single-char.
|
|
8
|
-
# URN render: lowercase ISO 639-1 code (RFC 5141-bis).
|
|
9
6
|
class Language < Lutaml::Model::Serializable
|
|
10
7
|
CHAR_MAP = {
|
|
11
8
|
"R" => "ru",
|
|
@@ -16,10 +13,13 @@ module Pubid
|
|
|
16
13
|
"D" => "de",
|
|
17
14
|
}.freeze
|
|
18
15
|
|
|
16
|
+
# code is always an ISO 639-1 two-letter code
|
|
19
17
|
attribute :code, :string, values: CHAR_MAP.values
|
|
20
|
-
attribute :original_code, :string
|
|
18
|
+
attribute :original_code, :string # Store the actual parsed format
|
|
21
19
|
|
|
22
20
|
def to_s(lang_single: false)
|
|
21
|
+
# When multi-char format requested (lang_single: false) but original was
|
|
22
|
+
# single-char, normalize to multi-char (for with_edition: true mode)
|
|
23
23
|
if !lang_single && original_code&.length == 1
|
|
24
24
|
code
|
|
25
25
|
elsif original_code
|
|
@@ -30,8 +30,6 @@ module Pubid
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def render(context: nil, **opts)
|
|
33
|
-
return code&.downcase if context&.urn?
|
|
34
|
-
|
|
35
33
|
to_s(**opts)
|
|
36
34
|
end
|
|
37
35
|
end
|
|
@@ -2,18 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Components
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
# Renders the human-readable phrase "(all parts)" and a URN
|
|
8
|
-
# suffix that completes the locality segment.
|
|
5
|
+
# Handles "all parts"
|
|
9
6
|
class Locality < Lutaml::Model::Serializable
|
|
10
7
|
attribute :value, :string
|
|
11
|
-
|
|
12
|
-
def render(context: nil)
|
|
13
|
-
return "all" if context&.urn?
|
|
14
|
-
|
|
15
|
-
"(all parts)"
|
|
16
|
-
end
|
|
17
8
|
end
|
|
18
9
|
end
|
|
19
10
|
end
|
|
@@ -5,9 +5,6 @@ require "lutaml/model"
|
|
|
5
5
|
module Pubid
|
|
6
6
|
module Components
|
|
7
7
|
# Publisher ISO, IEC, etc.
|
|
8
|
-
#
|
|
9
|
-
# Human render: the publisher body (e.g. "ISO").
|
|
10
|
-
# URN render: lowercase body (e.g. "iso") per RFC 5141-bis.
|
|
11
8
|
class Publisher < Lutaml::Model::Serializable
|
|
12
9
|
attribute :body, :string
|
|
13
10
|
|
|
@@ -16,19 +13,19 @@ module Pubid
|
|
|
16
13
|
end
|
|
17
14
|
|
|
18
15
|
def render(context: nil)
|
|
19
|
-
return body&.downcase if context&.urn?
|
|
20
|
-
|
|
21
16
|
body
|
|
22
17
|
end
|
|
23
18
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
# Returns hash code for publisher component
|
|
20
|
+
# @return [Integer] hash code
|
|
21
|
+
# @note Memoized for performance
|
|
28
22
|
def hash
|
|
29
23
|
@hash ||= body.hash
|
|
30
24
|
end
|
|
31
25
|
|
|
26
|
+
# Checks equality with another publisher component
|
|
27
|
+
# @param other [Object] object to compare with
|
|
28
|
+
# @return [Boolean] true if equal
|
|
32
29
|
def eql?(other)
|
|
33
30
|
return false unless other.is_a?(self.class)
|
|
34
31
|
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
|
+
require_relative "../rendering/context" if File.exist?(File.join(__dir__,
|
|
5
|
+
"../../rendering/context.rb"))
|
|
4
6
|
|
|
5
7
|
module Pubid
|
|
6
8
|
module Components
|
|
7
9
|
# Stage component (a set of defined stages)
|
|
8
|
-
#
|
|
9
|
-
# Human render: abbreviation with flavor-specific separator.
|
|
10
|
-
# URN render: stage abbreviation alone (no separator).
|
|
11
10
|
class Stage < Lutaml::Model::Serializable
|
|
12
11
|
attribute :name, :string
|
|
13
12
|
attribute :stage_code, :string
|
|
14
13
|
attribute :harmonized_stages, :string, collection: true
|
|
15
14
|
attribute :abbr, :string
|
|
16
15
|
|
|
16
|
+
# Render stage with optional context for flavor-specific separators
|
|
17
|
+
#
|
|
18
|
+
# @param context [RenderingContext] rendering context for flavor rules
|
|
19
|
+
# @param has_copublisher [Boolean] whether identifier has copublisher
|
|
20
|
+
# @return [String] rendered stage string
|
|
17
21
|
def to_s(context: nil, has_copublisher: false)
|
|
18
22
|
return "" unless abbr
|
|
19
23
|
|
|
@@ -21,20 +25,25 @@ module Pubid
|
|
|
21
25
|
sep = context.stage_separator_for(has_copublisher:)
|
|
22
26
|
sep == "" ? abbr : "#{sep}#{abbr}"
|
|
23
27
|
else
|
|
28
|
+
# Default behavior: space after copublisher, slash otherwise
|
|
24
29
|
has_copublisher ? " #{abbr}" : "/#{abbr}"
|
|
25
30
|
end
|
|
26
31
|
end
|
|
27
32
|
|
|
28
33
|
def render(context: nil)
|
|
29
|
-
return abbr.to_s if context&.urn?
|
|
30
|
-
|
|
31
34
|
abbr.to_s
|
|
32
35
|
end
|
|
33
36
|
|
|
37
|
+
# Returns hash code for stage component
|
|
38
|
+
# @return [Integer] hash code
|
|
39
|
+
# @note Memoized for performance
|
|
34
40
|
def hash
|
|
35
41
|
@hash ||= [stage_code, abbr].compact.map(&:hash).hash
|
|
36
42
|
end
|
|
37
43
|
|
|
44
|
+
# Checks equality with another stage component
|
|
45
|
+
# @param other [Object] object to compare with
|
|
46
|
+
# @return [Boolean] true if equal
|
|
38
47
|
def eql?(other)
|
|
39
48
|
return false unless other.is_a?(self.class)
|
|
40
49
|
|
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require "lutaml/model"
|
|
4
|
+
require_relative "../rendering/context" if File.exist?(File.join(__dir__,
|
|
5
|
+
"../../rendering/context.rb"))
|
|
4
6
|
|
|
5
7
|
module Pubid
|
|
6
8
|
module Components
|
|
7
9
|
# Resource type component (a set of defined resource types)
|
|
8
|
-
#
|
|
9
|
-
# Human render: abbreviation with flavor-specific separator.
|
|
10
|
-
# URN render: type code (e.g. "tr", "ts") per RFC 5141-bis.
|
|
11
10
|
class Type < Lutaml::Model::Serializable
|
|
12
11
|
attribute :name, :string
|
|
13
12
|
attribute :abbr, :string
|
|
14
13
|
attribute :type_code, :string
|
|
15
14
|
|
|
15
|
+
# Render type with optional context for flavor-specific separators and default handling
|
|
16
|
+
#
|
|
17
|
+
# @param context [RenderingContext] rendering context for flavor rules
|
|
18
|
+
# @param has_prefix [Boolean] whether there's a prefix (stage or copublisher)
|
|
19
|
+
# @return [String] rendered type string
|
|
16
20
|
def to_s(context: nil, has_prefix: false)
|
|
17
21
|
return "" unless abbr
|
|
18
22
|
|
|
23
|
+
# Check if this type should be rendered (not the default)
|
|
19
24
|
if context && !context.should_render_type?(abbr)
|
|
20
25
|
return ""
|
|
21
26
|
end
|
|
@@ -24,20 +29,25 @@ module Pubid
|
|
|
24
29
|
sep = context.type_separator_for(has_prefix)
|
|
25
30
|
sep == "" ? abbr : "#{sep}#{abbr}"
|
|
26
31
|
else
|
|
32
|
+
# Default behavior: space after prefix, slash otherwise
|
|
27
33
|
has_prefix ? " #{abbr}" : "/#{abbr}"
|
|
28
34
|
end
|
|
29
35
|
end
|
|
30
36
|
|
|
31
37
|
def render(context: nil)
|
|
32
|
-
return type_code.to_s if context&.urn? && type_code
|
|
33
|
-
|
|
34
38
|
name.to_s
|
|
35
39
|
end
|
|
36
40
|
|
|
41
|
+
# Returns hash code for type component
|
|
42
|
+
# @return [Integer] hash code
|
|
43
|
+
# @note Memoized for performance
|
|
37
44
|
def hash
|
|
38
45
|
@hash ||= [type_code, abbr].compact.map(&:hash).hash
|
|
39
46
|
end
|
|
40
47
|
|
|
48
|
+
# Checks equality with another type component
|
|
49
|
+
# @param other [Object] object to compare with
|
|
50
|
+
# @return [Boolean] true if equal
|
|
41
51
|
def eql?(other)
|
|
42
52
|
return false unless other.is_a?(self.class)
|
|
43
53
|
|
|
@@ -1,21 +1,18 @@
|
|
|
1
|
+
require_relative "stage"
|
|
1
2
|
# frozen_string_literal: true
|
|
3
|
+
require_relative "type"
|
|
2
4
|
|
|
3
5
|
module Pubid
|
|
4
6
|
module Components
|
|
5
|
-
# TypedStage component (combined stage + type, e.g. "DTR", "FDIS")
|
|
6
|
-
#
|
|
7
|
-
# Human render: typed-stage abbreviation with flavor-specific separator.
|
|
8
|
-
# URN render: stage code (RFC 5141-bis: stage-XX.XX format handled by urn_generator).
|
|
9
7
|
class TypedStage < Lutaml::Model::Serializable
|
|
10
8
|
attribute :name, :string
|
|
11
|
-
attribute :code, :string
|
|
12
9
|
attribute :type_code, :string
|
|
13
10
|
attribute :stage_code, :string
|
|
14
11
|
attribute :abbr, :string, collection: true
|
|
15
12
|
attribute :harmonized_stages, :string, collection: true
|
|
16
|
-
attribute :original_abbr, :string
|
|
17
|
-
attribute :short_abbr, :string
|
|
18
|
-
attribute :long_abbr, :string
|
|
13
|
+
attribute :original_abbr, :string # Store the actual parsed abbreviation
|
|
14
|
+
attribute :short_abbr, :string # Short form: DAM, COR, FDAM
|
|
15
|
+
attribute :long_abbr, :string # Long form: DAmd, Cor, FDAmd
|
|
19
16
|
|
|
20
17
|
def to_stage
|
|
21
18
|
Stage.new(
|
|
@@ -35,21 +32,21 @@ module Pubid
|
|
|
35
32
|
end
|
|
36
33
|
|
|
37
34
|
def render(context: nil)
|
|
38
|
-
return code.to_s if context&.urn? && code
|
|
39
|
-
|
|
40
35
|
abbreviation(format_long: context&.stage_format_long || false)
|
|
41
36
|
end
|
|
42
37
|
|
|
43
38
|
def abbreviation(format_long: true)
|
|
39
|
+
# Use format preference
|
|
44
40
|
if format_long && long_abbr
|
|
45
41
|
long_abbr
|
|
46
42
|
elsif !format_long && short_abbr
|
|
47
43
|
short_abbr
|
|
48
44
|
else
|
|
49
|
-
abbr.first
|
|
45
|
+
abbr.first # Fallback to canonical
|
|
50
46
|
end
|
|
51
47
|
end
|
|
52
48
|
|
|
49
|
+
# Returns the canonical (normalized) abbreviation, always abbr.first
|
|
53
50
|
def canonical_abbreviation
|
|
54
51
|
abbr.first
|
|
55
52
|
end
|
data/lib/pubid/components.rb
CHANGED
|
@@ -2,17 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Components
|
|
5
|
-
autoload :Adoption, "pubid/components/adoption"
|
|
6
5
|
autoload :Code, "pubid/components/code"
|
|
7
6
|
autoload :Date, "pubid/components/date"
|
|
8
7
|
autoload :Edition, "pubid/components/edition"
|
|
9
|
-
autoload :Iteration, "pubid/components/iteration"
|
|
10
8
|
autoload :Language, "pubid/components/language"
|
|
11
9
|
autoload :Locality, "pubid/components/locality"
|
|
12
10
|
autoload :Publisher, "pubid/components/publisher"
|
|
13
|
-
autoload :Relationship, "pubid/components/relationship"
|
|
14
11
|
autoload :Stage, "pubid/components/stage"
|
|
15
|
-
autoload :Supplement, "pubid/components/supplement"
|
|
16
12
|
autoload :Type, "pubid/components/type"
|
|
17
13
|
autoload :TypedStage, "pubid/components/typed_stage"
|
|
18
14
|
end
|
|
@@ -15,24 +15,18 @@ module Pubid
|
|
|
15
15
|
#
|
|
16
16
|
# Format in YAML files:
|
|
17
17
|
# plain string match: "IEC 60285-/1:1989" → "IEC 60285-1:1989"
|
|
18
|
-
# regex match: "/^NBS CIRC sup$/"
|
|
19
|
-
# regex with flags: "/^nbs\\b/i" → "NBS"
|
|
18
|
+
# regex match: "/^NBS CIRC sup$/" → "NBS CIRC 24e7sup"
|
|
20
19
|
#
|
|
21
20
|
# Plain strings use full-line anchoring (^pattern$).
|
|
22
|
-
# Regex patterns are wrapped in /.../ slashes
|
|
23
|
-
# (i = IGNORECASE, m = MULTILINE, x = EXTENDED) and applied via gsub.
|
|
21
|
+
# Regex patterns are wrapped in /.../ slashes.
|
|
24
22
|
class UpdateCodes
|
|
25
23
|
DATA_DIR = Pathname.new(__dir__).join("../../../data").expand_path
|
|
26
24
|
|
|
27
|
-
# Regex literal: /body/flags where flags is optional (i, m, x).
|
|
28
|
-
REGEX_LITERAL = %r{\A/(.*)/([imx]*)\z}m
|
|
29
|
-
|
|
30
25
|
class << self
|
|
31
26
|
# Apply update_codes substitutions for the given flavor.
|
|
32
27
|
#
|
|
33
28
|
# @param code [String] identifier string to normalize
|
|
34
|
-
# @param flavor [Symbol, String] flavor name
|
|
35
|
-
# (e.g., :iso, :iec, :ieee, :nist)
|
|
29
|
+
# @param flavor [Symbol, String] flavor name (e.g., :iso, :iec, :ieee, :nist)
|
|
36
30
|
# @return [String] normalized identifier string
|
|
37
31
|
#
|
|
38
32
|
# @example
|
|
@@ -43,7 +37,9 @@ module Pubid
|
|
|
43
37
|
return code if codes.nil? || codes.empty?
|
|
44
38
|
|
|
45
39
|
codes.each do |from, to|
|
|
46
|
-
code = code.gsub(
|
|
40
|
+
code = code.gsub(
|
|
41
|
+
from.match?(%r{^/.*/$}) ? Regexp.new(from[1..-2]) : /^#{Regexp.escape(from)}$/, to
|
|
42
|
+
)
|
|
47
43
|
end
|
|
48
44
|
code
|
|
49
45
|
end
|
|
@@ -60,30 +56,13 @@ module Pubid
|
|
|
60
56
|
|
|
61
57
|
# Available flavors that have update_codes files.
|
|
62
58
|
#
|
|
63
|
-
# @return [Array<Symbol>] flavors with data/{flavor}/update_codes.yaml
|
|
59
|
+
# @return [Array<Symbol>] list of flavors with data/{flavor}/update_codes.yaml
|
|
64
60
|
def flavors
|
|
65
61
|
@flavors ||= DATA_DIR.children.select(&:directory?).map do |dir|
|
|
66
62
|
dir.basename.to_s.to_sym
|
|
67
63
|
end.select { |f| (DATA_DIR / f.to_s / "update_codes.yaml").exist? }
|
|
68
64
|
end
|
|
69
65
|
|
|
70
|
-
# Compile a YAML key into a Regexp. Plain strings are anchored to the
|
|
71
|
-
# full line; regex literals support optional trailing flags.
|
|
72
|
-
def compile_pattern(from)
|
|
73
|
-
match = from.to_s.match(REGEX_LITERAL)
|
|
74
|
-
return /^#{Regexp.escape(from.to_s)}$/ unless match
|
|
75
|
-
|
|
76
|
-
Regexp.new(match[1], compile_options(match[2]))
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def compile_options(flags)
|
|
80
|
-
options = 0
|
|
81
|
-
options |= Regexp::IGNORECASE if flags.include?("i")
|
|
82
|
-
options |= Regexp::MULTILINE if flags.include?("m")
|
|
83
|
-
options |= Regexp::EXTENDED if flags.include?("x")
|
|
84
|
-
options
|
|
85
|
-
end
|
|
86
|
-
|
|
87
66
|
private
|
|
88
67
|
|
|
89
68
|
def load_yaml(flavor)
|