pubid 1.15.19 → 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/LICENSE.txt +1 -1
- data/README.adoc +2041 -53
- data/archived-gems/pubid-ccsds/update_codes.yaml +1 -0
- data/archived-gems/pubid-iec/stages.yaml +129 -0
- data/archived-gems/pubid-iec/update_codes.yaml +67 -0
- data/archived-gems/pubid-ieee/update_codes.yaml +104 -0
- data/archived-gems/pubid-iso/stages.yaml +106 -0
- data/archived-gems/pubid-iso/update_codes.yaml +4 -0
- data/archived-gems/pubid-itu/i18n.yaml +13 -0
- data/archived-gems/pubid-itu/series.yaml +42 -0
- data/archived-gems/pubid-nist/publishers.yaml +6 -0
- data/archived-gems/pubid-nist/series.yaml +121 -0
- data/archived-gems/pubid-nist/stages.yaml +16 -0
- data/archived-gems/pubid-nist/update_codes.yaml +93 -0
- data/archived-gems/pubid-plateau/update_codes.yaml +6 -0
- data/data/ccsds/update_codes.yaml +1 -0
- data/data/iec/update_codes.yaml +67 -0
- data/data/ieee/update_codes.yaml +104 -0
- data/data/iso/update_codes.yaml +21 -0
- data/data/nist/update_codes.yaml +87 -0
- data/data/plateau/update_codes.yaml +6 -0
- data/lib/pubid/amca/builder.rb +176 -0
- data/lib/pubid/amca/identifier.rb +18 -0
- data/lib/pubid/amca/identifiers/base.rb +64 -0
- data/lib/pubid/amca/identifiers/interpretation.rb +51 -0
- data/lib/pubid/amca/identifiers/publication.rb +47 -0
- data/lib/pubid/amca/identifiers/standard.rb +22 -0
- data/lib/pubid/amca/identifiers.rb +12 -0
- data/lib/pubid/amca/parser.rb +153 -0
- data/lib/pubid/amca/scheme.rb +16 -0
- data/lib/pubid/amca/single_identifier.rb +33 -0
- data/lib/pubid/amca/urn_generator.rb +50 -0
- data/lib/pubid/amca.rb +26 -0
- data/lib/pubid/ansi/builder.rb +52 -0
- data/lib/pubid/ansi/identifier.rb +13 -0
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +12 -0
- data/lib/pubid/ansi/identifiers/standard.rb +16 -0
- data/lib/pubid/ansi/identifiers.rb +11 -0
- data/lib/pubid/ansi/parser.rb +91 -0
- data/lib/pubid/ansi/scheme.rb +15 -0
- data/lib/pubid/ansi/single_identifier.rb +45 -0
- data/lib/pubid/ansi/urn_generator.rb +76 -0
- data/lib/pubid/ansi.rb +27 -0
- data/lib/pubid/api/builder.rb +85 -0
- data/lib/pubid/api/components/code.rb +9 -0
- data/lib/pubid/api/identifier.rb +21 -0
- data/lib/pubid/api/identifiers/base.rb +24 -0
- data/lib/pubid/api/identifiers/bulletin.rb +15 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +15 -0
- data/lib/pubid/api/identifiers/mpms.rb +44 -0
- data/lib/pubid/api/identifiers/publication.rb +15 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +15 -0
- data/lib/pubid/api/identifiers/specification.rb +15 -0
- data/lib/pubid/api/identifiers/standard.rb +15 -0
- data/lib/pubid/api/identifiers/technical_report.rb +15 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +27 -0
- data/lib/pubid/api/parser.rb +140 -0
- data/lib/pubid/api/scheme.rb +66 -0
- data/lib/pubid/api/single_identifier.rb +46 -0
- data/lib/pubid/api/urn_generator.rb +41 -0
- data/lib/pubid/api.rb +17 -0
- data/lib/pubid/ashrae/builder.rb +498 -0
- data/lib/pubid/ashrae/identifier.rb +18 -0
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +46 -0
- data/lib/pubid/ashrae/identifiers/addendum.rb +55 -0
- data/lib/pubid/ashrae/identifiers/base.rb +23 -0
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +51 -0
- data/lib/pubid/ashrae/identifiers/errata.rb +40 -0
- data/lib/pubid/ashrae/identifiers/guideline.rb +38 -0
- data/lib/pubid/ashrae/identifiers/interpretation.rb +39 -0
- data/lib/pubid/ashrae/identifiers/standard.rb +38 -0
- data/lib/pubid/ashrae/identifiers.rb +16 -0
- data/lib/pubid/ashrae/parser.rb +724 -0
- data/lib/pubid/ashrae/scheme.rb +53 -0
- data/lib/pubid/ashrae/single_identifier.rb +23 -0
- data/lib/pubid/ashrae/supplement_identifier.rb +23 -0
- data/lib/pubid/ashrae/urn_generator.rb +59 -0
- data/lib/pubid/ashrae.rb +21 -0
- data/lib/pubid/asme/builder.rb +153 -0
- data/lib/pubid/asme/components/code.rb +18 -0
- data/lib/pubid/asme/identifier.rb +15 -0
- data/lib/pubid/asme/identifiers/base.rb +70 -0
- data/lib/pubid/asme/identifiers/standard.rb +12 -0
- data/lib/pubid/asme/identifiers.rb +10 -0
- data/lib/pubid/asme/parser.rb +308 -0
- data/lib/pubid/asme/scheme.rb +37 -0
- data/lib/pubid/asme/single_identifier.rb +29 -0
- data/lib/pubid/asme/urn_generator.rb +133 -0
- data/lib/pubid/asme.rb +21 -0
- data/lib/pubid/astm/builder.rb +159 -0
- data/lib/pubid/astm/components/code.rb +33 -0
- data/lib/pubid/astm/identifier.rb +15 -0
- data/lib/pubid/astm/identifiers/adjunct.rb +21 -0
- data/lib/pubid/astm/identifiers/base.rb +13 -0
- data/lib/pubid/astm/identifiers/data_series.rb +25 -0
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +74 -0
- data/lib/pubid/astm/identifiers/manual.rb +40 -0
- data/lib/pubid/astm/identifiers/monograph.rb +25 -0
- data/lib/pubid/astm/identifiers/research_report.rb +18 -0
- data/lib/pubid/astm/identifiers/standard.rb +52 -0
- data/lib/pubid/astm/identifiers/technical_report.rb +23 -0
- data/lib/pubid/astm/identifiers/work_in_progress.rb +21 -0
- data/lib/pubid/astm/parser.rb +244 -0
- data/lib/pubid/astm/scheme.rb +55 -0
- data/lib/pubid/astm/single_identifier.rb +25 -0
- data/lib/pubid/astm/urn_generator.rb +99 -0
- data/lib/pubid/astm.rb +38 -0
- data/lib/pubid/bsi/builder.rb +1483 -0
- data/lib/pubid/bsi/components/code.rb +11 -0
- data/lib/pubid/bsi/components/date.rb +11 -0
- data/lib/pubid/bsi/components/publisher.rb +11 -0
- data/lib/pubid/bsi/components/type.rb +11 -0
- data/lib/pubid/bsi/identifier.rb +27 -0
- data/lib/pubid/bsi/identifiers/addendum_document.rb +64 -0
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +95 -0
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +82 -0
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +118 -0
- data/lib/pubid/bsi/identifiers/amendment.rb +40 -0
- data/lib/pubid/bsi/identifiers/base.rb +11 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +27 -0
- data/lib/pubid/bsi/identifiers/british_standard.rb +33 -0
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +114 -0
- data/lib/pubid/bsi/identifiers/committee_document.rb +51 -0
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +152 -0
- data/lib/pubid/bsi/identifiers/corrigendum.rb +28 -0
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +69 -0
- data/lib/pubid/bsi/identifiers/disc.rb +56 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +71 -0
- data/lib/pubid/bsi/identifiers/electronic_book.rb +52 -0
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +47 -0
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +82 -0
- data/lib/pubid/bsi/identifiers/flex.rb +61 -0
- data/lib/pubid/bsi/identifiers/handbook.rb +39 -0
- data/lib/pubid/bsi/identifiers/index.rb +62 -0
- data/lib/pubid/bsi/identifiers/method.rb +76 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +73 -0
- data/lib/pubid/bsi/identifiers/practice_guide.rb +27 -0
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +79 -0
- data/lib/pubid/bsi/identifiers/published_document.rb +79 -0
- data/lib/pubid/bsi/identifiers/section.rb +62 -0
- data/lib/pubid/bsi/identifiers/set.rb +46 -0
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +40 -0
- data/lib/pubid/bsi/identifiers/supplement_document.rb +51 -0
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +81 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +79 -0
- data/lib/pubid/bsi/identifiers/test_method.rb +67 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +52 -0
- data/lib/pubid/bsi/identifiers.rb +52 -0
- data/lib/pubid/bsi/model.rb +196 -0
- data/lib/pubid/bsi/parser.rb +659 -0
- data/lib/pubid/bsi/scheme.rb +243 -0
- data/lib/pubid/bsi/single_identifier.rb +129 -0
- data/lib/pubid/bsi/urn_generator.rb +84 -0
- data/lib/pubid/bsi.rb +32 -0
- data/lib/pubid/builder/base.rb +138 -0
- data/lib/pubid/bundled_identifier.rb +126 -0
- data/lib/pubid/ccsds/builder.rb +56 -0
- data/lib/pubid/ccsds/identifier.rb +16 -0
- data/lib/pubid/ccsds/identifiers/base.rb +78 -0
- data/lib/pubid/ccsds/identifiers/base_BASE_88929.rb +70 -0
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +39 -0
- data/lib/pubid/ccsds/identifiers.rb +10 -0
- data/lib/pubid/ccsds/parser.rb +71 -0
- data/lib/pubid/ccsds/scheme.rb +57 -0
- data/lib/pubid/ccsds/single_identifier.rb +74 -0
- data/lib/pubid/ccsds/supplement_identifier.rb +33 -0
- data/lib/pubid/ccsds/urn_generator.rb +115 -0
- data/lib/pubid/ccsds.rb +21 -0
- data/lib/pubid/cen_cenelec/builder.rb +330 -0
- data/lib/pubid/cen_cenelec/identifier.rb +15 -0
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +40 -0
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +29 -0
- data/lib/pubid/cen_cenelec/identifiers/base.rb +75 -0
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +28 -0
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +27 -0
- data/lib/pubid/cen_cenelec/identifiers/cenelec_harmonization_document.rb +28 -0
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +61 -0
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +35 -0
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +41 -0
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +37 -0
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +28 -0
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +22 -0
- data/lib/pubid/cen_cenelec/identifiers/guide.rb +27 -0
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +27 -0
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +27 -0
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +35 -0
- data/lib/pubid/cen_cenelec/identifiers.rb +32 -0
- data/lib/pubid/cen_cenelec/parser.rb +144 -0
- data/lib/pubid/cen_cenelec/scheme.rb +164 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +130 -0
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +48 -0
- data/lib/pubid/cen_cenelec/urn_generator.rb +129 -0
- data/lib/pubid/cen_cenelec.rb +21 -0
- data/lib/pubid/cie/builder.rb +399 -0
- data/lib/pubid/cie/components/code.rb +72 -0
- data/lib/pubid/cie/components/language.rb +58 -0
- data/lib/pubid/cie/identifier.rb +18 -0
- data/lib/pubid/cie/identifiers/bundle.rb +20 -0
- data/lib/pubid/cie/identifiers/conference.rb +32 -0
- data/lib/pubid/cie/identifiers/corrigendum.rb +40 -0
- data/lib/pubid/cie/identifiers/dual_published.rb +41 -0
- data/lib/pubid/cie/identifiers/identical.rb +64 -0
- data/lib/pubid/cie/identifiers/joint_published.rb +52 -0
- data/lib/pubid/cie/identifiers/standard.rb +58 -0
- data/lib/pubid/cie/identifiers/supplement.rb +45 -0
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +20 -0
- data/lib/pubid/cie/identifiers.rb +17 -0
- data/lib/pubid/cie/parser.rb +347 -0
- data/lib/pubid/cie/scheme.rb +64 -0
- data/lib/pubid/cie/single_identifier.rb +30 -0
- data/lib/pubid/cie/supplement_identifier.rb +26 -0
- data/lib/pubid/cie/urn_generator.rb +123 -0
- data/lib/pubid/cie.rb +28 -0
- data/lib/pubid/components/code.rb +33 -0
- data/lib/pubid/components/date.rb +49 -0
- data/lib/pubid/components/edition.rb +32 -0
- data/lib/pubid/components/language.rb +37 -0
- data/lib/pubid/components/locality.rb +10 -0
- data/lib/pubid/components/publisher.rb +36 -0
- data/lib/pubid/components/stage.rb +54 -0
- data/lib/pubid/components/type.rb +58 -0
- data/lib/pubid/components/typed_stage.rb +55 -0
- data/lib/pubid/components.rb +15 -0
- data/lib/pubid/core/pattern_doc_generator.rb +272 -0
- data/lib/pubid/core/update_codes.rb +77 -0
- data/lib/pubid/core.rb +8 -0
- data/lib/pubid/csa/builder.rb +671 -0
- data/lib/pubid/csa/components/code.rb +9 -0
- data/lib/pubid/csa/components.rb +9 -0
- data/lib/pubid/csa/composite_identifier.rb +27 -0
- data/lib/pubid/csa/identifier.rb +457 -0
- data/lib/pubid/csa/identifiers/base.rb +133 -0
- data/lib/pubid/csa/identifiers/bundled.rb +125 -0
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +82 -0
- data/lib/pubid/csa/identifiers/cec.rb +129 -0
- data/lib/pubid/csa/identifiers/combined.rb +130 -0
- data/lib/pubid/csa/identifiers/csa_adopted.rb +78 -0
- data/lib/pubid/csa/identifiers/package.rb +65 -0
- data/lib/pubid/csa/identifiers/series.rb +127 -0
- data/lib/pubid/csa/identifiers/standard.rb +10 -0
- data/lib/pubid/csa/identifiers.rb +17 -0
- data/lib/pubid/csa/parser.rb +445 -0
- data/lib/pubid/csa/scheme.rb +44 -0
- data/lib/pubid/csa/single_identifier.rb +30 -0
- data/lib/pubid/csa/urn_generator.rb +80 -0
- data/lib/pubid/csa/wrapper_identifier.rb +31 -0
- data/lib/pubid/csa.rb +25 -0
- data/lib/pubid/etsi/builder.rb +133 -0
- data/lib/pubid/etsi/components/code.rb +42 -0
- data/lib/pubid/etsi/components/version.rb +37 -0
- data/lib/pubid/etsi/components.rb +10 -0
- data/lib/pubid/etsi/identifier.rb +14 -0
- data/lib/pubid/etsi/identifiers/amendment.rb +15 -0
- data/lib/pubid/etsi/identifiers/base.rb +38 -0
- data/lib/pubid/etsi/identifiers/corrigendum.rb +15 -0
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +19 -0
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +91 -0
- data/lib/pubid/etsi/identifiers.rb +14 -0
- data/lib/pubid/etsi/parser.rb +133 -0
- data/lib/pubid/etsi/scheme.rb +42 -0
- data/lib/pubid/etsi/urn_generator.rb +76 -0
- data/lib/pubid/etsi.rb +21 -0
- data/lib/pubid/export/auditor.rb +89 -0
- data/lib/pubid/export/data_class_exporter.rb +59 -0
- data/lib/pubid/export/exporter.rb +74 -0
- data/lib/pubid/export/flavor_exporter.rb +402 -0
- 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/result.rb +97 -0
- data/lib/pubid/export/scheme_exporter.rb +70 -0
- data/lib/pubid/export.rb +18 -0
- data/lib/pubid/format_detector.rb +16 -0
- data/lib/pubid/format_registry.rb +42 -0
- data/lib/pubid/identifier.rb +235 -0
- data/lib/pubid/identifier_metadata.rb +148 -0
- data/lib/pubid/identifier_registry.rb +198 -0
- data/lib/pubid/idf/builder.rb +82 -0
- data/lib/pubid/idf/identifier.rb +69 -0
- data/lib/pubid/idf/identifiers/amendment.rb +27 -0
- data/lib/pubid/idf/identifiers/corrigendum.rb +27 -0
- data/lib/pubid/idf/identifiers/international_standard.rb +123 -0
- data/lib/pubid/idf/identifiers/reviewed_method.rb +100 -0
- data/lib/pubid/idf/identifiers.rb +13 -0
- data/lib/pubid/idf/parser.rb +143 -0
- data/lib/pubid/idf/scheme.rb +61 -0
- data/lib/pubid/idf/single_identifier.rb +19 -0
- data/lib/pubid/idf/supplement_identifier.rb +43 -0
- data/lib/pubid/idf/urn_generator.rb +84 -0
- data/lib/pubid/idf.rb +25 -0
- data/lib/pubid/iec/builder.rb +457 -0
- data/lib/pubid/iec/components/code.rb +59 -0
- data/lib/pubid/iec/components/consolidated_amendment.rb +59 -0
- data/lib/pubid/iec/components/publisher.rb +35 -0
- data/lib/pubid/iec/components/sheet.rb +32 -0
- data/lib/pubid/iec/components/trf_info.rb +38 -0
- data/lib/pubid/iec/components/vap_suffix.rb +41 -0
- data/lib/pubid/iec/identifier.rb +21 -0
- data/lib/pubid/iec/identifiers/amendment.rb +94 -0
- data/lib/pubid/iec/identifiers/base.rb +78 -0
- data/lib/pubid/iec/identifiers/component_specification.rb +39 -0
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +39 -0
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +86 -0
- data/lib/pubid/iec/identifiers/corrigendum.rb +94 -0
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +141 -0
- data/lib/pubid/iec/identifiers/guide.rb +104 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +147 -0
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +104 -0
- data/lib/pubid/iec/identifiers/operational_document.rb +39 -0
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +101 -0
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +66 -0
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +40 -0
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +40 -0
- data/lib/pubid/iec/identifiers/technical_report.rb +132 -0
- data/lib/pubid/iec/identifiers/technical_specification.rb +132 -0
- data/lib/pubid/iec/identifiers/technology_report.rb +39 -0
- data/lib/pubid/iec/identifiers/test_report_form.rb +78 -0
- data/lib/pubid/iec/identifiers/vap_identifier.rb +77 -0
- data/lib/pubid/iec/identifiers/white_paper.rb +39 -0
- data/lib/pubid/iec/identifiers/working_document.rb +96 -0
- data/lib/pubid/iec/parser.rb +412 -0
- data/lib/pubid/iec/rendering_style.rb +113 -0
- data/lib/pubid/iec/scheme.rb +71 -0
- data/lib/pubid/iec/single_identifier.rb +80 -0
- data/lib/pubid/iec/supplement_identifier.rb +161 -0
- data/lib/pubid/iec/urn_generator.rb +193 -0
- data/lib/pubid/iec/urn_parser.rb +289 -0
- data/lib/pubid/iec.rb +85 -0
- data/lib/pubid/ieee/aiee/builder.rb +71 -0
- data/lib/pubid/ieee/aiee/identifier.rb +105 -0
- data/lib/pubid/ieee/aiee/parser.rb +130 -0
- data/lib/pubid/ieee/aiee.rb +11 -0
- data/lib/pubid/ieee/builder.rb +1237 -0
- data/lib/pubid/ieee/components/code.rb +102 -0
- data/lib/pubid/ieee/components/draft.rb +93 -0
- data/lib/pubid/ieee/components/relationship.rb +157 -0
- data/lib/pubid/ieee/components/typed_stage.rb +100 -0
- data/lib/pubid/ieee/identifier.rb +13 -0
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +33 -0
- data/lib/pubid/ieee/identifiers/base.rb +591 -0
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +35 -0
- data/lib/pubid/ieee/identifiers/corrigendum.rb +37 -0
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +51 -0
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +18 -0
- data/lib/pubid/ieee/identifiers/dual_published.rb +28 -0
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +27 -0
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +34 -0
- data/lib/pubid/ieee/identifiers/joint_development.rb +172 -0
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +51 -0
- data/lib/pubid/ieee/identifiers/nesc/base.rb +56 -0
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +28 -0
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +32 -0
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +26 -0
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +26 -0
- data/lib/pubid/ieee/identifiers/nesc.rb +15 -0
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +20 -0
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +26 -0
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +33 -0
- data/lib/pubid/ieee/identifiers/si_standard.rb +73 -0
- data/lib/pubid/ieee/identifiers/standard.rb +41 -0
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +23 -0
- data/lib/pubid/ieee/identifiers.rb +33 -0
- data/lib/pubid/ieee/ire/builder.rb +61 -0
- data/lib/pubid/ieee/ire/identifier.rb +58 -0
- data/lib/pubid/ieee/ire/parser.rb +91 -0
- data/lib/pubid/ieee/ire.rb +11 -0
- data/lib/pubid/ieee/nesc/builder.rb +101 -0
- data/lib/pubid/ieee/nesc/parser.rb +154 -0
- data/lib/pubid/ieee/nesc.rb +10 -0
- data/lib/pubid/ieee/parser.rb +1226 -0
- data/lib/pubid/ieee/scheme.rb +90 -0
- data/lib/pubid/ieee/typed_stages.rb +172 -0
- data/lib/pubid/ieee/urn_generator.rb +188 -0
- data/lib/pubid/ieee.rb +32 -0
- data/lib/pubid/ieee_debug.rb +31 -0
- data/lib/pubid/iho/builder.rb +37 -0
- data/lib/pubid/iho/identifier.rb +19 -0
- data/lib/pubid/iho/identifiers/base.rb +41 -0
- data/lib/pubid/iho/identifiers/bibliographic.rb +20 -0
- data/lib/pubid/iho/identifiers/circular_letter.rb +19 -0
- data/lib/pubid/iho/identifiers/miscellaneous.rb +20 -0
- data/lib/pubid/iho/identifiers/publication.rb +19 -0
- data/lib/pubid/iho/identifiers/standard.rb +19 -0
- data/lib/pubid/iho/identifiers.rb +14 -0
- data/lib/pubid/iho/parser.rb +68 -0
- data/lib/pubid/iho/scheme.rb +29 -0
- data/lib/pubid/iho/urn_generator.rb +29 -0
- data/lib/pubid/iho.rb +21 -0
- data/lib/pubid/iso/builder.rb +305 -0
- data/lib/pubid/iso/bundled_identifier.rb +85 -0
- data/lib/pubid/iso/combined_identifier.rb +22 -0
- data/lib/pubid/iso/components/code.rb +36 -0
- data/lib/pubid/iso/components/publisher.rb +60 -0
- data/lib/pubid/iso/components.rb +12 -0
- data/lib/pubid/iso/format_resolver.rb +45 -0
- data/lib/pubid/iso/identifier.rb +69 -0
- data/lib/pubid/iso/identifiers/addendum.rb +104 -0
- data/lib/pubid/iso/identifiers/amendment.rb +128 -0
- data/lib/pubid/iso/identifiers/base.rb +115 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +108 -0
- data/lib/pubid/iso/identifiers/data.rb +76 -0
- data/lib/pubid/iso/identifiers/directives.rb +59 -0
- data/lib/pubid/iso/identifiers/directives_supplement.rb +119 -0
- data/lib/pubid/iso/identifiers/extract.rb +30 -0
- data/lib/pubid/iso/identifiers/guide.rb +100 -0
- data/lib/pubid/iso/identifiers/international_standard.rb +168 -0
- data/lib/pubid/iso/identifiers/international_standardized_profile.rb +94 -0
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +89 -0
- data/lib/pubid/iso/identifiers/pas.rb +93 -0
- data/lib/pubid/iso/identifiers/recommendation.rb +45 -0
- data/lib/pubid/iso/identifiers/supplement.rb +87 -0
- data/lib/pubid/iso/identifiers/tc_document.rb +108 -0
- data/lib/pubid/iso/identifiers/technical_report.rb +103 -0
- data/lib/pubid/iso/identifiers/technical_specification.rb +102 -0
- data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +95 -0
- data/lib/pubid/iso/identifiers.rb +33 -0
- data/lib/pubid/iso/parser.rb +510 -0
- data/lib/pubid/iso/rendering_style.rb +120 -0
- data/lib/pubid/iso/scheme.rb +187 -0
- data/lib/pubid/iso/single_identifier.rb +61 -0
- data/lib/pubid/iso/supplement_identifier.rb +27 -0
- data/lib/pubid/iso/urn_generator.rb +412 -0
- data/lib/pubid/iso/urn_parser.rb +423 -0
- data/lib/pubid/iso/utilities.rb +86 -0
- data/lib/pubid/iso.rb +50 -0
- data/lib/pubid/itu/builder.rb +171 -0
- data/lib/pubid/itu/components/code.rb +39 -0
- data/lib/pubid/itu/components/sector.rb +35 -0
- data/lib/pubid/itu/components/series.rb +29 -0
- data/lib/pubid/itu/i18n.rb +9 -0
- data/lib/pubid/itu/i18n.yaml +30 -0
- data/lib/pubid/itu/identifier.rb +53 -0
- data/lib/pubid/itu/identifiers/amendment.rb +43 -0
- data/lib/pubid/itu/identifiers/annex.rb +74 -0
- data/lib/pubid/itu/identifiers/base.rb +154 -0
- data/lib/pubid/itu/identifiers/combined_identifier.rb +47 -0
- data/lib/pubid/itu/identifiers/corrigendum.rb +44 -0
- data/lib/pubid/itu/identifiers/recommendation.rb +16 -0
- data/lib/pubid/itu/identifiers/special_publication.rb +31 -0
- data/lib/pubid/itu/identifiers/supplement.rb +46 -0
- data/lib/pubid/itu/identifiers.rb +16 -0
- data/lib/pubid/itu/model.rb +111 -0
- data/lib/pubid/itu/parser.rb +225 -0
- data/lib/pubid/itu/scheme.rb +174 -0
- data/lib/pubid/itu/urn_generator.rb +105 -0
- data/lib/pubid/itu.rb +22 -0
- data/lib/pubid/jcgm/builder.rb +88 -0
- data/lib/pubid/jcgm/components/publisher.rb +20 -0
- data/lib/pubid/jcgm/components.rb +9 -0
- data/lib/pubid/jcgm/identifier.rb +11 -0
- data/lib/pubid/jcgm/identifiers/amendment.rb +35 -0
- data/lib/pubid/jcgm/identifiers/guide.rb +21 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +51 -0
- data/lib/pubid/jcgm/identifiers.rb +11 -0
- data/lib/pubid/jcgm/parser.rb +84 -0
- data/lib/pubid/jcgm/scheme.rb +60 -0
- data/lib/pubid/jcgm/single_identifier.rb +48 -0
- data/lib/pubid/jcgm/supplement_identifier.rb +16 -0
- data/lib/pubid/jcgm/urn_generator.rb +110 -0
- data/lib/pubid/jcgm.rb +31 -0
- data/lib/pubid/jis/builder.rb +124 -0
- data/lib/pubid/jis/components/code.rb +59 -0
- data/lib/pubid/jis/components.rb +9 -0
- data/lib/pubid/jis/identifier.rb +18 -0
- data/lib/pubid/jis/identifiers/amendment.rb +16 -0
- data/lib/pubid/jis/identifiers/base.rb +72 -0
- data/lib/pubid/jis/identifiers/explanation.rb +22 -0
- data/lib/pubid/jis/identifiers/japanese_industrial_standard.rb +16 -0
- data/lib/pubid/jis/identifiers/standard.rb +27 -0
- data/lib/pubid/jis/identifiers/technical_report.rb +31 -0
- data/lib/pubid/jis/identifiers/technical_specification.rb +31 -0
- data/lib/pubid/jis/identifiers.rb +17 -0
- data/lib/pubid/jis/parser.rb +109 -0
- data/lib/pubid/jis/scheme.rb +49 -0
- data/lib/pubid/jis/single_identifier.rb +37 -0
- data/lib/pubid/jis/supplement_identifier.rb +47 -0
- data/lib/pubid/jis/urn_generator.rb +25 -0
- data/lib/pubid/jis.rb +23 -0
- data/lib/pubid/lutaml/no_store_registration.rb +30 -0
- data/lib/pubid/nist/builder.rb +2100 -0
- data/lib/pubid/nist/components/code.rb +38 -0
- data/lib/pubid/nist/components/edition.rb +118 -0
- data/lib/pubid/nist/components/issue_number.rb +28 -0
- data/lib/pubid/nist/components/part.rb +77 -0
- data/lib/pubid/nist/components/publisher.rb +24 -0
- data/lib/pubid/nist/components/stage.rb +53 -0
- data/lib/pubid/nist/components/supplement.rb +121 -0
- data/lib/pubid/nist/components/translation.rb +42 -0
- data/lib/pubid/nist/components/update.rb +103 -0
- data/lib/pubid/nist/components/version.rb +35 -0
- data/lib/pubid/nist/components/volume.rb +32 -0
- data/lib/pubid/nist/components.rb +19 -0
- data/lib/pubid/nist/configuration.rb +77 -0
- data/lib/pubid/nist/identifiers/base.rb +499 -0
- data/lib/pubid/nist/identifiers/circular.rb +68 -0
- data/lib/pubid/nist/identifiers/circular_supplement.rb +50 -0
- data/lib/pubid/nist/identifiers/commercial_standard.rb +41 -0
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +56 -0
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +56 -0
- data/lib/pubid/nist/identifiers/crpl_report.rb +135 -0
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +94 -0
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +35 -0
- data/lib/pubid/nist/identifiers/handbook.rb +50 -0
- data/lib/pubid/nist/identifiers/internal_report.rb +56 -0
- data/lib/pubid/nist/identifiers/letter_circular.rb +45 -0
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +65 -0
- data/lib/pubid/nist/identifiers/monograph.rb +69 -0
- data/lib/pubid/nist/identifiers/ncstar.rb +41 -0
- data/lib/pubid/nist/identifiers/nsrds.rb +41 -0
- data/lib/pubid/nist/identifiers/owmwp.rb +35 -0
- data/lib/pubid/nist/identifiers/report.rb +68 -0
- data/lib/pubid/nist/identifiers/special_publication.rb +36 -0
- data/lib/pubid/nist/identifiers/technical_note.rb +90 -0
- data/lib/pubid/nist/identifiers.rb +33 -0
- data/lib/pubid/nist/parser.rb +1084 -0
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +83 -0
- data/lib/pubid/nist/urn_generator.rb +127 -0
- data/lib/pubid/nist.rb +36 -0
- data/lib/pubid/oiml/builder.rb +189 -0
- data/lib/pubid/oiml/components/code.rb +20 -0
- data/lib/pubid/oiml/components.rb +9 -0
- data/lib/pubid/oiml/identifier.rb +11 -0
- data/lib/pubid/oiml/identifiers/amendment.rb +13 -0
- data/lib/pubid/oiml/identifiers/annex.rb +62 -0
- data/lib/pubid/oiml/identifiers/base.rb +36 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +13 -0
- data/lib/pubid/oiml/identifiers/document.rb +13 -0
- data/lib/pubid/oiml/identifiers/expert_report.rb +13 -0
- data/lib/pubid/oiml/identifiers/guide.rb +13 -0
- data/lib/pubid/oiml/identifiers/recommendation.rb +13 -0
- data/lib/pubid/oiml/identifiers/seminar_report.rb +13 -0
- data/lib/pubid/oiml/identifiers/vocabulary.rb +13 -0
- data/lib/pubid/oiml/identifiers.rb +18 -0
- data/lib/pubid/oiml/parser.rb +173 -0
- data/lib/pubid/oiml/scheme.rb +46 -0
- data/lib/pubid/oiml/single_identifier.rb +90 -0
- data/lib/pubid/oiml/supplement_identifier.rb +43 -0
- data/lib/pubid/oiml/urn_generator.rb +64 -0
- data/lib/pubid/oiml.rb +26 -0
- data/lib/pubid/parser/common_parse_methods.rb +13 -0
- data/lib/pubid/parser/common_parse_rules.rb +56 -0
- data/lib/pubid/parser.rb +8 -0
- data/lib/pubid/parsers/base.rb +11 -0
- data/lib/pubid/parsers/mr_string.rb +93 -0
- data/lib/pubid/plateau/builder.rb +50 -0
- data/lib/pubid/plateau/identifiers/annex.rb +16 -0
- data/lib/pubid/plateau/identifiers/base.rb +51 -0
- data/lib/pubid/plateau/identifiers/handbook.rb +34 -0
- data/lib/pubid/plateau/identifiers/technical_report.rb +20 -0
- data/lib/pubid/plateau/identifiers.rb +12 -0
- data/lib/pubid/plateau/parser.rb +63 -0
- data/lib/pubid/plateau/scheme.rb +45 -0
- data/lib/pubid/plateau/supplement_identifier.rb +72 -0
- data/lib/pubid/plateau/urn_generator.rb +29 -0
- data/lib/pubid/plateau.rb +25 -0
- data/lib/pubid/renderers/base.rb +19 -0
- data/lib/pubid/renderers/directives_renderer.rb +62 -0
- data/lib/pubid/renderers/guide_renderer.rb +20 -0
- data/lib/pubid/renderers/human_readable.rb +58 -0
- data/lib/pubid/renderers/iwa_renderer.rb +16 -0
- data/lib/pubid/renderers/mr_string.rb +16 -0
- data/lib/pubid/renderers/supplement_renderer.rb +33 -0
- data/lib/pubid/renderers/urn.rb +11 -0
- data/lib/pubid/renderers.rb +14 -0
- data/lib/pubid/rendering/base.rb +73 -0
- data/lib/pubid/rendering/common.rb +211 -0
- data/lib/pubid/rendering/context.rb +156 -0
- data/lib/pubid/rendering/date.rb +27 -0
- data/lib/pubid/rendering/format.rb +25 -0
- data/lib/pubid/rendering/language.rb +21 -0
- data/lib/pubid/rendering/numbering.rb +24 -0
- data/lib/pubid/rendering/publisher.rb +25 -0
- data/lib/pubid/rendering/stage.rb +38 -0
- data/lib/pubid/rendering/supplement.rb +46 -0
- data/lib/pubid/rendering.rb +16 -0
- data/lib/pubid/sae/builder.rb +32 -0
- data/lib/pubid/sae/components/code.rb +9 -0
- data/lib/pubid/sae/components/date.rb +19 -0
- data/lib/pubid/sae/components/type.rb +19 -0
- data/lib/pubid/sae/components.rb +11 -0
- data/lib/pubid/sae/identifier.rb +14 -0
- data/lib/pubid/sae/identifiers/base.rb +42 -0
- data/lib/pubid/sae/identifiers.rb +9 -0
- data/lib/pubid/sae/parser.rb +55 -0
- data/lib/pubid/sae/scheme.rb +47 -0
- data/lib/pubid/sae/urn_generator.rb +38 -0
- data/lib/pubid/sae.rb +19 -0
- data/lib/pubid/scheme.rb +207 -0
- data/lib/pubid/urn_generator/base.rb +110 -0
- data/lib/pubid/utils/string_normalizer.rb +196 -0
- data/lib/pubid/utils.rb +7 -0
- data/lib/pubid/version.rb +3 -1
- data/lib/pubid.rb +137 -13
- data/lib/tasks/docs.rake +37 -0
- data/lib/tasks/export.rake +38 -0
- data/lib/tasks/website-data.json +7488 -0
- metadata +613 -171
- data/lib/pubid/registry.rb +0 -30
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# CSA dual published identifier
|
|
7
|
+
# Represents IEEE/CSA dual published standards
|
|
8
|
+
# Example: IEEE Std 844.1-2017/CSA C22.2 No. 293.1-17
|
|
9
|
+
class CsaDualPublished < Base
|
|
10
|
+
attribute :ieee_identifier, Base
|
|
11
|
+
# CSA identifier is stored as-is (not a Lutaml model type)
|
|
12
|
+
attr_accessor :csa_identifier
|
|
13
|
+
|
|
14
|
+
# Delegate common attributes to ieee_identifier
|
|
15
|
+
def publisher
|
|
16
|
+
ieee_identifier.publisher
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def copublisher
|
|
20
|
+
ieee_identifier.copublisher
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def code
|
|
24
|
+
ieee_identifier.code
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def year
|
|
28
|
+
ieee_identifier.year
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def typed_stage
|
|
32
|
+
ieee_identifier.typed_stage
|
|
33
|
+
end
|
|
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
|
+
|
|
45
|
+
def self.parse(string)
|
|
46
|
+
Base.parse(string)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Dual Identifier - wraps two identifiers connected with "and"
|
|
7
|
+
# Example: "ANSI C37.61-1973 and IEEE Std 321-1973"
|
|
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
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Dual Published Identifier
|
|
7
|
+
# Document jointly published by two organizations
|
|
8
|
+
# Example: "ANSI C37.61-1973 and IEEE Std 321-1973"
|
|
9
|
+
# This means the document was published together by both organizations
|
|
10
|
+
class DualPublished < Base
|
|
11
|
+
# First organization's identifier
|
|
12
|
+
attribute :first_identifier, Base, polymorphic: true
|
|
13
|
+
|
|
14
|
+
# Second organization's identifier
|
|
15
|
+
attribute :second_identifier, Base, polymorphic: true
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
"#{first_identifier} and #{second_identifier}"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def publisher
|
|
22
|
+
# Return array of both publishers
|
|
23
|
+
[first_identifier&.publisher, second_identifier&.publisher].compact
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# IEC/IEEE Copublished Identifier - represents standards copublished by IEC and IEEE
|
|
7
|
+
# Example: "IEC/IEEE 60079-30-2/D5 IEC:2013 (10/07)"
|
|
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"
|
|
12
|
+
attribute :draft_info, :string # Draft information like "/D5"
|
|
13
|
+
attribute :iec_year, :string # IEC year like "2013"
|
|
14
|
+
attribute :date_info, :string # Date information like "(10/07)"
|
|
15
|
+
|
|
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
|
|
22
|
+
result
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Interpretation identifier for IEEE standards
|
|
7
|
+
# Represents an interpretation sheet or clarification
|
|
8
|
+
# Example: IEEE Std 1076/INT-1991, IEEE Std 1003.1-1988/INT
|
|
9
|
+
class InterpretationIdentifier < SupplementIdentifier
|
|
10
|
+
attribute :int_year, :string
|
|
11
|
+
|
|
12
|
+
# TYPED_STAGES for interpretation
|
|
13
|
+
# Interpretation uses "INT" abbreviation
|
|
14
|
+
TYPED_STAGES = [
|
|
15
|
+
Components::TypedStage.new(
|
|
16
|
+
abbr: ["INT"],
|
|
17
|
+
type_code: "interpretation",
|
|
18
|
+
stage_code: "published",
|
|
19
|
+
),
|
|
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
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Handles ISO/IEC/IEEE joint development identifiers
|
|
7
|
+
# Supports bidirectional format conversion between IEEE and ISO representations
|
|
8
|
+
#
|
|
9
|
+
# Joint development standards can be represented in two formats based on lead party:
|
|
10
|
+
#
|
|
11
|
+
# IEEE-led Format (lead_party: "IEEE"):
|
|
12
|
+
# ISO/IEC/IEEE P26511/D8-2018
|
|
13
|
+
# - Publishers: ISO/IEC/IEEE (slash-separated)
|
|
14
|
+
# - Lead party: IEEE (drives development)
|
|
15
|
+
# - P prefix indicates IEEE project (draft)
|
|
16
|
+
# - /D8 indicates IEEE draft notation
|
|
17
|
+
# - Dash before year
|
|
18
|
+
#
|
|
19
|
+
# ISO-led Format (lead_party: "ISO"):
|
|
20
|
+
# ISO/IEC/IEEE FDIS 26511:2018
|
|
21
|
+
# - Publishers: ISO/IEC/IEEE (slash-separated)
|
|
22
|
+
# - Lead party: ISO (drives development)
|
|
23
|
+
# - ISO stage code (FDIS) instead of P/D notation
|
|
24
|
+
# - Colon before year
|
|
25
|
+
#
|
|
26
|
+
# Key principles:
|
|
27
|
+
# - Lead party determines canonical format
|
|
28
|
+
# - NO equivalence mapping (as per IEEE staff guidance)
|
|
29
|
+
# - "P" prefix means IEEE project (any stage)
|
|
30
|
+
# - ISO stages and IEEE drafts can coexist but are not equivalent
|
|
31
|
+
# - Format conversion preserves semantic meaning within each system
|
|
32
|
+
class JointDevelopment < Base
|
|
33
|
+
attribute :publishers, :string, collection: true
|
|
34
|
+
attribute :lead_party, :string # "IEEE", "ISO", "IEC", etc.
|
|
35
|
+
attribute :code, :string
|
|
36
|
+
attribute :typed_stage, Components::TypedStage
|
|
37
|
+
attribute :year, :string
|
|
38
|
+
attribute :iso_stage, :string # For ISO stage if present
|
|
39
|
+
attribute :ieee_draft, :string # For IEEE P/D notation if present
|
|
40
|
+
|
|
41
|
+
def initialize(**args)
|
|
42
|
+
# Call super FIRST to initialize Lutaml::Model attributes
|
|
43
|
+
super
|
|
44
|
+
|
|
45
|
+
# Then handle typed_stage
|
|
46
|
+
if args[:typed_stage].is_a?(Components::TypedStage)
|
|
47
|
+
self.typed_stage = args[:typed_stage]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Set publishers
|
|
51
|
+
if args[:publishers]
|
|
52
|
+
self.publishers = args[:publishers]
|
|
53
|
+
elsif args[:publisher] && args[:copublisher]
|
|
54
|
+
# Combine publisher and copublisher into publishers array
|
|
55
|
+
self.publishers = [args[:publisher], *args[:copublisher]].compact
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Set lead_party if not provided - default to first publisher
|
|
59
|
+
if args[:lead_party]
|
|
60
|
+
self.lead_party = args[:lead_party]
|
|
61
|
+
elsif publishers && !publishers.empty?
|
|
62
|
+
# Lead party defaults to first publisher if not explicitly set
|
|
63
|
+
# Builder should override this with detected lead party
|
|
64
|
+
self.lead_party = publishers.first
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Canonical format based on lead party
|
|
69
|
+
# @return [Symbol] :ieee or :iso
|
|
70
|
+
def canonical_format
|
|
71
|
+
case lead_party
|
|
72
|
+
when "IEEE", "AIEE"
|
|
73
|
+
:ieee
|
|
74
|
+
when "ISO", "IEC"
|
|
75
|
+
:iso
|
|
76
|
+
else
|
|
77
|
+
:ieee # default to IEEE format
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Convert to string representation
|
|
82
|
+
# @param format [Symbol] :ieee or :iso (defaults to canonical_format)
|
|
83
|
+
# @return [String] formatted identifier
|
|
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
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
private
|
|
96
|
+
|
|
97
|
+
# Convert to ISO format representation
|
|
98
|
+
# ISO/IEC/IEEE FDIS 26511:2018
|
|
99
|
+
# @return [String] ISO format string
|
|
100
|
+
def to_iso_format
|
|
101
|
+
parts = []
|
|
102
|
+
|
|
103
|
+
# Publishers (slash-separated)
|
|
104
|
+
parts << publishers.join("/") if publishers && !publishers.empty?
|
|
105
|
+
|
|
106
|
+
# ISO stage code (only if this was originally ISO-led)
|
|
107
|
+
# For IEEE-led conversions, we skip the stage since we don't have ISO equivalent
|
|
108
|
+
if lead_party == "ISO" && (typed_stage || iso_stage)
|
|
109
|
+
if typed_stage
|
|
110
|
+
parts << typed_stage.to_iso_format
|
|
111
|
+
elsif iso_stage
|
|
112
|
+
parts << iso_stage
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# Code (NO P prefix in ISO format, NO draft notation)
|
|
117
|
+
code_str = code.to_s.gsub(/^P/, "")
|
|
118
|
+
parts << code_str if code_str && !code_str.empty?
|
|
119
|
+
|
|
120
|
+
# Join with space and add year with colon
|
|
121
|
+
result = parts.join(" ")
|
|
122
|
+
result += ":#{year}" if year
|
|
123
|
+
|
|
124
|
+
result
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Convert to IEEE format representation
|
|
128
|
+
# ISO/IEC/IEEE P26511/D8-2018
|
|
129
|
+
# @return [String] IEEE format string
|
|
130
|
+
def to_ieee_format
|
|
131
|
+
parts = []
|
|
132
|
+
|
|
133
|
+
# Publishers (slash-separated)
|
|
134
|
+
parts << publishers.join("/") if publishers && !publishers.empty?
|
|
135
|
+
|
|
136
|
+
# Build code part
|
|
137
|
+
code_str = code.to_s.gsub(/^P/, "") # Remove any existing P first
|
|
138
|
+
|
|
139
|
+
# Add P prefix for projects (IEEE format always shows P for drafts)
|
|
140
|
+
if typed_stage&.project_status || type == "P"
|
|
141
|
+
code_str = "P#{code_str}"
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Add IEEE draft notation if available (e.g., /D8)
|
|
145
|
+
if ieee_draft
|
|
146
|
+
code_str += "/#{ieee_draft}"
|
|
147
|
+
elsif typed_stage&.ieee_draft_equivalent
|
|
148
|
+
code_str += "/#{typed_stage.ieee_draft_equivalent}"
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
parts << code_str if code_str && !code_str.empty?
|
|
152
|
+
|
|
153
|
+
# Join with space and add year with dash
|
|
154
|
+
result = parts.join(" ")
|
|
155
|
+
result += "-#{year}" if year
|
|
156
|
+
|
|
157
|
+
result
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# Override to ensure proper publisher handling
|
|
161
|
+
def publisher
|
|
162
|
+
publishers&.first || super
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Override to ensure proper copublisher handling
|
|
166
|
+
def copublisher
|
|
167
|
+
publishers&.drop(1) || super
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Multi-Numbered Identifier
|
|
7
|
+
# Represents a single document published under multiple numbers
|
|
8
|
+
# Examples:
|
|
9
|
+
# - "IEEE Std 1299/C62.22.1-1996" (same document, two numbers)
|
|
10
|
+
# - "IEEE Std 960-1989, Std 1177-1989" (same document, two numbers)
|
|
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
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def publisher
|
|
38
|
+
primary_identifier&.publisher
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def code
|
|
42
|
+
primary_identifier&.code
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def year
|
|
46
|
+
primary_identifier&.year
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Ieee
|
|
7
|
+
module Identifiers
|
|
8
|
+
module Nesc
|
|
9
|
+
# Base class for National Electrical Safety Code (NESC) identifiers
|
|
10
|
+
#
|
|
11
|
+
# NESC is published by IEEE Standards Association and covers electrical
|
|
12
|
+
# safety standards for utilities and communication systems.
|
|
13
|
+
#
|
|
14
|
+
# @example Standard format
|
|
15
|
+
# nesc = Pubid::Ieee.parse("C2-1997 National Electric Safety Code")
|
|
16
|
+
# nesc.code.value # => "C2"
|
|
17
|
+
# nesc.year.year # => 1997
|
|
18
|
+
#
|
|
19
|
+
# @example Handbook format
|
|
20
|
+
# nesc = Pubid::Ieee.parse("2017 NESC Handbook, Premier Edition")
|
|
21
|
+
# nesc.year.year # => 2017
|
|
22
|
+
# nesc.variant # => "Handbook"
|
|
23
|
+
# nesc.edition # => "Premier Edition"
|
|
24
|
+
class Base < Lutaml::Model::Serializable
|
|
25
|
+
attribute :code, Pubid::Ieee::Components::Code # "C2" code designation
|
|
26
|
+
attribute :year, Pubid::Components::Date # Publication year
|
|
27
|
+
attribute :variant, :string # Handbook, Redline, etc.
|
|
28
|
+
attribute :edition, :string # Edition notation
|
|
29
|
+
attribute :draft, :boolean # Draft flag
|
|
30
|
+
attribute :month, :string # For draft identifiers
|
|
31
|
+
|
|
32
|
+
# Publisher portion for NESC identifiers
|
|
33
|
+
#
|
|
34
|
+
# @return [String] Always returns "NESC"
|
|
35
|
+
def publisher_portion
|
|
36
|
+
"NESC"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Base rendering - override in subclasses
|
|
40
|
+
#
|
|
41
|
+
# @return [String] String representation
|
|
42
|
+
def to_s
|
|
43
|
+
parts = []
|
|
44
|
+
if code && year
|
|
45
|
+
parts << "#{code}-#{year.year}"
|
|
46
|
+
elsif year
|
|
47
|
+
parts << year.year.to_s
|
|
48
|
+
end
|
|
49
|
+
parts << "National Electrical Safety Code"
|
|
50
|
+
parts.join(" ")
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
module Nesc
|
|
7
|
+
# Draft NESC identifier
|
|
8
|
+
#
|
|
9
|
+
# Represents draft versions of the National Electrical Safety Code
|
|
10
|
+
# that are under development or review.
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# nesc = Pubid::Ieee.parse("Draft National Electrical Safety Code, January 2016")
|
|
14
|
+
# nesc.to_s # => "Draft National Electrical Safety Code, January 2016"
|
|
15
|
+
class Draft < Base
|
|
16
|
+
# Render draft identifier
|
|
17
|
+
#
|
|
18
|
+
# @return [String] Draft format with optional month and year
|
|
19
|
+
def to_s
|
|
20
|
+
parts = ["Draft National Electrical Safety Code"]
|
|
21
|
+
parts << ", #{month} #{year.year}" if month && year
|
|
22
|
+
parts.join
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
module Nesc
|
|
7
|
+
# NESC Handbook identifier
|
|
8
|
+
#
|
|
9
|
+
# Represents NESC Handbook publications which provide comprehensive
|
|
10
|
+
# guidance and interpretation of the National Electrical Safety Code.
|
|
11
|
+
#
|
|
12
|
+
# @example Basic handbook
|
|
13
|
+
# nesc = Pubid::Ieee.parse("2012 NESC Handbook")
|
|
14
|
+
# nesc.to_s # => "2012 NESC Handbook"
|
|
15
|
+
#
|
|
16
|
+
# @example With edition
|
|
17
|
+
# nesc = Pubid::Ieee.parse("2017 NESC Handbook, Premier Edition")
|
|
18
|
+
# nesc.to_s # => "2017 NESC Handbook, Premier Edition"
|
|
19
|
+
class Handbook < Base
|
|
20
|
+
# Render handbook identifier
|
|
21
|
+
#
|
|
22
|
+
# @return [String] YYYY NESC Handbook format with optional edition
|
|
23
|
+
def to_s
|
|
24
|
+
parts = ["#{year.year} NESC Handbook"]
|
|
25
|
+
parts << ", #{edition}" if edition
|
|
26
|
+
parts.join
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
module Nesc
|
|
7
|
+
# NESC Redline identifier
|
|
8
|
+
#
|
|
9
|
+
# Represents redline versions of NESC which show changes from
|
|
10
|
+
# previous editions with tracked changes highlighted.
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# nesc = Pubid::Ieee.parse("2017 NESC Redline")
|
|
14
|
+
# nesc.to_s # => "2017 NESC Redline"
|
|
15
|
+
class Redline < Base
|
|
16
|
+
# Render redline identifier
|
|
17
|
+
#
|
|
18
|
+
# @return [String] YYYY NESC Redline format
|
|
19
|
+
def to_s
|
|
20
|
+
"#{year.year} NESC Redline"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
module Nesc
|
|
7
|
+
# Standard NESC identifier with C2-YYYY format
|
|
8
|
+
#
|
|
9
|
+
# Represents the standard National Electrical Safety Code publications
|
|
10
|
+
# using the C2 designation followed by publication year.
|
|
11
|
+
#
|
|
12
|
+
# @example
|
|
13
|
+
# nesc = Pubid::Ieee.parse("C2-1997 National Electric Safety Code")
|
|
14
|
+
# nesc.to_s # => "C2-1997 National Electrical Safety Code"
|
|
15
|
+
class Standard < Base
|
|
16
|
+
# Render standard NESC identifier
|
|
17
|
+
#
|
|
18
|
+
# @return [String] C2-YYYY format
|
|
19
|
+
def to_s
|
|
20
|
+
"C2-#{year.year} National Electrical Safety Code"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
module Nesc
|
|
7
|
+
autoload :Base, "#{__dir__}/nesc/base"
|
|
8
|
+
autoload :Draft, "#{__dir__}/nesc/draft"
|
|
9
|
+
autoload :Handbook, "#{__dir__}/nesc/handbook"
|
|
10
|
+
autoload :Redline, "#{__dir__}/nesc/redline"
|
|
11
|
+
autoload :Standard, "#{__dir__}/nesc/standard"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Parenthetical Identifier - wraps identifier with parenthetical annotation
|
|
7
|
+
# Example: "IEEE Standard No 18-1968 (ANSI C55.1-1968)"
|
|
8
|
+
class ParentheticalIdentifier < Base
|
|
9
|
+
attribute :base_identifier, Base, polymorphic: true
|
|
10
|
+
attribute :parenthetical_identifier, Base, polymorphic: true
|
|
11
|
+
|
|
12
|
+
def to_s
|
|
13
|
+
result = base_identifier.to_s
|
|
14
|
+
result += " (#{parenthetical_identifier})" if parenthetical_identifier
|
|
15
|
+
result
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Project Draft Identifier
|
|
7
|
+
# Format: "IEEE P1234/D5, July 2019"
|
|
8
|
+
# where P1234 is the project number and D5 is the draft version
|
|
9
|
+
# This is distinct from a StandardIdentifier - the "P" indicates project status,
|
|
10
|
+
# not a code prefix like "C" in "C57.12"
|
|
11
|
+
class ProjectDraftIdentifier < Base
|
|
12
|
+
# Override initialize to strip "P" prefix from code before creating Code object
|
|
13
|
+
# The "P" is reflected in the typed_stage, not in the Code component itself
|
|
14
|
+
def initialize(**args)
|
|
15
|
+
# If code is provided with "P" prefix (e.g., "P1234"), strip it
|
|
16
|
+
if args[:code].is_a?(String) && args[:code].start_with?("P")
|
|
17
|
+
args[:code] = args[:code][1..] # Strip leading "P"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Call parent initialize with modified code
|
|
21
|
+
super
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ieee
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Redlined Standard Identifier
|
|
7
|
+
# IEEE standard with optional revision note, marked as redline
|
|
8
|
+
# Example: "IEEE Std 1018-2013 (Revison of IEEE Std 1018-2004) - Redline"
|
|
9
|
+
# Contains: base standard + optional revision standard + redline flag
|
|
10
|
+
class RedlinedStandard < Base
|
|
11
|
+
# The current standard identifier
|
|
12
|
+
attribute :base_identifier, Base, polymorphic: true
|
|
13
|
+
|
|
14
|
+
# Optional: the standard this revises
|
|
15
|
+
attribute :revision_of, Base, polymorphic: true
|
|
16
|
+
|
|
17
|
+
# Redline flag (always true for this class)
|
|
18
|
+
attribute :redline, :boolean, default: -> { true }
|
|
19
|
+
|
|
20
|
+
def to_s
|
|
21
|
+
result = base_identifier.to_s
|
|
22
|
+
result += " (Revision of #{revision_of})" if revision_of
|
|
23
|
+
result += " - Redline" if redline
|
|
24
|
+
result
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def publisher
|
|
28
|
+
base_identifier&.publisher || "IEEE"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|