pubid 1.15.18 → 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,132 @@
|
|
|
1
|
+
require_relative "base"
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
require_relative "../../components/typed_stage"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Iec
|
|
7
|
+
module Identifiers
|
|
8
|
+
# Technical Report identifier class
|
|
9
|
+
# Single Responsibility: Represents IEC Technical Report documents
|
|
10
|
+
class TechnicalReport < Base
|
|
11
|
+
# Convert v1 hash-based TYPED_STAGES to v2 object-based
|
|
12
|
+
# From gems/pubid-iec/lib/pubid/iec/identifier/technical_report.rb
|
|
13
|
+
TYPED_STAGES = [
|
|
14
|
+
Pubid::Components::TypedStage.new(
|
|
15
|
+
code: :pwi_tr,
|
|
16
|
+
stage_code: :pwi,
|
|
17
|
+
type_code: :tr,
|
|
18
|
+
abbr: ["PWI TR"],
|
|
19
|
+
name: "Preliminary Work Item Technical Report",
|
|
20
|
+
harmonized_stages: %w[00.00 00.20 00.60 00.98 00.99],
|
|
21
|
+
),
|
|
22
|
+
Pubid::Components::TypedStage.new(
|
|
23
|
+
code: :np_tr,
|
|
24
|
+
stage_code: :np,
|
|
25
|
+
type_code: :tr,
|
|
26
|
+
abbr: ["NP TR"],
|
|
27
|
+
name: "New Proposal Technical Report",
|
|
28
|
+
harmonized_stages: %w[10.00 10.20 10.60 10.92 10.98],
|
|
29
|
+
),
|
|
30
|
+
Pubid::Components::TypedStage.new(
|
|
31
|
+
code: :anw_tr,
|
|
32
|
+
stage_code: :anw,
|
|
33
|
+
type_code: :tr,
|
|
34
|
+
abbr: ["ANW TR"],
|
|
35
|
+
name: "Approved New Work Item Technical Report",
|
|
36
|
+
harmonized_stages: %w[10.99 20.00],
|
|
37
|
+
),
|
|
38
|
+
Pubid::Components::TypedStage.new(
|
|
39
|
+
code: :wd_tr,
|
|
40
|
+
stage_code: :wd,
|
|
41
|
+
type_code: :tr,
|
|
42
|
+
abbr: ["WD TR"],
|
|
43
|
+
name: "Working Draft Technical Report",
|
|
44
|
+
harmonized_stages: %w[20.20 20.60 20.98 20.99],
|
|
45
|
+
),
|
|
46
|
+
Pubid::Components::TypedStage.new(
|
|
47
|
+
code: :cd_tr,
|
|
48
|
+
stage_code: :cd,
|
|
49
|
+
type_code: :tr,
|
|
50
|
+
abbr: ["CD TR"],
|
|
51
|
+
name: "Committee Draft Technical Report",
|
|
52
|
+
harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
|
|
53
|
+
),
|
|
54
|
+
Pubid::Components::TypedStage.new(
|
|
55
|
+
code: :dtr,
|
|
56
|
+
stage_code: :draft,
|
|
57
|
+
type_code: :tr,
|
|
58
|
+
abbr: ["DTR"],
|
|
59
|
+
name: "Draft Technical Report",
|
|
60
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
|
61
|
+
),
|
|
62
|
+
Pubid::Components::TypedStage.new(
|
|
63
|
+
code: :tr,
|
|
64
|
+
stage_code: :published,
|
|
65
|
+
type_code: :tr,
|
|
66
|
+
abbr: ["TR"],
|
|
67
|
+
name: "Technical Report",
|
|
68
|
+
harmonized_stages: %w[60.00 60.60 90.20 90.60 90.92 90.93 90.99
|
|
69
|
+
95.20 95.60 95.92 95.99],
|
|
70
|
+
),
|
|
71
|
+
].freeze
|
|
72
|
+
|
|
73
|
+
# Project stages specific to Technical Reports
|
|
74
|
+
# These are IEC-specific workflow stages
|
|
75
|
+
PROJECT_STAGES = {
|
|
76
|
+
adtr: {
|
|
77
|
+
abbr: "ADTR",
|
|
78
|
+
name: "Approved for DTR",
|
|
79
|
+
harmonized_stages: %w[40.99],
|
|
80
|
+
},
|
|
81
|
+
cdtr: {
|
|
82
|
+
abbr: "CDTR",
|
|
83
|
+
name: "Draft circulated as DTR",
|
|
84
|
+
harmonized_stages: %w[50.20],
|
|
85
|
+
},
|
|
86
|
+
dtrm: {
|
|
87
|
+
abbr: "DTRM",
|
|
88
|
+
name: "Rejected DTR to be discussed at meeting",
|
|
89
|
+
harmonized_stages: %w[50.92],
|
|
90
|
+
},
|
|
91
|
+
ndtr: {
|
|
92
|
+
abbr: "NDTR",
|
|
93
|
+
name: "DTR rejected",
|
|
94
|
+
harmonized_stages: %w[50.92],
|
|
95
|
+
},
|
|
96
|
+
prvdtr: {
|
|
97
|
+
abbr: "PRVDTR",
|
|
98
|
+
name: "Preparation of RVDTR",
|
|
99
|
+
harmonized_stages: %w[50.60],
|
|
100
|
+
},
|
|
101
|
+
tdtr: {
|
|
102
|
+
abbr: "TDTR",
|
|
103
|
+
name: "Translation of DTR",
|
|
104
|
+
harmonized_stages: %w[50.00],
|
|
105
|
+
},
|
|
106
|
+
}.freeze
|
|
107
|
+
|
|
108
|
+
def self.type
|
|
109
|
+
{ key: :tr, title: "Technical Report", short: "TR" }
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Override publisher_portion to handle TR formatting
|
|
113
|
+
# If copublishers exist, use parent implementation
|
|
114
|
+
def publisher_portion
|
|
115
|
+
# If copublishers, delegate to parent (SingleIdentifier) which handles them
|
|
116
|
+
return super if copublishers&.any?
|
|
117
|
+
|
|
118
|
+
# No copublishers: simple TR formatting
|
|
119
|
+
result = publisher.to_s
|
|
120
|
+
|
|
121
|
+
if typed_stage
|
|
122
|
+
abbr = typed_stage.abbreviation
|
|
123
|
+
# For TR: always use space (IEC convention for ALL publishers)
|
|
124
|
+
result += " #{abbr}" unless abbr.empty?
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
result
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
require_relative "base"
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
require_relative "../../components/typed_stage"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Iec
|
|
7
|
+
module Identifiers
|
|
8
|
+
# Technical Specification identifier class
|
|
9
|
+
# Single Responsibility: Represents IEC Technical Specification documents
|
|
10
|
+
class TechnicalSpecification < Base
|
|
11
|
+
# Convert v1 hash-based TYPED_STAGES to v2 object-based
|
|
12
|
+
# From gems/pubid-iec/lib/pubid/iec/identifier/technical_specification.rb
|
|
13
|
+
TYPED_STAGES = [
|
|
14
|
+
Pubid::Components::TypedStage.new(
|
|
15
|
+
code: :pwi_ts,
|
|
16
|
+
stage_code: :pwi,
|
|
17
|
+
type_code: :ts,
|
|
18
|
+
abbr: ["PWI TS"],
|
|
19
|
+
name: "Preliminary Work Item Technical Specification",
|
|
20
|
+
harmonized_stages: %w[00.00 00.20 00.60 00.98 00.99],
|
|
21
|
+
),
|
|
22
|
+
Pubid::Components::TypedStage.new(
|
|
23
|
+
code: :np_ts,
|
|
24
|
+
stage_code: :np,
|
|
25
|
+
type_code: :ts,
|
|
26
|
+
abbr: ["NP TS"],
|
|
27
|
+
name: "New Proposal Technical Specification",
|
|
28
|
+
harmonized_stages: %w[10.00 10.20 10.60 10.92 10.98],
|
|
29
|
+
),
|
|
30
|
+
Pubid::Components::TypedStage.new(
|
|
31
|
+
code: :anw_ts,
|
|
32
|
+
stage_code: :anw,
|
|
33
|
+
type_code: :ts,
|
|
34
|
+
abbr: ["ANW TS"],
|
|
35
|
+
name: "Approved New Work Item Technical Specification",
|
|
36
|
+
harmonized_stages: %w[10.99 20.00],
|
|
37
|
+
),
|
|
38
|
+
Pubid::Components::TypedStage.new(
|
|
39
|
+
code: :wd_ts,
|
|
40
|
+
stage_code: :wd,
|
|
41
|
+
type_code: :ts,
|
|
42
|
+
abbr: ["WD TS"],
|
|
43
|
+
name: "Working Draft Technical Specification",
|
|
44
|
+
harmonized_stages: %w[20.20 20.60 20.98 20.99],
|
|
45
|
+
),
|
|
46
|
+
Pubid::Components::TypedStage.new(
|
|
47
|
+
code: :cd_ts,
|
|
48
|
+
stage_code: :cd,
|
|
49
|
+
type_code: :ts,
|
|
50
|
+
abbr: ["CD TS"],
|
|
51
|
+
name: "Committee Draft Technical Specification",
|
|
52
|
+
harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
|
|
53
|
+
),
|
|
54
|
+
Pubid::Components::TypedStage.new(
|
|
55
|
+
code: :dts,
|
|
56
|
+
stage_code: :draft,
|
|
57
|
+
type_code: :ts,
|
|
58
|
+
abbr: ["DTS"],
|
|
59
|
+
name: "Draft Technical Specification",
|
|
60
|
+
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
|
61
|
+
),
|
|
62
|
+
Pubid::Components::TypedStage.new(
|
|
63
|
+
code: :ts,
|
|
64
|
+
stage_code: :published,
|
|
65
|
+
type_code: :ts,
|
|
66
|
+
abbr: ["TS"],
|
|
67
|
+
name: "Technical Specification",
|
|
68
|
+
harmonized_stages: %w[60.00 60.60 90.20 90.60 90.92 90.93 90.99
|
|
69
|
+
95.20 95.60 95.92 95.99],
|
|
70
|
+
),
|
|
71
|
+
].freeze
|
|
72
|
+
|
|
73
|
+
# Project stages specific to Technical Specifications
|
|
74
|
+
# These are IEC-specific workflow stages
|
|
75
|
+
PROJECT_STAGES = {
|
|
76
|
+
adts: {
|
|
77
|
+
abbr: "ADTS",
|
|
78
|
+
name: "Approved for DTS",
|
|
79
|
+
harmonized_stages: %w[40.99],
|
|
80
|
+
},
|
|
81
|
+
cdts: {
|
|
82
|
+
abbr: "CDTS",
|
|
83
|
+
name: "Draft circulated as DTS",
|
|
84
|
+
harmonized_stages: %w[50.20],
|
|
85
|
+
},
|
|
86
|
+
dtsm: {
|
|
87
|
+
abbr: "DTSM",
|
|
88
|
+
name: "Rejected DTS to be discussed at meeting",
|
|
89
|
+
harmonized_stages: %w[50.92],
|
|
90
|
+
},
|
|
91
|
+
ndts: {
|
|
92
|
+
abbr: "NDTS",
|
|
93
|
+
name: "DTS rejected",
|
|
94
|
+
harmonized_stages: %w[50.92],
|
|
95
|
+
},
|
|
96
|
+
prvdts: {
|
|
97
|
+
abbr: "PRVDTS",
|
|
98
|
+
name: "Preparation of RVDTS",
|
|
99
|
+
harmonized_stages: %w[50.60],
|
|
100
|
+
},
|
|
101
|
+
tdts: {
|
|
102
|
+
abbr: "TDTS",
|
|
103
|
+
name: "Translation of DTS",
|
|
104
|
+
harmonized_stages: %w[50.00],
|
|
105
|
+
},
|
|
106
|
+
}.freeze
|
|
107
|
+
|
|
108
|
+
def self.type
|
|
109
|
+
{ key: :ts, title: "Technical Specification", short: "TS" }
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Override publisher_portion to handle TS formatting
|
|
113
|
+
# If copublishers exist, use parent implementation
|
|
114
|
+
def publisher_portion
|
|
115
|
+
# If copublishers, delegate to parent (SingleIdentifier) which handles them
|
|
116
|
+
return super if copublishers&.any?
|
|
117
|
+
|
|
118
|
+
# No copublishers: simple TS formatting
|
|
119
|
+
result = publisher.to_s
|
|
120
|
+
|
|
121
|
+
if typed_stage
|
|
122
|
+
abbr = typed_stage.abbreviation
|
|
123
|
+
# TS uses space for all stages
|
|
124
|
+
result += " #{abbr}" unless abbr.empty?
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
result
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require_relative "base"
|
|
2
|
+
require_relative "../../components/typed_stage"
|
|
3
|
+
|
|
4
|
+
module Pubid
|
|
5
|
+
module Iec
|
|
6
|
+
module Identifiers
|
|
7
|
+
# Technology Report identifier class
|
|
8
|
+
# Single Responsibility: Represents IEC Technology Report documents
|
|
9
|
+
class TechnologyReport < Base
|
|
10
|
+
# Technology Reports have full phrase as type abbreviation
|
|
11
|
+
TYPED_STAGES = [
|
|
12
|
+
Pubid::Components::TypedStage.new(
|
|
13
|
+
code: :tec,
|
|
14
|
+
stage_code: :published,
|
|
15
|
+
type_code: :tec,
|
|
16
|
+
abbr: ["Technology Report"],
|
|
17
|
+
name: "Technology Report",
|
|
18
|
+
harmonized_stages: %w[60.00 60.60],
|
|
19
|
+
),
|
|
20
|
+
].freeze
|
|
21
|
+
|
|
22
|
+
def self.type
|
|
23
|
+
{ key: :tec, title: "Technology Report", short: "Technology Report" }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Override publisher_portion to add Technology Report
|
|
27
|
+
def publisher_portion
|
|
28
|
+
result = publisher.to_s
|
|
29
|
+
|
|
30
|
+
if typed_stage && typed_stage.abbreviation == "Technology Report"
|
|
31
|
+
result += " Technology Report"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
result
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require_relative "base"
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
require_relative "../../components/typed_stage"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Iec
|
|
7
|
+
module Identifiers
|
|
8
|
+
# Test Report Form identifier class
|
|
9
|
+
# Single Responsibility: Represents IEC TRF documents
|
|
10
|
+
# Can embed CISPR identifiers for IECEE TRF format
|
|
11
|
+
class TestReportForm < Base
|
|
12
|
+
# TRF can embed a CISPR identifier (MODEL-DRIVEN)
|
|
13
|
+
attribute :cispr_identifier, Identifier, polymorphic: true, default: -> {
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
# TRF has type abbreviation for parsing
|
|
17
|
+
TYPED_STAGES = [
|
|
18
|
+
Pubid::Components::TypedStage.new(
|
|
19
|
+
code: :trf,
|
|
20
|
+
stage_code: :published,
|
|
21
|
+
type_code: :trf,
|
|
22
|
+
abbr: ["TRF"],
|
|
23
|
+
name: "Test Report Form",
|
|
24
|
+
harmonized_stages: %w[60.00 60.60],
|
|
25
|
+
),
|
|
26
|
+
].freeze
|
|
27
|
+
|
|
28
|
+
def self.type
|
|
29
|
+
{ key: :trf, title: "Test Report Form", short: "TRF" }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Override publisher_portion to add TRF with space
|
|
33
|
+
def publisher_portion
|
|
34
|
+
result = publisher.to_s
|
|
35
|
+
|
|
36
|
+
if typed_stage && typed_stage.abbreviation == "TRF"
|
|
37
|
+
result += " TRF"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
result
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# TRF uses special rendering
|
|
44
|
+
def to_s(_format = :short)
|
|
45
|
+
parts = []
|
|
46
|
+
|
|
47
|
+
# Publisher and type portion
|
|
48
|
+
parts << publisher_portion
|
|
49
|
+
|
|
50
|
+
# If CISPR identifier embedded, render it with TRF date
|
|
51
|
+
if cispr_identifier
|
|
52
|
+
cispr_parts = []
|
|
53
|
+
cispr_parts << cispr_identifier.publisher.body
|
|
54
|
+
|
|
55
|
+
# Build number portion with part
|
|
56
|
+
num_str = cispr_identifier.number.to_s
|
|
57
|
+
num_str += "-#{cispr_identifier.part}" if cispr_identifier.part && cispr_identifier.part.to_s != ""
|
|
58
|
+
cispr_parts << num_str
|
|
59
|
+
|
|
60
|
+
# Join with space and add TRF year
|
|
61
|
+
cispr_str = cispr_parts.join(" ")
|
|
62
|
+
cispr_str += ":#{date.year}" if date
|
|
63
|
+
|
|
64
|
+
parts << " #{cispr_str}"
|
|
65
|
+
else
|
|
66
|
+
# Normal TRF: number portion
|
|
67
|
+
parts << number_portion
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# TRF info if present (handles version, decision sheet, etc.)
|
|
71
|
+
parts << trf_info.to_s if trf_info && !trf_info.empty?
|
|
72
|
+
|
|
73
|
+
parts.compact.join
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
require_relative "../identifier"
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
require_relative "../components/vap_suffix"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Iec
|
|
7
|
+
module Identifiers
|
|
8
|
+
# VAP (Version/Compilation) Identifier
|
|
9
|
+
# Single Responsibility: Wraps another identifier with VAP type suffix
|
|
10
|
+
# Examples: "IEC 61666:2010+AMD1:2021 CSV"
|
|
11
|
+
class VapIdentifier < Identifier
|
|
12
|
+
attribute :base_identifier, Identifier, polymorphic: true
|
|
13
|
+
attribute :vap_suffix, Components::VapSuffix
|
|
14
|
+
attribute :edition, ::Pubid::Components::Edition, default: -> {}
|
|
15
|
+
|
|
16
|
+
# VAP types mapping
|
|
17
|
+
TYPE_MAP = {
|
|
18
|
+
"CSV" => "Consolidated version (with Supplements)",
|
|
19
|
+
"CMV" => "Compiled Maintenance Version",
|
|
20
|
+
"RLV" => "Redline Version (shows changes)",
|
|
21
|
+
"SER" => "Serial version",
|
|
22
|
+
}.freeze
|
|
23
|
+
|
|
24
|
+
def to_s(lang: :en, lang_single: false, with_edition: false)
|
|
25
|
+
parts = []
|
|
26
|
+
|
|
27
|
+
# Render base identifier WITHOUT edition (edition goes at VAP level)
|
|
28
|
+
parts << base_identifier.to_s(lang: lang, lang_single: lang_single,
|
|
29
|
+
with_edition: false)
|
|
30
|
+
|
|
31
|
+
# Add VAP suffix with space
|
|
32
|
+
if vap_suffix
|
|
33
|
+
parts << " #{vap_suffix}"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Add edition after VAP suffix if present
|
|
37
|
+
parts << " #{edition}" if edition&.number
|
|
38
|
+
|
|
39
|
+
parts.compact.join
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Delegate common attributes to base_identifier
|
|
43
|
+
def publisher
|
|
44
|
+
base_identifier&.publisher
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def copublishers
|
|
48
|
+
base_identifier&.copublishers
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def code
|
|
52
|
+
base_identifier&.code
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def number
|
|
56
|
+
base_identifier&.number
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def date
|
|
60
|
+
base_identifier&.date
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def type
|
|
64
|
+
:vap
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def stage
|
|
68
|
+
base_identifier&.stage
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def typed_stage
|
|
72
|
+
base_identifier&.typed_stage
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
require_relative "base"
|
|
2
|
+
require_relative "../../components/typed_stage"
|
|
3
|
+
|
|
4
|
+
module Pubid
|
|
5
|
+
module Iec
|
|
6
|
+
module Identifiers
|
|
7
|
+
# White Paper identifier class
|
|
8
|
+
# Single Responsibility: Represents IEC White Paper documents
|
|
9
|
+
class WhitePaper < Base
|
|
10
|
+
# White Papers have full phrase as type abbreviation
|
|
11
|
+
TYPED_STAGES = [
|
|
12
|
+
Pubid::Components::TypedStage.new(
|
|
13
|
+
code: :wp,
|
|
14
|
+
stage_code: :published,
|
|
15
|
+
type_code: :wp,
|
|
16
|
+
abbr: ["White Paper"],
|
|
17
|
+
name: "White Paper",
|
|
18
|
+
harmonized_stages: %w[60.00 60.60],
|
|
19
|
+
),
|
|
20
|
+
].freeze
|
|
21
|
+
|
|
22
|
+
def self.type
|
|
23
|
+
{ key: :wp, title: "White Paper", short: "White Paper" }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Override publisher_portion to add White Paper
|
|
27
|
+
def publisher_portion
|
|
28
|
+
result = publisher.to_s
|
|
29
|
+
|
|
30
|
+
if typed_stage && typed_stage.abbreviation == "White Paper"
|
|
31
|
+
result += " White Paper"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
result
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
require_relative "base"
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
require_relative "../../components/stage"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Iec
|
|
7
|
+
module Identifiers
|
|
8
|
+
# Working Document identifier class
|
|
9
|
+
# Single Responsibility: Represents IEC Working Documents with TC attribution
|
|
10
|
+
# Also handles Working Programmes with PWI/PNW stage-first format
|
|
11
|
+
# Formats:
|
|
12
|
+
# Working Programme: "PWI TR 100-36 ED1"
|
|
13
|
+
# Working Document: "100/3705(F)/FDIS"
|
|
14
|
+
class WorkingDocument < Base
|
|
15
|
+
attribute :technical_committee, :string, default: -> {}
|
|
16
|
+
attribute :wd_number, :string, default: -> {}
|
|
17
|
+
attribute :wd_language, :string, default: -> {}
|
|
18
|
+
attribute :wd_stage, :string, default: -> {}
|
|
19
|
+
attribute :wp_stage, :string, default: -> {}
|
|
20
|
+
attribute :wp_type, :string, default: -> {}
|
|
21
|
+
|
|
22
|
+
# Working documents have no TYPED_STAGES - they use PROJECT_STAGES only
|
|
23
|
+
TYPED_STAGES = [].freeze
|
|
24
|
+
|
|
25
|
+
# Working document stages
|
|
26
|
+
PROJECT_STAGES = {}.freeze
|
|
27
|
+
|
|
28
|
+
def self.type
|
|
29
|
+
{ key: :wd, title: "Working Document", short: "WD" }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Return stage object for PWI/PNW stage
|
|
33
|
+
def stage
|
|
34
|
+
return nil unless wp_stage
|
|
35
|
+
|
|
36
|
+
# Map PWI/PNW to stage codes
|
|
37
|
+
stage_map = {
|
|
38
|
+
"PWI" => "pwi",
|
|
39
|
+
"PNW" => "pnw",
|
|
40
|
+
}
|
|
41
|
+
stage_code = stage_map[wp_stage]
|
|
42
|
+
return nil unless stage_code
|
|
43
|
+
|
|
44
|
+
@stage ||= ::Pubid::Components::Stage.new(stage_code: stage_code)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def to_s(_format = :short)
|
|
48
|
+
# Working Programme format: "PWI TR 100-36 ED1" or "IEC/PWI 60038"
|
|
49
|
+
if wp_stage
|
|
50
|
+
parts = []
|
|
51
|
+
# Include publisher if present (for IEC/PWI format)
|
|
52
|
+
if publisher
|
|
53
|
+
parts << publisher.body
|
|
54
|
+
if copublishers&.any?
|
|
55
|
+
parts << "/#{copublishers.map(&:body).join('/')}"
|
|
56
|
+
end
|
|
57
|
+
parts << "/"
|
|
58
|
+
end
|
|
59
|
+
parts << wp_stage
|
|
60
|
+
# Only add wp_type if it exists and is not empty/whitespace
|
|
61
|
+
if wp_type && !wp_type.strip.empty?
|
|
62
|
+
parts << " #{wp_type.strip}"
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Render full number with parts
|
|
66
|
+
if number
|
|
67
|
+
num_str = number.to_s
|
|
68
|
+
num_str += "-#{part}" if part && part.to_s != ""
|
|
69
|
+
num_str += "-#{subpart}" if subpart && subpart.to_s != ""
|
|
70
|
+
parts << " #{num_str}"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
parts << " #{edition}" if edition&.number
|
|
74
|
+
return parts.join
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Working Document format: "100/3705(F)/FDIS"
|
|
78
|
+
parts = []
|
|
79
|
+
|
|
80
|
+
parts << technical_committee if technical_committee
|
|
81
|
+
|
|
82
|
+
# Number with optional language
|
|
83
|
+
if wd_number
|
|
84
|
+
num_part = wd_number.to_s
|
|
85
|
+
num_part += "(#{wd_language})" if wd_language
|
|
86
|
+
parts << num_part
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
parts << wd_stage if wd_stage
|
|
90
|
+
|
|
91
|
+
parts.join("/")
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|