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,51 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Plateau
|
|
5
|
-
# Human-readable renderer for PLATEAU identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "PLATEAU Technical Report #01"
|
|
9
|
-
# "PLATEAU Handbook #00 第1.0版"
|
|
10
|
-
# "PLATEAU Handbook #01-1 Annex A"
|
|
11
|
-
#
|
|
12
|
-
# The renderer is registered as the `:human` format in the PLATEAU 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)
|
|
21
|
-
when Identifiers::Handbook
|
|
22
|
-
render_handbook(id)
|
|
23
|
-
when Identifiers::TechnicalReport
|
|
24
|
-
render_technical_report(id)
|
|
25
|
-
else
|
|
26
|
-
render_base(id)
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
def render_base(id)
|
|
33
|
-
"#{id.publisher} #{id.type_string} #{id.formatted_number}#{id.formatted_annex}"
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def render_technical_report(id)
|
|
37
|
-
"#{id.publisher} #{id.type_string} #{id.formatted_number}#{id.formatted_annex}"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def render_handbook(id)
|
|
41
|
-
result = "#{id.publisher} #{id.type_string} #{id.formatted_number}#{id.formatted_annex}"
|
|
42
|
-
result += " #{id.formatted_edition}" if id.edition
|
|
43
|
-
result
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def render_supplement(id)
|
|
47
|
-
"#{id.base} #{id.supplement_string}"
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Plateau
|
|
5
|
-
# Parses Plateau URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits:
|
|
8
|
-
# urn:plateau:{type}:{number}[:{annex}]
|
|
9
|
-
#
|
|
10
|
-
# type is one of: handbook, tr (technical report), an (annex), or another
|
|
11
|
-
# lowercase type string. Annex is a zero-padded 2-digit string when present.
|
|
12
|
-
#
|
|
13
|
-
# Examples:
|
|
14
|
-
# - urn:plateau:handbook:00 → PLATEAU Handbook #00
|
|
15
|
-
# - urn:plateau:tr:01 → PLATEAU Technical Report #01
|
|
16
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
17
|
-
TYPE_MAP = {
|
|
18
|
-
"handbook" => "Handbook",
|
|
19
|
-
"tr" => "Technical Report",
|
|
20
|
-
"an" => "Annex",
|
|
21
|
-
}.freeze
|
|
22
|
-
|
|
23
|
-
def parse_urn(urn)
|
|
24
|
-
body = strip_namespace(urn)
|
|
25
|
-
parts = split_parts(body)
|
|
26
|
-
|
|
27
|
-
type_token = parts.fetch(0)
|
|
28
|
-
number = parts.fetch(1)
|
|
29
|
-
annex = parts[2]
|
|
30
|
-
|
|
31
|
-
text = "PLATEAU #{display_type(type_token)} ##{number}"
|
|
32
|
-
text += "-#{annex}" if annex
|
|
33
|
-
flavor_parse(text)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
private
|
|
37
|
-
|
|
38
|
-
def display_type(token)
|
|
39
|
-
TYPE_MAP.fetch(token) { token.capitalize }
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
# Mixin providing the uniform, static +prefixes+ class method that every
|
|
5
|
-
# registered flavor exposes. relaton uses this to build a global prefix
|
|
6
|
-
# register that routes a printed reference string (e.g. +"DD 1234"+,
|
|
7
|
-
# +"ISO/IEC 8802"+) to the flavor(s) that own it.
|
|
8
|
-
#
|
|
9
|
-
# A flavor +extend+s this module and defines a frozen +PREFIXES+ array holding
|
|
10
|
-
# only *its own* leading tokens. Joint / co-publication tokens are injected
|
|
11
|
-
# centrally from {Pubid::JOINT_PREFIXES} so that a co-published prefix
|
|
12
|
-
# (e.g. +"ISO/IEC"+) is listed symmetrically by every co-publisher without
|
|
13
|
-
# being duplicated by hand in two files.
|
|
14
|
-
#
|
|
15
|
-
# == Inclusion policy
|
|
16
|
-
# +prefixes+ returns the set of *leading identifier prefix tokens* — the
|
|
17
|
-
# tokens a printed identifier can start with such that the string belongs to
|
|
18
|
-
# this SDO. Concretely it INCLUDES:
|
|
19
|
-
# * publisher prefixes (e.g. +ISO+, +IEC+, +NIST+, +NBS+, +BS+, +BSI+);
|
|
20
|
-
# * leading series/type tokens that can *begin* a printed reference on their
|
|
21
|
-
# own (e.g. BSI +DD+/+PD+, NIST +FIPS+/+SP+);
|
|
22
|
-
# * joint / co-publication forms (e.g. +ISO/IEC+, +ISO/IEC/IEEE+).
|
|
23
|
-
# It EXCLUDES:
|
|
24
|
-
# * pure sub-series that never appear without a publisher prefix;
|
|
25
|
-
# * dangerously-ambiguous single letters (e.g. BSI aerospace +A+/+B+/+C+),
|
|
26
|
-
# which would cause false routing.
|
|
27
|
-
module PrefixesSupport
|
|
28
|
-
# The static set of leading prefix tokens this flavor recognizes.
|
|
29
|
-
#
|
|
30
|
-
# Static: callable without parsing any identifier string. Strings are
|
|
31
|
-
# returned in canonical case exactly as printed (e.g. +"BS EN ISO"+,
|
|
32
|
-
# +"ISO/IEC"+); consumers fold case themselves.
|
|
33
|
-
#
|
|
34
|
-
# @return [Array<String>] frozen, de-duplicated list of prefix tokens
|
|
35
|
-
def prefixes
|
|
36
|
-
own = const_defined?(:PREFIXES) ? const_get(:PREFIXES) : []
|
|
37
|
-
joint = Pubid::JOINT_PREFIXES.fetch(prefix_flavor_key, [])
|
|
38
|
-
(own + joint).uniq.freeze
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# The registry key for this flavor, derived from the module name
|
|
42
|
-
# (e.g. +Pubid::CenCenelec+ => +:cen_cenelec+). Used to look this flavor up
|
|
43
|
-
# in {Pubid::JOINT_PREFIXES} and to label it in {Pubid.prefix_flavors}.
|
|
44
|
-
#
|
|
45
|
-
# @return [Symbol]
|
|
46
|
-
def prefix_flavor_key
|
|
47
|
-
name.split("::").last
|
|
48
|
-
.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase.to_sym
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Renderers
|
|
5
|
-
# Adds semantic <span class="..."> markers to an already-rendered
|
|
6
|
-
# identifier string.
|
|
7
|
-
#
|
|
8
|
-
# In pubid 1.x annotation was applied in ONE place — `prerender_params`
|
|
9
|
-
# wrapped every value in the param hash — so all 40-odd flavors got it for
|
|
10
|
-
# free. pubid 2 replaced that hash with typed components and per-flavor
|
|
11
|
-
# renderers, and the annotation went with it: `Renderers::Base#annotate`
|
|
12
|
-
# exists, but only the HumanReadable family calls it. All 39 flavor
|
|
13
|
-
# renderers receive `context.annotated` and ignore it, so
|
|
14
|
-
# `to_s(annotated: true)` returned plain text for every flavor but ISO.
|
|
15
|
-
#
|
|
16
|
-
# Re-annotating inside 39 renderers would mean 39 chances to drift. This
|
|
17
|
-
# class recovers the markup from the OUTSIDE instead: it asks the
|
|
18
|
-
# identifier for its own component values and wraps each one where it
|
|
19
|
-
# appears in the rendered string. That is one implementation, and a flavor
|
|
20
|
-
# added tomorrow is covered without touching its renderer.
|
|
21
|
-
#
|
|
22
|
-
# It is a fallback, not a replacement. `Identifier#render` uses it only
|
|
23
|
-
# when the renderer produced no span of its own, so ISO's exact,
|
|
24
|
-
# render-time placement still wins.
|
|
25
|
-
#
|
|
26
|
-
# Deliberate limits:
|
|
27
|
-
#
|
|
28
|
-
# * A token that does not appear verbatim in the output is skipped. A
|
|
29
|
-
# renderer may transform a value (abbreviate it, change its case), and a
|
|
30
|
-
# missing span is a far better outcome than a wrong one or a crash.
|
|
31
|
-
# * Matching walks left to right behind a cursor, so a later token can
|
|
32
|
-
# never match text an earlier one already claimed — that is what stops
|
|
33
|
-
# the part "1" of `ISO 1234-1` from matching inside "1234".
|
|
34
|
-
class Annotator
|
|
35
|
-
# Semantic class for each token, in the order tokens appear in a printed
|
|
36
|
-
# identifier. Order matters: it is the sequence the cursor walks.
|
|
37
|
-
TOKENS = [
|
|
38
|
-
[:publisher, "publisher"],
|
|
39
|
-
[:copublishers, "publisher"],
|
|
40
|
-
%i[typed_stage typed_stage_css],
|
|
41
|
-
[:type, "doctype"],
|
|
42
|
-
[:stage, "stage"],
|
|
43
|
-
[:number, "docnumber"],
|
|
44
|
-
[:part, "part"],
|
|
45
|
-
[:subpart, "part"],
|
|
46
|
-
[:stage_iteration, "iteration"],
|
|
47
|
-
[:year, "year"],
|
|
48
|
-
[:edition, "edition"],
|
|
49
|
-
[:languages, "language"],
|
|
50
|
-
].freeze
|
|
51
|
-
|
|
52
|
-
# Characters that may not sit directly against a match, so a token never
|
|
53
|
-
# binds to the middle of a longer run of the same character class.
|
|
54
|
-
WORD_CHAR = /[A-Za-z0-9]/
|
|
55
|
-
|
|
56
|
-
# How deep to follow nested identifiers. A wrapper around a wrapper is
|
|
57
|
-
# real (BSI adopts a CEN prestandard that adopts an ISO standard); four
|
|
58
|
-
# levels is past anything the corpus holds, and the cap is here so a
|
|
59
|
-
# cyclic `base` cannot hang a rendering call.
|
|
60
|
-
MAX_NESTING = 4
|
|
61
|
-
|
|
62
|
-
def initialize(identifier, context = nil)
|
|
63
|
-
@id = identifier
|
|
64
|
-
@context = context
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# @param rendered [String] the plain rendering of {@id}
|
|
68
|
-
# @return [String] the same string with semantic spans inserted
|
|
69
|
-
def annotate(rendered)
|
|
70
|
-
return rendered unless rendered.is_a?(String) && !rendered.empty?
|
|
71
|
-
|
|
72
|
-
cursor = 0
|
|
73
|
-
result = +""
|
|
74
|
-
|
|
75
|
-
ordered_tokens(rendered).each do |text, css_class|
|
|
76
|
-
index = find_token(rendered, text, cursor)
|
|
77
|
-
next if index.nil?
|
|
78
|
-
|
|
79
|
-
result << rendered[cursor...index]
|
|
80
|
-
result << %(<span class="#{css_class}">#{text}</span>)
|
|
81
|
-
cursor = index + text.length
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
result << rendered[cursor..]
|
|
85
|
-
result
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
private
|
|
89
|
-
|
|
90
|
-
# Tokens sorted by where they actually appear, not by the order
|
|
91
|
-
# {TOKENS} lists them.
|
|
92
|
-
#
|
|
93
|
-
# Flavors disagree about layout: ISO prints the number before the type
|
|
94
|
-
# ("ISO/IEC TR 2131"), CCSDS prints it after ("CCSDS 121.0-B-2"). Walking
|
|
95
|
-
# in declaration order pushed the cursor past the number for CCSDS, so
|
|
96
|
-
# "121" was never annotated. Sorting by first occurrence makes the walk
|
|
97
|
-
# follow the printed identifier instead of a fixed idea of one.
|
|
98
|
-
def ordered_tokens(rendered)
|
|
99
|
-
tokens = []
|
|
100
|
-
each_token { |text, css_class| tokens << [text, css_class] }
|
|
101
|
-
|
|
102
|
-
decorated = tokens.each_with_index.map do |token, i|
|
|
103
|
-
position = find_token(rendered, token.first, 0) || rendered.length
|
|
104
|
-
[position, i, token]
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
decorated.sort_by { |position, i, _| [position, i] }.map(&:last)
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
# Yields [text, css_class] for every annotatable token this identifier
|
|
111
|
-
# actually carries, then every one its nested identifiers carry.
|
|
112
|
-
def each_token(&)
|
|
113
|
-
emit_tokens(@id, 0, &)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# A wrapper — an adoption, a supplement, a bundle — carries no number of
|
|
117
|
-
# its own and prints the document it wraps, so the annotatable tokens in
|
|
118
|
-
# its string belong to `base`. Reading only the wrapper's own attributes
|
|
119
|
-
# is why every CSA container and CIE's supplement rendered plain while
|
|
120
|
-
# accepting the flag.
|
|
121
|
-
#
|
|
122
|
-
# Order does not matter here: `ordered_tokens` sorts by first occurrence,
|
|
123
|
-
# so a nested token lands where it actually appears in the string.
|
|
124
|
-
def emit_tokens(id, depth, &)
|
|
125
|
-
return if depth > MAX_NESTING
|
|
126
|
-
|
|
127
|
-
tokens_for(id).each do |attr_name, css_class|
|
|
128
|
-
Array(token_values(id, attr_name)).each do |value|
|
|
129
|
-
text = token_text(value)
|
|
130
|
-
next if text.nil? || text.empty?
|
|
131
|
-
|
|
132
|
-
yield text, resolve_class(css_class, value)
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
nested_identifiers(id).each { |nested| emit_tokens(nested, depth + 1, &) }
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
# {TOKENS} unless the identifier names more of its own — see
|
|
140
|
-
# `Pubid::Identifier#annotation_tokens`.
|
|
141
|
-
def tokens_for(id)
|
|
142
|
-
id.respond_to?(:annotation_tokens) ? id.annotation_tokens : TOKENS
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
# The identifiers this one wraps, under any of the four names the gem
|
|
146
|
-
# uses: `base` (the uniform parent accessor), the `ids` / `identifiers`
|
|
147
|
-
# collections that bundles and consolidated identifiers hold instead, and
|
|
148
|
-
# CSA `Bundled`'s `bundled_with` — which holds the amendments a
|
|
149
|
-
# consolidation prints, and whose values it composes into the string from
|
|
150
|
-
# their components rather than from their own `to_s`.
|
|
151
|
-
def nested_identifiers(id)
|
|
152
|
-
%i[base ids identifiers bundled_with].flat_map do |name|
|
|
153
|
-
next [] unless id.respond_to?(name)
|
|
154
|
-
|
|
155
|
-
begin
|
|
156
|
-
Array(id.public_send(name))
|
|
157
|
-
rescue StandardError
|
|
158
|
-
[]
|
|
159
|
-
end
|
|
160
|
-
end.grep(::Pubid::Identifier)
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
def token_values(id, attr_name)
|
|
164
|
-
return nil unless id.respond_to?(attr_name)
|
|
165
|
-
|
|
166
|
-
id.public_send(attr_name)
|
|
167
|
-
rescue StandardError
|
|
168
|
-
# A derived reader may assume state a partial identifier lacks. A
|
|
169
|
-
# missing span is not worth an exception on a rendering path.
|
|
170
|
-
nil
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
# The printed form of one component. Components render themselves through
|
|
174
|
-
# the context; a bare scalar is already its own text.
|
|
175
|
-
def token_text(value)
|
|
176
|
-
return nil if value.nil?
|
|
177
|
-
|
|
178
|
-
text = if value.respond_to?(:render)
|
|
179
|
-
value.render(context: @context)
|
|
180
|
-
else
|
|
181
|
-
value
|
|
182
|
-
end
|
|
183
|
-
text.to_s.strip
|
|
184
|
-
rescue StandardError
|
|
185
|
-
nil
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
def resolve_class(css_class, value)
|
|
189
|
-
return css_class unless css_class == :typed_stage_css
|
|
190
|
-
|
|
191
|
-
TypedStageClass.for(value)
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
# First occurrence of +text+ at or after +cursor+ that is not embedded in
|
|
195
|
-
# a longer word — so "1" matches the part in "ISO 1234-1", never the "1"
|
|
196
|
-
# inside "1234".
|
|
197
|
-
def find_token(rendered, text, cursor)
|
|
198
|
-
at = cursor
|
|
199
|
-
while (index = rendered.index(text, at))
|
|
200
|
-
return index if standalone?(rendered, index, text.length)
|
|
201
|
-
|
|
202
|
-
at = index + 1
|
|
203
|
-
end
|
|
204
|
-
nil
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
def standalone?(rendered, index, length)
|
|
208
|
-
before = index.zero? ? nil : rendered[index - 1]
|
|
209
|
-
after = rendered[index + length]
|
|
210
|
-
|
|
211
|
-
!WORD_CHAR.match?(before.to_s) && !WORD_CHAR.match?(after.to_s)
|
|
212
|
-
end
|
|
213
|
-
|
|
214
|
-
# The typed-stage class depends on the stage's type code, the same
|
|
215
|
-
# mapping `Renderers::Base#typed_stage_css` applies. Kept here rather
|
|
216
|
-
# than reached for through a private method on another object.
|
|
217
|
-
module TypedStageClass
|
|
218
|
-
MAP = {
|
|
219
|
-
"amd" => "amendment",
|
|
220
|
-
"cor" => "corrigendum",
|
|
221
|
-
"add" => "addendum",
|
|
222
|
-
}.freeze
|
|
223
|
-
|
|
224
|
-
def self.for(typed_stage)
|
|
225
|
-
code = typed_stage.respond_to?(:type_code) ? typed_stage.type_code.to_s : ""
|
|
226
|
-
return "stage" if code.empty? || code == "is"
|
|
227
|
-
|
|
228
|
-
MAP[code] || "doctype"
|
|
229
|
-
end
|
|
230
|
-
end
|
|
231
|
-
end
|
|
232
|
-
end
|
|
233
|
-
end
|
data/lib/pubid/sae/renderer.rb
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Sae
|
|
5
|
-
# Human-readable renderer for SAE identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "SAE AS5553"
|
|
9
|
-
# "SAE ARP4754A"
|
|
10
|
-
# "SAE AMS2475:2023"
|
|
11
|
-
#
|
|
12
|
-
# The renderer is registered as the +:human+ format in the SAE 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
|
-
parts = []
|
|
19
|
-
|
|
20
|
-
# Publisher and type
|
|
21
|
-
parts << id.publisher if id.publisher
|
|
22
|
-
parts << id.type.to_s if id.type
|
|
23
|
-
|
|
24
|
-
# Number
|
|
25
|
-
parts << id.number.to_s if id.number
|
|
26
|
-
|
|
27
|
-
result = parts.join(" ")
|
|
28
|
-
|
|
29
|
-
# Date
|
|
30
|
-
result += ":#{id.date.render(context:)}" if id.date
|
|
31
|
-
|
|
32
|
-
result
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
data/lib/pubid/sae/urn_parser.rb
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Sae
|
|
5
|
-
# Parses SAE URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits:
|
|
8
|
-
# urn:sae:{type|std}:{number}:{year}
|
|
9
|
-
# where slot[1] is overwritten with the publisher string when a publisher
|
|
10
|
-
# is set. The common single-publisher case keeps slot[1] = "sae".
|
|
11
|
-
#
|
|
12
|
-
# Examples:
|
|
13
|
-
# - urn:sae:j:300:2019 → SAE J300:2019
|
|
14
|
-
# - urn:sae:air:500 → SAE AIR500
|
|
15
|
-
# - urn:sae:ams:5000:2020 → SAE AMS5000:2020
|
|
16
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
17
|
-
def parse_urn(urn)
|
|
18
|
-
body = strip_namespace(urn)
|
|
19
|
-
parts = split_parts(body)
|
|
20
|
-
|
|
21
|
-
type_token, number, year = parts
|
|
22
|
-
text = build_text(type_token, number, year)
|
|
23
|
-
flavor_parse(text)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
private
|
|
27
|
-
|
|
28
|
-
def build_text(type_token, number, year)
|
|
29
|
-
head = type_token == "std" ? "" : type_token.upcase
|
|
30
|
-
text = "SAE #{head}#{number}"
|
|
31
|
-
text += ":#{year}" if year
|
|
32
|
-
text
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
data/lib/pubid/tgpp/builder.rb
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Tgpp
|
|
5
|
-
class Builder
|
|
6
|
-
def self.build(parsed_data)
|
|
7
|
-
new.build(parsed_data)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def build(data)
|
|
11
|
-
identifier_class(data[:type]).new(
|
|
12
|
-
number: data[:number].to_s,
|
|
13
|
-
suffix: data[:suffix]&.to_s,
|
|
14
|
-
parts: extract_part_strings(data[:parts]),
|
|
15
|
-
release: data[:release]&.to_s,
|
|
16
|
-
version: data[:version]&.to_s,
|
|
17
|
-
)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
def identifier_class(type)
|
|
23
|
-
if type.to_s == "TR"
|
|
24
|
-
Identifiers::TechnicalReport
|
|
25
|
-
else
|
|
26
|
-
Identifiers::TechnicalSpecification
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# parts_data is an array of `{ part: "1" }` hashes (or a single hash for a
|
|
31
|
-
# one-level part); return the part numbers as strings.
|
|
32
|
-
def extract_part_strings(parts_data)
|
|
33
|
-
case parts_data
|
|
34
|
-
when Array then parts_data.filter_map { |h| h[:part]&.to_s }
|
|
35
|
-
when Hash then [parts_data[:part]&.to_s].compact
|
|
36
|
-
else []
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Tgpp
|
|
5
|
-
# Base class for every 3GPP identifier AND the flavor's parse entry point —
|
|
6
|
-
# mirrors Pubid::Jis::Identifier. Concrete identifiers under
|
|
7
|
-
# Pubid::Tgpp::Identifiers descend from this class, so a parsed 3GPP id is
|
|
8
|
-
# an instance of Pubid::Tgpp::Identifier.
|
|
9
|
-
class Identifier < ::Pubid::Identifier
|
|
10
|
-
# The dotted core (e.g. "23.207") kept as a string to preserve leading
|
|
11
|
-
# zeros. `number` overrides the base Components::Code attribute.
|
|
12
|
-
attribute :number, :string
|
|
13
|
-
# Optional letter suffix directly after the number: "U", "dcs", "ext"…
|
|
14
|
-
attribute :suffix, :string
|
|
15
|
-
# 1–2 hyphen parts (e.g. "26.171-1", "29.198-04-1"); strings preserve any
|
|
16
|
-
# zero-padding.
|
|
17
|
-
# `initialize_empty` makes a part-less identifier hold `[]` on BOTH
|
|
18
|
-
# construction paths: Builder always passes an array, but the serialized
|
|
19
|
-
# hash carries no `parts` key, so from_hash used to leave it nil and the
|
|
20
|
-
# two compared unequal — which silently broke `#matches?` (and so every
|
|
21
|
-
# part-less relaton index lookup). It does not change the serialized
|
|
22
|
-
# shape: lutaml omits an empty collection either way. See CLAUDE.md.
|
|
23
|
-
attribute :parts, :string, collection: true, initialize_empty: true
|
|
24
|
-
# Raw release token, stored verbatim: "REL-4", "Ph1", "UMTS",
|
|
25
|
-
# "Release 2000".
|
|
26
|
-
attribute :release, :string
|
|
27
|
-
# Three-part version string, e.g. "2.0.0".
|
|
28
|
-
attribute :version, :string
|
|
29
|
-
|
|
30
|
-
# Polymorphic type map for lutaml::Model key_value (de)serialization.
|
|
31
|
-
# Keys are the `pubid:3gpp:…` names produced by polymorphic_name (below).
|
|
32
|
-
TGPP_TYPE_MAP = {
|
|
33
|
-
"pubid:3gpp:technical-report" =>
|
|
34
|
-
"Pubid::Tgpp::Identifiers::TechnicalReport",
|
|
35
|
-
"pubid:3gpp:technical-specification" =>
|
|
36
|
-
"Pubid::Tgpp::Identifiers::TechnicalSpecification",
|
|
37
|
-
}.freeze
|
|
38
|
-
|
|
39
|
-
key_value do
|
|
40
|
-
map "_type", to: :_type, polymorphic_map: TGPP_TYPE_MAP
|
|
41
|
-
map "number", to: :number
|
|
42
|
-
map "suffix", to: :suffix
|
|
43
|
-
map "parts", to: :parts
|
|
44
|
-
map "release", to: :release
|
|
45
|
-
map "version", to: :version
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Publisher token. A plain constant (not a `publisher` method) so it does
|
|
49
|
-
# not shadow the inherited lutaml `publisher` attribute.
|
|
50
|
-
PUBLISHER = "3GPP"
|
|
51
|
-
|
|
52
|
-
# The auto-derived polymorphic name would be "pubid:tgpp:…" (from the
|
|
53
|
-
# module constant). Force the "3gpp" segment so the `_type` tag matches
|
|
54
|
-
# the relaton flavor name and TGPP_TYPE_MAP.
|
|
55
|
-
def self.polymorphic_name
|
|
56
|
-
super&.sub(/\Apubid:tgpp:/, "pubid:3gpp:")
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
# Rendering flag: whether to prefix the string with "3GPP ". Transient
|
|
60
|
-
# (not serialized). #to_s sets it, renders, then resets it to false in an
|
|
61
|
-
# ensure block, so a subsequent bare #render defaults to no publisher and
|
|
62
|
-
# the flag never leaks past the to_s call that set it.
|
|
63
|
-
attr_reader :with_publisher
|
|
64
|
-
|
|
65
|
-
# The rendered document code, e.g. "29.198-04-1" (number+suffix+parts).
|
|
66
|
-
def code
|
|
67
|
-
result = "#{number}#{suffix}"
|
|
68
|
-
result += parts.map { |p| "-#{p}" }.join if parts&.any?
|
|
69
|
-
result
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# Basic string representation. Delegates to the :human renderer. Default
|
|
73
|
-
# omits the "3GPP " publisher token (matches the relaton index id);
|
|
74
|
-
# `to_s(with_publisher: true)` emits the printed "3GPP TS …" form.
|
|
75
|
-
def to_s(with_publisher: false, **opts)
|
|
76
|
-
@with_publisher = with_publisher
|
|
77
|
-
render(format: :human, **opts)
|
|
78
|
-
ensure
|
|
79
|
-
@with_publisher = false
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
# Parse a 3GPP identifier string into an identifier object.
|
|
83
|
-
#
|
|
84
|
-
# Let Parslet::ParseFailed propagate on a bad reference (matching ISO and
|
|
85
|
-
# ETSI), so relaton-cli's `rescue Parslet::ParseFailed` fetch handler
|
|
86
|
-
# catches it instead of a bare RuntimeError. The length guard keeps its
|
|
87
|
-
# ArgumentError — that is a different failure (input too long, not
|
|
88
|
-
# unparseable) and it is the ReDoS barrier.
|
|
89
|
-
#
|
|
90
|
-
# @param identifier [String] The 3GPP identifier string to parse
|
|
91
|
-
# @return [Identifier] The appropriate identifier object
|
|
92
|
-
def self.parse(identifier)
|
|
93
|
-
unless identifier.is_a?(String)
|
|
94
|
-
raise Pubid::Errors::InvalidInputError,
|
|
95
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
99
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
parsed = Parser.parse(identifier)
|
|
103
|
-
Builder.build(parsed)
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Tgpp
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Technical Report identifier type.
|
|
7
|
-
# Format: [3GPP ]TR NN.NNN[suffix][-part…][:<release>][/<version>]
|
|
8
|
-
# Example: TR 00.01U:UMTS/3.0.0, or the partial "TR 00.01U".
|
|
9
|
-
class TechnicalReport < Pubid::Tgpp::Identifier
|
|
10
|
-
TYPED_STAGES = [
|
|
11
|
-
Pubid::Components::TypedStage.new(
|
|
12
|
-
code: :tr,
|
|
13
|
-
stage_code: :published,
|
|
14
|
-
type_code: :tr,
|
|
15
|
-
abbr: ["TR"],
|
|
16
|
-
name: "Technical Report",
|
|
17
|
-
harmonized_stages: [],
|
|
18
|
-
),
|
|
19
|
-
].freeze
|
|
20
|
-
|
|
21
|
-
def self.type
|
|
22
|
-
{ key: :tr,
|
|
23
|
-
web: :technical_report, title: "Technical Report", short: "TR" }
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def type_prefix
|
|
27
|
-
"TR"
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Tgpp
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Technical Specification identifier type.
|
|
7
|
-
# Format: [3GPP ]TS NN.NNN[suffix][-part…][:<release>][/<version>]
|
|
8
|
-
# Example: TS 23.207:REL-4/2.0.0, or the partial "TS 23.207".
|
|
9
|
-
class TechnicalSpecification < Pubid::Tgpp::Identifier
|
|
10
|
-
TYPED_STAGES = [
|
|
11
|
-
Pubid::Components::TypedStage.new(
|
|
12
|
-
code: :ts,
|
|
13
|
-
stage_code: :published,
|
|
14
|
-
type_code: :ts,
|
|
15
|
-
abbr: ["TS"],
|
|
16
|
-
name: "Technical Specification",
|
|
17
|
-
harmonized_stages: [],
|
|
18
|
-
),
|
|
19
|
-
].freeze
|
|
20
|
-
|
|
21
|
-
def self.type
|
|
22
|
-
{ key: :ts,
|
|
23
|
-
web: :technical_specification,
|
|
24
|
-
title: "Technical Specification", short: "TS" }
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def type_prefix
|
|
28
|
-
"TS"
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Tgpp
|
|
5
|
-
module Identifiers
|
|
6
|
-
autoload :TechnicalReport, "#{__dir__}/identifiers/technical_report"
|
|
7
|
-
autoload :TechnicalSpecification,
|
|
8
|
-
"#{__dir__}/identifiers/technical_specification"
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|