pubid 1.15.19 → 2.0.0.pre.alpha.2
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 +89 -0
- data/data/plateau/update_codes.yaml +6 -0
- data/lib/pubid/amca/builder.rb +176 -0
- data/lib/pubid/amca/identifier.rb +57 -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 +55 -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 +68 -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 +57 -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 +61 -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 +92 -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 +87 -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 +84 -0
- data/lib/pubid/ccsds/identifiers/base.rb +89 -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 +77 -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 +52 -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 +71 -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/factory.rb +50 -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 +59 -0
- data/lib/pubid/components.rb +16 -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 +513 -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 +57 -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 +242 -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 +129 -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 +458 -0
- data/lib/pubid/iec/components/code.rb +60 -0
- data/lib/pubid/iec/components/consolidated_amendment.rb +59 -0
- data/lib/pubid/iec/components/publisher.rb +36 -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 +256 -0
- data/lib/pubid/iec/identifiers/amendment.rb +94 -0
- data/lib/pubid/iec/identifiers/base.rb +82 -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 +82 -0
- data/lib/pubid/iec/identifiers/corrigendum.rb +94 -0
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +137 -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 +62 -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 +73 -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 +417 -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 +79 -0
- data/lib/pubid/iec/urn_parser.rb +90 -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 +54 -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 +61 -0
- data/lib/pubid/iho/identifiers/base.rb +41 -0
- data/lib/pubid/iho/identifiers/bibliographic.rb +16 -0
- data/lib/pubid/iho/identifiers/circular_letter.rb +15 -0
- data/lib/pubid/iho/identifiers/miscellaneous.rb +16 -0
- data/lib/pubid/iho/identifiers/publication.rb +15 -0
- data/lib/pubid/iho/identifiers/standard.rb +15 -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 +309 -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 +330 -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 +512 -0
- data/lib/pubid/iso/rendering_style.rb +120 -0
- data/lib/pubid/iso/scheme.rb +193 -0
- data/lib/pubid/iso/single_identifier.rb +64 -0
- data/lib/pubid/iso/supplement_identifier.rb +27 -0
- data/lib/pubid/iso/urn_generator.rb +426 -0
- data/lib/pubid/iso/urn_parser.rb +437 -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 +118 -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 +54 -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 +61 -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 +2269 -0
- data/lib/pubid/nist/components/code.rb +38 -0
- data/lib/pubid/nist/components/edition.rb +134 -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 +188 -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/identifier.rb +62 -0
- data/lib/pubid/nist/identifiers/base.rb +578 -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 +132 -0
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +104 -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 +67 -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 +1117 -0
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +67 -0
- data/lib/pubid/nist/urn_generator.rb +133 -0
- data/lib/pubid/nist.rb +37 -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 +61 -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/identifier.rb +57 -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 +26 -0
- data/lib/pubid/renderers/base.rb +53 -0
- data/lib/pubid/renderers/directives_renderer.rb +61 -0
- data/lib/pubid/renderers/guide_renderer.rb +24 -0
- data/lib/pubid/renderers/human_readable.rb +70 -0
- data/lib/pubid/renderers/iwa_renderer.rb +20 -0
- data/lib/pubid/renderers/mr_string.rb +16 -0
- data/lib/pubid/renderers/supplement_renderer.rb +36 -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 +159 -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 +37 -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 +219 -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 +616 -171
- data/lib/pubid/registry.rb +0 -30
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
# Publicly Available Specification identifier class
|
|
9
|
+
# Single Responsibility: Represents IEC PAS documents
|
|
10
|
+
class PubliclyAvailableSpecification < Base
|
|
11
|
+
# Convert v1 hash-based TYPED_STAGES to v2 object-based
|
|
12
|
+
# From gems/pubid-iec/lib/pubid/iec/identifier/publicly_available_specification.rb
|
|
13
|
+
TYPED_STAGES = [
|
|
14
|
+
Pubid::Components::TypedStage.new(
|
|
15
|
+
code: :pwi_pas,
|
|
16
|
+
stage_code: :pwi,
|
|
17
|
+
type_code: :pas,
|
|
18
|
+
abbr: ["PWI PAS"],
|
|
19
|
+
name: "Preliminary Work Item Publicly Available Specification",
|
|
20
|
+
harmonized_stages: %w[00.00 00.20 00.60 00.98 00.99],
|
|
21
|
+
),
|
|
22
|
+
Pubid::Components::TypedStage.new(
|
|
23
|
+
code: :np_pas,
|
|
24
|
+
stage_code: :np,
|
|
25
|
+
type_code: :pas,
|
|
26
|
+
abbr: ["NP PAS"],
|
|
27
|
+
name: "New Proposal Publicly Available Specification",
|
|
28
|
+
harmonized_stages: %w[10.00 10.20 10.60 10.92 10.98],
|
|
29
|
+
),
|
|
30
|
+
Pubid::Components::TypedStage.new(
|
|
31
|
+
code: :anw_pas,
|
|
32
|
+
stage_code: :anw,
|
|
33
|
+
type_code: :pas,
|
|
34
|
+
abbr: ["ANW PAS"],
|
|
35
|
+
name: "Approved New Work Item Publicly Available Specification",
|
|
36
|
+
harmonized_stages: %w[10.99 20.00],
|
|
37
|
+
),
|
|
38
|
+
Pubid::Components::TypedStage.new(
|
|
39
|
+
code: :wd_pas,
|
|
40
|
+
stage_code: :wd,
|
|
41
|
+
type_code: :pas,
|
|
42
|
+
abbr: ["WD PAS"],
|
|
43
|
+
name: "Working Draft Publicly Available Specification",
|
|
44
|
+
harmonized_stages: %w[20.20 20.60 20.98 20.99],
|
|
45
|
+
),
|
|
46
|
+
Pubid::Components::TypedStage.new(
|
|
47
|
+
code: :cdpas,
|
|
48
|
+
stage_code: :cd,
|
|
49
|
+
type_code: :pas,
|
|
50
|
+
abbr: ["CDPAS"],
|
|
51
|
+
name: "Committee Draft Publicly Available 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: :dpas,
|
|
56
|
+
stage_code: :draft,
|
|
57
|
+
type_code: :pas,
|
|
58
|
+
abbr: ["DPAS"],
|
|
59
|
+
name: "Draft Publicly Available 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: :pas,
|
|
64
|
+
stage_code: :published,
|
|
65
|
+
type_code: :pas,
|
|
66
|
+
abbr: ["PAS"],
|
|
67
|
+
name: "Publicly Available 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 PAS
|
|
74
|
+
PROJECT_STAGES = {
|
|
75
|
+
PRVDPAS: {
|
|
76
|
+
abbr: "PRVDPAS",
|
|
77
|
+
name: "Preparation of RVDPAS",
|
|
78
|
+
harmonized_stages: %w[50.60],
|
|
79
|
+
},
|
|
80
|
+
}.freeze
|
|
81
|
+
|
|
82
|
+
def self.type
|
|
83
|
+
{ key: :pas, title: "Publicly Available Specification", short: "PAS" }
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Override publisher_portion to add PAS or DPAS stage
|
|
87
|
+
def publisher_portion
|
|
88
|
+
result = publisher.to_s
|
|
89
|
+
|
|
90
|
+
if typed_stage
|
|
91
|
+
abbr = typed_stage.abbreviation
|
|
92
|
+
# PAS uses space for all stages
|
|
93
|
+
result += " #{abbr}" unless abbr.empty?
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
result
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
require_relative "../identifier"
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Pubid
|
|
5
|
+
module Iec
|
|
6
|
+
module Identifiers
|
|
7
|
+
# Sheet Identifier
|
|
8
|
+
# Single Responsibility: Wraps another identifier with sheet number and year
|
|
9
|
+
# Example: "IEC 60695-2-1/1:1994" = Sheet 1 of IEC 60695-2-1 from 1994
|
|
10
|
+
class SheetIdentifier < Identifier
|
|
11
|
+
attribute :base_identifier, Identifier, polymorphic: true
|
|
12
|
+
attribute :sheet_number, :string
|
|
13
|
+
attribute :year, :string, default: -> {}
|
|
14
|
+
|
|
15
|
+
def to_s(lang: :en, lang_single: false, with_edition: false)
|
|
16
|
+
parts = []
|
|
17
|
+
|
|
18
|
+
# Render base identifier
|
|
19
|
+
parts << base_identifier.to_s(lang: lang, lang_single: lang_single,
|
|
20
|
+
with_edition: with_edition)
|
|
21
|
+
|
|
22
|
+
# Add sheet notation /N
|
|
23
|
+
parts << "/#{sheet_number}"
|
|
24
|
+
|
|
25
|
+
# Add year if present
|
|
26
|
+
parts << ":#{year}" if year
|
|
27
|
+
|
|
28
|
+
parts.join
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Delegate common attributes to base_identifier
|
|
32
|
+
def publisher
|
|
33
|
+
base_identifier&.publisher
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def copublishers
|
|
37
|
+
base_identifier&.copublishers
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def code
|
|
41
|
+
base_identifier&.code
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def number
|
|
45
|
+
base_identifier&.number
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def date
|
|
49
|
+
base_identifier&.date
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def stage
|
|
53
|
+
base_identifier&.stage
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def typed_stage
|
|
57
|
+
base_identifier&.typed_stage
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require_relative "base"
|
|
2
|
+
require_relative "../../components/typed_stage"
|
|
3
|
+
|
|
4
|
+
module Pubid
|
|
5
|
+
module Iec
|
|
6
|
+
module Identifiers
|
|
7
|
+
# Societal Technology Trend Report identifier class
|
|
8
|
+
# Single Responsibility: Represents IEC STTR documents
|
|
9
|
+
class SocietalTechnologyTrendReport < Base
|
|
10
|
+
# Societal Technology Trend Reports have full phrase as type abbreviation
|
|
11
|
+
TYPED_STAGES = [
|
|
12
|
+
Pubid::Components::TypedStage.new(
|
|
13
|
+
code: :sttr,
|
|
14
|
+
stage_code: :published,
|
|
15
|
+
type_code: :sttr,
|
|
16
|
+
abbr: ["Trend Report"],
|
|
17
|
+
name: "Societal and Technology Trend Report",
|
|
18
|
+
harmonized_stages: %w[60.00 60.60],
|
|
19
|
+
),
|
|
20
|
+
].freeze
|
|
21
|
+
|
|
22
|
+
def self.type
|
|
23
|
+
{ key: :sttr, title: "Societal and Technology Trend Report",
|
|
24
|
+
short: "Trend Report" }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Override publisher_portion to add Trend Report
|
|
28
|
+
def publisher_portion
|
|
29
|
+
result = publisher.to_s
|
|
30
|
+
|
|
31
|
+
if typed_stage && typed_stage.abbreviation == "Trend Report"
|
|
32
|
+
result += " Trend Report"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
result
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
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
|
+
# Systems Reference Document identifier class
|
|
9
|
+
# Single Responsibility: Represents IEC SRD documents
|
|
10
|
+
class SystemsReferenceDocument < Base
|
|
11
|
+
# Systems Reference Documents have SRD as type abbreviation
|
|
12
|
+
TYPED_STAGES = [
|
|
13
|
+
Pubid::Components::TypedStage.new(
|
|
14
|
+
code: :srd,
|
|
15
|
+
stage_code: :published,
|
|
16
|
+
type_code: :srd,
|
|
17
|
+
abbr: ["SRD"],
|
|
18
|
+
name: "Systems Reference Document",
|
|
19
|
+
harmonized_stages: %w[60.00 60.60],
|
|
20
|
+
),
|
|
21
|
+
].freeze
|
|
22
|
+
|
|
23
|
+
def self.type
|
|
24
|
+
{ key: :srd, title: "Systems Reference Document", short: "SRD" }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# Override publisher_portion to add SRD
|
|
28
|
+
def publisher_portion
|
|
29
|
+
result = publisher.to_s
|
|
30
|
+
|
|
31
|
+
if typed_stage && typed_stage.abbreviation == "SRD"
|
|
32
|
+
result += " SRD"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
result
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
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 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,73 @@
|
|
|
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 stage
|
|
64
|
+
base_identifier&.stage
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def typed_stage
|
|
68
|
+
base_identifier&.typed_stage
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|