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
|
@@ -7,12 +7,8 @@ module Pubid
|
|
|
7
7
|
# Represents conformance test documents
|
|
8
8
|
# Example: IEEE Std 802.16/Conformance01-2003
|
|
9
9
|
class ConformanceIdentifier < SupplementIdentifier
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
# inherited Components::Code (leaf-safe). `root.number` still returns the
|
|
13
|
-
# base document number.
|
|
14
|
-
attribute :number, :string
|
|
15
|
-
# `year` inherited from the base.
|
|
10
|
+
attribute :conf_number, :string
|
|
11
|
+
attribute :conf_year, :string
|
|
16
12
|
|
|
17
13
|
# TYPED_STAGES for conformance
|
|
18
14
|
# Conformance uses "Conformance" abbreviation
|
|
@@ -23,6 +19,16 @@ module Pubid
|
|
|
23
19
|
stage_code: "published",
|
|
24
20
|
),
|
|
25
21
|
].freeze
|
|
22
|
+
|
|
23
|
+
def to_s
|
|
24
|
+
return base_identifier.to_s unless base_identifier
|
|
25
|
+
|
|
26
|
+
# Format: BASE/ConformanceNN-YEAR
|
|
27
|
+
result = base_identifier.to_s
|
|
28
|
+
result += "/Conformance#{conf_number}" if conf_number
|
|
29
|
+
result += "-#{conf_year}" if conf_year
|
|
30
|
+
result
|
|
31
|
+
end
|
|
26
32
|
end
|
|
27
33
|
end
|
|
28
34
|
end
|
|
@@ -7,13 +7,8 @@ module Pubid
|
|
|
7
7
|
# Represents corrections to published standards
|
|
8
8
|
# Example: IEEE Std 535-2013/Cor. 1-2017
|
|
9
9
|
class Corrigendum < SupplementIdentifier
|
|
10
|
-
|
|
11
|
-
|
|
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.
|
|
15
|
-
attribute :number, :string
|
|
16
|
-
# `year` inherited from the base.
|
|
10
|
+
attribute :cor_number, :string
|
|
11
|
+
attribute :cor_year, :string
|
|
17
12
|
|
|
18
13
|
# TYPED_STAGES for corrigendum
|
|
19
14
|
# Corrigendum uses "Cor" abbreviation
|
|
@@ -25,14 +20,16 @@ module Pubid
|
|
|
25
20
|
),
|
|
26
21
|
].freeze
|
|
27
22
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
23
|
+
def to_s
|
|
24
|
+
return super unless base_identifier
|
|
25
|
+
|
|
26
|
+
# Format: BASE/Cor NUMBER-YEAR or BASE/Cor. NUMBER-YEAR
|
|
27
|
+
result = base_identifier.to_s
|
|
28
|
+
result += "/Cor"
|
|
29
|
+
result += ". " if cor_number # Add period and space for formal format
|
|
30
|
+
result += cor_number if cor_number
|
|
31
|
+
result += "-#{cor_year}" if cor_year
|
|
32
|
+
result
|
|
36
33
|
end
|
|
37
34
|
end
|
|
38
35
|
end
|
|
@@ -6,32 +6,11 @@ module Pubid
|
|
|
6
6
|
# CSA dual published identifier
|
|
7
7
|
# Represents IEEE/CSA dual published standards
|
|
8
8
|
# Example: IEEE Std 844.1-2017/CSA C22.2 No. 293.1-17
|
|
9
|
-
class CsaDualPublished <
|
|
10
|
-
attribute :ieee_identifier,
|
|
9
|
+
class CsaDualPublished < Base
|
|
10
|
+
attribute :ieee_identifier, Base
|
|
11
11
|
# CSA identifier is stored as-is (not a Lutaml model type)
|
|
12
12
|
attr_accessor :csa_identifier
|
|
13
13
|
|
|
14
|
-
# `csa_identifier` is a real constructor parameter even though it is
|
|
15
|
-
# not a lutaml attribute, so the unknown-key contract must let it
|
|
16
|
-
# through — and the constructor must actually assign it.
|
|
17
|
-
def self.extra_init_keys
|
|
18
|
-
super + %i[csa_identifier]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
# Walk to the IEEE designation for the relaton-index key: this wrapper
|
|
22
|
-
# names one document by an IEEE and a CSA number and holds neither
|
|
23
|
-
# itself, so `root.number` was "".
|
|
24
|
-
def root
|
|
25
|
-
ieee_identifier ? ieee_identifier.root : self
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Carry the number onto the URN and the MR slug as well as #root — see
|
|
29
|
-
# AdoptedStandard#code_obj. `#code` below delegates already, but the
|
|
30
|
-
# URN generator and the MR renderer both read `code_obj`.
|
|
31
|
-
def code_obj
|
|
32
|
-
ieee_identifier&.code_obj
|
|
33
|
-
end
|
|
34
|
-
|
|
35
14
|
# Delegate common attributes to ieee_identifier
|
|
36
15
|
def publisher
|
|
37
16
|
ieee_identifier.publisher
|
|
@@ -53,8 +32,18 @@ module Pubid
|
|
|
53
32
|
ieee_identifier.typed_stage
|
|
54
33
|
end
|
|
55
34
|
|
|
35
|
+
def to_s
|
|
36
|
+
# Format: IEEE_IDENTIFIER/CSA CSA_IDENTIFIER
|
|
37
|
+
# The CSA identifier should render with "CSA" prefix
|
|
38
|
+
csa_str = csa_identifier.to_s
|
|
39
|
+
# Ensure CSA prefix is present
|
|
40
|
+
csa_str = "CSA #{csa_str}" unless csa_str.start_with?("CSA", "CAN/")
|
|
41
|
+
|
|
42
|
+
"#{ieee_identifier}/#{csa_str}"
|
|
43
|
+
end
|
|
44
|
+
|
|
56
45
|
def self.parse(string)
|
|
57
|
-
|
|
46
|
+
Base.parse(string)
|
|
58
47
|
end
|
|
59
48
|
end
|
|
60
49
|
end
|
|
@@ -5,9 +5,13 @@ module Pubid
|
|
|
5
5
|
module Identifiers
|
|
6
6
|
# Dual Identifier - wraps two identifiers connected with "and"
|
|
7
7
|
# Example: "ANSI C37.61-1973 and IEEE Std 321-1973"
|
|
8
|
-
class DualIdentifier <
|
|
9
|
-
attribute :first_identifier,
|
|
10
|
-
attribute :second_identifier,
|
|
8
|
+
class DualIdentifier < Base
|
|
9
|
+
attribute :first_identifier, Base, polymorphic: true
|
|
10
|
+
attribute :second_identifier, Base, polymorphic: true
|
|
11
|
+
|
|
12
|
+
def to_s
|
|
13
|
+
"#{first_identifier} and #{second_identifier}"
|
|
14
|
+
end
|
|
11
15
|
end
|
|
12
16
|
end
|
|
13
17
|
end
|
|
@@ -7,72 +7,21 @@ module Pubid
|
|
|
7
7
|
# Document jointly published by two organizations
|
|
8
8
|
# Example: "ANSI C37.61-1973 and IEEE Std 321-1973"
|
|
9
9
|
# This means the document was published together by both organizations
|
|
10
|
-
class DualPublished <
|
|
10
|
+
class DualPublished < Base
|
|
11
11
|
# First organization's identifier
|
|
12
|
-
attribute :first_identifier,
|
|
12
|
+
attribute :first_identifier, Base, polymorphic: true
|
|
13
13
|
|
|
14
14
|
# Second organization's identifier
|
|
15
|
-
attribute :second_identifier,
|
|
15
|
+
attribute :second_identifier, Base, polymorphic: true
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
"#{first_identifier} and #{second_identifier}"
|
|
19
|
+
end
|
|
16
20
|
|
|
17
21
|
def publisher
|
|
18
22
|
# Return array of both publishers
|
|
19
23
|
[first_identifier&.publisher, second_identifier&.publisher].compact
|
|
20
24
|
end
|
|
21
|
-
|
|
22
|
-
# `publisher` above is DERIVED from the two member identifiers (the
|
|
23
|
-
# serialized source of truth), so it must not be serialized itself.
|
|
24
|
-
# Emitting it breaks the canonical round-trip exactly as it did on
|
|
25
|
-
# Identifiers::AdoptedStandard and Identifiers::JointDevelopment: the
|
|
26
|
-
# derived value is default-omitted on the parse path (the attribute is
|
|
27
|
-
# unset), but re-emitted once from_hash materializes the attribute
|
|
28
|
-
# default, because the override then returns the members' publishers
|
|
29
|
-
# rather than the "IEEE" default. Worse here, it is an ARRAY, so the
|
|
30
|
-
# re-emitted value was the literal string `["IEEE", "IEEE"]`.
|
|
31
|
-
#
|
|
32
|
-
# This made all 25 DualPublished ids in the fixture corpus fail
|
|
33
|
-
# `from_hash(to_hash) == to_hash` — the gate relaton's index build
|
|
34
|
-
# uses, which SKIPS a document that fails it. Dropping the key is
|
|
35
|
-
# lossless: first_identifier and second_identifier rebuild it.
|
|
36
|
-
#
|
|
37
|
-
# A top-level to_hash delete is sufficient because DualPublished is
|
|
38
|
-
# only ever a top-level wrapper, never a nested `base` (where lutaml's
|
|
39
|
-
# own transform would bypass this override).
|
|
40
|
-
def to_hash(*args)
|
|
41
|
-
hash = super
|
|
42
|
-
hash.delete("publisher") if hash.is_a?(::Hash)
|
|
43
|
-
hash
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# A dual-published document is one document under two designations, and
|
|
47
|
-
# this wrapper carries neither number itself — so `root.number`, the key
|
|
48
|
-
# relaton-index sorts and bsearches on, was "". Walk to the first
|
|
49
|
-
# designation, which is the one the printed reference leads with.
|
|
50
|
-
def root
|
|
51
|
-
first_identifier ? first_identifier.root : self
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Carry the number onto the URN and the MR slug as well as #root — see
|
|
55
|
-
# AdoptedStandard#code_obj for why all three surfaces need it.
|
|
56
|
-
def code_obj
|
|
57
|
-
first_identifier&.code_obj
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# See AdoptedStandard#mr_year — without it the 1989 and the 1993
|
|
61
|
-
# printings of "IEEE Std 960 and IEEE Std 1177" shared one slug.
|
|
62
|
-
def mr_year
|
|
63
|
-
(year || first_identifier&.year)&.to_s
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# `#publisher` above returns an ARRAY, and the inherited `mr_publisher`
|
|
67
|
-
# is `publisher&.to_s&.downcase` — so the MR slug contained a literal
|
|
68
|
-
# Ruby array (`["ieee", "asme"]`, brackets, quotes, comma and space
|
|
69
|
-
# included) and `to_slug` is an output FILENAME. Join the two instead,
|
|
70
|
-
# keeping both publishers in the slug: they are equally part of this
|
|
71
|
-
# document's identity, so by the project rule both must reach it.
|
|
72
|
-
def mr_publisher
|
|
73
|
-
names = Array(publisher).map { |p| p.to_s.downcase }.reject(&:empty?)
|
|
74
|
-
names.empty? ? nil : names.join("-")
|
|
75
|
-
end
|
|
76
25
|
end
|
|
77
26
|
end
|
|
78
27
|
end
|
|
@@ -3,110 +3,22 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Ieee
|
|
5
5
|
module Identifiers
|
|
6
|
-
# IEC/IEEE Copublished Identifier - standards copublished by IEC and IEEE
|
|
6
|
+
# IEC/IEEE Copublished Identifier - represents standards copublished by IEC and IEEE
|
|
7
7
|
# Example: "IEC/IEEE 60079-30-2/D5 IEC:2013 (10/07)"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
# mixes them, e.g. `60076.57-1202`), and the trailing publication `year`
|
|
13
|
-
# (inherited from the base; attached with `year_sep`, always `-` in
|
|
14
|
-
# practice). The verbatim `copublished_number` is reconstructed from these
|
|
15
|
-
# for rendering — see #copublished_number — so it is NOT serialized.
|
|
16
|
-
class IecIeeeCopublished < Identifier
|
|
17
|
-
attribute :number, :string
|
|
18
|
-
attribute :parts, :string, collection: true, default: -> { [] }
|
|
19
|
-
attribute :separators, :string, collection: true, default: -> { [] }
|
|
20
|
-
attribute :year_sep, :string, default: -> { "-" }
|
|
21
|
-
# `year` is inherited from the base (:string).
|
|
22
|
-
|
|
23
|
-
attribute :iec_identifier, Identifier, polymorphic: true
|
|
24
|
-
attribute :ieee_identifier, Identifier, polymorphic: true
|
|
8
|
+
class IecIeeeCopublished < Base
|
|
9
|
+
attribute :iec_identifier, Base, polymorphic: true
|
|
10
|
+
attribute :ieee_identifier, Base, polymorphic: true
|
|
11
|
+
attribute :copublished_number, :string # The shared number like "60079-30-2"
|
|
25
12
|
attribute :draft_info, :string # Draft information like "/D5"
|
|
26
13
|
attribute :iec_year, :string # IEC year like "2013"
|
|
27
14
|
attribute :date_info, :string # Date information like "(10/07)"
|
|
28
15
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
# it there); "" for the ordinary, unmarked rendering.
|
|
36
|
-
def copublished_number(mark = "")
|
|
37
|
-
return nil if number.to_s.empty?
|
|
38
|
-
|
|
39
|
-
code = marked_code(mark)
|
|
40
|
-
code += "#{year_sep}#{year}" if year
|
|
41
|
-
code
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# The dotted/dashed parts portion, each part with its own separator.
|
|
45
|
-
def parts_suffix
|
|
46
|
-
separators.zip(parts).map { |sep, part| "#{sep}#{part}" }.join
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# A stage word printed ahead of the number (`FDIS 60079-30-2`,
|
|
50
|
-
# `CD2 P62704-5 ED1`, `TS P61869-105 ED1`). The lookahead — the next
|
|
51
|
-
# token must start like a document number — is what stops this eating a
|
|
52
|
-
# number that merely begins with a letter.
|
|
53
|
-
STAGE_PREFIX = /\A[A-Z]+\d*\s+(?=P?\d)/
|
|
54
|
-
|
|
55
|
-
# Inside the number token, the printed code stops early at:
|
|
56
|
-
#
|
|
57
|
-
# * a colon-attached publication year (`62582-2:2022`);
|
|
58
|
-
# * a dash/dot-attached 19xx/20xx year (`62395.1-2024 Redline`) — only
|
|
59
|
-
# one a descriptive tail stranded inside the code gets here, since
|
|
60
|
-
# #peel_copublished_year moves a genuinely trailing year into the
|
|
61
|
-
# `year` attribute. The 19/20 prefix keeps a part that merely looks
|
|
62
|
-
# like a year (`60076.57-1202`) from matching;
|
|
63
|
-
# * a glued parenthetical (`62704-1(E)`), which is a language marker
|
|
64
|
-
# rather than part of the number.
|
|
65
|
-
CODE_END = /:\d{4}|[-.](?:19|20)\d{2}\z|\(/
|
|
66
|
-
|
|
67
|
-
# `number` + #parts_suffix with the mark spliced at the end of the code
|
|
68
|
-
# proper.
|
|
69
|
-
#
|
|
70
|
-
# Some copublished references carry an edition, a colon year, a stage
|
|
71
|
-
# word or a "- Redline" tail that the parser keeps inside
|
|
72
|
-
# `number`/`parts` rather than in dedicated attributes; appending the
|
|
73
|
-
# mark after all of it would print
|
|
74
|
-
# `IEC/IEEE 60076-16 Edition 2.0 2018-09™` instead of
|
|
75
|
-
# `IEC/IEEE 60076-16™ Edition 2.0 2018-09`. Scanning the whole printed
|
|
76
|
-
# code (not just the suffix) matters because the split point varies —
|
|
77
|
-
# `60802 Edition 1` lands in `number`, `-16 Edition 2` in `parts`.
|
|
78
|
-
#
|
|
79
|
-
# With the flag off `mark` is "" and this returns the code unchanged, so
|
|
80
|
-
# the plain rendering is byte-identical by construction.
|
|
81
|
-
def marked_code(mark)
|
|
82
|
-
code = "#{number}#{parts_suffix}"
|
|
83
|
-
return code if mark.to_s.empty?
|
|
84
|
-
|
|
85
|
-
at = code_end_index(code)
|
|
86
|
-
"#{code[0...at]}#{mark}#{code[at..]}"
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
# Index at which the printed code ends and descriptive text begins.
|
|
90
|
-
#
|
|
91
|
-
# The number is the first whitespace-delimited token after any stage
|
|
92
|
-
# word, so the code can never run past that token's end — which is what
|
|
93
|
-
# keeps the mark off a trailing edition/date phrase even when no
|
|
94
|
-
# CODE_END boundary matches inside the token.
|
|
95
|
-
def code_end_index(code)
|
|
96
|
-
start = code[STAGE_PREFIX]&.length || 0
|
|
97
|
-
token_end = code.index(" ", start) || code.length
|
|
98
|
-
boundary = code[start...token_end].index(CODE_END)
|
|
99
|
-
boundary ? start + boundary : token_end
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
# The base IEEE #exclude already nils year/month/day; also reset the
|
|
103
|
-
# year separator (a format sibling of the scalar year, per the CSA
|
|
104
|
-
# lesson) so a date-less reference matches a `:`-dated form too.
|
|
105
|
-
def exclude(*args)
|
|
106
|
-
result = super
|
|
107
|
-
if args.intersect?(%i[year date]) && result.respond_to?(:year_sep=)
|
|
108
|
-
result.year_sep = "-"
|
|
109
|
-
end
|
|
16
|
+
def to_s
|
|
17
|
+
result = "IEC/IEEE"
|
|
18
|
+
result += " #{copublished_number}" if copublished_number
|
|
19
|
+
result += draft_info if draft_info
|
|
20
|
+
result += " IEC:#{iec_year}" if iec_year
|
|
21
|
+
result += " #{date_info}" if date_info
|
|
110
22
|
result
|
|
111
23
|
end
|
|
112
24
|
end
|
|
@@ -7,31 +7,7 @@ module Pubid
|
|
|
7
7
|
# Represents an interpretation sheet or clarification
|
|
8
8
|
# Example: IEEE Std 1076/INT-1991, IEEE Std 1003.1-1988/INT
|
|
9
9
|
class InterpretationIdentifier < SupplementIdentifier
|
|
10
|
-
|
|
11
|
-
# from the base, so no attribute is declared here.
|
|
12
|
-
|
|
13
|
-
# The interpreted standard's code must reach the URN. Before this
|
|
14
|
-
# change the flat-parsed form kept its number in the wrapper's own
|
|
15
|
-
# `code_obj` (the builder never built a base), so the URN carried it by
|
|
16
|
-
# accident; now that the number lives on `base` where it belongs, the
|
|
17
|
-
# URN generator has to be pointed at it or the URN silently loses the
|
|
18
|
-
# document number. `code_obj` is a plain attr_accessor, not a lutaml
|
|
19
|
-
# attribute, so overriding it as a method is safe.
|
|
20
|
-
def code_obj
|
|
21
|
-
super || base&.code_obj
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
# MR supplement suffix: `int.{year}` — mirrors Corrigendum/Amendment.
|
|
25
|
-
# Without it the MrString renderer slugs an interpretation FLAT off
|
|
26
|
-
# attributes a supplement does not have, instead of recursing into
|
|
27
|
-
# `base`, so every interpretation of every standard collapsed onto
|
|
28
|
-
# "ieee.std.{year}" with no document number at all — and `to_slug` is
|
|
29
|
-
# an output FILENAME.
|
|
30
|
-
def mr_supplement_suffix
|
|
31
|
-
segments = ["int"]
|
|
32
|
-
segments << year.to_s if year
|
|
33
|
-
segments.join(".")
|
|
34
|
-
end
|
|
10
|
+
attribute :int_year, :string
|
|
35
11
|
|
|
36
12
|
# TYPED_STAGES for interpretation
|
|
37
13
|
# Interpretation uses "INT" abbreviation
|
|
@@ -42,6 +18,16 @@ module Pubid
|
|
|
42
18
|
stage_code: "published",
|
|
43
19
|
),
|
|
44
20
|
].freeze
|
|
21
|
+
|
|
22
|
+
def to_s
|
|
23
|
+
return base_identifier.to_s unless base_identifier
|
|
24
|
+
|
|
25
|
+
# Format: BASE/INT or BASE/INT-YEAR
|
|
26
|
+
result = base_identifier.to_s
|
|
27
|
+
result += "/INT"
|
|
28
|
+
result += "-#{int_year}" if int_year
|
|
29
|
+
result
|
|
30
|
+
end
|
|
45
31
|
end
|
|
46
32
|
end
|
|
47
33
|
end
|
|
@@ -29,27 +29,18 @@ module Pubid
|
|
|
29
29
|
# - "P" prefix means IEEE project (any stage)
|
|
30
30
|
# - ISO stages and IEEE drafts can coexist but are not equivalent
|
|
31
31
|
# - Format conversion preserves semantic meaning within each system
|
|
32
|
-
class JointDevelopment <
|
|
33
|
-
# Split index columns (number/prefix/parts/separator) instead of a
|
|
34
|
-
# `code` string, like every IEEE leaf — see CodeNumber. Rendering reads
|
|
35
|
-
# `code` (base #code → code_obj), which CodeNumber rebuilds from the
|
|
36
|
-
# split fields, so to_ieee_format / to_iso_format are unaffected.
|
|
37
|
-
include CodeNumber
|
|
38
|
-
|
|
32
|
+
class JointDevelopment < Base
|
|
39
33
|
attribute :publishers, :string, collection: true
|
|
40
34
|
attribute :lead_party, :string # "IEEE", "ISO", "IEC", etc.
|
|
35
|
+
attribute :code, :string
|
|
41
36
|
attribute :typed_stage, Components::TypedStage
|
|
42
37
|
attribute :year, :string
|
|
43
38
|
attribute :iso_stage, :string # For ISO stage if present
|
|
44
39
|
attribute :ieee_draft, :string # For IEEE P/D notation if present
|
|
45
40
|
|
|
46
|
-
|
|
47
|
-
# #exclude/matching rebuild passes the latter) — see
|
|
48
|
-
# Identifier#initialize.
|
|
49
|
-
def initialize(args = {}, **kwargs)
|
|
50
|
-
args = args.merge(kwargs) unless kwargs.empty?
|
|
41
|
+
def initialize(**args)
|
|
51
42
|
# Call super FIRST to initialize Lutaml::Model attributes
|
|
52
|
-
super
|
|
43
|
+
super
|
|
53
44
|
|
|
54
45
|
# Then handle typed_stage
|
|
55
46
|
if args[:typed_stage].is_a?(Components::TypedStage)
|
|
@@ -88,33 +79,17 @@ module Pubid
|
|
|
88
79
|
end
|
|
89
80
|
|
|
90
81
|
# Convert to string representation
|
|
91
|
-
# JointDevelopment has its own dual-format logic (IEEE vs ISO)
|
|
92
|
-
# that doesn't go through the format registry renderer.
|
|
93
82
|
# @param format [Symbol] :ieee or :iso (defaults to canonical_format)
|
|
94
|
-
# @param trademark [Boolean] append the IEEE trademark symbol (™/®)
|
|
95
83
|
# @return [String] formatted identifier
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
publishers: publishers)
|
|
106
|
-
else
|
|
107
|
-
""
|
|
108
|
-
end
|
|
109
|
-
|
|
110
|
-
result = case format
|
|
111
|
-
when :iso
|
|
112
|
-
to_iso_format(mark)
|
|
113
|
-
else
|
|
114
|
-
to_ieee_format(mark)
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
annotate_plain_render(result, **opts)
|
|
84
|
+
def to_s(format: canonical_format)
|
|
85
|
+
case format
|
|
86
|
+
when :iso
|
|
87
|
+
to_iso_format
|
|
88
|
+
when :ieee
|
|
89
|
+
to_ieee_format
|
|
90
|
+
else
|
|
91
|
+
to_ieee_format
|
|
92
|
+
end
|
|
118
93
|
end
|
|
119
94
|
|
|
120
95
|
private
|
|
@@ -122,7 +97,7 @@ module Pubid
|
|
|
122
97
|
# Convert to ISO format representation
|
|
123
98
|
# ISO/IEC/IEEE FDIS 26511:2018
|
|
124
99
|
# @return [String] ISO format string
|
|
125
|
-
def to_iso_format
|
|
100
|
+
def to_iso_format
|
|
126
101
|
parts = []
|
|
127
102
|
|
|
128
103
|
# Publishers (slash-separated)
|
|
@@ -140,7 +115,6 @@ module Pubid
|
|
|
140
115
|
|
|
141
116
|
# Code (NO P prefix in ISO format, NO draft notation)
|
|
142
117
|
code_str = code.to_s.gsub(/^P/, "")
|
|
143
|
-
code_str += mark unless code_str.empty?
|
|
144
118
|
parts << code_str if code_str && !code_str.empty?
|
|
145
119
|
|
|
146
120
|
# Join with space and add year with colon
|
|
@@ -153,7 +127,7 @@ module Pubid
|
|
|
153
127
|
# Convert to IEEE format representation
|
|
154
128
|
# ISO/IEC/IEEE P26511/D8-2018
|
|
155
129
|
# @return [String] IEEE format string
|
|
156
|
-
def to_ieee_format
|
|
130
|
+
def to_ieee_format
|
|
157
131
|
parts = []
|
|
158
132
|
|
|
159
133
|
# Publishers (slash-separated)
|
|
@@ -167,9 +141,6 @@ module Pubid
|
|
|
167
141
|
code_str = "P#{code_str}"
|
|
168
142
|
end
|
|
169
143
|
|
|
170
|
-
# Mark after the number, before the draft and the year
|
|
171
|
-
code_str += mark unless code_str.empty?
|
|
172
|
-
|
|
173
144
|
# Add IEEE draft notation if available (e.g., /D8)
|
|
174
145
|
if ieee_draft
|
|
175
146
|
code_str += "/#{ieee_draft}"
|
|
@@ -186,12 +157,6 @@ module Pubid
|
|
|
186
157
|
result
|
|
187
158
|
end
|
|
188
159
|
|
|
189
|
-
# Public again: these override base accessors and MUST be public — lutaml
|
|
190
|
-
# serialization calls `public_send(:publisher)`, so leaving them under the
|
|
191
|
-
# `private` above made JointDevelopment#to_hash raise (it could not be
|
|
192
|
-
# serialized or round-tripped / indexed at all).
|
|
193
|
-
public
|
|
194
|
-
|
|
195
160
|
# Override to ensure proper publisher handling
|
|
196
161
|
def publisher
|
|
197
162
|
publishers&.first || super
|
|
@@ -201,22 +166,6 @@ module Pubid
|
|
|
201
166
|
def copublisher
|
|
202
167
|
publishers&.drop(1) || super
|
|
203
168
|
end
|
|
204
|
-
|
|
205
|
-
# `publisher`/`copublisher` are *derived* from `publishers` (the source
|
|
206
|
-
# of truth, which IS serialized). Emitting them too breaks the canonical
|
|
207
|
-
# round-trip: the derived `publisher` is default-omitted on the parse
|
|
208
|
-
# path but re-emitted after from_hash (the override returns
|
|
209
|
-
# publishers.first, not the default). Drop both — publishers rebuilds
|
|
210
|
-
# them. (JointDevelopment is a top-level root, never nested, so a
|
|
211
|
-
# to_hash-level drop is sufficient.)
|
|
212
|
-
def to_hash(*args)
|
|
213
|
-
hash = super
|
|
214
|
-
if hash.is_a?(::Hash)
|
|
215
|
-
hash.delete("publisher")
|
|
216
|
-
hash.delete("copublisher")
|
|
217
|
-
end
|
|
218
|
-
hash
|
|
219
|
-
end
|
|
220
169
|
end
|
|
221
170
|
end
|
|
222
171
|
end
|
|
@@ -8,41 +8,30 @@ module Pubid
|
|
|
8
8
|
# Examples:
|
|
9
9
|
# - "IEEE Std 1299/C62.22.1-1996" (same document, two numbers)
|
|
10
10
|
# - "IEEE Std 960-1989, Std 1177-1989" (same document, two numbers)
|
|
11
|
-
class MultiNumberedIdentifier <
|
|
12
|
-
#
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
#
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
# AdoptedStandard#code_obj.
|
|
36
|
-
def code_obj
|
|
37
|
-
primary_identifier&.code_obj
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# See AdoptedStandard#mr_year. `year` below already delegates, so this
|
|
41
|
-
# only stringifies — it is kept explicit so the hook survives if that
|
|
42
|
-
# delegation is ever removed in favour of the URN generator's
|
|
43
|
-
# `year_component` root fallback.
|
|
44
|
-
def mr_year
|
|
45
|
-
year&.to_s
|
|
11
|
+
class MultiNumberedIdentifier < Base
|
|
12
|
+
# Primary identifier (main IEEE standard number)
|
|
13
|
+
# Stored as-is (Lutaml model type checking doesn't work with polymorphic identifiers)
|
|
14
|
+
attr_accessor :primary_identifier
|
|
15
|
+
|
|
16
|
+
# Secondary identifier (additional number for same document)
|
|
17
|
+
attr_accessor :secondary_identifier
|
|
18
|
+
|
|
19
|
+
def to_s
|
|
20
|
+
# Format: PRIMARY/SECONDARY or PRIMARY, SECONDARY
|
|
21
|
+
# The format depends on the original input
|
|
22
|
+
return primary_identifier.to_s unless secondary_identifier
|
|
23
|
+
|
|
24
|
+
# Check if the secondary identifier starts with "C" (like C62.22.1)
|
|
25
|
+
# If so, use slash format (cross-reference style)
|
|
26
|
+
secondary_code = secondary_identifier.code.to_s
|
|
27
|
+
if secondary_code.start_with?("C") && secondary_code.match?(/^C\d+\./)
|
|
28
|
+
# Cross-reference format: IEEE Std 1299/C62.22.1-1996
|
|
29
|
+
"#{primary_identifier}/#{secondary_identifier}"
|
|
30
|
+
else
|
|
31
|
+
# Comma format: IEEE Std 960-1989, Std 1177-1989
|
|
32
|
+
# But we normalize to "and" format for consistency
|
|
33
|
+
"#{primary_identifier} and #{secondary_identifier}"
|
|
34
|
+
end
|
|
46
35
|
end
|
|
47
36
|
|
|
48
37
|
def publisher
|
|
@@ -56,29 +45,6 @@ module Pubid
|
|
|
56
45
|
def year
|
|
57
46
|
primary_identifier&.year
|
|
58
47
|
end
|
|
59
|
-
|
|
60
|
-
# `publisher` and `year` are DERIVED from primary_identifier — and,
|
|
61
|
-
# since that member became a serialized attribute above, the derived
|
|
62
|
-
# values are now re-emitted after from_hash materializes the attribute
|
|
63
|
-
# defaults, while the parse path omits them as unset. That asymmetry
|
|
64
|
-
# breaks `from_hash(to_hash) == to_hash`, the gate relaton's index
|
|
65
|
-
# build uses to decide whether to keep a document.
|
|
66
|
-
#
|
|
67
|
-
# It is latent rather than live for the one corpus id (its primary is
|
|
68
|
-
# IEEE-published with no year, so both derived values match their
|
|
69
|
-
# defaults and are dropped anyway), but the class documents that its
|
|
70
|
-
# members may belong to another body — and a synthetic AIEE primary
|
|
71
|
-
# reproduces it immediately. Dropping the keys is lossless:
|
|
72
|
-
# primary_identifier rebuilds both. Same treatment as
|
|
73
|
-
# AdoptedStandard#to_hash and DualPublished#to_hash.
|
|
74
|
-
def to_hash(*args)
|
|
75
|
-
hash = super
|
|
76
|
-
return hash unless hash.is_a?(::Hash)
|
|
77
|
-
|
|
78
|
-
hash.delete("publisher")
|
|
79
|
-
hash.delete("year")
|
|
80
|
-
hash
|
|
81
|
-
end
|
|
82
48
|
end
|
|
83
49
|
end
|
|
84
50
|
end
|