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,90 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oiml
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Installs the flat, index-friendly code columns and their serialization
|
|
7
|
-
# on the seven concrete OIML document leaves (Recommendation, Document,
|
|
8
|
-
# Vocabulary, Guide, BasicPublication, ExpertReport, SeminarReport).
|
|
9
|
-
#
|
|
10
|
-
# Why the leaves and not Pubid::Oiml::SingleIdentifier, which they all
|
|
11
|
-
# inherit from: `number` redefines the parent ::Pubid::Identifier's
|
|
12
|
-
# `attribute :number, Components::Code` as a plain :string (and `part` /
|
|
13
|
-
# `subpart` likewise). Declaring that on a class the concrete types
|
|
14
|
-
# INHERIT from resolves against the parent definition nondeterministically
|
|
15
|
-
# under multi-flavor load — it passes an OIML-only run and can flip
|
|
16
|
-
# `root.number` to "" under the full suite (the IEEE lesson; see
|
|
17
|
-
# lib/pubid/ieee/identifiers/code_number.rb and CLAUDE.md). Declaring on
|
|
18
|
-
# each leaf removes the ambiguity at the point of use.
|
|
19
|
-
#
|
|
20
|
-
# This matters because relaton-index sorts and bsearches every row on
|
|
21
|
-
# `id.root.number.to_s`. OIML kept the code in an Oiml::Components::Code
|
|
22
|
-
# under a `code` attribute and never set `number`, so all 12,226 lines of
|
|
23
|
-
# the published relaton-data-oiml index-v2 keyed "".
|
|
24
|
-
#
|
|
25
|
-
# The serialized hash ALREADY had these as bare top-level scalars — the
|
|
26
|
-
# old converters merely read them through `code` — so the wire format is
|
|
27
|
-
# byte-identical and that index needs no regeneration.
|
|
28
|
-
#
|
|
29
|
-
# Bulletin deliberately does NOT include this module. It carries no code
|
|
30
|
-
# at all (its locator is the year/issue/sequence tuple), so it would only
|
|
31
|
-
# gain a permanently-nil `number` and a `number` key that never appears.
|
|
32
|
-
# It derives its index key from the year instead; see bulletin.rb.
|
|
33
|
-
module CodeNumber
|
|
34
|
-
def self.included(base)
|
|
35
|
-
install_attributes(base)
|
|
36
|
-
install_mappings(base)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def self.install_attributes(base)
|
|
40
|
-
# Bare document number ("144"), the relaton index key. The part is a
|
|
41
|
-
# sibling column, never folded in, so every part of a document shares
|
|
42
|
-
# one bucket and a part-less reference finds them all.
|
|
43
|
-
base.attribute :number, :string
|
|
44
|
-
base.attribute :part, :string
|
|
45
|
-
base.attribute :subpart, :string
|
|
46
|
-
# Free-form trailing suffix glued to the code, e.g. "sup", "A",
|
|
47
|
-
# "erratum", "GUM 1", "ISO3930". Preserved verbatim for round-trip.
|
|
48
|
-
base.attribute :suffix, :string
|
|
49
|
-
# When true the suffix is space-separated ("D 1 Brochure") rather
|
|
50
|
-
# than the default dash ("R 60-sup"). Named for the RARE case with a
|
|
51
|
-
# false default, so the canonical to_hash drops it from every
|
|
52
|
-
# ordinary row.
|
|
53
|
-
base.attribute :space_suffix, :boolean, default: -> { false }
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
# Merged by lutaml with the block SingleIdentifier declares, which
|
|
57
|
-
# carries publisher/year/edition/stage/iteration.
|
|
58
|
-
def self.install_mappings(base)
|
|
59
|
-
base.key_value do
|
|
60
|
-
map "number", to: :number
|
|
61
|
-
map "part", to: :part
|
|
62
|
-
map "subpart", to: :subpart
|
|
63
|
-
map "suffix", to: :suffix
|
|
64
|
-
map "space_suffix", to: :space_suffix
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# The composed document code, rebuilt on demand from the split columns
|
|
69
|
-
# so the renderer and the URN generator keep one place to ask for the
|
|
70
|
-
# printed form ("144-1", "60-sup"). Deliberately NOT an attribute and
|
|
71
|
-
# NOT memoised: the columns are writable (the base #exclude rebuilds
|
|
72
|
-
# through them), so a cached Code would go stale.
|
|
73
|
-
#
|
|
74
|
-
# nil when there is no number, preserving the old nil-`code` semantics
|
|
75
|
-
# the URN generator branches on.
|
|
76
|
-
def code
|
|
77
|
-
return nil if number.nil?
|
|
78
|
-
|
|
79
|
-
Components::Code.new(
|
|
80
|
-
number: number,
|
|
81
|
-
part: part,
|
|
82
|
-
subpart: subpart,
|
|
83
|
-
suffix: suffix,
|
|
84
|
-
space_suffix: space_suffix,
|
|
85
|
-
)
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
end
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oiml
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Errata supplement, used by the trailing-word shorthand
|
|
7
|
-
# "OIML R 126:2015 Errata" (the publication year lives on the base).
|
|
8
|
-
class Errata < SupplementIdentifier
|
|
9
|
-
def supplement_type
|
|
10
|
-
"Errata"
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
data/lib/pubid/oiml/renderer.rb
DELETED
|
@@ -1,232 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oiml
|
|
5
|
-
# Human-readable renderer for OIML identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "OIML R 60:2000"
|
|
9
|
-
# "OIML R 60 Edition 2013"
|
|
10
|
-
# "OIML R 60 Annex A Edition 2013 (E)"
|
|
11
|
-
# "OIML R 60 Annexes:2021 (E)"
|
|
12
|
-
#
|
|
13
|
-
# The renderer is registered as the `:human` format in the OIML format
|
|
14
|
-
# registry and invoked via `render(format: :human)`.
|
|
15
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
16
|
-
def render(context: nil, **opts)
|
|
17
|
-
id = @id
|
|
18
|
-
@context = context
|
|
19
|
-
|
|
20
|
-
case id
|
|
21
|
-
when Identifiers::Annex
|
|
22
|
-
render_annex(id)
|
|
23
|
-
when Identifiers::Bulletin
|
|
24
|
-
render_bulletin(id)
|
|
25
|
-
when SupplementIdentifier
|
|
26
|
-
render_supplement(id)
|
|
27
|
-
when SingleIdentifier
|
|
28
|
-
render_single(id)
|
|
29
|
-
else
|
|
30
|
-
id.to_s
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
private
|
|
35
|
-
|
|
36
|
-
# Render the Bulletin in the requested or parsed form. Default is the
|
|
37
|
-
# structured "YYYY-II-SS" form (the dataset's primary docid). The
|
|
38
|
-
# citation form ("LXVII(2) 20260211") is emitted when the user asks
|
|
39
|
-
# for it via `to_s(format: :citation)` or when the identifier was
|
|
40
|
-
# itself parsed from a citation string (parsed_format == "citation").
|
|
41
|
-
def render_bulletin(id)
|
|
42
|
-
if citation_form?(id)
|
|
43
|
-
render_bulletin_citation(id)
|
|
44
|
-
else
|
|
45
|
-
render_bulletin_structured(id)
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# User's explicit format request takes precedence over the parsed
|
|
50
|
-
# form, so `parse("LXVII(2) 20260211").to_s(format: :short)` returns
|
|
51
|
-
# the structured form. With no explicit request, the parsed form is
|
|
52
|
-
# preserved for round-trip fidelity.
|
|
53
|
-
def citation_form?(id)
|
|
54
|
-
case id.requested_format
|
|
55
|
-
when :citation then true
|
|
56
|
-
when :short, :structured then false
|
|
57
|
-
else
|
|
58
|
-
id.parsed_format == "citation"
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# "OIML Bulletin" / "OIML Bulletin 1960" / "OIML Bulletin 1960-03" /
|
|
63
|
-
# "OIML Bulletin 1960-03-01". No code; the locator is space-separated.
|
|
64
|
-
def render_bulletin_structured(id)
|
|
65
|
-
result = "#{id.publisher} Bulletin"
|
|
66
|
-
if id.date&.year
|
|
67
|
-
result += " #{id.date.year}"
|
|
68
|
-
result += "-#{id.issue}" if id.issue
|
|
69
|
-
result += "-#{id.sequence}" if id.sequence
|
|
70
|
-
end
|
|
71
|
-
result += " (#{id.language})" if id.language
|
|
72
|
-
result
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# "OIML Bulletin LXVII(2) 20260211". Only emitted for full articles
|
|
76
|
-
# (year + issue + sequence all present); lower tiers fall back to
|
|
77
|
-
# structured since OIML's citation format doesn't define volume-only
|
|
78
|
-
# or issue-only variants.
|
|
79
|
-
def render_bulletin_citation(id)
|
|
80
|
-
return render_bulletin_structured(id) unless id.date&.year && id.issue && id.sequence
|
|
81
|
-
|
|
82
|
-
"#{id.publisher} Bulletin #{id.volume_roman}(#{id.issue.to_i}) #{id.article_id}"
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def effective_format(id)
|
|
86
|
-
id.requested_format ||
|
|
87
|
-
(id.parsed_format == "long" ? :long : :short)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# Strip a trailing language group "(...)" from a rendered base string so
|
|
91
|
-
# the supplement can re-attach its own language at the end.
|
|
92
|
-
def strip_language(str)
|
|
93
|
-
str.sub(/\s*\([^)]+\)\s*$/, "").strip
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def render_single(id)
|
|
97
|
-
format = effective_format(id)
|
|
98
|
-
|
|
99
|
-
result = "#{id.publisher} #{id.type_string} #{id.code}"
|
|
100
|
-
|
|
101
|
-
using_edition_format = false
|
|
102
|
-
|
|
103
|
-
if id.edition && id.date
|
|
104
|
-
result += " #{id.edition} Edition #{id.date.render(context: @context)}"
|
|
105
|
-
using_edition_format = true
|
|
106
|
-
elsif id.edition
|
|
107
|
-
result += " #{id.edition}"
|
|
108
|
-
using_edition_format = true
|
|
109
|
-
elsif id.date
|
|
110
|
-
if format == :long
|
|
111
|
-
result += " Edition #{id.date.render(context: @context)}"
|
|
112
|
-
using_edition_format = true
|
|
113
|
-
else
|
|
114
|
-
result += ":#{id.date.render(context: @context)}"
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
if id.stage || id.iteration
|
|
119
|
-
result += " "
|
|
120
|
-
result += id.iteration.to_s if id.iteration
|
|
121
|
-
result += id.stage.to_s if id.stage
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
if id.language
|
|
125
|
-
result += if using_edition_format || id.parsed_format == "short_with_space"
|
|
126
|
-
" (#{id.language})"
|
|
127
|
-
else
|
|
128
|
-
"(#{id.language})"
|
|
129
|
-
end
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
result
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
def render_supplement(id)
|
|
136
|
-
format = effective_format(id)
|
|
137
|
-
|
|
138
|
-
# Plus-joined: "BASE+Amendment:YEAR" / "BASE+Errata:YEAR" with both
|
|
139
|
-
# the base and the supplement carrying their own year.
|
|
140
|
-
if id.joined
|
|
141
|
-
base_str = strip_language(id.base.to_s)
|
|
142
|
-
result = "#{base_str}+#{id.supplement_type}"
|
|
143
|
-
result += ":#{id.year}" if id.year
|
|
144
|
-
result += " (#{id.language})" if id.language
|
|
145
|
-
return result
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
# Trailing-word shorthand: "BASE Amendment" / "BASE Errata" with the
|
|
149
|
-
# publication year kept on the base identifier. The word comes from the
|
|
150
|
-
# concrete supplement class.
|
|
151
|
-
if id.trailing
|
|
152
|
-
base_str = strip_language(id.base.to_s)
|
|
153
|
-
result = "#{base_str} #{id.supplement_type}"
|
|
154
|
-
result += " (#{id.language})" if id.language
|
|
155
|
-
return result
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
base_format = if format && format != :short
|
|
159
|
-
format
|
|
160
|
-
elsif id.base.class.attributes.key?(:parsed_format) && id.base.parsed_format == "long"
|
|
161
|
-
:long
|
|
162
|
-
else
|
|
163
|
-
:short
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
base_str = if id.base.is_a?(SingleIdentifier)
|
|
167
|
-
id.base.to_s(format: base_format)
|
|
168
|
-
else
|
|
169
|
-
id.base.to_s
|
|
170
|
-
end
|
|
171
|
-
base_str = strip_language(base_str)
|
|
172
|
-
|
|
173
|
-
result = "#{id.supplement_type} (#{id.year}) to #{base_str}"
|
|
174
|
-
result += " (#{id.language})" if id.language
|
|
175
|
-
|
|
176
|
-
result
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
def render_annex(id)
|
|
180
|
-
format = effective_format(id)
|
|
181
|
-
|
|
182
|
-
# "BASE:YYYY Annex(es)" — the year is glued to the base, the marker
|
|
183
|
-
# carries none. Keep the base date instead of stripping it.
|
|
184
|
-
if id.year_on_base
|
|
185
|
-
base_str = strip_language(id.base.to_s)
|
|
186
|
-
marker = id.letter ? "Annex #{id.letter}" : "Annexes"
|
|
187
|
-
result = "#{base_str} #{marker}"
|
|
188
|
-
result += " (#{id.language})" if id.language
|
|
189
|
-
return result
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
base_format = if id.base.class.attributes.key?(:parsed_format) && id.base.parsed_format == "long"
|
|
193
|
-
:long
|
|
194
|
-
else
|
|
195
|
-
:short
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
annex_format = if format
|
|
199
|
-
format
|
|
200
|
-
elsif id.class.attributes.key?(:parsed_format) && id.parsed_format == "long"
|
|
201
|
-
:long
|
|
202
|
-
else
|
|
203
|
-
:short
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
base_str = if id.base.is_a?(SingleIdentifier)
|
|
207
|
-
id.base.to_s(format: base_format)
|
|
208
|
-
else
|
|
209
|
-
id.base.to_s
|
|
210
|
-
end
|
|
211
|
-
result = base_str.sub(/:.*/, "").sub(/\s+Edition\s+\d{4}/, "").sub(
|
|
212
|
-
/\(.*\)/, ""
|
|
213
|
-
).strip
|
|
214
|
-
|
|
215
|
-
if id.letter
|
|
216
|
-
result += " Annex #{id.letter}"
|
|
217
|
-
result += " Edition #{id.year}" if id.year
|
|
218
|
-
else
|
|
219
|
-
result += " Annexes"
|
|
220
|
-
if id.year
|
|
221
|
-
result += annex_format == :long ? " Edition #{id.year}" : ":#{id.year}"
|
|
222
|
-
elsif id.base.date
|
|
223
|
-
result += annex_format == :long ? " Edition #{id.base.date.render(context: @context)}" : ":#{id.base.date.render(context: @context)}"
|
|
224
|
-
end
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
result += " (#{id.language})" if id.language
|
|
228
|
-
result
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
end
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oiml
|
|
5
|
-
# Parses OIML URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits: `urn:oiml:{type}:{locator}` where type is the
|
|
8
|
-
# lowercase document class — single letter for typed documents
|
|
9
|
-
# (r, d, b, g, …) or the word "bulletin" for Bulletin issues. The
|
|
10
|
-
# locator is the number-part-subpart for typed documents and the
|
|
11
|
-
# YYYY-II-SS tuple for Bulletins.
|
|
12
|
-
#
|
|
13
|
-
# Examples:
|
|
14
|
-
# - urn:oiml:r:111-1 → OIML R 111-1
|
|
15
|
-
# - urn:oiml:d:1 → OIML D 1
|
|
16
|
-
# - urn:oiml:bulletin:2026-02-11 → OIML Bulletin 2026-02-11
|
|
17
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
18
|
-
def parse_urn(urn)
|
|
19
|
-
body = strip_namespace(urn)
|
|
20
|
-
parts = split_parts(body)
|
|
21
|
-
type_token = parts.fetch(0)
|
|
22
|
-
number = parts[1]
|
|
23
|
-
|
|
24
|
-
text = "OIML #{display_type(type_token)}"
|
|
25
|
-
text += " #{number}" if number
|
|
26
|
-
flavor_parse(text)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
# URN type tokens are lowercase. Typed documents use a single letter
|
|
32
|
-
# that maps cleanly via upcase; Bulletin is the multi-letter word
|
|
33
|
-
# that the human parser expects capitalized.
|
|
34
|
-
def display_type(token)
|
|
35
|
-
token.downcase == "bulletin" ? "Bulletin" : token.upcase
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
data/lib/pubid/omg/builder.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Omg
|
|
5
|
-
# Builds a Pubid::Omg::Identifier from a parse tree.
|
|
6
|
-
class Builder
|
|
7
|
-
def self.build(parsed_data)
|
|
8
|
-
new.build(parsed_data)
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def build(data)
|
|
12
|
-
Identifiers::Specification.new(
|
|
13
|
-
acronym: data[:acronym].to_s,
|
|
14
|
-
version: data[:version]&.to_s,
|
|
15
|
-
)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/pubid/omg/identifier.rb
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Omg
|
|
5
|
-
# Base class for every OMG identifier AND the flavor's parse/create
|
|
6
|
-
# entry point.
|
|
7
|
-
class Identifier < ::Pubid::Identifier
|
|
8
|
-
# The spec family acronym, e.g. "AMI4CCM", "UML", "CORBA".
|
|
9
|
-
attribute :acronym, :string
|
|
10
|
-
|
|
11
|
-
# Free-form version string. Stored verbatim because OMG versioning is
|
|
12
|
-
# loose ("1.0", "2.5.1", "5 beta 3", "1.1"). Use Version#to_s for
|
|
13
|
-
# rendering.
|
|
14
|
-
attribute :version, :string
|
|
15
|
-
|
|
16
|
-
OMG_TYPE_MAP = {
|
|
17
|
-
"pubid:omg:specification" => "Pubid::Omg::Identifiers::Specification",
|
|
18
|
-
}.freeze
|
|
19
|
-
|
|
20
|
-
key_value do
|
|
21
|
-
map "_type", to: :_type, polymorphic_map: OMG_TYPE_MAP
|
|
22
|
-
map "acronym", to: :acronym
|
|
23
|
-
map "version", to: :version
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
PUBLISHER = "OMG"
|
|
27
|
-
|
|
28
|
-
def to_s(**opts)
|
|
29
|
-
render(format: :human, **opts)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def self.parse(identifier)
|
|
33
|
-
unless identifier.is_a?(String)
|
|
34
|
-
raise Pubid::Errors::InvalidInputError,
|
|
35
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
39
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
parsed = Parser.parse(identifier)
|
|
43
|
-
Builder.build(parsed)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Omg
|
|
5
|
-
module Identifiers
|
|
6
|
-
# OMG specification identifier.
|
|
7
|
-
#
|
|
8
|
-
# Examples:
|
|
9
|
-
# OMG AMI4CCM 1.0
|
|
10
|
-
# OMG UML 2.5.1
|
|
11
|
-
# OMG DDS 5 beta 3
|
|
12
|
-
# OMG CORBA
|
|
13
|
-
class Specification < Identifier
|
|
14
|
-
TYPED_STAGES = [
|
|
15
|
-
Pubid::Components::TypedStage.new(
|
|
16
|
-
code: :pubomg,
|
|
17
|
-
stage_code: :published,
|
|
18
|
-
type_code: :omg,
|
|
19
|
-
abbr: ["OMG"],
|
|
20
|
-
name: "OMG Specification",
|
|
21
|
-
harmonized_stages: %w[60.00 60.60],
|
|
22
|
-
),
|
|
23
|
-
].freeze
|
|
24
|
-
|
|
25
|
-
def self.type
|
|
26
|
-
{ key: :omg, web: :specification, title: "OMG Specification",
|
|
27
|
-
short: "OMG" }
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
data/lib/pubid/omg/parser.rb
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "parslet"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Omg
|
|
7
|
-
# Parslet grammar for OMG specification identifiers.
|
|
8
|
-
#
|
|
9
|
-
# Accepts:
|
|
10
|
-
# OMG {ACRONYM}[ {VERSION}]
|
|
11
|
-
#
|
|
12
|
-
# ACRONYM is uppercase letters/digits, at least 1 char.
|
|
13
|
-
# VERSION is digits/dots/spaces/beta+space+digit, e.g. "1.0", "2.5.1",
|
|
14
|
-
# "5 beta 3".
|
|
15
|
-
class Parser < ::Pubid::Parser::Grammar
|
|
16
|
-
rule(:space) { str(" ") }
|
|
17
|
-
|
|
18
|
-
# Acronym: starts with uppercase, may contain uppercase + lowercase +
|
|
19
|
-
# digits (covers "SysML", "AMI4CCM", "UML", "CORBA", "BMM", ...).
|
|
20
|
-
rule(:acronym) { (match("[A-Z]") >> match("[A-Za-z0-9]").repeat).as(:acronym) }
|
|
21
|
-
|
|
22
|
-
# Version: digits with optional dots, optionally followed by " beta N".
|
|
23
|
-
rule(:version) do
|
|
24
|
-
(match("[0-9]").repeat(1) >>
|
|
25
|
-
(str(".") >> match("[0-9]").repeat(1)).repeat >>
|
|
26
|
-
(str(" beta ") >> match("[0-9]").repeat(1)).maybe).as(:version)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
rule(:identifier) do
|
|
30
|
-
str("OMG") >> space >> acronym >> (space >> version).maybe
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
rule(:root) { identifier }
|
|
34
|
-
|
|
35
|
-
def self.parse(input)
|
|
36
|
-
new.parse(input)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
data/lib/pubid/omg/renderer.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Omg
|
|
5
|
-
# Human-readable renderer for OMG specification identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces:
|
|
8
|
-
# "OMG AMI4CCM 1.0"
|
|
9
|
-
# "OMG UML 2.5.1"
|
|
10
|
-
# "OMG CORBA"
|
|
11
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
12
|
-
def render(**_opts)
|
|
13
|
-
result = "OMG #{@id.acronym}"
|
|
14
|
-
result += " #{@id.version}" if @id.version && !@id.version.empty?
|
|
15
|
-
result
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/pubid/omg.rb
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
# OMG (Object Management Group) specification flavor.
|
|
5
|
-
#
|
|
6
|
-
# Covers formal OMG specifications identified by an acronym (UML, SysML,
|
|
7
|
-
# CORBA, AMI4CCM, ...) with optional version (`1.0`, `2.5.1`,
|
|
8
|
-
# `5 beta 3`).
|
|
9
|
-
module Omg
|
|
10
|
-
extend Pubid::PrefixesSupport
|
|
11
|
-
|
|
12
|
-
PREFIXES = ["OMG"].freeze
|
|
13
|
-
|
|
14
|
-
autoload :Builder, "#{__dir__}/omg/builder"
|
|
15
|
-
autoload :Identifier, "#{__dir__}/omg/identifier"
|
|
16
|
-
autoload :Identifiers, "#{__dir__}/omg/identifiers"
|
|
17
|
-
autoload :Parser, "#{__dir__}/omg/parser"
|
|
18
|
-
autoload :Renderer, "#{__dir__}/omg/renderer"
|
|
19
|
-
|
|
20
|
-
def self.parse(identifier)
|
|
21
|
-
Identifier.parse(identifier)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
Identifier.format_registry = FormatRegistry.new(parent: Identifier.format_registry)
|
|
25
|
-
Identifier.format_registry.register(:human, renderer: Omg::Renderer)
|
|
26
|
-
|
|
27
|
-
def self.identifier_types
|
|
28
|
-
@identifier_types ||= Identifiers.constants
|
|
29
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
30
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
31
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def self.all_typed_stages
|
|
35
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
36
|
-
klass.const_defined?(:TYPED_STAGES) ? klass.const_get(:TYPED_STAGES) : []
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def self.locate_type(code)
|
|
41
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def self.locate_stage(abbr)
|
|
45
|
-
abbr_str = abbr.to_s.upcase
|
|
46
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
Pubid::Registry.register(:omg, Pubid::Omg)
|
data/lib/pubid/parser/grammar.rb
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "parslet"
|
|
4
|
-
require_relative "../errors"
|
|
5
|
-
|
|
6
|
-
module Pubid
|
|
7
|
-
module Parser
|
|
8
|
-
# The superclass of every flavor grammar.
|
|
9
|
-
#
|
|
10
|
-
# Its only job is to keep parslet out of pubid's public contract. Every
|
|
11
|
-
# grammar failure originates in `Parslet::Atoms::Base#parse`, which
|
|
12
|
-
# `Parslet::Parser` does not override, so one override here covers all 46
|
|
13
|
-
# grammars, both public entry points of every flavor, and the cross-flavor
|
|
14
|
-
# delegation routes (`Pubid::Iso.parse("ITU-T G.711")` runs ITU's grammar)
|
|
15
|
-
# — without touching the 131 `parse` methods.
|
|
16
|
-
#
|
|
17
|
-
# The name is `Grammar`, not `Base`, because {Pubid::Parsers::Base} already
|
|
18
|
-
# exists and means something unrelated (the MR-string parser).
|
|
19
|
-
#
|
|
20
|
-
# Known limit: a rule atom parsed directly, `Parser.new.<rule>.parse(str)`,
|
|
21
|
-
# bypasses this and raises a bare `Parslet::ParseFailed`. Nothing in the
|
|
22
|
-
# gem does that.
|
|
23
|
-
class Grammar < ::Parslet::Parser
|
|
24
|
-
# @param io [String, IO]
|
|
25
|
-
# @param options [Hash] passed through to parslet
|
|
26
|
-
# @raise [Pubid::Errors::ParseError]
|
|
27
|
-
def parse(io, options = {})
|
|
28
|
-
super
|
|
29
|
-
rescue ::Pubid::Errors::ParseError
|
|
30
|
-
# A nested grammar already wrapped it. Keep the inner flavor and input.
|
|
31
|
-
raise
|
|
32
|
-
rescue ::Parslet::ParseFailed => e
|
|
33
|
-
raise wrap_parse_failure(e, io)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
private
|
|
37
|
-
|
|
38
|
-
# @param error [Parslet::ParseFailed]
|
|
39
|
-
# @param io [String, IO] what was handed to {#parse}
|
|
40
|
-
# @return [Pubid::Errors::ParseError]
|
|
41
|
-
def wrap_parse_failure(error, io)
|
|
42
|
-
::Pubid::Errors::ParseError.new(
|
|
43
|
-
error.message,
|
|
44
|
-
error.parse_failure_cause,
|
|
45
|
-
input: io.is_a?(String) ? io : nil,
|
|
46
|
-
flavor: pubid_flavor_name,
|
|
47
|
-
)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# "Pubid::Iso::Parser" -> "iso"; "Pubid::Ieee::Aiee::Parser" -> "ieee".
|
|
51
|
-
#
|
|
52
|
-
# Resolved through {Pubid::Registry} rather than taken from the module
|
|
53
|
-
# name, because the two disagree: `Pubid::Tgpp` registers as `"3gpp"`,
|
|
54
|
-
# and `Pubid::CenCenelec` registers twice (`"cen_cenelec"` first, then
|
|
55
|
-
# the `"cen"` alias). Reporting the registered name is what lets a caller
|
|
56
|
-
# feed `error.flavor` straight back to `Pubid::Registry.get`.
|
|
57
|
-
# @return [String, nil]
|
|
58
|
-
def pubid_flavor_name
|
|
59
|
-
parts = self.class.name.to_s.split("::")
|
|
60
|
-
return nil unless parts[0] == "Pubid" && parts.length > 1
|
|
61
|
-
|
|
62
|
-
registered_flavor_name(parts[1]) || parts[1].downcase
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
# @param module_name [String] e.g. "Tgpp"
|
|
66
|
-
# @return [String, nil] the registered name, nil if not registered
|
|
67
|
-
def registered_flavor_name(module_name)
|
|
68
|
-
::Pubid::Registry.flavors.key(::Pubid.const_get(module_name))
|
|
69
|
-
rescue ::NameError
|
|
70
|
-
nil
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|