pubid 2.0.0.alpha.10 → 2.0.0.pre.alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +51 -54
- data/data/iec/update_codes.yaml +0 -3
- data/data/ieee/update_codes.yaml +1 -107
- data/data/nist/update_codes.yaml +0 -35
- data/lib/pubid/amca/builder.rb +6 -6
- data/lib/pubid/amca/identifier.rb +16 -2
- data/lib/pubid/amca/identifiers/base.rb +46 -74
- data/lib/pubid/amca/identifiers/interpretation.rb +30 -17
- data/lib/pubid/amca/identifiers/publication.rb +27 -14
- data/lib/pubid/amca/identifiers/standard.rb +5 -3
- data/lib/pubid/amca/identifiers.rb +1 -0
- data/lib/pubid/amca/parser.rb +1 -1
- data/lib/pubid/amca/scheme.rb +16 -0
- data/lib/pubid/amca/single_identifier.rb +24 -1
- data/lib/pubid/amca/urn_generator.rb +3 -4
- data/lib/pubid/amca.rb +3 -50
- data/lib/pubid/ansi/builder.rb +5 -7
- data/lib/pubid/ansi/identifier.rb +1 -19
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +1 -2
- data/lib/pubid/ansi/identifiers/standard.rb +3 -2
- data/lib/pubid/ansi/parser.rb +1 -1
- data/lib/pubid/ansi/scheme.rb +15 -0
- data/lib/pubid/ansi/single_identifier.rb +31 -2
- data/lib/pubid/ansi/urn_generator.rb +38 -3
- data/lib/pubid/ansi.rb +6 -47
- data/lib/pubid/api/builder.rb +72 -45
- data/lib/pubid/api/identifier.rb +9 -30
- data/lib/pubid/api/identifiers/base.rb +14 -2
- data/lib/pubid/api/identifiers/bulletin.rb +2 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +2 -0
- data/lib/pubid/api/identifiers/mpms.rb +28 -10
- data/lib/pubid/api/identifiers/publication.rb +2 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +2 -0
- data/lib/pubid/api/identifiers/specification.rb +2 -0
- data/lib/pubid/api/identifiers/standard.rb +2 -0
- data/lib/pubid/api/identifiers/technical_report.rb +2 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +16 -0
- data/lib/pubid/api/parser.rb +1 -1
- data/lib/pubid/api/scheme.rb +66 -0
- data/lib/pubid/api/single_identifier.rb +32 -10
- data/lib/pubid/api/urn_generator.rb +18 -0
- data/lib/pubid/api.rb +5 -56
- data/lib/pubid/ashrae/builder.rb +35 -56
- data/lib/pubid/ashrae/identifier.rb +16 -6
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +11 -7
- data/lib/pubid/ashrae/identifiers/addendum.rb +20 -9
- data/lib/pubid/ashrae/identifiers/base.rb +15 -111
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +16 -8
- data/lib/pubid/ashrae/identifiers/errata.rb +10 -9
- data/lib/pubid/ashrae/identifiers/guideline.rb +0 -3
- data/lib/pubid/ashrae/identifiers/interpretation.rb +10 -16
- data/lib/pubid/ashrae/identifiers/standard.rb +0 -3
- data/lib/pubid/ashrae/identifiers.rb +1 -0
- data/lib/pubid/ashrae/parser.rb +16 -40
- data/lib/pubid/ashrae/scheme.rb +53 -0
- data/lib/pubid/ashrae/single_identifier.rb +14 -1
- data/lib/pubid/ashrae/supplement_identifier.rb +6 -21
- data/lib/pubid/ashrae/urn_generator.rb +10 -8
- data/lib/pubid/ashrae.rb +2 -58
- data/lib/pubid/asme/builder.rb +2 -11
- data/lib/pubid/asme/components/code.rb +2 -10
- data/lib/pubid/asme/identifier.rb +0 -9
- data/lib/pubid/asme/identifiers/base.rb +60 -0
- data/lib/pubid/asme/identifiers/standard.rb +2 -86
- data/lib/pubid/asme/parser.rb +1 -1
- data/lib/pubid/asme/scheme.rb +37 -0
- data/lib/pubid/asme/single_identifier.rb +2 -11
- data/lib/pubid/asme/urn_generator.rb +2 -2
- data/lib/pubid/asme.rb +1 -47
- data/lib/pubid/astm/builder.rb +3 -10
- data/lib/pubid/astm/components/code.rb +0 -9
- data/lib/pubid/astm/identifier.rb +0 -9
- data/lib/pubid/astm/identifiers/adjunct.rb +9 -16
- data/lib/pubid/astm/identifiers/data_series.rb +14 -2
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +34 -25
- data/lib/pubid/astm/identifiers/manual.rb +25 -8
- data/lib/pubid/astm/identifiers/monograph.rb +14 -2
- data/lib/pubid/astm/identifiers/research_report.rb +5 -8
- data/lib/pubid/astm/identifiers/standard.rb +37 -8
- data/lib/pubid/astm/identifiers/technical_report.rb +13 -2
- data/lib/pubid/astm/identifiers/work_in_progress.rb +10 -1
- data/lib/pubid/astm/parser.rb +1 -1
- data/lib/pubid/astm/scheme.rb +55 -0
- data/lib/pubid/astm/single_identifier.rb +10 -32
- data/lib/pubid/astm/urn_generator.rb +5 -7
- data/lib/pubid/astm.rb +27 -44
- data/lib/pubid/bsi/builder.rb +107 -119
- data/lib/pubid/bsi/identifier.rb +25 -4
- data/lib/pubid/bsi/identifiers/addendum_document.rb +37 -3
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +47 -19
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +39 -8
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +55 -2
- data/lib/pubid/bsi/identifiers/amendment.rb +22 -30
- data/lib/pubid/bsi/identifiers/base.rb +11 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +7 -1
- data/lib/pubid/bsi/identifiers/british_standard.rb +1 -2
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +87 -13
- data/lib/pubid/bsi/identifiers/committee_document.rb +17 -10
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +87 -19
- data/lib/pubid/bsi/identifiers/corrigendum.rb +10 -26
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +36 -0
- data/lib/pubid/bsi/identifiers/disc.rb +29 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +46 -2
- data/lib/pubid/bsi/identifiers/electronic_book.rb +38 -2
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +21 -10
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +47 -0
- data/lib/pubid/bsi/identifiers/flex.rb +34 -3
- data/lib/pubid/bsi/identifiers/handbook.rb +17 -1
- data/lib/pubid/bsi/identifiers/index.rb +32 -0
- data/lib/pubid/bsi/identifiers/method.rb +41 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +29 -4
- data/lib/pubid/bsi/identifiers/practice_guide.rb +7 -1
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +54 -2
- data/lib/pubid/bsi/identifiers/published_document.rb +54 -2
- data/lib/pubid/bsi/identifiers/section.rb +30 -0
- data/lib/pubid/bsi/identifiers/set.rb +20 -14
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -10
- data/lib/pubid/bsi/identifiers/supplement_document.rb +25 -3
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +46 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +47 -2
- data/lib/pubid/bsi/identifiers/test_method.rb +32 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +22 -7
- data/lib/pubid/bsi/identifiers.rb +1 -0
- data/lib/pubid/bsi/parser.rb +6 -20
- data/lib/pubid/bsi/scheme.rb +243 -0
- data/lib/pubid/bsi/single_identifier.rb +82 -94
- data/lib/pubid/bsi/urn_generator.rb +5 -13
- data/lib/pubid/bsi.rb +2 -252
- data/lib/pubid/builder/base.rb +13 -62
- data/lib/pubid/bundled_identifier.rb +10 -18
- data/lib/pubid/ccsds/builder.rb +4 -5
- data/lib/pubid/ccsds/identifier.rb +3 -63
- data/lib/pubid/ccsds/identifiers/base.rb +51 -14
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +8 -9
- data/lib/pubid/ccsds/parser.rb +3 -5
- data/lib/pubid/ccsds/scheme.rb +57 -0
- data/lib/pubid/ccsds/single_identifier.rb +3 -6
- data/lib/pubid/ccsds/supplement_identifier.rb +13 -17
- data/lib/pubid/ccsds/urn_generator.rb +6 -6
- data/lib/pubid/ccsds.rb +1 -44
- data/lib/pubid/cen_cenelec/builder.rb +29 -61
- data/lib/pubid/cen_cenelec/identifier.rb +5 -28
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +4 -9
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +12 -2
- data/lib/pubid/cen_cenelec/identifiers/base.rb +46 -5
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +27 -6
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +17 -2
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +4 -62
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +7 -20
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +6 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/parser.rb +1 -1
- data/lib/pubid/cen_cenelec/scheme.rb +164 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +91 -10
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +7 -6
- data/lib/pubid/cen_cenelec/urn_generator.rb +7 -7
- data/lib/pubid/cen_cenelec.rb +1 -188
- data/lib/pubid/cie/builder.rb +24 -149
- data/lib/pubid/cie/components/code.rb +72 -0
- data/lib/pubid/cie/identifier.rb +5 -20
- data/lib/pubid/cie/identifiers/bundle.rb +5 -35
- data/lib/pubid/cie/identifiers/conference.rb +6 -11
- data/lib/pubid/cie/identifiers/corrigendum.rb +23 -17
- data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
- data/lib/pubid/cie/identifiers/identical.rb +9 -9
- data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
- data/lib/pubid/cie/identifiers/standard.rb +8 -43
- data/lib/pubid/cie/identifiers/supplement.rb +25 -27
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +3 -7
- data/lib/pubid/cie/identifiers.rb +0 -2
- data/lib/pubid/cie/parser.rb +6 -55
- data/lib/pubid/cie/scheme.rb +64 -0
- data/lib/pubid/cie/single_identifier.rb +5 -44
- data/lib/pubid/cie/supplement_identifier.rb +16 -29
- data/lib/pubid/cie/urn_generator.rb +8 -11
- data/lib/pubid/cie.rb +2 -57
- data/lib/pubid/components/code.rb +8 -22
- data/lib/pubid/components/date.rb +18 -41
- data/lib/pubid/components/edition.rb +6 -9
- data/lib/pubid/components/language.rb +4 -6
- data/lib/pubid/components/locality.rb +1 -10
- data/lib/pubid/components/publisher.rb +6 -9
- data/lib/pubid/components/stage.rb +14 -5
- data/lib/pubid/components/type.rb +15 -5
- data/lib/pubid/components/typed_stage.rb +8 -11
- data/lib/pubid/components.rb +0 -4
- data/lib/pubid/core/update_codes.rb +7 -28
- data/lib/pubid/csa/builder.rb +48 -48
- data/lib/pubid/csa/composite_identifier.rb +7 -18
- data/lib/pubid/csa/identifier.rb +78 -191
- data/lib/pubid/csa/identifiers/base.rb +123 -0
- data/lib/pubid/csa/identifiers/bundled.rb +9 -25
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
- data/lib/pubid/csa/identifiers/cec.rb +103 -40
- data/lib/pubid/csa/identifiers/combined.rb +69 -97
- data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
- data/lib/pubid/csa/identifiers/package.rb +4 -4
- data/lib/pubid/csa/identifiers/series.rb +104 -0
- data/lib/pubid/csa/parser.rb +8 -12
- data/lib/pubid/csa/scheme.rb +44 -0
- data/lib/pubid/csa/single_identifier.rb +5 -94
- data/lib/pubid/csa/urn_generator.rb +2 -9
- data/lib/pubid/csa/wrapper_identifier.rb +10 -43
- data/lib/pubid/csa.rb +1 -56
- data/lib/pubid/etsi/builder.rb +4 -13
- data/lib/pubid/etsi/components/code.rb +9 -10
- data/lib/pubid/etsi/components/version.rb +5 -0
- data/lib/pubid/etsi/identifier.rb +12 -2
- data/lib/pubid/etsi/identifiers/base.rb +24 -60
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +4 -207
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +14 -46
- data/lib/pubid/etsi/identifiers.rb +1 -0
- data/lib/pubid/etsi/parser.rb +3 -9
- data/lib/pubid/etsi/scheme.rb +42 -0
- data/lib/pubid/etsi.rb +2 -52
- data/lib/pubid/export/data_class_exporter.rb +59 -0
- data/lib/pubid/export/exporter.rb +47 -6
- data/lib/pubid/export/flavor_exporter.rb +276 -124
- data/lib/pubid/export/ieee_exporter.rb +78 -0
- data/lib/pubid/export/itu_exporter.rb +66 -0
- data/lib/pubid/export/nist_exporter.rb +64 -0
- data/lib/pubid/export/registry_exporter.rb +90 -0
- data/lib/pubid/export/scheme_exporter.rb +70 -0
- data/lib/pubid/export.rb +6 -0
- data/lib/pubid/identifier.rb +37 -920
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/identifier_registry.rb +198 -0
- data/lib/pubid/idf/builder.rb +7 -7
- data/lib/pubid/idf/identifier.rb +13 -23
- data/lib/pubid/idf/identifiers/amendment.rb +1 -2
- data/lib/pubid/idf/identifiers/corrigendum.rb +1 -2
- data/lib/pubid/idf/identifiers/international_standard.rb +1 -2
- data/lib/pubid/idf/identifiers/reviewed_method.rb +1 -2
- data/lib/pubid/idf/parser.rb +5 -6
- data/lib/pubid/idf/scheme.rb +61 -0
- data/lib/pubid/idf/supplement_identifier.rb +13 -5
- data/lib/pubid/idf/urn_generator.rb +39 -4
- data/lib/pubid/idf.rb +1 -65
- data/lib/pubid/iec/builder.rb +91 -92
- data/lib/pubid/iec/components/code.rb +32 -9
- data/lib/pubid/iec/components/publisher.rb +1 -1
- data/lib/pubid/iec/identifier.rb +8 -328
- data/lib/pubid/iec/identifiers/amendment.rb +5 -8
- data/lib/pubid/iec/identifiers/base.rb +31 -7
- data/lib/pubid/iec/identifiers/component_specification.rb +13 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +12 -1
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +30 -29
- data/lib/pubid/iec/identifiers/corrigendum.rb +5 -4
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +36 -43
- data/lib/pubid/iec/identifiers/guide.rb +18 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +9 -24
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +3 -2
- data/lib/pubid/iec/identifiers/operational_document.rb +13 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +15 -2
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +24 -26
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +13 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +13 -2
- data/lib/pubid/iec/identifiers/technical_report.rb +21 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +21 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +12 -1
- data/lib/pubid/iec/identifiers/test_report_form.rb +46 -3
- data/lib/pubid/iec/identifiers/vap_identifier.rb +34 -33
- data/lib/pubid/iec/identifiers/white_paper.rb +13 -3
- data/lib/pubid/iec/identifiers/working_document.rb +60 -26
- data/lib/pubid/iec/parser.rb +42 -73
- data/lib/pubid/iec/scheme.rb +71 -0
- data/lib/pubid/iec/single_identifier.rb +23 -15
- data/lib/pubid/iec/supplement_identifier.rb +67 -84
- data/lib/pubid/iec/urn_generator.rb +143 -195
- data/lib/pubid/iec/urn_parser.rb +246 -85
- data/lib/pubid/iec.rb +66 -45
- data/lib/pubid/ieee/aiee/builder.rb +3 -17
- data/lib/pubid/ieee/aiee/identifier.rb +62 -46
- data/lib/pubid/ieee/aiee/parser.rb +1 -1
- data/lib/pubid/ieee/builder.rb +81 -398
- data/lib/pubid/ieee/components/code.rb +0 -8
- data/lib/pubid/ieee/components/draft.rb +0 -54
- data/lib/pubid/ieee/components/relationship.rb +149 -5
- data/lib/pubid/ieee/identifier.rb +11 -3
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +14 -62
- data/lib/pubid/ieee/identifiers/base.rb +547 -340
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +12 -6
- data/lib/pubid/ieee/identifiers/corrigendum.rb +12 -15
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +13 -24
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +7 -3
- data/lib/pubid/ieee/identifiers/dual_published.rb +7 -58
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +11 -99
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +11 -25
- data/lib/pubid/ieee/identifiers/joint_development.rb +15 -66
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +24 -58
- data/lib/pubid/ieee/identifiers/nesc/base.rb +19 -90
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +5 -20
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +5 -16
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +2 -11
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +3 -18
- data/lib/pubid/ieee/identifiers/nesc.rb +0 -1
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +9 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +6 -29
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +11 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +39 -4
- data/lib/pubid/ieee/identifiers/standard.rb +2 -5
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +7 -26
- data/lib/pubid/ieee/identifiers.rb +1 -2
- data/lib/pubid/ieee/ire/builder.rb +6 -7
- data/lib/pubid/ieee/ire/identifier.rb +33 -48
- data/lib/pubid/ieee/ire/parser.rb +1 -1
- data/lib/pubid/ieee/nesc/builder.rb +20 -33
- data/lib/pubid/ieee/nesc/parser.rb +15 -16
- data/lib/pubid/ieee/parser.rb +44 -462
- data/lib/pubid/ieee/scheme.rb +90 -0
- data/lib/pubid/ieee/typed_stages.rb +1 -12
- data/lib/pubid/ieee/urn_generator.rb +8 -35
- data/lib/pubid/ieee.rb +2 -133
- data/lib/pubid/ieee_debug.rb +1 -0
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +17 -5
- data/lib/pubid/iho/identifiers/base.rb +30 -64
- data/lib/pubid/iho/identifiers/bibliographic.rb +5 -1
- data/lib/pubid/iho/identifiers/circular_letter.rb +5 -1
- data/lib/pubid/iho/identifiers/miscellaneous.rb +5 -1
- data/lib/pubid/iho/identifiers/publication.rb +5 -1
- data/lib/pubid/iho/identifiers/standard.rb +5 -1
- data/lib/pubid/iho/identifiers.rb +1 -0
- data/lib/pubid/iho/parser.rb +4 -4
- data/lib/pubid/iho/scheme.rb +29 -0
- data/lib/pubid/iho/urn_generator.rb +3 -3
- data/lib/pubid/iho.rb +3 -59
- data/lib/pubid/iso/builder.rb +57 -68
- data/lib/pubid/iso/bundled_identifier.rb +3 -56
- data/lib/pubid/iso/combined_identifier.rb +4 -6
- data/lib/pubid/iso/components/code.rb +19 -7
- data/lib/pubid/iso/components/publisher.rb +8 -10
- data/lib/pubid/iso/components.rb +4 -2
- data/lib/pubid/iso/identifier.rb +11 -260
- data/lib/pubid/iso/identifiers/addendum.rb +6 -9
- data/lib/pubid/iso/identifiers/amendment.rb +4 -8
- data/lib/pubid/iso/identifiers/base.rb +115 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +1 -0
- data/lib/pubid/iso/identifiers/directives.rb +2 -8
- data/lib/pubid/iso/identifiers/directives_supplement.rb +26 -55
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +1 -0
- data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
- data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +4 -10
- data/lib/pubid/iso/identifiers/pas.rb +2 -2
- data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
- data/lib/pubid/iso/identifiers/supplement.rb +3 -11
- data/lib/pubid/iso/identifiers/tc_document.rb +15 -44
- data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
- data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
- data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
- data/lib/pubid/iso/identifiers.rb +1 -0
- data/lib/pubid/iso/parser.rb +19 -43
- data/lib/pubid/iso/scheme.rb +187 -0
- data/lib/pubid/iso/single_identifier.rb +7 -6
- data/lib/pubid/iso/supplement_identifier.rb +3 -29
- data/lib/pubid/iso/urn_generator.rb +177 -78
- data/lib/pubid/iso/urn_parser.rb +10 -29
- data/lib/pubid/iso.rb +2 -188
- data/lib/pubid/itu/builder.rb +41 -230
- data/lib/pubid/itu/components/code.rb +12 -57
- data/lib/pubid/itu/components/sector.rb +4 -15
- data/lib/pubid/itu/components/series.rb +4 -0
- data/lib/pubid/itu/identifier.rb +51 -2
- data/lib/pubid/itu/identifiers/amendment.rb +31 -7
- data/lib/pubid/itu/identifiers/annex.rb +4 -13
- data/lib/pubid/itu/identifiers/base.rb +128 -456
- data/lib/pubid/itu/identifiers/combined_identifier.rb +25 -99
- data/lib/pubid/itu/identifiers/corrigendum.rb +25 -16
- data/lib/pubid/itu/identifiers/recommendation.rb +4 -3
- data/lib/pubid/itu/identifiers/special_publication.rb +3 -3
- data/lib/pubid/itu/identifiers/supplement.rb +16 -119
- data/lib/pubid/itu/identifiers.rb +1 -10
- data/lib/pubid/itu/model.rb +1 -1
- data/lib/pubid/itu/parser.rb +27 -481
- data/lib/pubid/itu/scheme.rb +174 -0
- data/lib/pubid/itu/urn_generator.rb +6 -36
- data/lib/pubid/itu.rb +2 -58
- data/lib/pubid/jcgm/builder.rb +19 -37
- data/lib/pubid/jcgm/identifier.rb +0 -10
- data/lib/pubid/jcgm/identifiers/amendment.rb +11 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +15 -3
- data/lib/pubid/jcgm/identifiers.rb +0 -2
- data/lib/pubid/jcgm/parser.rb +7 -74
- data/lib/pubid/jcgm/scheme.rb +60 -0
- data/lib/pubid/jcgm/single_identifier.rb +14 -84
- data/lib/pubid/jcgm/supplement_identifier.rb +4 -39
- data/lib/pubid/jcgm/urn_generator.rb +19 -25
- data/lib/pubid/jcgm.rb +2 -57
- data/lib/pubid/jis/builder.rb +52 -44
- data/lib/pubid/jis/components/code.rb +59 -0
- data/lib/pubid/{astm → jis}/components.rb +1 -1
- data/lib/pubid/jis/identifier.rb +5 -181
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/base.rb +72 -0
- data/lib/pubid/jis/identifiers/standard.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_report.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +6 -32
- data/lib/pubid/jis/scheme.rb +49 -0
- data/lib/pubid/jis/single_identifier.rb +12 -6
- data/lib/pubid/jis/supplement_identifier.rb +14 -17
- data/lib/pubid/jis.rb +2 -48
- data/lib/pubid/nist/builder.rb +1765 -146
- data/lib/pubid/nist/components/code.rb +20 -9
- data/lib/pubid/nist/components/edition.rb +0 -16
- data/lib/pubid/nist/components/publisher.rb +24 -0
- data/lib/pubid/nist/components/supplement.rb +21 -91
- data/lib/pubid/nist/components.rb +1 -0
- data/lib/pubid/nist/configuration.rb +2 -12
- data/lib/pubid/nist/identifiers/base.rb +417 -662
- data/lib/pubid/nist/identifiers/circular.rb +5 -17
- data/lib/pubid/nist/identifiers/circular_supplement.rb +6 -16
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -3
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +5 -7
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +5 -18
- data/lib/pubid/nist/identifiers/crpl_report.rb +13 -16
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -18
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -3
- data/lib/pubid/nist/identifiers/handbook.rb +4 -12
- data/lib/pubid/nist/identifiers/internal_report.rb +7 -15
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -3
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +11 -20
- data/lib/pubid/nist/identifiers/monograph.rb +11 -22
- data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
- data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
- data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
- data/lib/pubid/nist/identifiers/report.rb +10 -19
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -12
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -4
- data/lib/pubid/nist/identifiers.rb +1 -1
- data/lib/pubid/nist/parser.rb +429 -97
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +34 -35
- data/lib/pubid/nist/urn_generator.rb +8 -14
- data/lib/pubid/nist.rb +5 -107
- data/lib/pubid/oiml/builder.rb +10 -91
- data/lib/pubid/oiml/components/code.rb +0 -17
- data/lib/pubid/oiml/identifier.rb +0 -53
- data/lib/pubid/oiml/identifiers/annex.rb +46 -13
- data/lib/pubid/oiml/identifiers/base.rb +36 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +0 -2
- data/lib/pubid/oiml/identifiers/document.rb +0 -2
- data/lib/pubid/oiml/identifiers/expert_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/guide.rb +0 -2
- data/lib/pubid/oiml/identifiers/recommendation.rb +0 -2
- data/lib/pubid/oiml/identifiers/seminar_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/vocabulary.rb +0 -2
- data/lib/pubid/oiml/identifiers.rb +1 -3
- data/lib/pubid/oiml/parser.rb +17 -118
- data/lib/pubid/oiml/scheme.rb +46 -0
- data/lib/pubid/oiml/single_identifier.rb +43 -66
- data/lib/pubid/oiml/supplement_identifier.rb +17 -62
- data/lib/pubid/oiml/urn_generator.rb +8 -22
- data/lib/pubid/oiml.rb +1 -56
- data/lib/pubid/parser.rb +0 -1
- data/lib/pubid/parsers/mr_string.rb +7 -120
- data/lib/pubid/plateau/builder.rb +4 -8
- data/lib/pubid/plateau/identifiers/base.rb +36 -40
- data/lib/pubid/plateau/identifiers/handbook.rb +7 -1
- data/lib/pubid/plateau/identifiers/technical_report.rb +5 -1
- data/lib/pubid/plateau/identifiers.rb +1 -0
- data/lib/pubid/plateau/parser.rb +6 -16
- data/lib/pubid/plateau/scheme.rb +45 -0
- data/lib/pubid/plateau/supplement_identifier.rb +15 -11
- data/lib/pubid/plateau.rb +1 -58
- data/lib/pubid/renderers/base.rb +0 -47
- data/lib/pubid/renderers/directives_renderer.rb +14 -27
- data/lib/pubid/renderers/guide_renderer.rb +1 -7
- data/lib/pubid/renderers/human_readable.rb +9 -34
- data/lib/pubid/renderers/iwa_renderer.rb +1 -5
- data/lib/pubid/renderers/mr_string.rb +6 -54
- data/lib/pubid/renderers/supplement_renderer.rb +2 -5
- data/lib/pubid/renderers.rb +0 -1
- data/lib/pubid/rendering/base.rb +73 -0
- data/lib/pubid/rendering/common.rb +211 -0
- data/lib/pubid/rendering/context.rb +21 -33
- data/lib/pubid/rendering/format.rb +25 -0
- data/lib/pubid/rendering/numbering.rb +7 -25
- data/lib/pubid/rendering/supplement.rb +4 -4
- data/lib/pubid/rendering.rb +3 -0
- data/lib/pubid/sae/builder.rb +1 -1
- data/lib/pubid/sae/components/date.rb +0 -8
- data/lib/pubid/sae/components/type.rb +1 -5
- data/lib/pubid/sae/identifier.rb +12 -2
- data/lib/pubid/sae/identifiers/base.rb +28 -33
- data/lib/pubid/sae/identifiers.rb +1 -0
- data/lib/pubid/sae/parser.rb +1 -1
- data/lib/pubid/sae/scheme.rb +47 -0
- data/lib/pubid/sae/urn_generator.rb +10 -2
- data/lib/pubid/sae.rb +2 -49
- data/lib/pubid/scheme.rb +207 -0
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +10 -424
- data/lib/tasks/export.rake +5 -6
- data/lib/tasks/website-data.json +1796 -1854
- metadata +45 -307
- data/data/bipm/update_codes.yaml +0 -9
- data/data/nist/series.yaml +0 -155
- data/lib/pubid/adobe/builder.rb +0 -52
- data/lib/pubid/adobe/identifier.rb +0 -47
- data/lib/pubid/adobe/identifiers/publication.rb +0 -31
- data/lib/pubid/adobe/identifiers/tech_note.rb +0 -32
- data/lib/pubid/adobe/identifiers.rb +0 -10
- data/lib/pubid/adobe/parser.rb +0 -136
- data/lib/pubid/adobe/renderer.rb +0 -39
- data/lib/pubid/adobe/urn_generator.rb +0 -42
- data/lib/pubid/adobe/urn_parser.rb +0 -69
- data/lib/pubid/adobe.rb +0 -60
- data/lib/pubid/amca/renderer.rb +0 -82
- data/lib/pubid/amca/urn_parser.rb +0 -28
- data/lib/pubid/ansi/renderer.rb +0 -53
- data/lib/pubid/ansi/urn_parser.rb +0 -23
- data/lib/pubid/api/identifiers.rb +0 -18
- data/lib/pubid/api/renderer.rb +0 -98
- data/lib/pubid/api/urn_parser.rb +0 -35
- data/lib/pubid/ashrae/renderer.rb +0 -117
- data/lib/pubid/ashrae/urn_parser.rb +0 -27
- data/lib/pubid/asme/renderer.rb +0 -66
- data/lib/pubid/asme/urn_parser.rb +0 -31
- data/lib/pubid/astm/identifiers/code_number.rb +0 -81
- data/lib/pubid/astm/identifiers.rb +0 -19
- data/lib/pubid/astm/renderer.rb +0 -172
- data/lib/pubid/astm/urn_parser.rb +0 -30
- data/lib/pubid/bipm/builder.rb +0 -163
- data/lib/pubid/bipm/identifier.rb +0 -285
- data/lib/pubid/bipm/identifiers/committee_document.rb +0 -36
- data/lib/pubid/bipm/identifiers/guide.rb +0 -35
- data/lib/pubid/bipm/identifiers/meeting.rb +0 -53
- data/lib/pubid/bipm/identifiers/mep.rb +0 -33
- data/lib/pubid/bipm/identifiers/metrologia_article.rb +0 -48
- data/lib/pubid/bipm/identifiers/si_brochure.rb +0 -33
- data/lib/pubid/bipm/identifiers.rb +0 -15
- data/lib/pubid/bipm/parser.rb +0 -237
- data/lib/pubid/bipm/renderer.rb +0 -118
- data/lib/pubid/bipm/urn_generator.rb +0 -58
- data/lib/pubid/bipm/urn_parser.rb +0 -60
- data/lib/pubid/bipm.rb +0 -91
- data/lib/pubid/bsi/renderer.rb +0 -1064
- data/lib/pubid/bsi/urn_parser.rb +0 -52
- data/lib/pubid/calconnect/builder.rb +0 -38
- data/lib/pubid/calconnect/identifier.rb +0 -121
- data/lib/pubid/calconnect/identifiers/standard.rb +0 -29
- data/lib/pubid/calconnect/identifiers.rb +0 -9
- data/lib/pubid/calconnect/parser.rb +0 -54
- data/lib/pubid/calconnect/renderer.rb +0 -36
- data/lib/pubid/calconnect/urn_generator.rb +0 -33
- data/lib/pubid/calconnect/urn_parser.rb +0 -34
- data/lib/pubid/calconnect.rb +0 -82
- data/lib/pubid/ccsds/urn_parser.rb +0 -20
- data/lib/pubid/cen_cenelec/renderer.rb +0 -261
- data/lib/pubid/cen_cenelec/urn_parser.rb +0 -28
- data/lib/pubid/cie/identifiers/code_attributes.rb +0 -52
- data/lib/pubid/cie/identifiers/proceedings.rb +0 -41
- data/lib/pubid/cie/urn_parser.rb +0 -28
- data/lib/pubid/components/adoption.rb +0 -104
- data/lib/pubid/components/iteration.rb +0 -32
- data/lib/pubid/components/relationship.rb +0 -151
- data/lib/pubid/components/supplement.rb +0 -184
- data/lib/pubid/csa/renderer.rb +0 -300
- data/lib/pubid/csa/urn_parser.rb +0 -33
- data/lib/pubid/doi/builder.rb +0 -18
- data/lib/pubid/doi/identifier.rb +0 -49
- data/lib/pubid/doi/identifiers/resource.rb +0 -30
- data/lib/pubid/doi/identifiers.rb +0 -9
- data/lib/pubid/doi/parser.rb +0 -52
- data/lib/pubid/doi/renderer.rb +0 -13
- data/lib/pubid/doi.rb +0 -55
- data/lib/pubid/easc/builder.rb +0 -55
- data/lib/pubid/easc/identifier.rb +0 -59
- data/lib/pubid/easc/identifiers/pmg.rb +0 -20
- data/lib/pubid/easc/identifiers/rmg.rb +0 -19
- data/lib/pubid/easc/identifiers.rb +0 -10
- data/lib/pubid/easc/parser.rb +0 -88
- data/lib/pubid/easc/renderer.rb +0 -48
- data/lib/pubid/easc/urn_generator.rb +0 -46
- data/lib/pubid/easc/urn_parser.rb +0 -57
- data/lib/pubid/easc.rb +0 -52
- data/lib/pubid/ecma/builder.rb +0 -45
- data/lib/pubid/ecma/identifier.rb +0 -147
- data/lib/pubid/ecma/identifiers/memento.rb +0 -30
- data/lib/pubid/ecma/identifiers/standard.rb +0 -31
- data/lib/pubid/ecma/identifiers/technical_report.rb +0 -31
- data/lib/pubid/ecma/identifiers.rb +0 -11
- data/lib/pubid/ecma/parser.rb +0 -76
- data/lib/pubid/ecma/renderer.rb +0 -67
- data/lib/pubid/ecma/urn_generator.rb +0 -46
- data/lib/pubid/ecma/urn_parser.rb +0 -51
- data/lib/pubid/ecma.rb +0 -67
- data/lib/pubid/errors.rb +0 -79
- data/lib/pubid/etsi/renderer.rb +0 -48
- data/lib/pubid/etsi/urn_parser.rb +0 -34
- data/lib/pubid/gb/builder.rb +0 -45
- data/lib/pubid/gb/identifier.rb +0 -67
- data/lib/pubid/gb/identifiers/standard.rb +0 -34
- data/lib/pubid/gb/identifiers.rb +0 -9
- data/lib/pubid/gb/parser.rb +0 -63
- data/lib/pubid/gb/renderer.rb +0 -35
- data/lib/pubid/gb.rb +0 -87
- data/lib/pubid/gost/builder.rb +0 -148
- data/lib/pubid/gost/identifier.rb +0 -47
- data/lib/pubid/gost/identifiers/foreign_reference.rb +0 -25
- data/lib/pubid/gost/identifiers/harmonized.rb +0 -39
- data/lib/pubid/gost/identifiers/identical_adoption.rb +0 -39
- data/lib/pubid/gost/identifiers/interstate_standard.rb +0 -20
- data/lib/pubid/gost/identifiers/national_standard.rb +0 -19
- data/lib/pubid/gost/identifiers.rb +0 -13
- data/lib/pubid/gost/parser.rb +0 -105
- data/lib/pubid/gost/renderer.rb +0 -48
- data/lib/pubid/gost/urn_generator.rb +0 -46
- data/lib/pubid/gost/urn_parser.rb +0 -52
- data/lib/pubid/gost.rb +0 -49
- data/lib/pubid/iala/builder.rb +0 -102
- data/lib/pubid/iala/identifier.rb +0 -90
- data/lib/pubid/iala/identifiers/advice.rb +0 -15
- data/lib/pubid/iala/identifiers/annex.rb +0 -57
- data/lib/pubid/iala/identifiers/general_assembly.rb +0 -19
- data/lib/pubid/iala/identifiers/guideline.rb +0 -17
- data/lib/pubid/iala/identifiers/letter.rb +0 -16
- data/lib/pubid/iala/identifiers/manual.rb +0 -18
- data/lib/pubid/iala/identifiers/model_course.rb +0 -17
- data/lib/pubid/iala/identifiers/recommendation.rb +0 -17
- data/lib/pubid/iala/identifiers/report.rb +0 -16
- data/lib/pubid/iala/identifiers/resolution.rb +0 -16
- data/lib/pubid/iala/identifiers/standard.rb +0 -17
- data/lib/pubid/iala/identifiers.rb +0 -19
- data/lib/pubid/iala/parser.rb +0 -138
- data/lib/pubid/iala/renderer.rb +0 -36
- data/lib/pubid/iala/urn_generator.rb +0 -49
- data/lib/pubid/iala/urn_parser.rb +0 -67
- data/lib/pubid/iala.rb +0 -71
- data/lib/pubid/iana/builder.rb +0 -22
- data/lib/pubid/iana/identifier.rb +0 -140
- data/lib/pubid/iana/identifiers/registry.rb +0 -69
- data/lib/pubid/iana/identifiers.rb +0 -9
- data/lib/pubid/iana/parser.rb +0 -38
- data/lib/pubid/iana/renderer.rb +0 -32
- data/lib/pubid/iana/urn_generator.rb +0 -19
- data/lib/pubid/iana/urn_parser.rb +0 -24
- data/lib/pubid/iana.rb +0 -69
- data/lib/pubid/idf/renderer.rb +0 -84
- data/lib/pubid/idf/urn_parser.rb +0 -25
- data/lib/pubid/iec/components.rb +0 -14
- data/lib/pubid/iec/identifiers/technical_group.rb +0 -30
- data/lib/pubid/iec/identifiers.rb +0 -31
- data/lib/pubid/iec/renderer.rb +0 -267
- data/lib/pubid/ieee/compaction.rb +0 -121
- data/lib/pubid/ieee/identifiers/amendment.rb +0 -40
- data/lib/pubid/ieee/identifiers/code_number.rb +0 -82
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +0 -32
- data/lib/pubid/ieee/pre_parser.rb +0 -301
- data/lib/pubid/ieee/renderer.rb +0 -408
- data/lib/pubid/ieee/urn_parser.rb +0 -34
- data/lib/pubid/ietf/builder.rb +0 -78
- data/lib/pubid/ietf/identifier.rb +0 -5
- data/lib/pubid/ietf/identifiers/base.rb +0 -72
- data/lib/pubid/ietf/identifiers/bcp.rb +0 -36
- data/lib/pubid/ietf/identifiers/fyi.rb +0 -36
- data/lib/pubid/ietf/identifiers/internet_draft.rb +0 -45
- data/lib/pubid/ietf/identifiers/rfc.rb +0 -27
- data/lib/pubid/ietf/identifiers/serialization.rb +0 -51
- data/lib/pubid/ietf/identifiers/std.rb +0 -36
- data/lib/pubid/ietf/identifiers.rb +0 -14
- data/lib/pubid/ietf/parser.rb +0 -61
- data/lib/pubid/ietf/renderer.rb +0 -64
- data/lib/pubid/ietf/urn_generator.rb +0 -37
- data/lib/pubid/ietf/urn_parser.rb +0 -43
- data/lib/pubid/ietf.rb +0 -85
- data/lib/pubid/iho/renderer.rb +0 -30
- data/lib/pubid/iho/urn_parser.rb +0 -58
- data/lib/pubid/isbn/builder.rb +0 -44
- data/lib/pubid/isbn/check_digit.rb +0 -53
- data/lib/pubid/isbn/identifier.rb +0 -81
- data/lib/pubid/isbn/identifiers/book.rb +0 -30
- data/lib/pubid/isbn/identifiers.rb +0 -9
- data/lib/pubid/isbn/parser.rb +0 -45
- data/lib/pubid/isbn/renderer.rb +0 -16
- data/lib/pubid/isbn.rb +0 -52
- data/lib/pubid/iso/normalizer.rb +0 -89
- data/lib/pubid/itu/components/designation.rb +0 -35
- data/lib/pubid/itu/components.rb +0 -12
- data/lib/pubid/itu/identifiers/addendum.rb +0 -15
- data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +0 -87
- data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +0 -92
- data/lib/pubid/itu/identifiers/errata.rb +0 -15
- data/lib/pubid/itu/identifiers/handbook.rb +0 -38
- data/lib/pubid/itu/identifiers/question.rb +0 -63
- data/lib/pubid/itu/identifiers/report.rb +0 -39
- data/lib/pubid/itu/identifiers/standard_serialization.rb +0 -58
- data/lib/pubid/itu/urn_parser.rb +0 -31
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +0 -34
- data/lib/pubid/jcgm/identifiers/meeting.rb +0 -47
- data/lib/pubid/jcgm/renderer.rb +0 -89
- data/lib/pubid/jcgm/urn_parser.rb +0 -177
- data/lib/pubid/jis/identifiers/corrigendum.rb +0 -16
- data/lib/pubid/jis/renderer.rb +0 -69
- data/lib/pubid/jis/urn_parser.rb +0 -23
- data/lib/pubid/nist/caster.rb +0 -1234
- data/lib/pubid/nist/circular_supplement_builder.rb +0 -293
- data/lib/pubid/nist/identifier.rb +0 -8
- data/lib/pubid/nist/identifiers/dated_document.rb +0 -49
- data/lib/pubid/nist/parser_output_normalizer.rb +0 -233
- data/lib/pubid/nist/preprocessor.rb +0 -443
- data/lib/pubid/nist/renderer.rb +0 -43
- data/lib/pubid/nist/router.rb +0 -149
- data/lib/pubid/nist/series/base.rb +0 -58
- data/lib/pubid/nist/series/crpl.rb +0 -13
- data/lib/pubid/nist/series/fips.rb +0 -14
- data/lib/pubid/nist/series/ir.rb +0 -57
- data/lib/pubid/nist/series/letter_preserving.rb +0 -15
- data/lib/pubid/nist/series/mono.rb +0 -19
- data/lib/pubid/nist/series/ncstar.rb +0 -20
- data/lib/pubid/nist/series.rb +0 -49
- data/lib/pubid/nist/urn_parser.rb +0 -67
- data/lib/pubid/oasis/builder.rb +0 -79
- data/lib/pubid/oasis/identifier.rb +0 -160
- data/lib/pubid/oasis/identifiers/standard.rb +0 -29
- data/lib/pubid/oasis/identifiers.rb +0 -9
- data/lib/pubid/oasis/parser.rb +0 -34
- data/lib/pubid/oasis/renderer.rb +0 -29
- data/lib/pubid/oasis/urn_generator.rb +0 -25
- data/lib/pubid/oasis/urn_parser.rb +0 -22
- data/lib/pubid/oasis.rb +0 -79
- data/lib/pubid/ogc/builder.rb +0 -33
- data/lib/pubid/ogc/identifier.rb +0 -81
- data/lib/pubid/ogc/identifiers/document.rb +0 -26
- data/lib/pubid/ogc/identifiers.rb +0 -10
- data/lib/pubid/ogc/parser.rb +0 -40
- data/lib/pubid/ogc/renderer.rb +0 -33
- data/lib/pubid/ogc/urn_generator.rb +0 -14
- data/lib/pubid/ogc/urn_parser.rb +0 -22
- data/lib/pubid/ogc.rb +0 -71
- data/lib/pubid/oiml/identifiers/bulletin.rb +0 -137
- data/lib/pubid/oiml/identifiers/code_number.rb +0 -90
- data/lib/pubid/oiml/identifiers/errata.rb +0 -15
- data/lib/pubid/oiml/renderer.rb +0 -232
- data/lib/pubid/oiml/urn_parser.rb +0 -39
- data/lib/pubid/omg/builder.rb +0 -19
- data/lib/pubid/omg/identifier.rb +0 -47
- data/lib/pubid/omg/identifiers/specification.rb +0 -32
- data/lib/pubid/omg/identifiers.rb +0 -9
- data/lib/pubid/omg/parser.rb +0 -40
- data/lib/pubid/omg/renderer.rb +0 -19
- data/lib/pubid/omg.rb +0 -51
- data/lib/pubid/parser/grammar.rb +0 -74
- data/lib/pubid/plateau/identifier.rb +0 -4
- data/lib/pubid/plateau/renderer.rb +0 -51
- data/lib/pubid/plateau/urn_parser.rb +0 -43
- data/lib/pubid/prefixes_support.rb +0 -51
- data/lib/pubid/renderers/annotator.rb +0 -233
- data/lib/pubid/sae/renderer.rb +0 -36
- data/lib/pubid/sae/urn_parser.rb +0 -36
- data/lib/pubid/tgpp/builder.rb +0 -41
- data/lib/pubid/tgpp/identifier.rb +0 -107
- data/lib/pubid/tgpp/identifiers/technical_report.rb +0 -32
- data/lib/pubid/tgpp/identifiers/technical_specification.rb +0 -33
- data/lib/pubid/tgpp/identifiers.rb +0 -11
- data/lib/pubid/tgpp/parser.rb +0 -78
- data/lib/pubid/tgpp/renderer.rb +0 -52
- data/lib/pubid/tgpp/urn_generator.rb +0 -39
- data/lib/pubid/tgpp/urn_parser.rb +0 -30
- data/lib/pubid/tgpp.rb +0 -83
- data/lib/pubid/type_resolver.rb +0 -59
- data/lib/pubid/un/builder.rb +0 -42
- data/lib/pubid/un/identifier.rb +0 -40
- data/lib/pubid/un/identifiers/document.rb +0 -24
- data/lib/pubid/un/identifiers.rb +0 -9
- data/lib/pubid/un/parser.rb +0 -25
- data/lib/pubid/un/renderer.rb +0 -11
- data/lib/pubid/un.rb +0 -46
- data/lib/pubid/urn_parser/base.rb +0 -81
- data/lib/pubid/urn_parser/errors.rb +0 -16
- data/lib/pubid/urn_parser.rb +0 -14
- data/lib/pubid/w3c/builder.rb +0 -55
- data/lib/pubid/w3c/identifier.rb +0 -130
- data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +0 -31
- data/lib/pubid/w3c/identifiers/draft_note.rb +0 -31
- data/lib/pubid/w3c/identifiers/note.rb +0 -30
- data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/standard.rb +0 -12
- data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/working_draft.rb +0 -30
- data/lib/pubid/w3c/identifiers.rb +0 -25
- data/lib/pubid/w3c/parser.rb +0 -43
- data/lib/pubid/w3c/renderer.rb +0 -35
- data/lib/pubid/w3c/urn_generator.rb +0 -18
- data/lib/pubid/w3c/urn_parser.rb +0 -36
- data/lib/pubid/w3c.rb +0 -67
- data/lib/pubid/xsf/builder.rb +0 -17
- data/lib/pubid/xsf/identifier.rb +0 -66
- data/lib/pubid/xsf/identifiers/xep.rb +0 -31
- data/lib/pubid/xsf/identifiers.rb +0 -9
- data/lib/pubid/xsf/parser.rb +0 -25
- data/lib/pubid/xsf/renderer.rb +0 -23
- data/lib/pubid/xsf/urn_generator.rb +0 -13
- data/lib/pubid/xsf/urn_parser.rb +0 -18
- data/lib/pubid/xsf.rb +0 -81
data/lib/pubid/iala.rb
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iala
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Sole IALA publisher token (see the parser's `publisher` rule).
|
|
8
|
-
PREFIXES = ["IALA"].freeze
|
|
9
|
-
|
|
10
|
-
autoload :Builder, "#{__dir__}/iala/builder"
|
|
11
|
-
autoload :Identifier, "#{__dir__}/iala/identifier"
|
|
12
|
-
autoload :Identifiers, "#{__dir__}/iala/identifiers"
|
|
13
|
-
autoload :Parser, "#{__dir__}/iala/parser"
|
|
14
|
-
autoload :Renderer, "#{__dir__}/iala/renderer"
|
|
15
|
-
autoload :UrnGenerator, "#{__dir__}/iala/urn_generator"
|
|
16
|
-
autoload :UrnParser, "#{__dir__}/iala/urn_parser"
|
|
17
|
-
|
|
18
|
-
# Parse an IALA identifier string into an identifier object.
|
|
19
|
-
# @param identifier [String] The IALA identifier string to parse
|
|
20
|
-
# @return [Pubid::Iala::Identifier]
|
|
21
|
-
def self.parse(identifier)
|
|
22
|
-
Identifier.parse(identifier)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
26
|
-
Identifier.format_registry = FormatRegistry.new(parent: ::Pubid::Identifier.format_registry)
|
|
27
|
-
Identifier.format_registry.register(:human, renderer: Iala::Renderer)
|
|
28
|
-
|
|
29
|
-
# Auto-discover all identifier types from the Identifiers namespace.
|
|
30
|
-
# @return [Array<Class>] identifier classes (Pubid::Identifier subclasses)
|
|
31
|
-
def self.identifier_types
|
|
32
|
-
@identifier_types ||= Identifiers.constants
|
|
33
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
34
|
-
.select { |c| c.is_a?(Class) && c < Pubid::Identifier }
|
|
35
|
-
.reject { |c| c == Identifier }
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Build typed stage index from identifier types
|
|
39
|
-
# @return [Array<Pubid::Components::TypedStage>]
|
|
40
|
-
def self.all_typed_stages
|
|
41
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
42
|
-
klass.const_defined?(:TYPED_STAGES) ? klass.const_get(:TYPED_STAGES) : []
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Lookup: type code -> identifier class
|
|
47
|
-
# @param code [String, Symbol]
|
|
48
|
-
# @return [Class, nil]
|
|
49
|
-
def self.locate_type(code)
|
|
50
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
# Lookup: abbreviation -> typed stage
|
|
54
|
-
# @param abbr [String, Symbol]
|
|
55
|
-
# @return [Pubid::Components::TypedStage, nil]
|
|
56
|
-
def self.locate_stage(abbr)
|
|
57
|
-
abbr_str = abbr.to_s.upcase
|
|
58
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Look up an identifier class by its IALA type letter (S, R, G, M, C, X, P).
|
|
62
|
-
# @param letter [String]
|
|
63
|
-
# @return [Class<Identifier>]
|
|
64
|
-
def self.identifier_klass_for_type_letter(letter)
|
|
65
|
-
@by_letter ||= identifier_types.to_h { |klass| [klass.type[:short], klass] }
|
|
66
|
-
@by_letter.fetch(letter.to_s.upcase)
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
Pubid::Registry.register(:iala, Pubid::Iala)
|
data/lib/pubid/iana/builder.rb
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iana
|
|
5
|
-
# Builds an IANA identifier object from a parse tree. There is a single
|
|
6
|
-
# concrete type (Registry), so the builder just extracts the slug fields.
|
|
7
|
-
class Builder
|
|
8
|
-
def self.build(parsed_data)
|
|
9
|
-
new.build(parsed_data)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def build(data)
|
|
13
|
-
# The top-level slug is stored as `number` — it is the relaton-index
|
|
14
|
-
# key; `Identifier#registry` reads it back.
|
|
15
|
-
Identifiers::Registry.new(
|
|
16
|
-
number: data[:registry].to_s,
|
|
17
|
-
sub_registry: data[:sub_registry]&.to_s,
|
|
18
|
-
)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iana
|
|
5
|
-
# Base class for every IANA identifier AND the flavor's parse/create entry
|
|
6
|
-
# point. Concrete identifiers under Pubid::Iana::Identifiers descend from
|
|
7
|
-
# this class, so a parsed IANA id is an instance of Pubid::Iana::Identifier.
|
|
8
|
-
#
|
|
9
|
-
# IANA entries are protocol registries, not numbered standards: the value is
|
|
10
|
-
# a hierarchical registry slug (`registry` before the single "/", optional
|
|
11
|
-
# `sub_registry` after it). Both are kept verbatim.
|
|
12
|
-
#
|
|
13
|
-
# The top-level slug is stored as `number` on the concrete leaf
|
|
14
|
-
# (Identifiers::Registry) so it can serve as the relaton-index key; see the
|
|
15
|
-
# long comment there for why the attribute lives on the leaf. `registry` is
|
|
16
|
-
# a derived reader over it, so it is NOT a serialized key.
|
|
17
|
-
class Identifier < ::Pubid::Identifier
|
|
18
|
-
# The sub-registry slug (e.g. "lowpan_nhc"). nil for top registries; a nil
|
|
19
|
-
# default means it is dropped from the serialized hash when absent.
|
|
20
|
-
attribute :sub_registry, :string
|
|
21
|
-
|
|
22
|
-
# Polymorphic type map for lutaml::Model key_value (de)serialization: maps
|
|
23
|
-
# the single Registry subclass's polymorphic_name to its class name so a
|
|
24
|
-
# stored hash rebuilds the correct identifier type via from_hash.
|
|
25
|
-
IANA_TYPE_MAP = {
|
|
26
|
-
"pubid:iana:registry" => "Pubid::Iana::Identifiers::Registry",
|
|
27
|
-
}.freeze
|
|
28
|
-
|
|
29
|
-
# Identifiers::Registry merges its own block mapping `number` on top of
|
|
30
|
-
# this one. `number` is intentionally absent here: mapping it on the class
|
|
31
|
-
# the leaf inherits from would re-declare the parent's Components::Code
|
|
32
|
-
# attribute (see Identifiers::Registry).
|
|
33
|
-
key_value do
|
|
34
|
-
map "_type", to: :_type, polymorphic_map: IANA_TYPE_MAP
|
|
35
|
-
map "sub_registry", to: :sub_registry
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
# Publisher is always "IANA". A plain constant (not a `publisher` method)
|
|
39
|
-
# so it doesn't shadow the inherited lutaml `publisher` attribute, which
|
|
40
|
-
# would otherwise fail serialization type validation.
|
|
41
|
-
PUBLISHER = "IANA"
|
|
42
|
-
|
|
43
|
-
# Render-time flag stashed by #to_s; when false, the "IANA " token is
|
|
44
|
-
# dropped so callers can recover the bare index-key slug.
|
|
45
|
-
attr_reader :with_publisher
|
|
46
|
-
|
|
47
|
-
# The top-level registry slug. Derived from `number`, which is where it is
|
|
48
|
-
# stored — a plain method is safe because `registry` is no longer a lutaml
|
|
49
|
-
# attribute, so no generated accessor competes with it (the same shape as
|
|
50
|
-
# Pubid::Ietf::Identifiers::Bcp#series).
|
|
51
|
-
def registry
|
|
52
|
-
number
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# The rendered registry code, e.g. "_6lowpan-parameters/lowpan_nhc".
|
|
56
|
-
def code
|
|
57
|
-
sub_registry ? "#{registry}/#{sub_registry}" : registry
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Basic string representation. Delegates to the renderer. Always emits the
|
|
61
|
-
# "IANA " token (the authoritative printed form) unless with_publisher is
|
|
62
|
-
# false, in which case the bare slug is rendered.
|
|
63
|
-
def to_s(with_publisher: true, **opts)
|
|
64
|
-
@with_publisher = with_publisher
|
|
65
|
-
render(format: :human, **opts)
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# --- Machine-readable slug -------------------------------------------
|
|
69
|
-
# The shared MrString renderer composes publisher/type/number/... from the
|
|
70
|
-
# inherited attributes, none of which IANA populates: `publisher` is a
|
|
71
|
-
# constant rather than an attribute (see PUBLISHER above) and the builder
|
|
72
|
-
# sets no typed_stage. Without these two overrides every IANA identifier
|
|
73
|
-
# rendered the empty MR string, so all of them collided on `to_mr_string`
|
|
74
|
-
# and `to_slug` (issue #142) — and `to_slug` is used as a filename.
|
|
75
|
-
#
|
|
76
|
-
# Verified over the 3405 published relaton-data-iana rows: the resulting
|
|
77
|
-
# slugs are all distinct and stay inside the documented [a-z0-9._-] MR
|
|
78
|
-
# charset. Note that IANA slugs legitimately contain "_", which is MR's
|
|
79
|
-
# supplement separator, so an IANA MR is not re-parseable by
|
|
80
|
-
# Pubid::Parsers::MrString; uniqueness and filename-safety are what these
|
|
81
|
-
# buy, not MR round-tripping.
|
|
82
|
-
def mr_publisher
|
|
83
|
-
PUBLISHER.downcase
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def mr_number_with_part
|
|
87
|
-
[number, sub_registry].compact.join(".").downcase
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
# The guard below has to cover this surface too: without it a nil number
|
|
91
|
-
# renders the bare publisher token "iana" for every affected row, i.e. one
|
|
92
|
-
# filename shared by all of them.
|
|
93
|
-
def to_mr_string
|
|
94
|
-
require_number!
|
|
95
|
-
super
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
# The top-level slug moved from a `registry` key into `number` with no
|
|
99
|
-
# alias, so a row serialized before that change deserializes with a nil
|
|
100
|
-
# number and NO error: lutaml ignores unknown keys, and relaton's
|
|
101
|
-
# Index::FileIO#id_supported? skips its round-trip check for concrete
|
|
102
|
-
# subclasses (every IANA id is an Identifiers::Registry). Failing loudly
|
|
103
|
-
# at render time is the only thing that surfaces a stale index.
|
|
104
|
-
#
|
|
105
|
-
# It is called from all three identity surfaces — to_s (via Renderer),
|
|
106
|
-
# to_urn (via UrnGenerator) and to_mr_string — because guarding only one
|
|
107
|
-
# still lets every stale row collide on the other two ("urn:iana:",
|
|
108
|
-
# "iana"), which is the silent overwrite this whole change exists to
|
|
109
|
-
# prevent.
|
|
110
|
-
def require_number!
|
|
111
|
-
return unless number.nil? || number.to_s.empty?
|
|
112
|
-
|
|
113
|
-
raise ArgumentError,
|
|
114
|
-
"Cannot render #{self.class} with an empty number " \
|
|
115
|
-
"(a pre-`number` index row stored the registry slug under " \
|
|
116
|
-
"`registry`; regenerate the index)"
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
# from_hash is the shared polymorphic dispatch on Pubid::Identifier;
|
|
120
|
-
# IANA_TYPE_MAP remains as the key_value polymorphic_map.
|
|
121
|
-
|
|
122
|
-
# Parse an IANA identifier string into an identifier object
|
|
123
|
-
# @param identifier [String] The IANA identifier string to parse
|
|
124
|
-
# @return [Identifier] The appropriate identifier object
|
|
125
|
-
def self.parse(identifier)
|
|
126
|
-
unless identifier.is_a?(String)
|
|
127
|
-
raise Pubid::Errors::InvalidInputError,
|
|
128
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
132
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
parsed = Parser.parse(identifier)
|
|
136
|
-
Builder.build(parsed)
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
end
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iana
|
|
5
|
-
module Identifiers
|
|
6
|
-
# The sole IANA identifier type: a protocol registry (optionally with a
|
|
7
|
-
# sub-registry). Its class name yields the polymorphic `_type` tag
|
|
8
|
-
# "pubid:iana:registry".
|
|
9
|
-
#
|
|
10
|
-
# Examples:
|
|
11
|
-
# IANA _6lowpan-parameters
|
|
12
|
-
# IANA _6lowpan-parameters/lowpan_nhc
|
|
13
|
-
class Registry < Identifier
|
|
14
|
-
# The top-level registry slug ("_6lowpan-parameters"), and the index
|
|
15
|
-
# key: relaton-index bsearches on `id.root.number.to_s`, and every IANA
|
|
16
|
-
# identifier is its own root (the flavor has no wrapper or supplement
|
|
17
|
-
# types), so an empty key silently defeats the search for every row.
|
|
18
|
-
#
|
|
19
|
-
# An IANA identifier carries no numeric document number — digits only
|
|
20
|
-
# ever appear glued inside a slug token (`sip-parameters-13`,
|
|
21
|
-
# `idna-tables-11.0.0`), never as a separable component — so the slug
|
|
22
|
-
# itself is the key, exactly as an Internet-Draft's slug is
|
|
23
|
-
# (lib/pubid/ietf/identifiers/serialization.rb). Keying on the TOP-LEVEL
|
|
24
|
-
# slug rather than the full `registry/sub_registry` code means a
|
|
25
|
-
# registry and all of its sub-registries cluster into one bucket, the
|
|
26
|
-
# analogue of a draft clustering with its versions.
|
|
27
|
-
#
|
|
28
|
-
# WHY THIS IS DECLARED HERE AND NOT ON Pubid::Iana::Identifier:
|
|
29
|
-
# it redefines the parent ::Pubid::Identifier's
|
|
30
|
-
# `attribute :number, Components::Code` as a plain :string. Declaring
|
|
31
|
-
# that on a class the concrete type INHERITS from resolves against the
|
|
32
|
-
# parent definition nondeterministically under multi-flavor load — it
|
|
33
|
-
# passes an IANA-only run and can flip `root.number` to "" under the
|
|
34
|
-
# full suite (the IEEE/IETF lesson; see
|
|
35
|
-
# lib/pubid/ieee/identifiers/code_number.rb and CLAUDE.md). Declaring it
|
|
36
|
-
# directly on the leaf removes the ambiguity at the point of use.
|
|
37
|
-
# For the same reason, never define a `#number` *method* — it would
|
|
38
|
-
# collide with lutaml's generated accessor.
|
|
39
|
-
# spec/pubid/iana/root_number_spec.rb guards this and must run under the
|
|
40
|
-
# FULL suite to be meaningful.
|
|
41
|
-
attribute :number, :string
|
|
42
|
-
|
|
43
|
-
# Merged by lutaml with the base's key_value block, which maps `_type`
|
|
44
|
-
# and `sub_registry`. `registry` is deliberately NOT stored — it is the
|
|
45
|
-
# same string as `number`, and the base exposes it as a derived reader.
|
|
46
|
-
key_value do
|
|
47
|
-
map "number", to: :number
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# IANA registries carry no revision/stage lifecycle; a single published
|
|
51
|
-
# typed stage keeps parity with the other flavors' type registries.
|
|
52
|
-
TYPED_STAGES = [
|
|
53
|
-
Pubid::Components::TypedStage.new(
|
|
54
|
-
code: :pubiana,
|
|
55
|
-
stage_code: :published,
|
|
56
|
-
type_code: :iana,
|
|
57
|
-
abbr: ["IANA"],
|
|
58
|
-
name: "IANA Registry",
|
|
59
|
-
harmonized_stages: [],
|
|
60
|
-
),
|
|
61
|
-
].freeze
|
|
62
|
-
|
|
63
|
-
def self.type
|
|
64
|
-
{ key: :iana, web: :registry, title: "IANA Registry", short: "IANA" }
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
data/lib/pubid/iana/parser.rb
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "parslet"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Iana
|
|
7
|
-
# Parslet grammar for IANA registry identifiers.
|
|
8
|
-
#
|
|
9
|
-
# Accepts the authoritative printed form "IANA <slug>[/<sub-slug>]" as well
|
|
10
|
-
# as a bare index-key slug (no "IANA " prefix). The optional prefix is
|
|
11
|
-
# consumed and discarded — the renderer always re-emits it.
|
|
12
|
-
#
|
|
13
|
-
# Slugs use only [a-zA-Z0-9._-] and contain at most one "/", so a plain
|
|
14
|
-
# character-class repeat parses them; there is no ReDoS surface.
|
|
15
|
-
class Parser < ::Pubid::Parser::Grammar
|
|
16
|
-
# A single registry slug: letters, digits, dot, underscore, hyphen.
|
|
17
|
-
rule(:slug) { match['a-zA-Z0-9._\-'].repeat(1) }
|
|
18
|
-
|
|
19
|
-
# Optional publisher prefix. The trailing space is required, so a
|
|
20
|
-
# space-free slug never triggers it; PEG `.maybe` backtracks the whole
|
|
21
|
-
# sequence if the space is absent (e.g. a slug that happens to start
|
|
22
|
-
# "IANA...").
|
|
23
|
-
rule(:iana_prefix) { (str("IANA") >> str(" ")).maybe }
|
|
24
|
-
|
|
25
|
-
rule(:identifier) do
|
|
26
|
-
iana_prefix >>
|
|
27
|
-
slug.as(:registry) >>
|
|
28
|
-
(str("/") >> slug.as(:sub_registry)).maybe
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
rule(:root) { identifier }
|
|
32
|
-
|
|
33
|
-
def self.parse(input)
|
|
34
|
-
new.parse(input)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
data/lib/pubid/iana/renderer.rb
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iana
|
|
5
|
-
# Human-readable renderer for IANA registry identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces the authoritative printed form:
|
|
8
|
-
# "IANA _6lowpan-parameters"
|
|
9
|
-
# "IANA _6lowpan-parameters/lowpan_nhc"
|
|
10
|
-
#
|
|
11
|
-
# With `with_publisher: false` on the identifier it renders the bare
|
|
12
|
-
# index-key slug instead (no "IANA " token).
|
|
13
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
14
|
-
PUBLISHER = "IANA"
|
|
15
|
-
|
|
16
|
-
def render(**_opts)
|
|
17
|
-
id = @id
|
|
18
|
-
# A stale (pre-`number`) row must not render as a bare "IANA " or
|
|
19
|
-
# "IANA /lowpan_nhc"; see Identifier#require_number!.
|
|
20
|
-
id.require_number!
|
|
21
|
-
code = id.code
|
|
22
|
-
with_publisher?(id) ? "#{PUBLISHER} #{code}" : code
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
private
|
|
26
|
-
|
|
27
|
-
def with_publisher?(id)
|
|
28
|
-
id.with_publisher != false
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iana
|
|
5
|
-
# Emits `urn:iana:<registry>[:<sub_registry>]`. Slugs contain no ":"
|
|
6
|
-
# (charset is [a-zA-Z0-9._-]), so the two levels split unambiguously.
|
|
7
|
-
class UrnGenerator < Pubid::UrnGenerator::Base
|
|
8
|
-
def generate
|
|
9
|
-
# A stale (pre-`number`) row would otherwise emit the bare "urn:iana:"
|
|
10
|
-
# for every affected id; see Identifier#require_number!.
|
|
11
|
-
identifier.require_number!
|
|
12
|
-
# `number` holds the top-level registry slug (Identifiers::Registry).
|
|
13
|
-
parts = ["urn", "iana", identifier.number]
|
|
14
|
-
parts << identifier.sub_registry if identifier.sub_registry
|
|
15
|
-
parts.join(":")
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iana
|
|
5
|
-
# Parses IANA URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits `urn:iana:<registry>[:<sub_registry>]`; this rebuilds
|
|
8
|
-
# the bare slug and delegates to the flavor's text parser (which normalizes
|
|
9
|
-
# it back to the "IANA "-prefixed printed form).
|
|
10
|
-
#
|
|
11
|
-
# Examples:
|
|
12
|
-
# - urn:iana:calipso -> IANA calipso
|
|
13
|
-
# - urn:iana:_6lowpan-parameters:lowpan_nhc
|
|
14
|
-
# -> IANA _6lowpan-parameters/lowpan_nhc
|
|
15
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
16
|
-
def parse_urn(urn)
|
|
17
|
-
body = strip_namespace(urn)
|
|
18
|
-
registry, sub_registry = split_parts(body)
|
|
19
|
-
slug = sub_registry ? "#{registry}/#{sub_registry}" : registry
|
|
20
|
-
flavor_parse(slug)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
data/lib/pubid/iana.rb
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iana
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# Sole IANA publisher token (see the parser's optional `IANA ` prefix).
|
|
8
|
-
# IANA entries are protocol registries whose printed form always leads with
|
|
9
|
-
# the "IANA" token; routing relies on it since the raw slug carries no
|
|
10
|
-
# publisher.
|
|
11
|
-
PREFIXES = ["IANA"].freeze
|
|
12
|
-
|
|
13
|
-
autoload :Builder, "#{__dir__}/iana/builder"
|
|
14
|
-
autoload :Identifier, "#{__dir__}/iana/identifier"
|
|
15
|
-
autoload :Identifiers, "#{__dir__}/iana/identifiers"
|
|
16
|
-
autoload :Parser, "#{__dir__}/iana/parser"
|
|
17
|
-
autoload :Renderer, "#{__dir__}/iana/renderer"
|
|
18
|
-
autoload :UrnGenerator, "#{__dir__}/iana/urn_generator"
|
|
19
|
-
autoload :UrnParser, "#{__dir__}/iana/urn_parser"
|
|
20
|
-
|
|
21
|
-
# Parse an IANA identifier string
|
|
22
|
-
def self.parse(identifier)
|
|
23
|
-
Identifier.parse(identifier)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
27
|
-
Identifier.format_registry = FormatRegistry.new(parent: Identifier.format_registry)
|
|
28
|
-
Identifier.format_registry.register(:human, renderer: Iana::Renderer)
|
|
29
|
-
|
|
30
|
-
# Auto-discover all identifier types from the Identifiers namespace
|
|
31
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
32
|
-
def self.identifier_types
|
|
33
|
-
@identifier_types ||= Identifiers.constants
|
|
34
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
35
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
36
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# Build typed stage index from identifier types
|
|
40
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
41
|
-
def self.all_typed_stages
|
|
42
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
43
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
44
|
-
klass.const_get(:TYPED_STAGES)
|
|
45
|
-
else
|
|
46
|
-
[]
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Lookup: type code -> identifier class
|
|
52
|
-
# @param code [String, Symbol] the type key to find
|
|
53
|
-
# @return [Class, nil] the matching identifier class
|
|
54
|
-
def self.locate_type(code)
|
|
55
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# Lookup: abbreviation -> typed stage
|
|
59
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
60
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
61
|
-
def self.locate_stage(abbr)
|
|
62
|
-
abbr_str = abbr.to_s.upcase
|
|
63
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
# Register IANA flavor with the registry
|
|
69
|
-
Pubid::Registry.register(:iana, Pubid::Iana)
|
data/lib/pubid/idf/renderer.rb
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Idf
|
|
5
|
-
# Human-readable renderer for IDF identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "IDF 125:1988"
|
|
9
|
-
# "IDF/AMD 1:2023"
|
|
10
|
-
# "IDF 125:1988/AMD 1:2023"
|
|
11
|
-
#
|
|
12
|
-
# The renderer is registered as the `:human` format in the IDF format
|
|
13
|
-
# registry and invoked via `render(format: :human)`.
|
|
14
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
15
|
-
def render(context: nil, **opts)
|
|
16
|
-
id = @id
|
|
17
|
-
|
|
18
|
-
case id
|
|
19
|
-
when SupplementIdentifier
|
|
20
|
-
render_supplement(id, opts, context)
|
|
21
|
-
else
|
|
22
|
-
render_single(id, opts, context)
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def render_single(id, opts, context)
|
|
29
|
-
[
|
|
30
|
-
publisher_portion(id, context),
|
|
31
|
-
number_portion(id, opts, context),
|
|
32
|
-
].join
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def publisher_portion(id, context)
|
|
36
|
-
[
|
|
37
|
-
id.publisher.render(context:),
|
|
38
|
-
(id.typed_stage.abbreviation.empty? ? "" : "/#{id.typed_stage.abbreviation}"),
|
|
39
|
-
].join
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def number_portion(id, opts, context)
|
|
43
|
-
lang_single = opts[:lang_single] || false
|
|
44
|
-
|
|
45
|
-
[
|
|
46
|
-
(id.number ? " #{id.number}" : ""),
|
|
47
|
-
(id.part ? "-#{id.part}" : ""),
|
|
48
|
-
(id.subpart ? "-#{id.subpart}" : ""),
|
|
49
|
-
(id.stage_iteration ? ".#{id.stage_iteration.render(context:)}" : ""),
|
|
50
|
-
(id.date ? ":#{id.date.render(context:)}" : ""),
|
|
51
|
-
language_portion(id, lang_single: lang_single),
|
|
52
|
-
].join
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def language_portion(id, lang_single: false)
|
|
56
|
-
return "" unless id.languages&.any?
|
|
57
|
-
|
|
58
|
-
[
|
|
59
|
-
"(",
|
|
60
|
-
id.languages.map do |lang|
|
|
61
|
-
lang.to_s(lang_single: lang_single)
|
|
62
|
-
end.join(lang_single ? "/" : ","),
|
|
63
|
-
")",
|
|
64
|
-
].join
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def render_supplement(id, opts, context)
|
|
68
|
-
lang = opts[:lang] || :en
|
|
69
|
-
lang_single = opts[:lang_single] || false
|
|
70
|
-
with_edition = opts[:with_edition] || false
|
|
71
|
-
|
|
72
|
-
[
|
|
73
|
-
id.base.to_s(lang: lang, lang_single: lang_single,
|
|
74
|
-
with_edition: with_edition),
|
|
75
|
-
"/",
|
|
76
|
-
id.typed_stage.abbreviation,
|
|
77
|
-
" ",
|
|
78
|
-
id.number,
|
|
79
|
-
(id.date ? ":#{id.date.render(context:)}" : ""),
|
|
80
|
-
].join
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
data/lib/pubid/idf/urn_parser.rb
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Idf
|
|
5
|
-
# Parses IDF URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits: `urn:idf:{number}:{year}:` with a trailing empty
|
|
8
|
-
# field (a known quirk of the generator).
|
|
9
|
-
#
|
|
10
|
-
# Examples:
|
|
11
|
-
# - urn:idf:87:2019: → IDF 87:2019
|
|
12
|
-
# - urn:idf:100: → IDF 100
|
|
13
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
14
|
-
def parse_urn(urn)
|
|
15
|
-
body = strip_namespace(urn)
|
|
16
|
-
parts = split_parts(body).reject(&:empty?)
|
|
17
|
-
|
|
18
|
-
number, year = parts
|
|
19
|
-
text = "IDF #{number}"
|
|
20
|
-
text += ":#{year}" if year
|
|
21
|
-
flavor_parse(text)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
data/lib/pubid/iec/components.rb
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iec
|
|
5
|
-
module Components
|
|
6
|
-
autoload :Code, "#{__dir__}/components/code"
|
|
7
|
-
autoload :ConsolidatedAmendment, "#{__dir__}/components/consolidated_amendment"
|
|
8
|
-
autoload :Publisher, "#{__dir__}/components/publisher"
|
|
9
|
-
autoload :Sheet, "#{__dir__}/components/sheet"
|
|
10
|
-
autoload :TrfInfo, "#{__dir__}/components/trf_info"
|
|
11
|
-
autoload :VapSuffix, "#{__dir__}/components/vap_suffix"
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iec
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Technical Group identifier — identifies a committee rather than a
|
|
7
|
-
# publication. Covers:
|
|
8
|
-
#
|
|
9
|
-
# IEC TC 1 (Technical Committee)
|
|
10
|
-
# IEC PC 118 (Project Committee)
|
|
11
|
-
# ISO/IEC JTC 1 (Joint Technical Committee)
|
|
12
|
-
# ISO/IEC JPC 2 (Joint Project Committee)
|
|
13
|
-
# ISO/IEC JTC 1/SC 7 (Joint TC with Subcommittee)
|
|
14
|
-
# IEC SC 100A (Subcommittee with letter suffix)
|
|
15
|
-
# CIS/A (CISPR Subcommittee, bare form)
|
|
16
|
-
# CISPR (CISPR Committee, bare form)
|
|
17
|
-
class TechnicalGroup < Base
|
|
18
|
-
attribute :technical_committee, :string
|
|
19
|
-
attribute :subcommittee, :string
|
|
20
|
-
|
|
21
|
-
TYPED_STAGES = [].freeze
|
|
22
|
-
|
|
23
|
-
def self.type
|
|
24
|
-
{ key: :tg,
|
|
25
|
-
web: :technical_group, title: "Technical Group", short: "TG" }
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|