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
|
@@ -5,6 +5,7 @@ module Pubid
|
|
|
5
5
|
module Identifiers
|
|
6
6
|
autoload :AddendaPackage, "#{__dir__}/identifiers/addenda_package"
|
|
7
7
|
autoload :Addendum, "#{__dir__}/identifiers/addendum"
|
|
8
|
+
autoload :Base, "#{__dir__}/identifiers/base"
|
|
8
9
|
autoload :CombinedAddenda, "#{__dir__}/identifiers/combined_addenda"
|
|
9
10
|
autoload :Errata, "#{__dir__}/identifiers/errata"
|
|
10
11
|
autoload :Guideline, "#{__dir__}/identifiers/guideline"
|
data/lib/pubid/ashrae/parser.rb
CHANGED
|
@@ -6,7 +6,7 @@ module Pubid
|
|
|
6
6
|
module Ashrae
|
|
7
7
|
# Parser class for ASHRAE identifiers
|
|
8
8
|
# Single Responsibility: Parsing ASHRAE identifier syntax
|
|
9
|
-
class Parser < ::
|
|
9
|
+
class Parser < Parslet::Parser
|
|
10
10
|
# Basic building blocks
|
|
11
11
|
rule(:space) { str(" ") }
|
|
12
12
|
rule(:space?) { space.maybe }
|
|
@@ -54,25 +54,15 @@ module Pubid
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
# Code with year pattern (e.g., 34-2024, 62.1-2022, 90A-2010) - used when type is missing
|
|
57
|
-
#
|
|
58
|
-
# The code portion MUST be captured with `.as(:code)`. Without it the
|
|
59
|
-
# digits were matched and then discarded — only the year was named — so
|
|
60
|
-
# every identifier reaching this rule lost its document number: 48 corpus
|
|
61
|
-
# ids rendered as "ANSI/ASHRAE Addendum a to ASHRAE Standard -2024",
|
|
62
|
-
# number gone and a dangling dash left behind. Builder#extract_base_attributes
|
|
63
|
-
# already read `code_with_year[:code]`; it was waiting for a value the
|
|
64
|
-
# grammar never produced.
|
|
65
57
|
rule(:code_with_year) do
|
|
66
58
|
(
|
|
59
|
+
digits >> # First part (e.g., 34, 62)
|
|
60
|
+
(dot >> digits).repeat(0, 2) >> # Optional dotted parts (e.g., .1)
|
|
61
|
+
# Special pattern for codes like "90A,B,C-2010"
|
|
67
62
|
(
|
|
68
|
-
|
|
69
|
-
(
|
|
70
|
-
|
|
71
|
-
(
|
|
72
|
-
letter >> # Single letter after digits
|
|
73
|
-
(comma >> letter).repeat(0, 10) # Optional comma-separated letters
|
|
74
|
-
).maybe
|
|
75
|
-
).as(:code) >>
|
|
63
|
+
letter >> # Single letter after digits
|
|
64
|
+
(comma >> letter).repeat(0, 10) # Optional comma-separated letters
|
|
65
|
+
).maybe >>
|
|
76
66
|
space?.maybe >> dash >>
|
|
77
67
|
year_digits.as(:year)
|
|
78
68
|
).as(:code_with_year)
|
|
@@ -176,7 +166,7 @@ module Pubid
|
|
|
176
166
|
(space >> additional_copublisher).maybe >>
|
|
177
167
|
suffix.maybe >>
|
|
178
168
|
reaffirmed.maybe
|
|
179
|
-
).as(:
|
|
169
|
+
).as(:base_identifier) >>
|
|
180
170
|
space >>
|
|
181
171
|
str("Errata").as(:errata_keyword) >>
|
|
182
172
|
(
|
|
@@ -198,7 +188,7 @@ module Pubid
|
|
|
198
188
|
(space >> additional_copublisher).maybe >>
|
|
199
189
|
suffix.maybe >>
|
|
200
190
|
reaffirmed.maybe
|
|
201
|
-
).as(:
|
|
191
|
+
).as(:base_identifier) >>
|
|
202
192
|
space >>
|
|
203
193
|
str("Errata").as(:errata_keyword) >>
|
|
204
194
|
(
|
|
@@ -217,7 +207,7 @@ module Pubid
|
|
|
217
207
|
(space >> additional_copublisher).maybe >>
|
|
218
208
|
suffix.maybe >>
|
|
219
209
|
reaffirmed.maybe
|
|
220
|
-
).as(:
|
|
210
|
+
).as(:base_identifier) >>
|
|
221
211
|
space >>
|
|
222
212
|
str("Errata").as(:errata_keyword) >>
|
|
223
213
|
errata_date.maybe >>
|
|
@@ -229,7 +219,7 @@ module Pubid
|
|
|
229
219
|
rule(:interpretation_identifier) do
|
|
230
220
|
str("Interpretations") >> space >>
|
|
231
221
|
str("for") >> space >>
|
|
232
|
-
(type.as(:type) >> space >> code >> (dash >> year_digits.as(:year)).maybe).as(:
|
|
222
|
+
(type.as(:type) >> space >> code >> (dash >> year_digits.as(:year)).maybe).as(:base_identifier)
|
|
233
223
|
end
|
|
234
224
|
|
|
235
225
|
# Combined Addenda pattern (multiple addendums grouped together)
|
|
@@ -617,12 +607,9 @@ module Pubid
|
|
|
617
607
|
year_first_addenda_package_identifier |
|
|
618
608
|
addenda_package_identifier |
|
|
619
609
|
addendum_identifier |
|
|
620
|
-
# Standalone copublisher pattern (ANSI/AMCA 210-99, AMCA 210-99)
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
# ASHRAE-publisher branch below.
|
|
624
|
-
(((str("ANSI") >> slash).maybe >> (str("ASHRAE").absent? >> letter).repeat(2,
|
|
625
|
-
10)).as(:copublisher) >>
|
|
610
|
+
# Standalone copublisher pattern (ANSI/AMCA 210-99, AMCA 210-99)
|
|
611
|
+
(((str("ANSI") >> slash).maybe >> letter.repeat(2,
|
|
612
|
+
10)).as(:copublisher) >>
|
|
626
613
|
space >>
|
|
627
614
|
code_with_year >>
|
|
628
615
|
optional_suffix.repeat(0, 2)) |
|
|
@@ -648,11 +635,9 @@ module Pubid
|
|
|
648
635
|
suffix.maybe >>
|
|
649
636
|
reaffirmed.maybe >>
|
|
650
637
|
optional_suffix.repeat(0, 2)) |
|
|
651
|
-
# Standard ASHRAE pattern
|
|
652
|
-
# partial reference "ASHRAE <code>" (no "Standard"/"Guideline") parses;
|
|
653
|
-
# the builder defaults the absent type to "Standard".
|
|
638
|
+
# Standard ASHRAE pattern
|
|
654
639
|
(publisher.as(:publisher) >> space >>
|
|
655
|
-
|
|
640
|
+
type.as(:type) >> space >>
|
|
656
641
|
code >>
|
|
657
642
|
(space?.maybe >> dash >> year_digits.as(:year)).maybe >>
|
|
658
643
|
(space >> additional_copublisher).maybe >>
|
|
@@ -665,15 +650,6 @@ module Pubid
|
|
|
665
650
|
root(:identifier)
|
|
666
651
|
|
|
667
652
|
def self.parse(string)
|
|
668
|
-
unless string.is_a?(String)
|
|
669
|
-
raise Pubid::Errors::InvalidInputError,
|
|
670
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
671
|
-
end
|
|
672
|
-
|
|
673
|
-
if string.length > Pubid::MAX_INPUT_LENGTH
|
|
674
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
675
|
-
end
|
|
676
|
-
|
|
677
653
|
# Strip leading/trailing whitespace
|
|
678
654
|
cleaned = string.strip
|
|
679
655
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ashrae
|
|
5
|
+
class Scheme < Pubid::Scheme
|
|
6
|
+
class << self
|
|
7
|
+
def identifiers
|
|
8
|
+
[
|
|
9
|
+
Identifiers::Guideline,
|
|
10
|
+
Identifiers::Standard,
|
|
11
|
+
Identifiers::Addendum,
|
|
12
|
+
Identifiers::Interpretation,
|
|
13
|
+
Identifiers::Errata,
|
|
14
|
+
Identifiers::CombinedAddenda,
|
|
15
|
+
Identifiers::AddendaPackage,
|
|
16
|
+
]
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def typed_stages
|
|
20
|
+
identifiers.flat_map { |klass| klass::TYPED_STAGES }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def locate_typed_stage_by_abbr(abbr)
|
|
24
|
+
abbr = "ASHRAE" if abbr.nil? || abbr.to_s.empty?
|
|
25
|
+
|
|
26
|
+
typed_stage = typed_stages.detect do |ts|
|
|
27
|
+
ts.abbr.include?(abbr)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
unless typed_stage
|
|
31
|
+
raise ArgumentError,
|
|
32
|
+
"Unknown type abbreviation: '#{abbr}'"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
typed_stage
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def locate_identifier_klass_by_type_code(type_code)
|
|
39
|
+
identifier_klass = identifiers.detect do |klass|
|
|
40
|
+
klass.type[:key].to_s == type_code.to_s
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
unless identifier_klass
|
|
44
|
+
raise ArgumentError,
|
|
45
|
+
"Unknown type code: #{type_code}"
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
identifier_klass
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -4,7 +4,20 @@ module Pubid
|
|
|
4
4
|
module Ashrae
|
|
5
5
|
# Base class for single (non-supplement) ASHRAE identifiers
|
|
6
6
|
# Includes: Guideline, Standard
|
|
7
|
-
class SingleIdentifier <
|
|
7
|
+
class SingleIdentifier < Identifiers::Base
|
|
8
|
+
def to_s
|
|
9
|
+
parts = []
|
|
10
|
+
parts << publisher if publisher
|
|
11
|
+
parts << type.to_s if type
|
|
12
|
+
result = parts.join(" ")
|
|
13
|
+
result += " " if result.length.positive?
|
|
14
|
+
result += code.to_s
|
|
15
|
+
result += "-#{year}" if year
|
|
16
|
+
result += " (#{amendment})" if amendment
|
|
17
|
+
result += suffix if suffix
|
|
18
|
+
result += " (RA#{reaffirmed})" if reaffirmed
|
|
19
|
+
result
|
|
20
|
+
end
|
|
8
21
|
end
|
|
9
22
|
end
|
|
10
23
|
end
|
|
@@ -6,32 +6,17 @@ module Pubid
|
|
|
6
6
|
module Ashrae
|
|
7
7
|
# Base class for supplement identifiers (addendums, errata, interpretations)
|
|
8
8
|
# Supplements modify or add to a base document
|
|
9
|
-
class SupplementIdentifier <
|
|
10
|
-
attribute :
|
|
9
|
+
class SupplementIdentifier < Identifiers::Base
|
|
10
|
+
attribute :base_identifier, Identifiers::Base, polymorphic: true
|
|
11
11
|
|
|
12
|
-
# Delegate publisher to
|
|
12
|
+
# Delegate publisher to base_identifier
|
|
13
13
|
def publisher
|
|
14
|
-
|
|
14
|
+
base_identifier&.publisher
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
# Delegate
|
|
18
|
-
#
|
|
19
|
-
# The BODY had to move with the `code` -> `number` rename — it was
|
|
20
|
-
# `base&.code`, and `code` no longer exists anywhere in the hierarchy, so
|
|
21
|
-
# it raised NoMethodError on every Errata/Addendum/CombinedAddenda/
|
|
22
|
-
# AddendaPackage/Interpretation. Nothing inside lib/pubid/ashrae calls
|
|
23
|
-
# it, which is exactly why the suite stayed green while a public method
|
|
24
|
-
# on five types was broken.
|
|
25
|
-
#
|
|
26
|
-
# The NAME deliberately stays `code`. Renaming it to `number` looks
|
|
27
|
-
# tidier and is wrong twice over: `number` is an inherited lutaml
|
|
28
|
-
# attribute typed Components::Code, so a String-returning method of that
|
|
29
|
-
# name makes `to_hash` raise IncorrectModelError on every supplement —
|
|
30
|
-
# and even typed correctly it would serialize a duplicate of the base's
|
|
31
|
-
# number onto the wrapper. `code` is not an attribute anywhere, so it is
|
|
32
|
-
# free to be a plain reader. Use `#root.number` for the index key.
|
|
17
|
+
# Delegate code to base_identifier
|
|
33
18
|
def code
|
|
34
|
-
|
|
19
|
+
base_identifier&.code
|
|
35
20
|
end
|
|
36
21
|
end
|
|
37
22
|
end
|
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ashrae
|
|
5
5
|
class UrnGenerator < Pubid::UrnGenerator::Base
|
|
6
|
-
# A supplement carries no number of its own — only the two
|
|
7
|
-
# single-document leaves declare one — so reach it through #root, which
|
|
8
|
-
# walks `base` to the standard the supplement attaches to. Without the
|
|
9
|
-
# fallback every Errata/Addendum URN lost its number when `code` moved
|
|
10
|
-
# off the shared base onto the leaves.
|
|
11
6
|
def urn_number
|
|
12
|
-
|
|
13
|
-
return nil if num.nil? || num.to_s.empty?
|
|
7
|
+
return nil unless identifier.code
|
|
14
8
|
|
|
15
|
-
|
|
9
|
+
identifier.code.to_s
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def urn_year
|
|
13
|
+
if identifier.year
|
|
14
|
+
return identifier.year.to_s
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
nil
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
def urn_suffix
|
data/lib/pubid/ashrae.rb
CHANGED
|
@@ -2,76 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ashrae
|
|
5
|
-
extend Pubid::PrefixesSupport
|
|
6
|
-
|
|
7
|
-
# ASHRAE publisher token; the ANSI/ASHRAE joint form comes from
|
|
8
|
-
# Pubid::JOINT_PREFIXES.
|
|
9
|
-
PREFIXES = ["ASHRAE"].freeze
|
|
10
|
-
|
|
11
5
|
autoload :Builder, "#{__dir__}/ashrae/builder"
|
|
12
|
-
autoload :Identifier, "#{__dir__}/ashrae/
|
|
6
|
+
autoload :Identifier, "#{__dir__}/ashrae/identifier"
|
|
13
7
|
autoload :Identifiers, "#{__dir__}/ashrae/identifiers"
|
|
14
8
|
autoload :Parser, "#{__dir__}/ashrae/parser"
|
|
15
|
-
autoload :
|
|
9
|
+
autoload :Scheme, "#{__dir__}/ashrae/scheme"
|
|
16
10
|
autoload :SingleIdentifier, "#{__dir__}/ashrae/single_identifier"
|
|
17
11
|
autoload :SupplementIdentifier, "#{__dir__}/ashrae/supplement_identifier"
|
|
18
12
|
autoload :UrnGenerator, "#{__dir__}/ashrae/urn_generator"
|
|
19
|
-
autoload :UrnParser, "#{__dir__}/ashrae/urn_parser"
|
|
20
13
|
|
|
21
14
|
def self.parse(identifier)
|
|
22
|
-
unless identifier.is_a?(String)
|
|
23
|
-
raise Pubid::Errors::InvalidInputError,
|
|
24
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
28
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
29
|
-
end
|
|
30
|
-
|
|
31
15
|
Identifier.parse(identifier)
|
|
32
16
|
end
|
|
33
|
-
|
|
34
|
-
# Auto-discover all identifier types from the Identifiers namespace
|
|
35
|
-
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
36
|
-
def self.identifier_types
|
|
37
|
-
@identifier_types ||= Identifiers.constants
|
|
38
|
-
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
39
|
-
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
40
|
-
.select { |c| c.type.is_a?(Hash) }
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Build typed stage index from identifier types
|
|
44
|
-
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
45
|
-
def self.all_typed_stages
|
|
46
|
-
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
47
|
-
if klass.const_defined?(:TYPED_STAGES)
|
|
48
|
-
klass.const_get(:TYPED_STAGES)
|
|
49
|
-
else
|
|
50
|
-
[]
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Lookup: type code -> identifier class
|
|
56
|
-
# @param code [String, Symbol] the type key to find
|
|
57
|
-
# @return [Class, nil] the matching identifier class
|
|
58
|
-
def self.locate_type(code)
|
|
59
|
-
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
# Lookup: abbreviation -> typed stage
|
|
63
|
-
# @param abbr [String, Symbol] the abbreviation to find
|
|
64
|
-
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
65
|
-
def self.locate_stage(abbr)
|
|
66
|
-
abbr_str = abbr.to_s.upcase
|
|
67
|
-
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
68
|
-
end
|
|
69
17
|
end
|
|
70
18
|
end
|
|
71
19
|
|
|
72
20
|
# Register Uashrae flavor with the registry
|
|
73
21
|
Pubid::Registry.register(:ashrae, Pubid::Ashrae)
|
|
74
|
-
|
|
75
|
-
# Per-flavor format registry: inherits global formats, overrides :human
|
|
76
|
-
Pubid::Ashrae::Identifier.format_registry = Pubid::FormatRegistry.new(parent: Pubid::Identifier.format_registry)
|
|
77
|
-
Pubid::Ashrae::Identifier.format_registry.register(:human, renderer: Pubid::Ashrae::Renderer)
|
data/lib/pubid/asme/builder.rb
CHANGED
|
@@ -21,18 +21,9 @@ module Pubid
|
|
|
21
21
|
identifier.publisher = "ASME"
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
#
|
|
25
|
-
# Identifiers::Standard) — `number` is what relaton-index keys on — so
|
|
26
|
-
# the Code built below is unpacked rather than assigned.
|
|
24
|
+
# Build code component
|
|
27
25
|
if parsed_hash[:designator]
|
|
28
|
-
identifier.
|
|
29
|
-
elsif parsed_hash[:number]
|
|
30
|
-
# A joint-published reference ("ISO/ASME 14414-2015") parses to a bare
|
|
31
|
-
# `number` with no designator. The designator-only guard above dropped
|
|
32
|
-
# it, so the document number was lost from BOTH the identifier and its
|
|
33
|
-
# rendering: `to_s` was "ISO/ASME-2015". Pre-existing; recovering it
|
|
34
|
-
# is what gives these ids an index key.
|
|
35
|
-
identifier.number = parsed_hash[:number].to_s
|
|
26
|
+
identifier.code = build_code(parsed_hash)
|
|
36
27
|
end
|
|
37
28
|
|
|
38
29
|
# Set PTC suffix
|
|
@@ -5,19 +5,11 @@ require "lutaml/model"
|
|
|
5
5
|
module Pubid
|
|
6
6
|
module Asme
|
|
7
7
|
module Components
|
|
8
|
-
# Code component for ASME identifiers.
|
|
9
|
-
#
|
|
10
|
-
# Stays independent of Pubid::Components::Code because ASME uses
|
|
11
|
-
# +designator+ (a flavor-specific letter prefix) plus +number+.
|
|
12
8
|
class Code < Lutaml::Model::Serializable
|
|
13
|
-
attribute :designator, :string
|
|
14
|
-
attribute :number, :string
|
|
9
|
+
attribute :designator, :string # B, Y, BPVC, etc.
|
|
10
|
+
attribute :number, :string # 16.5, 14.43, III.1.NB, etc.
|
|
15
11
|
|
|
16
12
|
def to_s
|
|
17
|
-
render
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def render(context: nil)
|
|
21
13
|
"#{designator}#{number}"
|
|
22
14
|
end
|
|
23
15
|
end
|
|
@@ -4,15 +4,6 @@ module Pubid
|
|
|
4
4
|
module Asme
|
|
5
5
|
class Identifier < Pubid::Identifier
|
|
6
6
|
def self.parse(str)
|
|
7
|
-
unless str.is_a?(String)
|
|
8
|
-
raise Pubid::Errors::InvalidInputError,
|
|
9
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
if str.length > Pubid::MAX_INPUT_LENGTH
|
|
13
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
14
|
-
end
|
|
15
|
-
|
|
16
7
|
parser = Parser.new
|
|
17
8
|
builder = Builder.new
|
|
18
9
|
|
|
@@ -4,6 +4,66 @@ module Pubid
|
|
|
4
4
|
module Asme
|
|
5
5
|
module Identifiers
|
|
6
6
|
class Base < SingleIdentifier
|
|
7
|
+
def to_s
|
|
8
|
+
# Handle joint published identifiers
|
|
9
|
+
parts = []
|
|
10
|
+
if first_publisher && first_code
|
|
11
|
+
# CSA B44.10/ASME A17.10 or API 579-2/ASME PTB-14 format
|
|
12
|
+
parts << first_publisher
|
|
13
|
+
parts << first_code
|
|
14
|
+
parts << "/#{second_publisher}" if second_publisher
|
|
15
|
+
parts << code.to_s if code && code.to_s != ""
|
|
16
|
+
|
|
17
|
+
elsif joint_publisher
|
|
18
|
+
# ISO/ASME or ASME/ANS format
|
|
19
|
+
parts << joint_publisher
|
|
20
|
+
parts << code.to_s if code && code.to_s != ""
|
|
21
|
+
|
|
22
|
+
else
|
|
23
|
+
# Standard ASME format
|
|
24
|
+
parts << publisher if publisher
|
|
25
|
+
parts << code.to_s if code
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
result = parts.join(" ")
|
|
29
|
+
|
|
30
|
+
# PTC suffix (space-separated)
|
|
31
|
+
if ptc_suffix
|
|
32
|
+
result += " #{ptc_suffix}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# CSA dual-published (for ASME/CSA format)
|
|
36
|
+
if csa_number
|
|
37
|
+
result += "/CSA #{csa_number}"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Handbook keyword
|
|
41
|
+
if handbook
|
|
42
|
+
result += " Handbook"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Year
|
|
46
|
+
if draft_year
|
|
47
|
+
result += "-#{draft_year}"
|
|
48
|
+
elsif year
|
|
49
|
+
result += "-#{year}"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Parenthetical revision (comes after year)
|
|
53
|
+
result += " #{parenthetical_revision}" if parenthetical_revision
|
|
54
|
+
|
|
55
|
+
# Language (can appear in rendered output)
|
|
56
|
+
result += " (#{language})" if language
|
|
57
|
+
|
|
58
|
+
# Reaffirmation
|
|
59
|
+
result += " (#{reaffirmation})" if reaffirmation
|
|
60
|
+
|
|
61
|
+
# Revision note
|
|
62
|
+
result += " #{revision_note}" if revision_note
|
|
63
|
+
|
|
64
|
+
# Normalize all em-dashes (–, —) and en-dashes to regular dash (-)
|
|
65
|
+
result.gsub(/[–—]/, "-")
|
|
66
|
+
end
|
|
7
67
|
end
|
|
8
68
|
end
|
|
9
69
|
end
|
|
@@ -4,92 +4,8 @@ module Pubid
|
|
|
4
4
|
module Asme
|
|
5
5
|
module Identifiers
|
|
6
6
|
class Standard < Base
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
# relaton-index sorts and bsearches every row on
|
|
10
|
-
# `id.root.number.to_s`. ASME used to keep the code inside an
|
|
11
|
-
# Asme::Components::Code under a `code` attribute, leaving the
|
|
12
|
-
# inherited `number` nil and every row keyed "".
|
|
13
|
-
#
|
|
14
|
-
# `number` holds the WHOLE printed code — "B18.3", "A112.19.12",
|
|
15
|
-
# "BPVC-CC-BPV" — not a designator/number split.
|
|
16
|
-
#
|
|
17
|
-
# The split looks tempting (it is what IEEE does) but it cannot key
|
|
18
|
-
# this corpus: 152 of the 731 fixture ids are Boiler and Pressure
|
|
19
|
-
# Vessel Code documents whose entire identity IS the designator
|
|
20
|
-
# ("BPVC COMPLETE CODE BIND", "BPVC.CC.BPV") with no numeric part at
|
|
21
|
-
# all. Splitting leaves every one of them with an empty key, and
|
|
22
|
-
# inventing a number for them would be inventing data.
|
|
23
|
-
#
|
|
24
|
-
# Nothing is lost by joining: Components::Code#render is a plain
|
|
25
|
-
# concatenation of designator and number, and the only readers of
|
|
26
|
-
# `code` anywhere in lib/pubid/asme are `code.to_s` (renderer.rb,
|
|
27
|
-
# urn_generator.rb). Keying on the whole code also clusters editions of
|
|
28
|
-
# one document, which is what relaton narrows on — an ASME reference is
|
|
29
|
-
# always written "ASME B18.3", never "18.3" alone.
|
|
30
|
-
#
|
|
31
|
-
# LANDMINE: `number` redefines the Components::Code attribute inherited
|
|
32
|
-
# from ::Pubid::Identifier, which resolves nondeterministically when
|
|
33
|
-
# declared on a class others inherit from. Standard is the only
|
|
34
|
-
# concrete ASME type and has no subclasses, so it is declared here and
|
|
35
|
-
# never on SingleIdentifier / Identifiers::Base.
|
|
36
|
-
# spec/pubid/asme/root_number_spec.rb carries the tripwire and is only
|
|
37
|
-
# meaningful under the full `rake` suite.
|
|
38
|
-
# There is deliberately no `#code` reader here. An earlier draft had one
|
|
39
|
-
# composing `Components::Code.new(number: number)` so the renderer and
|
|
40
|
-
# the URN generator would not have to change — but because `number`
|
|
41
|
-
# holds the whole printed code, that Code never carried a designator and
|
|
42
|
-
# `code.to_s` equalled `number` for all 731 corpus ids. It wrapped a
|
|
43
|
-
# string in an object whose only job was to unwrap to the same string.
|
|
44
|
-
# Both readers now use `number` directly.
|
|
45
|
-
#
|
|
46
|
-
# ASTM keeps its composed `#code` (Identifiers::CodeNumber) for the
|
|
47
|
-
# opposite reason: its renderer reads `code.letter` / `code.dual_m`
|
|
48
|
-
# field-by-field, so the component there carries real structure.
|
|
49
|
-
attribute :number, :string
|
|
50
|
-
|
|
51
|
-
# MR slug. Before the index column landed, every ASME slug was just
|
|
52
|
-
# "asme": 722 of 731 documents shared one filename, and `to_slug` is
|
|
53
|
-
# what consumers use as an output filename.
|
|
54
|
-
#
|
|
55
|
-
# `handbook` is identity-bearing — it is in the serialized hash and in
|
|
56
|
-
# `==`, and "ASME A17.1/CSA B44-2019" and "ASME A17.1/CSA B44
|
|
57
|
-
# Handbook-2019" are different documents — so it has to reach the slug
|
|
58
|
-
# too. CLAUDE.md's rule: a marker that only reaches `==` still lets two
|
|
59
|
-
# documents share a filename.
|
|
60
|
-
def mr_number_with_part
|
|
61
|
-
mr_join(mr_sanitize(number), (handbook ? "handbook" : nil))
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# ASME keeps its edition in a plain `year` string, not the inherited
|
|
65
|
-
# `date`, so the base `mr_year` hook read nil and every edition of one
|
|
66
|
-
# standard shared a slug.
|
|
67
|
-
def mr_year
|
|
68
|
-
year&.to_s
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
# ASME keeps a translation marker in a plain `language` string, not the
|
|
72
|
-
# inherited `languages` collection the base hook reads. Without this,
|
|
73
|
-
# "ASME B31.8-2016" and its Spanish edition "ASME B31.8 (SPANISH)-2016"
|
|
74
|
-
# — different documents, and #== agrees — share one filename.
|
|
75
|
-
def mr_languages
|
|
76
|
-
language&.to_s&.downcase
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# An ASME code legitimately contains "." (B18.3), "-" (BPVC-CC-BPV),
|
|
80
|
-
# "&" (V&V) and spaces ("BPVC COMPLETE CODE BIND"). Renderers::MrString
|
|
81
|
-
# joins SEGMENTS with ".", so a dot inside one breaks that structure —
|
|
82
|
-
# filter by charset, the BIPM `mr_slug` precedent, rather than by an
|
|
83
|
-
# enumerated escape list. The output emptiness check matters: a value
|
|
84
|
-
# made only of out-of-charset characters collapses to "", which is
|
|
85
|
-
# truthy in Ruby and would reach the renderer as a blank segment.
|
|
86
|
-
def mr_sanitize(value)
|
|
87
|
-
return nil if value.nil? || value.to_s.empty?
|
|
88
|
-
|
|
89
|
-
sanitized = value.to_s.downcase
|
|
90
|
-
.gsub(/[^a-z0-9-]+/, "-").gsub(/\A-+|-+\z/, "")
|
|
91
|
-
sanitized.empty? ? nil : sanitized
|
|
92
|
-
end
|
|
7
|
+
# Standard extends Base with no additional attributes
|
|
8
|
+
# All functionality inherited from Base
|
|
93
9
|
end
|
|
94
10
|
end
|
|
95
11
|
end
|
data/lib/pubid/asme/parser.rb
CHANGED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Asme
|
|
5
|
+
class Scheme < Pubid::Scheme
|
|
6
|
+
class << self
|
|
7
|
+
def identifiers
|
|
8
|
+
@identifiers ||= [
|
|
9
|
+
Identifiers::Standard,
|
|
10
|
+
].freeze
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def supplement_identifiers
|
|
14
|
+
@supplement_identifiers ||= [].freeze
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def typed_stages
|
|
18
|
+
@typed_stages ||= [].freeze
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def supplement_typed_stages
|
|
22
|
+
@supplement_typed_stages ||= [].freeze
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def locate_typed_stage_by_abbr(_abbr)
|
|
26
|
+
raise ArgumentError,
|
|
27
|
+
"ASME identifiers do not use typed stages"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def locate_identifier_klass_by_type_code(_type_code)
|
|
31
|
+
raise ArgumentError,
|
|
32
|
+
"ASME identifiers do not use type codes"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -2,22 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Asme
|
|
5
|
-
|
|
6
|
-
# ASME identifier is `is_a?(Pubid::Asme::Identifier)`.
|
|
7
|
-
class SingleIdentifier < Identifier
|
|
5
|
+
class SingleIdentifier < Pubid::Identifier
|
|
8
6
|
# Generate URN for this identifier
|
|
9
7
|
#
|
|
10
8
|
# @return [String] URN representation
|
|
11
9
|
|
|
12
10
|
attribute :publisher, :string
|
|
13
|
-
|
|
14
|
-
# column holding the WHOLE printed code ("B18.3", "BPVC-CC-BPV") — see
|
|
15
|
-
# Identifiers::Standard, which explains why it is not split into
|
|
16
|
-
# designator + number. It cannot be declared here: SingleIdentifier is
|
|
17
|
-
# inherited by Identifiers::Base and Identifiers::Standard, and
|
|
18
|
-
# redefining the `number` that ::Pubid::Identifier types as a
|
|
19
|
-
# Components::Code on an inherited-from class resolves
|
|
20
|
-
# nondeterministically under multi-flavor load.
|
|
11
|
+
attribute :code, Components::Code
|
|
21
12
|
attribute :year, :string
|
|
22
13
|
attribute :reaffirmation, :string # R2020
|
|
23
14
|
attribute :language, :string # (SPANISH)
|