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,31 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iec
|
|
5
|
-
module Identifiers
|
|
6
|
-
autoload :Amendment, "#{__dir__}/identifiers/amendment"
|
|
7
|
-
autoload :Base, "#{__dir__}/identifiers/base"
|
|
8
|
-
autoload :ComponentSpecification, "#{__dir__}/identifiers/component_specification"
|
|
9
|
-
autoload :ConformityAssessment, "#{__dir__}/identifiers/conformity_assessment"
|
|
10
|
-
autoload :ConsolidatedIdentifier, "#{__dir__}/identifiers/consolidated_identifier"
|
|
11
|
-
autoload :Corrigendum, "#{__dir__}/identifiers/corrigendum"
|
|
12
|
-
autoload :FragmentIdentifier, "#{__dir__}/identifiers/fragment_identifier"
|
|
13
|
-
autoload :Guide, "#{__dir__}/identifiers/guide"
|
|
14
|
-
autoload :InternationalStandard, "#{__dir__}/identifiers/international_standard"
|
|
15
|
-
autoload :InterpretationSheet, "#{__dir__}/identifiers/interpretation_sheet"
|
|
16
|
-
autoload :OperationalDocument, "#{__dir__}/identifiers/operational_document"
|
|
17
|
-
autoload :PubliclyAvailableSpecification, "#{__dir__}/identifiers/publicly_available_specification"
|
|
18
|
-
autoload :SheetIdentifier, "#{__dir__}/identifiers/sheet_identifier"
|
|
19
|
-
autoload :SocietalTechnologyTrendReport, "#{__dir__}/identifiers/societal_technology_trend_report"
|
|
20
|
-
autoload :SystemsReferenceDocument, "#{__dir__}/identifiers/systems_reference_document"
|
|
21
|
-
autoload :TechnicalReport, "#{__dir__}/identifiers/technical_report"
|
|
22
|
-
autoload :TechnicalSpecification, "#{__dir__}/identifiers/technical_specification"
|
|
23
|
-
autoload :TechnicalGroup, "#{__dir__}/identifiers/technical_group"
|
|
24
|
-
autoload :TechnologyReport, "#{__dir__}/identifiers/technology_report"
|
|
25
|
-
autoload :TestReportForm, "#{__dir__}/identifiers/test_report_form"
|
|
26
|
-
autoload :VapIdentifier, "#{__dir__}/identifiers/vap_identifier"
|
|
27
|
-
autoload :WhitePaper, "#{__dir__}/identifiers/white_paper"
|
|
28
|
-
autoload :WorkingDocument, "#{__dir__}/identifiers/working_document"
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
data/lib/pubid/iec/renderer.rb
DELETED
|
@@ -1,267 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Iec
|
|
5
|
-
# Human-readable renderer for IEC identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Components are accessed only through `component.render(context:)`.
|
|
8
|
-
#
|
|
9
|
-
# Produces strings like:
|
|
10
|
-
# "IEC 60038:2009"
|
|
11
|
-
# "IEC/CD 60038"
|
|
12
|
-
# "IEC 60038:2009/AMD1:2011"
|
|
13
|
-
# "IEC/FDAM 60038-1"
|
|
14
|
-
# "IEC 60529:1989+AMD1:1999 CSV"
|
|
15
|
-
#
|
|
16
|
-
# The renderer is registered as the `:human` format in the IEC format
|
|
17
|
-
# registry and invoked via `render(format: :human)`.
|
|
18
|
-
#
|
|
19
|
-
# For simple (non-wrapper) identifiers, the renderer delegates to the
|
|
20
|
-
# identifier's own `publisher_portion` / `number_portion` helpers so that
|
|
21
|
-
# per-type overrides (e.g. TR, TS, Guide) continue to work without
|
|
22
|
-
# duplication. Wrapper types (Consolidated, VAP, Sheet, Fragment,
|
|
23
|
-
# Supplement, WorkingDocument, TestReportForm) have rendering logic
|
|
24
|
-
# here because their structure differs fundamentally.
|
|
25
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
26
|
-
def render(context: nil, **opts)
|
|
27
|
-
id = @id
|
|
28
|
-
|
|
29
|
-
case id
|
|
30
|
-
when Identifiers::ConsolidatedIdentifier
|
|
31
|
-
render_consolidated(id, opts, context)
|
|
32
|
-
when Identifiers::VapIdentifier
|
|
33
|
-
render_vap(id, opts, context)
|
|
34
|
-
when Identifiers::SheetIdentifier
|
|
35
|
-
render_sheet(id, opts, context)
|
|
36
|
-
when Identifiers::FragmentIdentifier
|
|
37
|
-
render_fragment(id, opts, context)
|
|
38
|
-
when Identifiers::WorkingDocument
|
|
39
|
-
render_working_document(id, context)
|
|
40
|
-
when Identifiers::TechnicalGroup
|
|
41
|
-
render_technical_group(id, context)
|
|
42
|
-
when Identifiers::TestReportForm
|
|
43
|
-
render_test_report_form(id, context)
|
|
44
|
-
when SupplementIdentifier
|
|
45
|
-
render_supplement(id, opts, context)
|
|
46
|
-
else
|
|
47
|
-
render_single(id, opts, context)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
def render_single(id, opts, context)
|
|
54
|
-
parts = []
|
|
55
|
-
parts << id.publisher_portion
|
|
56
|
-
parts << id.number_portion
|
|
57
|
-
|
|
58
|
-
if id.is_a?(Identifiers::Base)
|
|
59
|
-
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
60
|
-
elsif opts[:with_edition] && id.edition&.number
|
|
61
|
-
parts << " #{id.edition.render(context:)}"
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
# VAP codes live on VapIdentifier (rendered in render_vap), not Base.
|
|
65
|
-
|
|
66
|
-
if id.is_a?(Identifiers::Base) && id.database
|
|
67
|
-
parts << " DB"
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
parts << " (all parts)" if id.all_parts
|
|
71
|
-
|
|
72
|
-
result = parts.compact.join
|
|
73
|
-
|
|
74
|
-
result << id.language_portion(lang_single: opts[:lang_single]) if id.languages&.any?
|
|
75
|
-
|
|
76
|
-
result
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def render_supplement(id, opts, context)
|
|
80
|
-
id.ensure_base
|
|
81
|
-
|
|
82
|
-
if id.synthetic_base?
|
|
83
|
-
render_supplement_standalone(id, context)
|
|
84
|
-
elsif id.base
|
|
85
|
-
render_supplement_attached(id, opts, context)
|
|
86
|
-
else
|
|
87
|
-
render_single(id, opts, context)
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def render_supplement_standalone(id, context)
|
|
92
|
-
# This is a second, independent publisher/stage join that
|
|
93
|
-
# SingleIdentifier#publisher_portion never reaches. It follows the same
|
|
94
|
-
# house style: the slash separates copublishers, and a SPACE separates
|
|
95
|
-
# the publisher from the stage abbreviation. See issue #360 item 2.
|
|
96
|
-
parts = []
|
|
97
|
-
|
|
98
|
-
if id.publisher
|
|
99
|
-
publishers = [id.publisher.render(context:)]
|
|
100
|
-
if id.copublishers&.any?
|
|
101
|
-
publishers += id.copublishers.map { |c| c.render(context:) }
|
|
102
|
-
end
|
|
103
|
-
parts << publishers.join("/")
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
abbr = id.typed_stage.abbr.first
|
|
107
|
-
number_str = id.base.number.to_s
|
|
108
|
-
number_str += "-#{id.number}" if id.number
|
|
109
|
-
number_str += "-#{id.subpart}" if id.subpart
|
|
110
|
-
parts << "#{abbr} #{number_str}"
|
|
111
|
-
|
|
112
|
-
result = parts.join(" ")
|
|
113
|
-
result += ":#{id.date.render(context:)}" if id.date
|
|
114
|
-
result += " #{id.edition.render(context:)}" if id.edition&.number
|
|
115
|
-
result
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
def render_supplement_attached(id, opts, context)
|
|
119
|
-
parts = []
|
|
120
|
-
parts << id.base.to_s(**opts)
|
|
121
|
-
|
|
122
|
-
abbr = id.typed_stage.abbr.first.upcase
|
|
123
|
-
supp_part = "/#{abbr}#{id.number}"
|
|
124
|
-
supp_part += ":#{id.date.render(context:)}" if id.date
|
|
125
|
-
parts << supp_part
|
|
126
|
-
|
|
127
|
-
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
128
|
-
|
|
129
|
-
parts.join
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
def render_consolidated(id, opts, _context)
|
|
133
|
-
id.identifiers.map.with_index do |sub_id, idx|
|
|
134
|
-
if idx.zero?
|
|
135
|
-
sub_id.to_s(**opts)
|
|
136
|
-
elsif sub_id.is_a?(Identifiers::Amendment)
|
|
137
|
-
render_consolidated_amendment(sub_id)
|
|
138
|
-
elsif sub_id.is_a?(Identifiers::Corrigendum)
|
|
139
|
-
render_consolidated_corrigendum(sub_id)
|
|
140
|
-
else
|
|
141
|
-
"+#{sub_id.to_s(**opts)}"
|
|
142
|
-
end
|
|
143
|
-
end.join
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
def render_consolidated_amendment(id)
|
|
147
|
-
if id.date&.present?
|
|
148
|
-
"+AMD#{id.number}:#{id.date.render}"
|
|
149
|
-
else
|
|
150
|
-
"+AMD#{id.number}"
|
|
151
|
-
end
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def render_consolidated_corrigendum(id)
|
|
155
|
-
if id.date&.present?
|
|
156
|
-
"+COR#{id.number}:#{id.date.render}"
|
|
157
|
-
else
|
|
158
|
-
"+COR#{id.number}"
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def render_vap(id, opts, context)
|
|
163
|
-
parts = []
|
|
164
|
-
|
|
165
|
-
parts << id.base.to_s(**opts.merge(with_edition: false))
|
|
166
|
-
parts << " #{id.vap.join('-')}" if id.vap&.any?
|
|
167
|
-
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
168
|
-
|
|
169
|
-
parts.compact.join
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
def render_sheet(id, opts, context)
|
|
173
|
-
parts = []
|
|
174
|
-
parts << id.base.to_s(**opts)
|
|
175
|
-
parts << "/#{id.sheet_number}"
|
|
176
|
-
parts << ":#{id.year}" if id.year
|
|
177
|
-
parts.join
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
def render_fragment(id, opts, context)
|
|
181
|
-
parts = []
|
|
182
|
-
parts << id.base.to_s(**opts)
|
|
183
|
-
|
|
184
|
-
parts << if id.base.is_a?(Identifiers::Corrigendum)
|
|
185
|
-
"/FRAGC#{id.fragment_number}"
|
|
186
|
-
else
|
|
187
|
-
"/FRAG#{id.fragment_number}"
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
191
|
-
|
|
192
|
-
parts.join
|
|
193
|
-
end
|
|
194
|
-
|
|
195
|
-
def render_technical_group(id, _context)
|
|
196
|
-
parts = []
|
|
197
|
-
parts << id.publisher_portion
|
|
198
|
-
parts << " #{id.technical_committee}"
|
|
199
|
-
parts << id.subcommittee if id.subcommittee
|
|
200
|
-
parts.join
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
def render_working_document(id, context)
|
|
204
|
-
if id.wp_stage
|
|
205
|
-
# A work-programme registration renders bare, as it is written:
|
|
206
|
-
# "PNW 65-915 ED1", not "IEC/PNW 65-915 ED1". Its number is
|
|
207
|
-
# TC-scoped, not an IEC document number, and prefixing "IEC " would
|
|
208
|
-
# break idempotence — "IEC PNW 65-915 ED1" re-parses as an
|
|
209
|
-
# International Standard, so rendering would not be a fixed point.
|
|
210
|
-
parts = []
|
|
211
|
-
parts << id.wp_stage
|
|
212
|
-
if id.wp_type && !id.wp_type.strip.empty?
|
|
213
|
-
parts << " #{id.wp_type.strip}"
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
if id.number
|
|
217
|
-
num_str = id.number.to_s
|
|
218
|
-
num_str += "-#{id.part}" if id.part && id.part.to_s != ""
|
|
219
|
-
num_str += "-#{id.subpart}" if id.subpart && id.subpart.to_s != ""
|
|
220
|
-
parts << " #{num_str}"
|
|
221
|
-
end
|
|
222
|
-
|
|
223
|
-
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
224
|
-
return parts.join
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
parts = []
|
|
228
|
-
parts << id.technical_committee if id.technical_committee
|
|
229
|
-
|
|
230
|
-
if id.wd_number
|
|
231
|
-
num_part = id.wd_number.to_s
|
|
232
|
-
num_part += "(#{id.wd_language})" if id.wd_language
|
|
233
|
-
parts << num_part
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
parts << id.wd_stage if id.wd_stage
|
|
237
|
-
|
|
238
|
-
parts.join("/")
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
def render_test_report_form(id, context)
|
|
242
|
-
parts = []
|
|
243
|
-
parts << id.publisher_portion
|
|
244
|
-
|
|
245
|
-
if id.cispr_identifier
|
|
246
|
-
cispr_parts = []
|
|
247
|
-
cispr_parts << id.cispr_identifier.publisher.render(context:)
|
|
248
|
-
|
|
249
|
-
num_str = id.cispr_identifier.number.to_s
|
|
250
|
-
num_str += "-#{id.cispr_identifier.part}" if id.cispr_identifier.part && id.cispr_identifier.part.to_s != ""
|
|
251
|
-
cispr_parts << num_str
|
|
252
|
-
|
|
253
|
-
cispr_str = cispr_parts.join(" ")
|
|
254
|
-
cispr_str += ":#{id.date.render(context:)}" if id.date
|
|
255
|
-
|
|
256
|
-
parts << " #{cispr_str}"
|
|
257
|
-
else
|
|
258
|
-
parts << id.number_portion
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
parts << id.trf_info.to_s if id.trf_info && !id.trf_info.empty?
|
|
262
|
-
|
|
263
|
-
parts.compact.join
|
|
264
|
-
end
|
|
265
|
-
end
|
|
266
|
-
end
|
|
267
|
-
end
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ieee
|
|
5
|
-
# Serialization compaction for IEEE hashes — a recursive transform hooked
|
|
6
|
-
# into Ieee::Identifier#to_hash (collapse) and .from_hash (expand). Two
|
|
7
|
-
# compactions, both provably lossless and nested-safe (they descend into a
|
|
8
|
-
# Corrigendum `base` too):
|
|
9
|
-
#
|
|
10
|
-
# 1. **typed_stage -> `stage` scalar.** The multi-field `typed_stage` object
|
|
11
|
-
# becomes a single `stage` key holding its canonical abbreviation,
|
|
12
|
-
# rebuilt from the TYPED_STAGES registry. The abbreviation keys the
|
|
13
|
-
# registry uniquely, and the collapse fires only when the registry's
|
|
14
|
-
# reconstruction is byte-identical to the serialized sub-hash — an
|
|
15
|
-
# unrecognised / non-matching stage is left as the full object (fails
|
|
16
|
-
# closed).
|
|
17
|
-
#
|
|
18
|
-
# 2. **`draft` slash strip.** `Components::Draft#to_s` renders `"/D3"`; the
|
|
19
|
-
# leading `/` is boilerplate, so the serialized form is `"D3"`. No expand
|
|
20
|
-
# step is needed — `Draft.parse` already accepts the slashless form and
|
|
21
|
-
# reproduces `"/D3"` (verified across the whole corpus), so from_hash and
|
|
22
|
-
# rendering are unchanged.
|
|
23
|
-
#
|
|
24
|
-
# A recursive hash transform (rather than lutaml attributes) is deliberate:
|
|
25
|
-
# `stage` collides with the inherited `Components::Stage` attribute name (a
|
|
26
|
-
# redefinition would reintroduce the multi-flavor nondeterminism we hit with
|
|
27
|
-
# `number`), and only a whole-hash walk reaches a nested Corrigendum `base`,
|
|
28
|
-
# which a per-object `to_hash` override cannot (the nested-serialization
|
|
29
|
-
# wall). The runtime `typed_stage`/`draft_obj` objects are untouched.
|
|
30
|
-
module Compaction
|
|
31
|
-
module_function
|
|
32
|
-
|
|
33
|
-
# abbr => canonical serialized typed_stage sub-hash, mirroring what the
|
|
34
|
-
# parent serializer + canonicalizer emit (nils dropped, and a default
|
|
35
|
-
# `project_status: false` dropped). Memoized.
|
|
36
|
-
def sub_hash_for(abbr)
|
|
37
|
-
(@sub_hash_for ||= build_sub_hash_map)[abbr]
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def build_sub_hash_map
|
|
41
|
-
TypedStages::TYPED_STAGES.to_h { |ts| [ts.abbr.first, entry_sub_hash(ts)] }
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# NB: this must list every Components::TypedStage attribute. If a field is
|
|
45
|
-
# added there but not here, the collapse guard fails closed — affected
|
|
46
|
-
# stages stay full objects (still lossless) but stop compacting; extend
|
|
47
|
-
# this list to keep them compact.
|
|
48
|
-
def entry_sub_hash(typed_stage)
|
|
49
|
-
{
|
|
50
|
-
"abbr" => typed_stage.abbr,
|
|
51
|
-
"stage_code" => typed_stage.stage_code,
|
|
52
|
-
"type_code" => typed_stage.type_code,
|
|
53
|
-
"iso_stage_equivalent" => typed_stage.iso_stage_equivalent,
|
|
54
|
-
"ieee_draft_equivalent" => typed_stage.ieee_draft_equivalent,
|
|
55
|
-
"approval_status" => typed_stage.approval_status,
|
|
56
|
-
"project_status" => typed_stage.project_status || nil,
|
|
57
|
-
}.compact
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# Recursively compact every hash in the tree: collapse a reproducible
|
|
61
|
-
# `typed_stage` to a `stage` scalar and strip the leading `/` off `draft`.
|
|
62
|
-
def collapse(node)
|
|
63
|
-
collapse_hash(node) if node.is_a?(::Hash)
|
|
64
|
-
node.each { |v| collapse(v) } if node.is_a?(::Array)
|
|
65
|
-
node
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def collapse_hash(node)
|
|
69
|
-
collapse_stage(node)
|
|
70
|
-
draft = node["draft"]
|
|
71
|
-
node["draft"] = draft.delete_prefix("/") if draft.is_a?(::String)
|
|
72
|
-
node.each_value { |v| collapse(v) }
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
# Collapse only when the registry rebuilds the exact same sub-hash, so no
|
|
76
|
-
# information is ever lost.
|
|
77
|
-
def collapse_stage(node)
|
|
78
|
-
ts = node["typed_stage"]
|
|
79
|
-
abbr = ts["abbr"]&.first if ts.is_a?(::Hash)
|
|
80
|
-
return unless abbr && sub_hash_for(abbr) == ts
|
|
81
|
-
|
|
82
|
-
node.delete("typed_stage")
|
|
83
|
-
node["stage"] = abbr
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
# Inverse of {collapse} for `stage`: replace a recognised `stage` scalar
|
|
87
|
-
# with its registry typed_stage sub-hash so lutaml rebuilds the component
|
|
88
|
-
# (nested bases included). `draft` needs no expansion — Draft.parse
|
|
89
|
-
# accepts the slashless form. An unrecognised value is left alone.
|
|
90
|
-
def expand(node)
|
|
91
|
-
expand_hash(node) if node.is_a?(::Hash)
|
|
92
|
-
node.each { |v| expand(v) } if node.is_a?(::Array)
|
|
93
|
-
node
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def expand_hash(node)
|
|
97
|
-
key = stage_key(node)
|
|
98
|
-
sub = sub_hash_for(node[key].to_s) if key
|
|
99
|
-
if sub
|
|
100
|
-
node.delete(key)
|
|
101
|
-
node["typed_stage"] = deep_dup(sub)
|
|
102
|
-
end
|
|
103
|
-
node.each_value { |v| expand(v) }
|
|
104
|
-
end
|
|
105
|
-
|
|
106
|
-
def stage_key(node)
|
|
107
|
-
return :stage if node.key?(:stage)
|
|
108
|
-
|
|
109
|
-
"stage" if node.key?("stage")
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def deep_dup(node)
|
|
113
|
-
case node
|
|
114
|
-
when ::Hash then node.transform_values { |v| deep_dup(v) }
|
|
115
|
-
when ::Array then node.map { |v| deep_dup(v) }
|
|
116
|
-
else node
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ieee
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Amendment identifier for IEEE standards
|
|
7
|
-
# Represents additions/changes to a published standard
|
|
8
|
-
# Example: IEEE Std 802.3-2018/Amd 4-2020
|
|
9
|
-
class Amendment < SupplementIdentifier
|
|
10
|
-
# The amendment's own ordinal (`number`) and `year` — uniform names,
|
|
11
|
-
# not `amd_number`/`amd_year`. `number` is a plain string redefining the
|
|
12
|
-
# inherited Components::Code (leaf-safe, like the standards); `year` is
|
|
13
|
-
# the inherited base :string. `root.number` still returns the *base*
|
|
14
|
-
# document number, so the index key is unaffected. Mirrors Corrigendum.
|
|
15
|
-
attribute :number, :string
|
|
16
|
-
# `year` inherited from the base.
|
|
17
|
-
|
|
18
|
-
# TYPED_STAGES for amendment
|
|
19
|
-
# Amendment uses "Amd" abbreviation
|
|
20
|
-
TYPED_STAGES = [
|
|
21
|
-
Components::TypedStage.new(
|
|
22
|
-
abbr: ["Amd"],
|
|
23
|
-
type_code: "amendment",
|
|
24
|
-
stage_code: "published",
|
|
25
|
-
),
|
|
26
|
-
].freeze
|
|
27
|
-
|
|
28
|
-
# MR supplement suffix: `amd.{number}.{year}` (e.g. "/amd.4.2020").
|
|
29
|
-
# The MrString renderer recurses into `base` and appends this so the
|
|
30
|
-
# full IEEE amendment round-trips losslessly (mirrors Corrigendum).
|
|
31
|
-
def mr_supplement_suffix
|
|
32
|
-
segments = ["amd"]
|
|
33
|
-
segments << number.to_s if number
|
|
34
|
-
segments << year.to_s if year
|
|
35
|
-
segments.join(".")
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ieee
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Mixin for concrete IEEE leaf identifiers that are their own `#root` and
|
|
7
|
-
# carry a document code. It splits the code into separate, index-friendly
|
|
8
|
-
# scalar attributes and, crucially, **replaces** the serialized `code`
|
|
9
|
-
# string with them:
|
|
10
|
-
#
|
|
11
|
-
# number :string bare-digit narrowing key ("802", "37")
|
|
12
|
-
# prefix :string letter series designator ("C"), if any
|
|
13
|
-
# parts :string collection dotted/dashed parts (["16", "1"])
|
|
14
|
-
# separator :string "." or "-", to render the parts back
|
|
15
|
-
#
|
|
16
|
-
# relaton's index-v2 keys its binary search on `id.root.number.to_s` and
|
|
17
|
-
# narrows a part-less reference (`IEEE 802`) to the whole bucket of parts
|
|
18
|
-
# (`802.11`, `802.16`, `802.16.1`), then matches `parts` — so `number`
|
|
19
|
-
# (part-less) and `parts` MUST be separate columns. The full `code` string
|
|
20
|
-
# is not serialized at all; `code_obj` (the runtime Components::Code the
|
|
21
|
-
# renderer/urn_generator read) is rebuilt losslessly from the four fields.
|
|
22
|
-
#
|
|
23
|
-
# Why a leaf mixin and not the base: IEEE keeps identity in `code`, so the
|
|
24
|
-
# base class's inherited generic `number` (a `Components::Code`) is nil.
|
|
25
|
-
# Redefining `attribute :number, :string` on the shared,
|
|
26
|
-
# **directly-instantiated** `Ieee::Identifier` base resolves against the
|
|
27
|
-
# parent's `Components::Code` **nondeterministically under multi-flavor
|
|
28
|
-
# load** (it passes IEEE-only but flips once every flavor is required,
|
|
29
|
-
# e.g. the full suite). Applying the split only on leaf classes that are
|
|
30
|
-
# never a superclass avoids that merge ambiguity — the same pattern
|
|
31
|
-
# CIE/IHO/IETF use. Never define a `#number` *method*: it collides with
|
|
32
|
-
# lutaml's generated accessor and corrupts attribute resolution.
|
|
33
|
-
module CodeNumber
|
|
34
|
-
def self.included(base)
|
|
35
|
-
base.attribute :number, :string
|
|
36
|
-
base.attribute :prefix, :string
|
|
37
|
-
base.attribute :parts, :string, collection: true, default: -> { [] }
|
|
38
|
-
base.attribute :separator, :string
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Accept keyword args or a single positional hash (the latter is what the
|
|
42
|
-
# base #exclude/matching rebuild passes) — see Identifier#initialize.
|
|
43
|
-
def initialize(args = {}, **kwargs)
|
|
44
|
-
super
|
|
45
|
-
sync_split_from_code_obj
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# On the parse path `code_obj` is already built (base #initialize parses
|
|
49
|
-
# it from the `code:` arg); hoist its fields onto the split attributes
|
|
50
|
-
# so they serialize.
|
|
51
|
-
def sync_split_from_code_obj
|
|
52
|
-
co = code_obj
|
|
53
|
-
return unless co
|
|
54
|
-
|
|
55
|
-
self.number = co.number
|
|
56
|
-
self.prefix = co.prefix
|
|
57
|
-
self.parts = co.parts
|
|
58
|
-
self.separator = co.original_separator
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# After from_hash there is no `code` string and no cached object, so
|
|
62
|
-
# rebuild code_obj from the split fields. On the parse path base
|
|
63
|
-
# #initialize already set @code_obj, so the `||=` returns it unchanged.
|
|
64
|
-
def code_obj
|
|
65
|
-
@code_obj ||= rebuild_code_obj_from_split
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def rebuild_code_obj_from_split
|
|
69
|
-
return nil if number.nil? || number.to_s.empty?
|
|
70
|
-
|
|
71
|
-
nonempty_parts = parts.nil? || parts.empty? ? nil : parts
|
|
72
|
-
Components::Code.new(
|
|
73
|
-
prefix: prefix,
|
|
74
|
-
number: number,
|
|
75
|
-
parts: nonempty_parts,
|
|
76
|
-
original_separator: separator,
|
|
77
|
-
)
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ieee
|
|
5
|
-
module Identifiers
|
|
6
|
-
module Nesc
|
|
7
|
-
# A plain year-first NESC edition — the National Electrical Safety Code
|
|
8
|
-
# itself, referenced by publication year rather than by its C2 code.
|
|
9
|
-
#
|
|
10
|
-
# @example
|
|
11
|
-
# nesc = Pubid::Ieee.parse(
|
|
12
|
-
# "2017 National Electrical Safety Code(R) (NESC(R))",
|
|
13
|
-
# )
|
|
14
|
-
# nesc.to_s
|
|
15
|
-
# # => "IEEE Std 2017 National Electrical Safety Code(R) (NESC(R))"
|
|
16
|
-
#
|
|
17
|
-
# Rendering is Nesc::Base's; this class exists so that the builder never
|
|
18
|
-
# instantiates the abstract Base. Only concrete leaves may carry the
|
|
19
|
-
# CodeNumber mixin's `:string` `number` (see the mixin's notes on the
|
|
20
|
-
# multi-flavor attribute-resolution landmine), and every identifier that
|
|
21
|
-
# can be a `#root` needs a non-empty `number` for the relaton index.
|
|
22
|
-
class Edition < Base
|
|
23
|
-
include Pubid::Ieee::Identifiers::CodeNumber
|
|
24
|
-
|
|
25
|
-
def self.polymorphic_name
|
|
26
|
-
"pubid:ieee:nesc-edition"
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|