pubid 2.0.0.pre.alpha.8 → 2.0.0.pre.alpha.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +33 -11
- data/conformance/pending.yaml +4 -0
- data/data/bipm/update_codes.yaml +9 -0
- data/data/iec/update_codes.yaml +3 -0
- data/data/ieee/update_codes.yaml +107 -1
- data/{archived-gems/pubid-nist → data/nist}/series.yaml +34 -0
- data/data/nist/update_codes.yaml +8 -0
- data/lib/pubid/adobe/builder.rb +52 -0
- data/lib/pubid/adobe/identifier.rb +47 -0
- data/lib/pubid/adobe/identifiers/publication.rb +31 -0
- data/lib/pubid/adobe/identifiers/tech_note.rb +32 -0
- data/lib/pubid/adobe/identifiers.rb +10 -0
- data/lib/pubid/adobe/parser.rb +136 -0
- data/lib/pubid/adobe/renderer.rb +39 -0
- data/lib/pubid/adobe/urn_generator.rb +42 -0
- data/lib/pubid/adobe/urn_parser.rb +69 -0
- data/lib/pubid/adobe.rb +61 -0
- data/lib/pubid/amca/builder.rb +4 -4
- data/lib/pubid/amca/identifier.rb +1 -3
- data/lib/pubid/amca/identifiers/base.rb +50 -33
- data/lib/pubid/amca/identifiers/interpretation.rb +18 -10
- data/lib/pubid/amca/identifiers/publication.rb +14 -10
- data/lib/pubid/amca/identifiers/standard.rb +3 -1
- data/lib/pubid/amca/identifiers.rb +0 -1
- data/lib/pubid/amca/parser.rb +1 -1
- data/lib/pubid/amca/renderer.rb +4 -4
- data/lib/pubid/amca/single_identifier.rb +1 -1
- data/lib/pubid/amca/urn_generator.rb +2 -2
- data/lib/pubid/amca.rb +5 -4
- data/lib/pubid/ansi/builder.rb +2 -2
- data/lib/pubid/ansi/identifier.rb +18 -0
- data/lib/pubid/ansi/parser.rb +1 -1
- data/lib/pubid/ansi/renderer.rb +2 -2
- data/lib/pubid/ansi.rb +5 -5
- data/lib/pubid/api/builder.rb +16 -2
- data/lib/pubid/api/identifier.rb +25 -4
- data/lib/pubid/api/identifiers/mpms.rb +10 -8
- data/lib/pubid/api/parser.rb +1 -1
- data/lib/pubid/api/renderer.rb +16 -7
- data/lib/pubid/api/single_identifier.rb +5 -12
- data/lib/pubid/api.rb +1 -0
- data/lib/pubid/ashrae/builder.rb +53 -32
- data/lib/pubid/ashrae/identifier.rb +3 -4
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +7 -1
- data/lib/pubid/ashrae/identifiers/addendum.rb +9 -1
- data/lib/pubid/ashrae/identifiers/base.rb +94 -12
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +8 -1
- data/lib/pubid/ashrae/identifiers/errata.rb +9 -0
- data/lib/pubid/ashrae/identifiers/guideline.rb +3 -0
- data/lib/pubid/ashrae/identifiers/interpretation.rb +16 -0
- data/lib/pubid/ashrae/identifiers/standard.rb +3 -0
- data/lib/pubid/ashrae/identifiers.rb +0 -1
- data/lib/pubid/ashrae/parser.rb +37 -17
- data/lib/pubid/ashrae/renderer.rb +20 -20
- data/lib/pubid/ashrae/single_identifier.rb +1 -1
- data/lib/pubid/ashrae/supplement_identifier.rb +21 -6
- data/lib/pubid/ashrae/urn_generator.rb +8 -2
- data/lib/pubid/ashrae.rb +10 -4
- data/lib/pubid/asme/builder.rb +11 -2
- data/lib/pubid/asme/identifier.rb +9 -0
- data/lib/pubid/asme/identifiers/standard.rb +86 -2
- data/lib/pubid/asme/parser.rb +1 -1
- data/lib/pubid/asme/renderer.rb +3 -3
- data/lib/pubid/asme/single_identifier.rb +8 -1
- data/lib/pubid/asme/urn_generator.rb +2 -2
- data/lib/pubid/asme.rb +1 -0
- data/lib/pubid/astm/builder.rb +10 -3
- data/lib/pubid/astm/identifier.rb +9 -0
- data/lib/pubid/astm/identifiers/adjunct.rb +16 -1
- data/lib/pubid/astm/identifiers/code_number.rb +81 -0
- data/lib/pubid/astm/identifiers/data_series.rb +2 -0
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +16 -0
- data/lib/pubid/astm/identifiers/manual.rb +10 -0
- data/lib/pubid/astm/identifiers/monograph.rb +2 -0
- data/lib/pubid/astm/identifiers/research_report.rb +10 -0
- data/lib/pubid/astm/identifiers/standard.rb +10 -0
- data/lib/pubid/astm/identifiers/technical_report.rb +2 -0
- data/lib/pubid/astm/identifiers/work_in_progress.rb +2 -0
- data/lib/pubid/astm/identifiers.rb +1 -0
- data/lib/pubid/astm/parser.rb +1 -1
- data/lib/pubid/astm/renderer.rb +1 -1
- data/lib/pubid/astm/single_identifier.rb +31 -1
- data/lib/pubid/astm/urn_generator.rb +7 -5
- data/lib/pubid/astm.rb +1 -0
- data/lib/pubid/bipm/builder.rb +163 -0
- data/lib/pubid/bipm/identifier.rb +285 -0
- data/lib/pubid/bipm/identifiers/committee_document.rb +36 -0
- data/lib/pubid/bipm/identifiers/guide.rb +35 -0
- data/lib/pubid/bipm/identifiers/meeting.rb +53 -0
- data/lib/pubid/bipm/identifiers/mep.rb +33 -0
- data/lib/pubid/bipm/identifiers/metrologia_article.rb +48 -0
- data/lib/pubid/bipm/identifiers/si_brochure.rb +33 -0
- data/lib/pubid/bipm/identifiers.rb +15 -0
- data/lib/pubid/bipm/parser.rb +237 -0
- data/lib/pubid/bipm/renderer.rb +118 -0
- data/lib/pubid/bipm/urn_generator.rb +58 -0
- data/lib/pubid/bipm/urn_parser.rb +60 -0
- data/lib/pubid/bipm.rb +92 -0
- data/lib/pubid/bsi/builder.rb +62 -52
- data/lib/pubid/bsi/identifier.rb +0 -1
- data/lib/pubid/bsi/identifiers/addendum_document.rb +2 -2
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +36 -7
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +7 -6
- data/lib/pubid/bsi/identifiers/amendment.rb +4 -4
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +0 -1
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +10 -0
- data/lib/pubid/bsi/identifiers/committee_document.rb +10 -1
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +6 -0
- data/lib/pubid/bsi/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +5 -5
- data/lib/pubid/bsi/identifiers/handbook.rb +0 -2
- data/lib/pubid/bsi/identifiers/practice_guide.rb +0 -1
- data/lib/pubid/bsi/identifiers/set.rb +11 -0
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -1
- data/lib/pubid/bsi/identifiers/supplement_document.rb +2 -2
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +6 -6
- data/lib/pubid/bsi/parser.rb +1 -1
- data/lib/pubid/bsi/renderer.rb +71 -59
- data/lib/pubid/bsi/single_identifier.rb +64 -7
- data/lib/pubid/bsi/urn_generator.rb +11 -2
- data/lib/pubid/bsi.rb +7 -1
- data/lib/pubid/builder/base.rb +23 -11
- data/lib/pubid/bundled_identifier.rb +19 -9
- data/lib/pubid/calconnect/builder.rb +38 -0
- data/lib/pubid/calconnect/identifier.rb +121 -0
- data/lib/pubid/calconnect/identifiers/standard.rb +29 -0
- data/lib/pubid/calconnect/identifiers.rb +9 -0
- data/lib/pubid/calconnect/parser.rb +54 -0
- data/lib/pubid/calconnect/renderer.rb +36 -0
- data/lib/pubid/calconnect/urn_generator.rb +33 -0
- data/lib/pubid/calconnect/urn_parser.rb +34 -0
- data/lib/pubid/calconnect.rb +83 -0
- data/lib/pubid/ccsds/builder.rb +1 -1
- data/lib/pubid/ccsds/identifier.rb +10 -3
- data/lib/pubid/ccsds/identifiers/base.rb +4 -2
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/ccsds/parser.rb +1 -1
- data/lib/pubid/ccsds/single_identifier.rb +2 -2
- data/lib/pubid/ccsds/supplement_identifier.rb +6 -6
- data/lib/pubid/ccsds/urn_generator.rb +3 -3
- data/lib/pubid/ccsds.rb +1 -0
- data/lib/pubid/cen_cenelec/builder.rb +131 -72
- data/lib/pubid/cen_cenelec/identifier.rb +115 -3
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +27 -16
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +46 -6
- data/lib/pubid/cen_cenelec/identifiers/base.rb +8 -9
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -1
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -1
- data/lib/pubid/cen_cenelec/identifiers/cenelec_harmonization_document.rb +1 -1
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +29 -14
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +47 -8
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +60 -3
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +27 -2
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -1
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +15 -5
- data/lib/pubid/cen_cenelec/identifiers/guide.rb +1 -1
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -1
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -1
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -1
- data/lib/pubid/cen_cenelec/parser.rb +1 -1
- data/lib/pubid/cen_cenelec/renderer.rb +55 -60
- data/lib/pubid/cen_cenelec/single_identifier.rb +20 -2
- data/lib/pubid/cen_cenelec/urn_generator.rb +66 -44
- data/lib/pubid/cen_cenelec.rb +104 -82
- data/lib/pubid/cie/builder.rb +149 -24
- data/lib/pubid/cie/identifier.rb +13 -4
- data/lib/pubid/cie/identifiers/bundle.rb +35 -5
- data/lib/pubid/cie/identifiers/code_attributes.rb +52 -0
- data/lib/pubid/cie/identifiers/conference.rb +11 -6
- data/lib/pubid/cie/identifiers/corrigendum.rb +17 -23
- data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
- data/lib/pubid/cie/identifiers/identical.rb +9 -9
- data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
- data/lib/pubid/cie/identifiers/proceedings.rb +41 -0
- data/lib/pubid/cie/identifiers/standard.rb +43 -8
- data/lib/pubid/cie/identifiers/supplement.rb +27 -25
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +7 -3
- data/lib/pubid/cie/identifiers.rb +2 -0
- data/lib/pubid/cie/parser.rb +55 -6
- data/lib/pubid/cie/single_identifier.rb +40 -1
- data/lib/pubid/cie/supplement_identifier.rb +29 -16
- data/lib/pubid/cie/urn_generator.rb +11 -8
- data/lib/pubid/cie.rb +7 -2
- data/lib/pubid/components/date.rb +21 -5
- data/lib/pubid/conformance/checks.rb +72 -0
- data/lib/pubid/conformance/corpus/case.rb +55 -0
- data/lib/pubid/conformance/corpus.rb +36 -0
- data/lib/pubid/conformance/generator.rb +212 -0
- data/lib/pubid/conformance/pending.rb +63 -0
- data/lib/pubid/conformance/runner.rb +153 -0
- data/lib/pubid/conformance.rb +55 -0
- data/lib/pubid/core.rb +2 -0
- data/lib/pubid/csa/builder.rb +48 -48
- data/lib/pubid/csa/composite_identifier.rb +18 -7
- data/lib/pubid/csa/identifier.rb +187 -80
- data/lib/pubid/csa/identifiers/bundled.rb +25 -9
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
- data/lib/pubid/csa/identifiers/cec.rb +44 -4
- data/lib/pubid/csa/identifiers/combined.rb +97 -69
- data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
- data/lib/pubid/csa/identifiers/package.rb +4 -4
- data/lib/pubid/csa/parser.rb +12 -8
- data/lib/pubid/csa/renderer.rb +13 -5
- data/lib/pubid/csa/single_identifier.rb +93 -4
- data/lib/pubid/csa/urn_generator.rb +9 -2
- data/lib/pubid/csa/wrapper_identifier.rb +43 -10
- data/lib/pubid/csa.rb +7 -1
- data/lib/pubid/doi/builder.rb +18 -0
- data/lib/pubid/doi/identifier.rb +49 -0
- data/lib/pubid/doi/identifiers/resource.rb +30 -0
- data/lib/pubid/doi/identifiers.rb +9 -0
- data/lib/pubid/doi/parser.rb +52 -0
- data/lib/pubid/doi/renderer.rb +13 -0
- data/lib/pubid/doi.rb +56 -0
- data/lib/pubid/easc/builder.rb +55 -0
- data/lib/pubid/easc/identifier.rb +59 -0
- data/lib/pubid/easc/identifiers/pmg.rb +20 -0
- data/lib/pubid/easc/identifiers/rmg.rb +19 -0
- data/lib/pubid/easc/identifiers.rb +10 -0
- data/lib/pubid/easc/parser.rb +88 -0
- data/lib/pubid/easc/renderer.rb +48 -0
- data/lib/pubid/easc/urn_generator.rb +46 -0
- data/lib/pubid/easc/urn_parser.rb +57 -0
- data/lib/pubid/easc.rb +53 -0
- data/lib/pubid/ecma/builder.rb +45 -0
- data/lib/pubid/ecma/identifier.rb +147 -0
- data/lib/pubid/ecma/identifiers/memento.rb +30 -0
- data/lib/pubid/ecma/identifiers/standard.rb +31 -0
- data/lib/pubid/ecma/identifiers/technical_report.rb +31 -0
- data/lib/pubid/ecma/identifiers.rb +11 -0
- data/lib/pubid/ecma/parser.rb +76 -0
- data/lib/pubid/ecma/renderer.rb +67 -0
- data/lib/pubid/ecma/urn_generator.rb +46 -0
- data/lib/pubid/ecma/urn_parser.rb +51 -0
- data/lib/pubid/ecma.rb +68 -0
- data/lib/pubid/errors.rb +80 -0
- data/lib/pubid/etsi/builder.rb +13 -4
- data/lib/pubid/etsi/identifier.rb +1 -3
- data/lib/pubid/etsi/identifiers/base.rb +43 -11
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +207 -4
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +45 -3
- data/lib/pubid/etsi/identifiers.rb +0 -1
- data/lib/pubid/etsi/parser.rb +9 -3
- data/lib/pubid/etsi/renderer.rb +8 -2
- data/lib/pubid/etsi.rb +6 -5
- data/lib/pubid/evs/builder.rb +26 -0
- data/lib/pubid/evs/identifier.rb +37 -0
- data/lib/pubid/evs/identifiers/national_adoption.rb +17 -0
- data/lib/pubid/evs/identifiers.rb +9 -0
- data/lib/pubid/evs/parser.rb +27 -0
- data/lib/pubid/evs/renderer.rb +30 -0
- data/lib/pubid/evs/urn_generator.rb +30 -0
- data/lib/pubid/evs/urn_parser.rb +80 -0
- data/lib/pubid/evs.rb +90 -0
- data/lib/pubid/export/exporter.rb +2 -1
- data/lib/pubid/export/flavor_exporter.rb +18 -3
- data/lib/pubid/export.rb +1 -0
- data/lib/pubid/format_detector.rb +1 -0
- data/lib/pubid/gb/builder.rb +45 -0
- data/lib/pubid/gb/identifier.rb +67 -0
- data/lib/pubid/gb/identifiers/standard.rb +34 -0
- data/lib/pubid/gb/identifiers.rb +9 -0
- data/lib/pubid/gb/parser.rb +63 -0
- data/lib/pubid/gb/renderer.rb +35 -0
- data/lib/pubid/gb.rb +88 -0
- data/lib/pubid/gost/builder.rb +185 -0
- data/lib/pubid/gost/identifier.rb +47 -0
- data/lib/pubid/gost/identifiers/foreign_reference.rb +25 -0
- data/lib/pubid/gost/identifiers/harmonized.rb +39 -0
- data/lib/pubid/gost/identifiers/identical_adoption.rb +39 -0
- data/lib/pubid/gost/identifiers/interstate_standard.rb +20 -0
- data/lib/pubid/gost/identifiers/national_standard.rb +19 -0
- data/lib/pubid/gost/identifiers.rb +13 -0
- data/lib/pubid/gost/parser.rb +105 -0
- data/lib/pubid/gost/renderer.rb +48 -0
- data/lib/pubid/gost/urn_generator.rb +46 -0
- data/lib/pubid/gost/urn_parser.rb +52 -0
- data/lib/pubid/gost.rb +50 -0
- data/lib/pubid/iala/builder.rb +22 -27
- data/lib/pubid/iala/identifier.rb +36 -8
- data/lib/pubid/iala/identifiers/advice.rb +1 -1
- data/lib/pubid/iala/identifiers/annex.rb +10 -10
- data/lib/pubid/iala/identifiers/general_assembly.rb +5 -2
- data/lib/pubid/iala/identifiers/guideline.rb +3 -1
- data/lib/pubid/iala/identifiers/letter.rb +1 -1
- data/lib/pubid/iala/identifiers/manual.rb +3 -1
- data/lib/pubid/iala/identifiers/model_course.rb +3 -1
- data/lib/pubid/iala/identifiers/recommendation.rb +3 -1
- data/lib/pubid/iala/identifiers/report.rb +1 -1
- data/lib/pubid/iala/identifiers/resolution.rb +1 -1
- data/lib/pubid/iala/identifiers/standard.rb +3 -1
- data/lib/pubid/iala/identifiers.rb +0 -1
- data/lib/pubid/iala/parser.rb +10 -2
- data/lib/pubid/iala/renderer.rb +1 -1
- data/lib/pubid/iala/urn_generator.rb +1 -1
- data/lib/pubid/iala/urn_parser.rb +24 -3
- data/lib/pubid/iala.rb +5 -4
- data/lib/pubid/iana/builder.rb +22 -0
- data/lib/pubid/iana/identifier.rb +140 -0
- data/lib/pubid/iana/identifiers/registry.rb +69 -0
- data/lib/pubid/iana/identifiers.rb +9 -0
- data/lib/pubid/iana/parser.rb +38 -0
- data/lib/pubid/iana/renderer.rb +32 -0
- data/lib/pubid/iana/urn_generator.rb +19 -0
- data/lib/pubid/iana/urn_parser.rb +24 -0
- data/lib/pubid/iana.rb +70 -0
- data/lib/pubid/identifier.rb +797 -26
- data/lib/pubid/identifier_metadata.rb +1 -0
- data/lib/pubid/idf/builder.rb +4 -4
- data/lib/pubid/idf/identifier.rb +18 -9
- data/lib/pubid/idf/parser.rb +3 -3
- data/lib/pubid/idf/renderer.rb +5 -5
- data/lib/pubid/idf/supplement_identifier.rb +3 -3
- data/lib/pubid/idf/urn_generator.rb +1 -1
- data/lib/pubid/idf.rb +7 -1
- data/lib/pubid/iec/builder.rb +49 -32
- data/lib/pubid/iec/components.rb +0 -1
- data/lib/pubid/iec/identifier.rb +112 -77
- data/lib/pubid/iec/identifiers/amendment.rb +6 -2
- data/lib/pubid/iec/identifiers/base.rb +2 -2
- data/lib/pubid/iec/identifiers/component_specification.rb +0 -10
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +0 -10
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +6 -0
- data/lib/pubid/iec/identifiers/corrigendum.rb +2 -2
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +13 -15
- data/lib/pubid/iec/identifiers/guide.rb +0 -16
- data/lib/pubid/iec/identifiers/international_standard.rb +22 -6
- data/lib/pubid/iec/identifiers/operational_document.rb +0 -10
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +0 -12
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +12 -12
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +0 -10
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +0 -10
- data/lib/pubid/iec/identifiers/technical_group.rb +30 -0
- data/lib/pubid/iec/identifiers/technical_report.rb +1 -18
- data/lib/pubid/iec/identifiers/technical_specification.rb +1 -18
- data/lib/pubid/iec/identifiers/technology_report.rb +0 -10
- data/lib/pubid/iec/identifiers/test_report_form.rb +0 -11
- data/lib/pubid/iec/identifiers/vap_identifier.rb +12 -12
- data/lib/pubid/iec/identifiers/white_paper.rb +0 -10
- data/lib/pubid/iec/identifiers/working_document.rb +24 -10
- data/lib/pubid/iec/identifiers.rb +1 -0
- data/lib/pubid/iec/parser.rb +53 -28
- data/lib/pubid/iec/renderer.rb +31 -18
- data/lib/pubid/iec/single_identifier.rb +34 -11
- data/lib/pubid/iec/supplement_identifier.rb +32 -19
- data/lib/pubid/iec/urn_generator.rb +227 -61
- data/lib/pubid/iec/urn_parser.rb +42 -4
- data/lib/pubid/iec.rb +2 -6
- data/lib/pubid/ieee/aiee/builder.rb +17 -3
- data/lib/pubid/ieee/aiee/identifier.rb +46 -62
- data/lib/pubid/ieee/aiee/parser.rb +1 -1
- data/lib/pubid/ieee/builder.rb +386 -69
- data/lib/pubid/ieee/compaction.rb +121 -0
- data/lib/pubid/ieee/components/draft.rb +47 -7
- data/lib/pubid/ieee/identifier.rb +1 -3
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +62 -5
- data/lib/pubid/ieee/identifiers/amendment.rb +40 -0
- data/lib/pubid/ieee/identifiers/base.rb +148 -18
- data/lib/pubid/ieee/identifiers/code_number.rb +82 -0
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +6 -2
- data/lib/pubid/ieee/identifiers/corrigendum.rb +17 -2
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +24 -3
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +3 -3
- data/lib/pubid/ieee/identifiers/dual_published.rb +58 -3
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +102 -5
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +25 -1
- data/lib/pubid/ieee/identifiers/joint_development.rb +64 -15
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +58 -6
- data/lib/pubid/ieee/identifiers/nesc/base.rb +90 -19
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +20 -5
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +32 -0
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +16 -5
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +11 -2
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +18 -3
- data/lib/pubid/ieee/identifiers/nesc.rb +1 -0
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +3 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +14 -6
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +4 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +4 -1
- data/lib/pubid/ieee/identifiers/standard.rb +4 -1
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +26 -7
- data/lib/pubid/ieee/identifiers.rb +2 -1
- data/lib/pubid/ieee/ire/builder.rb +7 -6
- data/lib/pubid/ieee/ire/identifier.rb +48 -33
- data/lib/pubid/ieee/ire/parser.rb +1 -1
- data/lib/pubid/ieee/nesc/builder.rb +33 -20
- data/lib/pubid/ieee/nesc/parser.rb +16 -15
- data/lib/pubid/ieee/parser.rb +462 -44
- data/lib/pubid/ieee/pre_parser.rb +1 -1
- data/lib/pubid/ieee/renderer.rb +158 -57
- data/lib/pubid/ieee/typed_stages.rb +12 -1
- data/lib/pubid/ieee/urn_generator.rb +35 -8
- data/lib/pubid/ieee.rb +63 -4
- data/lib/pubid/ieee_debug.rb +1 -0
- data/lib/pubid/ietf/builder.rb +78 -0
- data/lib/pubid/ietf/identifier.rb +5 -0
- data/lib/pubid/ietf/identifiers/base.rb +72 -0
- data/lib/pubid/ietf/identifiers/bcp.rb +36 -0
- data/lib/pubid/ietf/identifiers/fyi.rb +36 -0
- data/lib/pubid/ietf/identifiers/internet_draft.rb +45 -0
- data/lib/pubid/ietf/identifiers/rfc.rb +27 -0
- data/lib/pubid/ietf/identifiers/serialization.rb +51 -0
- data/lib/pubid/ietf/identifiers/std.rb +36 -0
- data/lib/pubid/ietf/identifiers.rb +14 -0
- data/lib/pubid/ietf/parser.rb +61 -0
- data/lib/pubid/ietf/renderer.rb +64 -0
- data/lib/pubid/ietf/urn_generator.rb +37 -0
- data/lib/pubid/ietf/urn_parser.rb +43 -0
- data/lib/pubid/ietf.rb +86 -0
- data/lib/pubid/iho/identifier.rb +1 -3
- data/lib/pubid/iho/identifiers/base.rb +11 -10
- data/lib/pubid/iho/identifiers/bibliographic.rb +1 -1
- data/lib/pubid/iho/identifiers/circular_letter.rb +1 -1
- data/lib/pubid/iho/identifiers/miscellaneous.rb +1 -1
- data/lib/pubid/iho/identifiers/publication.rb +1 -1
- data/lib/pubid/iho/identifiers/standard.rb +1 -1
- data/lib/pubid/iho/identifiers.rb +0 -1
- data/lib/pubid/iho/parser.rb +1 -1
- data/lib/pubid/iho.rb +8 -7
- data/lib/pubid/isbn/builder.rb +44 -0
- data/lib/pubid/isbn/check_digit.rb +53 -0
- data/lib/pubid/isbn/identifier.rb +81 -0
- data/lib/pubid/isbn/identifiers/book.rb +30 -0
- data/lib/pubid/isbn/identifiers.rb +9 -0
- data/lib/pubid/isbn/parser.rb +45 -0
- data/lib/pubid/isbn/renderer.rb +16 -0
- data/lib/pubid/isbn.rb +53 -0
- data/lib/pubid/iso/builder.rb +9 -4
- data/lib/pubid/iso/bundled_identifier.rb +5 -3
- data/lib/pubid/iso/combined_identifier.rb +6 -4
- data/lib/pubid/iso/identifier.rb +29 -8
- data/lib/pubid/iso/identifiers/directives_supplement.rb +12 -12
- data/lib/pubid/iso/normalizer.rb +2 -2
- data/lib/pubid/iso/parser.rb +17 -13
- data/lib/pubid/iso/supplement_identifier.rb +19 -6
- data/lib/pubid/iso/urn_generator.rb +4 -1
- data/lib/pubid/iso/urn_parser.rb +1 -1
- data/lib/pubid/iso.rb +7 -1
- data/lib/pubid/itu/builder.rb +230 -29
- data/lib/pubid/itu/components/code.rb +48 -5
- data/lib/pubid/itu/components/designation.rb +35 -0
- data/lib/pubid/itu/components.rb +1 -0
- data/lib/pubid/itu/identifier.rb +1 -3
- data/lib/pubid/itu/identifiers/addendum.rb +15 -0
- data/lib/pubid/itu/identifiers/amendment.rb +7 -29
- data/lib/pubid/itu/identifiers/annex.rb +13 -2
- data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +87 -0
- data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +92 -0
- data/lib/pubid/itu/identifiers/base.rb +357 -25
- data/lib/pubid/itu/identifiers/combined_identifier.rb +99 -23
- data/lib/pubid/itu/identifiers/corrigendum.rb +16 -23
- data/lib/pubid/itu/identifiers/errata.rb +15 -0
- data/lib/pubid/itu/identifiers/handbook.rb +38 -0
- data/lib/pubid/itu/identifiers/question.rb +63 -0
- data/lib/pubid/itu/identifiers/recommendation.rb +3 -2
- data/lib/pubid/itu/identifiers/report.rb +39 -0
- data/lib/pubid/itu/identifiers/special_publication.rb +3 -1
- data/lib/pubid/itu/identifiers/standard_serialization.rb +58 -0
- data/lib/pubid/itu/identifiers/supplement.rb +119 -14
- data/lib/pubid/itu/identifiers.rb +10 -1
- data/lib/pubid/itu/model.rb +1 -1
- data/lib/pubid/itu/parser.rb +481 -27
- data/lib/pubid/itu/urn_generator.rb +36 -6
- data/lib/pubid/itu/urn_parser.rb +8 -0
- data/lib/pubid/itu.rb +12 -3
- data/lib/pubid/jcgm/builder.rb +24 -14
- data/lib/pubid/jcgm/identifier.rb +10 -0
- data/lib/pubid/jcgm/identifiers/amendment.rb +0 -2
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +34 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +3 -3
- data/lib/pubid/jcgm/identifiers/meeting.rb +47 -0
- data/lib/pubid/jcgm/identifiers.rb +2 -0
- data/lib/pubid/jcgm/parser.rb +74 -7
- data/lib/pubid/jcgm/renderer.rb +33 -12
- data/lib/pubid/jcgm/single_identifier.rb +84 -6
- data/lib/pubid/jcgm/supplement_identifier.rb +39 -4
- data/lib/pubid/jcgm/urn_generator.rb +21 -13
- data/lib/pubid/jcgm/urn_parser.rb +164 -10
- data/lib/pubid/jcgm.rb +10 -0
- data/lib/pubid/jis/identifier.rb +62 -3
- data/lib/pubid/jis/parser.rb +1 -1
- data/lib/pubid/jis.rb +1 -0
- data/lib/pubid/nist/builder.rb +29 -9
- data/lib/pubid/nist/caster.rb +7 -45
- data/lib/pubid/nist/circular_supplement_builder.rb +7 -5
- data/lib/pubid/nist/components/stage.rb +2 -2
- data/lib/pubid/nist/components/supplement.rb +5 -2
- data/lib/pubid/nist/configuration.rb +6 -2
- data/lib/pubid/nist/identifier.rb +1 -3
- data/lib/pubid/nist/identifiers/base.rb +133 -39
- data/lib/pubid/nist/identifiers/circular.rb +10 -3
- data/lib/pubid/nist/identifiers/circular_supplement.rb +14 -5
- data/lib/pubid/nist/identifiers/commercial_standard.rb +1 -1
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +1 -1
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +8 -2
- data/lib/pubid/nist/identifiers/crpl_report.rb +8 -2
- data/lib/pubid/nist/identifiers/dated_document.rb +1 -1
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +1 -1
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +1 -1
- data/lib/pubid/nist/identifiers/handbook.rb +10 -3
- data/lib/pubid/nist/identifiers/internal_report.rb +13 -6
- data/lib/pubid/nist/identifiers/letter_circular.rb +1 -1
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +15 -7
- data/lib/pubid/nist/identifiers/monograph.rb +15 -8
- data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
- data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
- data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
- data/lib/pubid/nist/identifiers/report.rb +15 -7
- data/lib/pubid/nist/identifiers/special_publication.rb +10 -1
- data/lib/pubid/nist/identifiers/technical_note.rb +1 -1
- data/lib/pubid/nist/identifiers.rb +0 -1
- data/lib/pubid/nist/parser.rb +27 -4
- data/lib/pubid/nist/preprocessor.rb +15 -0
- data/lib/pubid/nist/router.rb +2 -2
- data/lib/pubid/nist/series/ir.rb +0 -3
- data/lib/pubid/nist/supplement_identifier.rb +24 -9
- data/lib/pubid/nist.rb +19 -13
- data/lib/pubid/oasis/builder.rb +79 -0
- data/lib/pubid/oasis/identifier.rb +160 -0
- data/lib/pubid/oasis/identifiers/standard.rb +29 -0
- data/lib/pubid/oasis/identifiers.rb +9 -0
- data/lib/pubid/oasis/parser.rb +34 -0
- data/lib/pubid/oasis/renderer.rb +29 -0
- data/lib/pubid/oasis/urn_generator.rb +25 -0
- data/lib/pubid/oasis/urn_parser.rb +22 -0
- data/lib/pubid/oasis.rb +80 -0
- data/lib/pubid/ogc/builder.rb +33 -0
- data/lib/pubid/ogc/identifier.rb +81 -0
- data/lib/pubid/ogc/identifiers/document.rb +26 -0
- data/lib/pubid/ogc/identifiers.rb +10 -0
- data/lib/pubid/ogc/parser.rb +40 -0
- data/lib/pubid/ogc/renderer.rb +33 -0
- data/lib/pubid/ogc/urn_generator.rb +14 -0
- data/lib/pubid/ogc/urn_parser.rb +22 -0
- data/lib/pubid/ogc.rb +72 -0
- data/lib/pubid/oiml/builder.rb +36 -8
- data/lib/pubid/oiml/identifier.rb +9 -1
- data/lib/pubid/oiml/identifiers/basic_publication.rb +2 -0
- data/lib/pubid/oiml/identifiers/bulletin.rb +36 -0
- data/lib/pubid/oiml/identifiers/code_number.rb +90 -0
- data/lib/pubid/oiml/identifiers/document.rb +2 -0
- data/lib/pubid/oiml/identifiers/expert_report.rb +2 -0
- data/lib/pubid/oiml/identifiers/guide.rb +2 -0
- data/lib/pubid/oiml/identifiers/recommendation.rb +2 -0
- data/lib/pubid/oiml/identifiers/seminar_report.rb +2 -0
- data/lib/pubid/oiml/identifiers/vocabulary.rb +2 -0
- data/lib/pubid/oiml/identifiers.rb +1 -0
- data/lib/pubid/oiml/parser.rb +12 -13
- data/lib/pubid/oiml/renderer.rb +13 -13
- data/lib/pubid/oiml/single_identifier.rb +41 -37
- data/lib/pubid/oiml/supplement_identifier.rb +36 -9
- data/lib/pubid/oiml/urn_parser.rb +23 -6
- data/lib/pubid/oiml.rb +10 -0
- data/lib/pubid/omg/builder.rb +20 -0
- data/lib/pubid/omg/identifier.rb +61 -0
- data/lib/pubid/omg/identifiers/specification.rb +32 -0
- data/lib/pubid/omg/identifiers.rb +9 -0
- data/lib/pubid/omg/parser.rb +93 -0
- data/lib/pubid/omg/renderer.rb +31 -0
- data/lib/pubid/omg.rb +52 -0
- data/lib/pubid/parser/grammar.rb +74 -0
- data/lib/pubid/parser.rb +2 -0
- data/lib/pubid/parsers/mr_string.rb +120 -7
- data/lib/pubid/plateau/builder.rb +8 -4
- data/lib/pubid/plateau/identifier.rb +1 -3
- data/lib/pubid/plateau/identifiers/base.rb +1 -6
- data/lib/pubid/plateau/identifiers/handbook.rb +1 -1
- data/lib/pubid/plateau/identifiers/technical_report.rb +1 -1
- data/lib/pubid/plateau/identifiers.rb +0 -1
- data/lib/pubid/plateau/parser.rb +16 -6
- data/lib/pubid/plateau/renderer.rb +1 -1
- data/lib/pubid/plateau/supplement_identifier.rb +11 -11
- data/lib/pubid/plateau.rb +14 -4
- data/lib/pubid/prefixes_support.rb +1 -0
- data/lib/pubid/renderers/annotator.rb +233 -0
- data/lib/pubid/renderers/base.rb +13 -0
- data/lib/pubid/renderers/directives_renderer.rb +3 -3
- data/lib/pubid/renderers/human_readable.rb +6 -4
- data/lib/pubid/renderers/mr_string.rb +54 -6
- data/lib/pubid/renderers/supplement_renderer.rb +1 -1
- data/lib/pubid/renderers.rb +1 -0
- data/lib/pubid/rendering/numbering.rb +25 -7
- data/lib/pubid/rendering/supplement.rb +4 -4
- data/lib/pubid/rendering.rb +1 -0
- data/lib/pubid/sae/builder.rb +1 -1
- data/lib/pubid/sae/identifier.rb +1 -3
- data/lib/pubid/sae/identifiers/base.rb +19 -9
- data/lib/pubid/sae/identifiers.rb +0 -1
- data/lib/pubid/sae/parser.rb +1 -1
- data/lib/pubid/sae.rb +4 -3
- data/lib/pubid/schema/declaration.rb +33 -0
- data/lib/pubid/schema/error.rb +14 -0
- data/lib/pubid/schema/identifier_type.rb +23 -0
- data/lib/pubid/schema/loader.rb +117 -0
- data/lib/pubid/schema/typed_stage.rb +24 -0
- data/lib/pubid/schema.rb +25 -0
- data/lib/pubid/tgpp/builder.rb +41 -0
- data/lib/pubid/tgpp/identifier.rb +107 -0
- data/lib/pubid/tgpp/identifiers/technical_report.rb +32 -0
- data/lib/pubid/tgpp/identifiers/technical_specification.rb +33 -0
- data/lib/pubid/tgpp/identifiers.rb +11 -0
- data/lib/pubid/tgpp/parser.rb +78 -0
- data/lib/pubid/tgpp/renderer.rb +52 -0
- data/lib/pubid/tgpp/urn_generator.rb +39 -0
- data/lib/pubid/tgpp/urn_parser.rb +30 -0
- data/lib/pubid/tgpp.rb +84 -0
- data/lib/pubid/type_resolver.rb +74 -0
- data/lib/pubid/un/builder.rb +42 -0
- data/lib/pubid/un/identifier.rb +40 -0
- data/lib/pubid/un/identifiers/document.rb +24 -0
- data/lib/pubid/un/identifiers.rb +9 -0
- data/lib/pubid/un/parser.rb +25 -0
- data/lib/pubid/un/renderer.rb +11 -0
- data/lib/pubid/un.rb +47 -0
- data/lib/pubid/urn_parser/errors.rb +8 -1
- data/lib/pubid/urn_parser.rb +1 -0
- data/lib/pubid/utils.rb +1 -0
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid/w3c/builder.rb +55 -0
- data/lib/pubid/w3c/identifier.rb +130 -0
- data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +31 -0
- data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +31 -0
- data/lib/pubid/w3c/identifiers/draft_note.rb +31 -0
- data/lib/pubid/w3c/identifiers/note.rb +30 -0
- data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +31 -0
- data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +31 -0
- data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +31 -0
- data/lib/pubid/w3c/identifiers/recommendation.rb +31 -0
- data/lib/pubid/w3c/identifiers/standard.rb +12 -0
- data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +31 -0
- data/lib/pubid/w3c/identifiers/working_draft.rb +30 -0
- data/lib/pubid/w3c/identifiers.rb +25 -0
- data/lib/pubid/w3c/parser.rb +43 -0
- data/lib/pubid/w3c/renderer.rb +35 -0
- data/lib/pubid/w3c/urn_generator.rb +18 -0
- data/lib/pubid/w3c/urn_parser.rb +36 -0
- data/lib/pubid/w3c.rb +68 -0
- data/lib/pubid/xsf/builder.rb +17 -0
- data/lib/pubid/xsf/identifier.rb +66 -0
- data/lib/pubid/xsf/identifiers/xep.rb +31 -0
- data/lib/pubid/xsf/identifiers.rb +9 -0
- data/lib/pubid/xsf/parser.rb +38 -0
- data/lib/pubid/xsf/renderer.rb +23 -0
- data/lib/pubid/xsf/urn_generator.rb +13 -0
- data/lib/pubid/xsf/urn_parser.rb +18 -0
- data/lib/pubid/xsf.rb +82 -0
- data/lib/pubid.rb +424 -22
- data/lib/tasks/conformance.rake +34 -0
- data/lib/tasks/docs.rake +3 -3
- data/lib/tasks/schema.rake +88 -0
- data/schema/core/joint_prefixes.yaml +24 -0
- data/schema/iec.yaml +1017 -0
- data/schema/iso.yaml +1586 -0
- data/schema/schema.schema.yaml +96 -0
- metadata +241 -19
- data/archived-gems/pubid-ccsds/update_codes.yaml +0 -1
- data/archived-gems/pubid-iec/stages.yaml +0 -129
- data/archived-gems/pubid-iec/update_codes.yaml +0 -67
- data/archived-gems/pubid-ieee/update_codes.yaml +0 -104
- data/archived-gems/pubid-iso/stages.yaml +0 -106
- data/archived-gems/pubid-iso/update_codes.yaml +0 -4
- data/archived-gems/pubid-itu/i18n.yaml +0 -13
- data/archived-gems/pubid-itu/series.yaml +0 -42
- data/archived-gems/pubid-nist/publishers.yaml +0 -6
- data/archived-gems/pubid-nist/update_codes.yaml +0 -93
- data/archived-gems/pubid-plateau/update_codes.yaml +0 -6
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +0 -48
- data/lib/pubid/cie/components/code.rb +0 -80
- data/lib/pubid/iala/identifiers/base.rb +0 -14
- data/lib/pubid/iec/components/code.rb +0 -36
- /data/{archived-gems/pubid-nist → data/nist}/stages.yaml +0 -0
|
@@ -7,11 +7,11 @@ module Pubid
|
|
|
7
7
|
# Single Responsibility: Wraps another identifier with sheet number and year
|
|
8
8
|
# Example: "IEC 60695-2-1/1:1994" = Sheet 1 of IEC 60695-2-1 from 1994
|
|
9
9
|
class SheetIdentifier < Identifier
|
|
10
|
-
attribute :
|
|
10
|
+
attribute :base, Identifier, polymorphic: true
|
|
11
11
|
attribute :sheet_number, :string
|
|
12
12
|
attribute :year, :string, default: -> {}
|
|
13
13
|
|
|
14
|
-
# Common fields are delegated to
|
|
14
|
+
# Common fields are delegated to base, so serialize the
|
|
15
15
|
# wrapped identifier under "base" plus the sheet number/year; suppress
|
|
16
16
|
# the delegated common maps (they live inside "base").
|
|
17
17
|
include Pubid::Iec::DelegatedFieldSuppression
|
|
@@ -23,7 +23,7 @@ module Pubid
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def base_to_kv(model, doc)
|
|
26
|
-
base = model.
|
|
26
|
+
base = model.base
|
|
27
27
|
return unless base
|
|
28
28
|
|
|
29
29
|
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("base",
|
|
@@ -31,36 +31,36 @@ module Pubid
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def base_from_kv(model, value)
|
|
34
|
-
model.
|
|
34
|
+
model.base = ::Pubid::Iec::Identifier.from_hash(value) if value
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
# Delegate common attributes to
|
|
37
|
+
# Delegate common attributes to base
|
|
38
38
|
def publisher
|
|
39
|
-
|
|
39
|
+
base&.publisher
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def copublishers
|
|
43
|
-
|
|
43
|
+
base&.copublishers
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def code
|
|
47
|
-
|
|
47
|
+
base&.code
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def number
|
|
51
|
-
|
|
51
|
+
base&.number
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def date
|
|
55
|
-
|
|
55
|
+
base&.date
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
def stage
|
|
59
|
-
|
|
59
|
+
base&.stage
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def typed_stage
|
|
63
|
-
|
|
63
|
+
base&.typed_stage
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
end
|
|
@@ -24,16 +24,6 @@ module Pubid
|
|
|
24
24
|
short: "Trend Report" }
|
|
25
25
|
end
|
|
26
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
27
|
end
|
|
38
28
|
end
|
|
39
29
|
end
|
|
@@ -23,16 +23,6 @@ module Pubid
|
|
|
23
23
|
web: :systems_reference_document, title: "Systems Reference Document", short: "SRD" }
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
# Override publisher_portion to add SRD
|
|
27
|
-
def publisher_portion
|
|
28
|
-
result = publisher.to_s
|
|
29
|
-
|
|
30
|
-
if typed_stage && typed_stage.abbreviation == "SRD"
|
|
31
|
-
result += " SRD"
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
result
|
|
35
|
-
end
|
|
36
26
|
end
|
|
37
27
|
end
|
|
38
28
|
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Iec
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Technical Group identifier — identifies a committee rather than a
|
|
7
|
+
# publication. Covers:
|
|
8
|
+
#
|
|
9
|
+
# IEC TC 1 (Technical Committee)
|
|
10
|
+
# IEC PC 118 (Project Committee)
|
|
11
|
+
# ISO/IEC JTC 1 (Joint Technical Committee)
|
|
12
|
+
# ISO/IEC JPC 2 (Joint Project Committee)
|
|
13
|
+
# ISO/IEC JTC 1/SC 7 (Joint TC with Subcommittee)
|
|
14
|
+
# IEC SC 100A (Subcommittee with letter suffix)
|
|
15
|
+
# CIS/A (CISPR Subcommittee, bare form)
|
|
16
|
+
# CISPR (CISPR Committee, bare form)
|
|
17
|
+
class TechnicalGroup < Base
|
|
18
|
+
attribute :technical_committee, :string
|
|
19
|
+
attribute :subcommittee, :string
|
|
20
|
+
|
|
21
|
+
TYPED_STAGES = [].freeze
|
|
22
|
+
|
|
23
|
+
def self.type
|
|
24
|
+
{ key: :tg,
|
|
25
|
+
web: :technical_group, title: "Technical Group", short: "TG" }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -53,7 +53,7 @@ module Pubid
|
|
|
53
53
|
code: :dtr,
|
|
54
54
|
stage_code: :draft,
|
|
55
55
|
type_code: :tr,
|
|
56
|
-
abbr: [
|
|
56
|
+
abbr: %w[DTR ADTR CDTR DTRM NDTR DTSM DTRM],
|
|
57
57
|
name: "Draft Technical Report",
|
|
58
58
|
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
|
59
59
|
),
|
|
@@ -108,23 +108,6 @@ module Pubid
|
|
|
108
108
|
web: :technical_report, title: "Technical Report", short: "TR" }
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
-
# Override publisher_portion to handle TR formatting
|
|
112
|
-
# If copublishers exist, use parent implementation
|
|
113
|
-
def publisher_portion
|
|
114
|
-
# If copublishers, delegate to parent (SingleIdentifier) which handles them
|
|
115
|
-
return super if copublishers&.any?
|
|
116
|
-
|
|
117
|
-
# No copublishers: simple TR formatting
|
|
118
|
-
result = publisher.to_s
|
|
119
|
-
|
|
120
|
-
if typed_stage
|
|
121
|
-
abbr = typed_stage.abbreviation
|
|
122
|
-
# For TR: always use space (IEC convention for ALL publishers)
|
|
123
|
-
result += " #{abbr}" unless abbr.empty?
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
result
|
|
127
|
-
end
|
|
128
111
|
end
|
|
129
112
|
end
|
|
130
113
|
end
|
|
@@ -53,7 +53,7 @@ module Pubid
|
|
|
53
53
|
code: :dts,
|
|
54
54
|
stage_code: :draft,
|
|
55
55
|
type_code: :ts,
|
|
56
|
-
abbr: [
|
|
56
|
+
abbr: %w[DTS ADTS CDTS NDTS],
|
|
57
57
|
name: "Draft Technical Specification",
|
|
58
58
|
harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
|
|
59
59
|
),
|
|
@@ -108,23 +108,6 @@ module Pubid
|
|
|
108
108
|
web: :technical_specification, title: "Technical Specification", short: "TS" }
|
|
109
109
|
end
|
|
110
110
|
|
|
111
|
-
# Override publisher_portion to handle TS formatting
|
|
112
|
-
# If copublishers exist, use parent implementation
|
|
113
|
-
def publisher_portion
|
|
114
|
-
# If copublishers, delegate to parent (SingleIdentifier) which handles them
|
|
115
|
-
return super if copublishers&.any?
|
|
116
|
-
|
|
117
|
-
# No copublishers: simple TS formatting
|
|
118
|
-
result = publisher.to_s
|
|
119
|
-
|
|
120
|
-
if typed_stage
|
|
121
|
-
abbr = typed_stage.abbreviation
|
|
122
|
-
# TS uses space for all stages
|
|
123
|
-
result += " #{abbr}" unless abbr.empty?
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
result
|
|
127
|
-
end
|
|
128
111
|
end
|
|
129
112
|
end
|
|
130
113
|
end
|
|
@@ -22,16 +22,6 @@ module Pubid
|
|
|
22
22
|
{ key: :tec, title: "Technology Report", short: "Technology Report" }
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
# Override publisher_portion to add Technology Report
|
|
26
|
-
def publisher_portion
|
|
27
|
-
result = publisher.to_s
|
|
28
|
-
|
|
29
|
-
if typed_stage && typed_stage.abbreviation == "Technology Report"
|
|
30
|
-
result += " Technology Report"
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
result
|
|
34
|
-
end
|
|
35
25
|
end
|
|
36
26
|
end
|
|
37
27
|
end
|
|
@@ -28,17 +28,6 @@ module Pubid
|
|
|
28
28
|
web: :test_report_form, title: "Test Report Form", short: "TRF" }
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
# Override publisher_portion to add TRF with space
|
|
32
|
-
def publisher_portion
|
|
33
|
-
result = publisher.to_s
|
|
34
|
-
|
|
35
|
-
if typed_stage && typed_stage.abbreviation == "TRF"
|
|
36
|
-
result += " TRF"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
result
|
|
40
|
-
end
|
|
41
|
-
|
|
42
31
|
# TRF uses special rendering via the Renderer
|
|
43
32
|
end
|
|
44
33
|
end
|
|
@@ -7,12 +7,12 @@ module Pubid
|
|
|
7
7
|
# Single Responsibility: Wraps another identifier with VAP type suffix
|
|
8
8
|
# Examples: "IEC 61666:2010+AMD1:2021 CSV"
|
|
9
9
|
class VapIdentifier < Identifier
|
|
10
|
-
attribute :
|
|
10
|
+
attribute :base, Identifier, polymorphic: true
|
|
11
11
|
# One or more VAP codes (e.g. ["CSV"] or ["EXV", "CMV"]). Plain strings.
|
|
12
12
|
attribute :vap, :string, collection: true
|
|
13
13
|
attribute :edition, ::Pubid::Components::Edition, default: -> {}
|
|
14
14
|
|
|
15
|
-
# number/date/publisher/stage are delegated to
|
|
15
|
+
# number/date/publisher/stage are delegated to base, so
|
|
16
16
|
# serialize the wrapped identifier under "base" plus the vap array; the
|
|
17
17
|
# common fields live inside "base", not at the top level.
|
|
18
18
|
include Pubid::Iec::DelegatedFieldSuppression
|
|
@@ -23,7 +23,7 @@ module Pubid
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def base_to_kv(model, doc)
|
|
26
|
-
base = model.
|
|
26
|
+
base = model.base
|
|
27
27
|
return unless base
|
|
28
28
|
|
|
29
29
|
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("base",
|
|
@@ -31,7 +31,7 @@ module Pubid
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def base_from_kv(model, value)
|
|
34
|
-
model.
|
|
34
|
+
model.base = ::Pubid::Iec::Identifier.from_hash(value) if value
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
# VAP types mapping
|
|
@@ -42,33 +42,33 @@ module Pubid
|
|
|
42
42
|
"SER" => "Serial version",
|
|
43
43
|
}.freeze
|
|
44
44
|
|
|
45
|
-
# Delegate common attributes to
|
|
45
|
+
# Delegate common attributes to base
|
|
46
46
|
def publisher
|
|
47
|
-
|
|
47
|
+
base&.publisher
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def copublishers
|
|
51
|
-
|
|
51
|
+
base&.copublishers
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def code
|
|
55
|
-
|
|
55
|
+
base&.code
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
def number
|
|
59
|
-
|
|
59
|
+
base&.number
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def date
|
|
63
|
-
|
|
63
|
+
base&.date
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
def stage
|
|
67
|
-
|
|
67
|
+
base&.stage
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
def typed_stage
|
|
71
|
-
|
|
71
|
+
base&.typed_stage
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
end
|
|
@@ -23,16 +23,6 @@ module Pubid
|
|
|
23
23
|
web: :white_paper, title: "White Paper", short: "White Paper" }
|
|
24
24
|
end
|
|
25
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
26
|
end
|
|
37
27
|
end
|
|
38
28
|
end
|
|
@@ -28,19 +28,33 @@ module Pubid
|
|
|
28
28
|
web: :working_document, title: "Working Document", short: "WD" }
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
#
|
|
31
|
+
# A working document prints its committee, number, language and stage —
|
|
32
|
+
# `1/2457(F)/FDIS` — and none of those is the `number` the shared token
|
|
33
|
+
# table looks for, so it had no annotatable token. `wd_stage` is the
|
|
34
|
+
# printed stage token ("FDIS"); the derived `#stage` reader covers only
|
|
35
|
+
# the PWI/PNW work-programme form and is nil here.
|
|
36
|
+
def annotation_tokens
|
|
37
|
+
super + [
|
|
38
|
+
[:technical_committee, "docnumber"],
|
|
39
|
+
[:wd_number, "docnumber"],
|
|
40
|
+
[:wd_language, "language"],
|
|
41
|
+
[:wd_stage, "stage"],
|
|
42
|
+
[:wp_stage, "stage"],
|
|
43
|
+
[:wp_type, "doctype"],
|
|
44
|
+
]
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Return stage object for the PWI/PNW work-programme stage.
|
|
48
|
+
#
|
|
49
|
+
# This used to build a bare Stage from a hand-written abbreviation map,
|
|
50
|
+
# so the stage carried no harmonized code and "pnw" existed as a stage
|
|
51
|
+
# code nowhere else in the registry. It now resolves through the shared
|
|
52
|
+
# registry, so PWI carries 00.* and PNW carries 10.20 — which is what
|
|
53
|
+
# the URN generator reads.
|
|
32
54
|
def stage
|
|
33
55
|
return nil unless wp_stage
|
|
34
56
|
|
|
35
|
-
|
|
36
|
-
stage_map = {
|
|
37
|
-
"PWI" => "pwi",
|
|
38
|
-
"PNW" => "pnw",
|
|
39
|
-
}
|
|
40
|
-
stage_code = stage_map[wp_stage]
|
|
41
|
-
return nil unless stage_code
|
|
42
|
-
|
|
43
|
-
@stage ||= ::Pubid::Components::Stage.new(stage_code: stage_code)
|
|
57
|
+
@stage ||= Pubid::Iec.locate_stage(wp_stage)&.to_stage
|
|
44
58
|
end
|
|
45
59
|
end
|
|
46
60
|
end
|
|
@@ -20,6 +20,7 @@ module Pubid
|
|
|
20
20
|
autoload :SystemsReferenceDocument, "#{__dir__}/identifiers/systems_reference_document"
|
|
21
21
|
autoload :TechnicalReport, "#{__dir__}/identifiers/technical_report"
|
|
22
22
|
autoload :TechnicalSpecification, "#{__dir__}/identifiers/technical_specification"
|
|
23
|
+
autoload :TechnicalGroup, "#{__dir__}/identifiers/technical_group"
|
|
23
24
|
autoload :TechnologyReport, "#{__dir__}/identifiers/technology_report"
|
|
24
25
|
autoload :TestReportForm, "#{__dir__}/identifiers/test_report_form"
|
|
25
26
|
autoload :VapIdentifier, "#{__dir__}/identifiers/vap_identifier"
|
data/lib/pubid/iec/parser.rb
CHANGED
|
@@ -3,7 +3,7 @@ require "parslet"
|
|
|
3
3
|
|
|
4
4
|
module Pubid
|
|
5
5
|
module Iec
|
|
6
|
-
class Parser <
|
|
6
|
+
class Parser < ::Pubid::Parser::Grammar
|
|
7
7
|
include ::Pubid::Parser::CommonParseRules
|
|
8
8
|
include ::Pubid::Parser::CommonParseMethods
|
|
9
9
|
|
|
@@ -17,8 +17,8 @@ module Pubid
|
|
|
17
17
|
root :identifier
|
|
18
18
|
|
|
19
19
|
rule(:identifier) do
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
working_programme |
|
|
21
|
+
technical_group |
|
|
22
22
|
working_document |
|
|
23
23
|
sheet_supplement_identifier |
|
|
24
24
|
sheet_identifier |
|
|
@@ -29,6 +29,42 @@ module Pubid
|
|
|
29
29
|
identifier_copublishers
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
+
# Technical Group identifier — names a committee rather than a document.
|
|
33
|
+
# Examples: "IEC TC 1", "ISO/IEC JTC 1", "ISO/IEC JTC 1/SC 7",
|
|
34
|
+
# "IEC SC 100A", "CISPR", "CIS/A".
|
|
35
|
+
rule(:technical_group) do
|
|
36
|
+
technical_group_with_publisher | technical_group_bare
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
rule(:technical_group_with_publisher) do
|
|
40
|
+
prefix_sole_publisher >> copublishers.maybe >> space >>
|
|
41
|
+
tc_body.as(:technical_committee) >>
|
|
42
|
+
(str("/") >> space? >> sc_body).as(:subcommittee).maybe
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
rule(:technical_group_bare) do
|
|
46
|
+
# CISPR / CIS-letter forms and bare TYPE NUMBER forms both default
|
|
47
|
+
# publisher to "IEC" via the Base class default.
|
|
48
|
+
tc_body.as(:technical_committee) >>
|
|
49
|
+
(str("/") >> space? >> sc_body).as(:subcommittee).maybe
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Committee body forms accepted by the parser. Order matters: longer
|
|
53
|
+
# or more specific patterns first so they win the ordered choice.
|
|
54
|
+
rule(:tc_body) do
|
|
55
|
+
str("CISPR") |
|
|
56
|
+
(str("CIS") >> str("/") >> match("[A-Z]")) |
|
|
57
|
+
(tc_type >> space >> digits >> match("[A-Z]").maybe)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
rule(:sc_body) do
|
|
61
|
+
str("SC") >> space >> digits >> match("[A-Z]").maybe
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
rule(:tc_type) do
|
|
65
|
+
str("JTC") | str("JPC") | str("TC") | str("SC") | str("PC")
|
|
66
|
+
end
|
|
67
|
+
|
|
32
68
|
# Working Programme format: [PWI|PNW] [TR] number edition
|
|
33
69
|
# Examples: "PWI TR 100-36 ED1", "PWI 100-44 ED1", "PNW 65-915 ED1"
|
|
34
70
|
# TC-style names: "PWI TR SYCSMARTENERGY-1", "PWI SyCLVDC-1 ED1"
|
|
@@ -44,21 +80,6 @@ module Pubid
|
|
|
44
80
|
(space >> edition).maybe
|
|
45
81
|
end
|
|
46
82
|
|
|
47
|
-
# Working Programme with publisher prefix: IEC/PWI [TR] number edition
|
|
48
|
-
# Examples: "IEC/PWI 60038", "ISO/IEC/PWI TR 100-36 ED1"
|
|
49
|
-
rule(:working_programme_with_publisher) do
|
|
50
|
-
prefix_with_copublishers >> str("/") >>
|
|
51
|
-
(str("PWI") | str("PNW")).as(:wp_stage) >>
|
|
52
|
-
space >>
|
|
53
|
-
(
|
|
54
|
-
(str("TR") >> space) |
|
|
55
|
-
(str("TS") >> space) |
|
|
56
|
-
(str("SRD") >> space)
|
|
57
|
-
).maybe.as(:wp_type) >>
|
|
58
|
-
wp_number >>
|
|
59
|
-
(space >> edition).maybe
|
|
60
|
-
end
|
|
61
|
-
|
|
62
83
|
# Working programme numbers can be digits or TC names
|
|
63
84
|
rule(:wp_number) do
|
|
64
85
|
# TC-style: SYCSMARTENERGY-1, SyCLVDC-125
|
|
@@ -158,12 +179,16 @@ module Pubid
|
|
|
158
179
|
end
|
|
159
180
|
|
|
160
181
|
rule(:date) do
|
|
161
|
-
# :2005-02 or
|
|
182
|
+
# :2005-02 or :-- (undated reference — ISO/IEC undated-reference form,
|
|
183
|
+
# e.g. IEC 60050:--, also accepted as the em-dash variant IEC 60050:—)
|
|
162
184
|
(str(":") | dash) >>
|
|
163
|
-
(
|
|
164
|
-
(
|
|
165
|
-
|
|
166
|
-
|
|
185
|
+
(
|
|
186
|
+
(str("--") | str("—")).as(:undated_marker) |
|
|
187
|
+
(year_digits >>
|
|
188
|
+
(dash >> month_digits).maybe >>
|
|
189
|
+
(dash >> day_digits).maybe
|
|
190
|
+
).as(:date)
|
|
191
|
+
)
|
|
167
192
|
end
|
|
168
193
|
|
|
169
194
|
rule(:part_and_subpart) do
|
|
@@ -251,14 +276,14 @@ module Pubid
|
|
|
251
276
|
# IEC 60695-2-1/1:1994 (sheet 1 from year 1994)
|
|
252
277
|
# IEC 60695-2-1/1 (sheet 1 without year)
|
|
253
278
|
rule(:sheet_identifier) do
|
|
254
|
-
identifier_copublishers_no_third.as(:
|
|
279
|
+
identifier_copublishers_no_third.as(:base) >>
|
|
255
280
|
(sheet_notation | sheet_notation_no_year)
|
|
256
281
|
end
|
|
257
282
|
|
|
258
283
|
# Sheet identifier followed by supplement: base/sheet/supplement
|
|
259
284
|
# IEC 60695-2-1/1:1994/COR1:1995
|
|
260
285
|
rule(:sheet_supplement_identifier) do
|
|
261
|
-
identifier_copublishers_no_third.as(:
|
|
286
|
+
identifier_copublishers_no_third.as(:base) >>
|
|
262
287
|
sheet_notation >>
|
|
263
288
|
str("/") >> supplement_type_with_stage >>
|
|
264
289
|
space? >> second_part >> third_part
|
|
@@ -353,7 +378,7 @@ module Pubid
|
|
|
353
378
|
# ISO/IEC 17025:2017 handles copublisher in copublishers rule
|
|
354
379
|
# We handle this in identifier_copublishers already
|
|
355
380
|
rule(:joint_identifier) do
|
|
356
|
-
identifier_copublishers_no_third.as(:
|
|
381
|
+
identifier_copublishers_no_third.as(:base) >>
|
|
357
382
|
space? >> str("|") >> space? >>
|
|
358
383
|
scope { iso_identifier }.as(:joint_identifier)
|
|
359
384
|
end
|
|
@@ -381,7 +406,7 @@ module Pubid
|
|
|
381
406
|
|
|
382
407
|
# IEC 60038:2009/Amd 1:2011
|
|
383
408
|
rule(:supplement_identifier_no_third) do
|
|
384
|
-
identifier_copublishers_no_third.as(:
|
|
409
|
+
identifier_copublishers_no_third.as(:base) >>
|
|
385
410
|
str("/") >> supplement_type_with_stage >>
|
|
386
411
|
space? >> second_part
|
|
387
412
|
end
|
|
@@ -392,7 +417,7 @@ module Pubid
|
|
|
392
417
|
|
|
393
418
|
# IEC 60038:2009/Amd 1:2011/Cor 1:2012
|
|
394
419
|
rule(:supplement_supplement_identifier) do
|
|
395
|
-
supplement_identifier_no_third.as(:
|
|
420
|
+
supplement_identifier_no_third.as(:base) >>
|
|
396
421
|
str("/") >> supplement_type_with_stage >>
|
|
397
422
|
space? >> second_part >> third_part
|
|
398
423
|
end
|
data/lib/pubid/iec/renderer.rb
CHANGED
|
@@ -37,6 +37,8 @@ module Pubid
|
|
|
37
37
|
render_fragment(id, opts, context)
|
|
38
38
|
when Identifiers::WorkingDocument
|
|
39
39
|
render_working_document(id, context)
|
|
40
|
+
when Identifiers::TechnicalGroup
|
|
41
|
+
render_technical_group(id, context)
|
|
40
42
|
when Identifiers::TestReportForm
|
|
41
43
|
render_test_report_form(id, context)
|
|
42
44
|
when SupplementIdentifier
|
|
@@ -75,11 +77,11 @@ module Pubid
|
|
|
75
77
|
end
|
|
76
78
|
|
|
77
79
|
def render_supplement(id, opts, context)
|
|
78
|
-
id.
|
|
80
|
+
id.ensure_base
|
|
79
81
|
|
|
80
82
|
if id.synthetic_base?
|
|
81
83
|
render_supplement_standalone(id, context)
|
|
82
|
-
elsif id.
|
|
84
|
+
elsif id.base
|
|
83
85
|
render_supplement_attached(id, opts, context)
|
|
84
86
|
else
|
|
85
87
|
render_single(id, opts, context)
|
|
@@ -87,22 +89,27 @@ module Pubid
|
|
|
87
89
|
end
|
|
88
90
|
|
|
89
91
|
def render_supplement_standalone(id, context)
|
|
92
|
+
# This is a second, independent publisher/stage join that
|
|
93
|
+
# SingleIdentifier#publisher_portion never reaches. It follows the same
|
|
94
|
+
# house style: the slash separates copublishers, and a SPACE separates
|
|
95
|
+
# the publisher from the stage abbreviation. See issue #360 item 2.
|
|
90
96
|
parts = []
|
|
91
97
|
|
|
92
98
|
if id.publisher
|
|
93
|
-
|
|
99
|
+
publishers = [id.publisher.render(context:)]
|
|
94
100
|
if id.copublishers&.any?
|
|
95
|
-
|
|
101
|
+
publishers += id.copublishers.map { |c| c.render(context:) }
|
|
96
102
|
end
|
|
103
|
+
parts << publishers.join("/")
|
|
97
104
|
end
|
|
98
105
|
|
|
99
106
|
abbr = id.typed_stage.abbr.first
|
|
100
|
-
number_str = id.
|
|
107
|
+
number_str = id.base.number.to_s
|
|
101
108
|
number_str += "-#{id.number}" if id.number
|
|
102
109
|
number_str += "-#{id.subpart}" if id.subpart
|
|
103
110
|
parts << "#{abbr} #{number_str}"
|
|
104
111
|
|
|
105
|
-
result = parts.join("
|
|
112
|
+
result = parts.join(" ")
|
|
106
113
|
result += ":#{id.date.render(context:)}" if id.date
|
|
107
114
|
result += " #{id.edition.render(context:)}" if id.edition&.number
|
|
108
115
|
result
|
|
@@ -110,7 +117,7 @@ module Pubid
|
|
|
110
117
|
|
|
111
118
|
def render_supplement_attached(id, opts, context)
|
|
112
119
|
parts = []
|
|
113
|
-
parts << id.
|
|
120
|
+
parts << id.base.to_s(**opts)
|
|
114
121
|
|
|
115
122
|
abbr = id.typed_stage.abbr.first.upcase
|
|
116
123
|
supp_part = "/#{abbr}#{id.number}"
|
|
@@ -155,7 +162,7 @@ module Pubid
|
|
|
155
162
|
def render_vap(id, opts, context)
|
|
156
163
|
parts = []
|
|
157
164
|
|
|
158
|
-
parts << id.
|
|
165
|
+
parts << id.base.to_s(**opts.merge(with_edition: false))
|
|
159
166
|
parts << " #{id.vap.join('-')}" if id.vap&.any?
|
|
160
167
|
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
161
168
|
|
|
@@ -164,7 +171,7 @@ module Pubid
|
|
|
164
171
|
|
|
165
172
|
def render_sheet(id, opts, context)
|
|
166
173
|
parts = []
|
|
167
|
-
parts << id.
|
|
174
|
+
parts << id.base.to_s(**opts)
|
|
168
175
|
parts << "/#{id.sheet_number}"
|
|
169
176
|
parts << ":#{id.year}" if id.year
|
|
170
177
|
parts.join
|
|
@@ -172,9 +179,9 @@ module Pubid
|
|
|
172
179
|
|
|
173
180
|
def render_fragment(id, opts, context)
|
|
174
181
|
parts = []
|
|
175
|
-
parts << id.
|
|
182
|
+
parts << id.base.to_s(**opts)
|
|
176
183
|
|
|
177
|
-
parts << if id.
|
|
184
|
+
parts << if id.base.is_a?(Identifiers::Corrigendum)
|
|
178
185
|
"/FRAGC#{id.fragment_number}"
|
|
179
186
|
else
|
|
180
187
|
"/FRAG#{id.fragment_number}"
|
|
@@ -185,16 +192,22 @@ module Pubid
|
|
|
185
192
|
parts.join
|
|
186
193
|
end
|
|
187
194
|
|
|
195
|
+
def render_technical_group(id, _context)
|
|
196
|
+
parts = []
|
|
197
|
+
parts << id.publisher_portion
|
|
198
|
+
parts << " #{id.technical_committee}"
|
|
199
|
+
parts << id.subcommittee if id.subcommittee
|
|
200
|
+
parts.join
|
|
201
|
+
end
|
|
202
|
+
|
|
188
203
|
def render_working_document(id, context)
|
|
189
204
|
if id.wp_stage
|
|
205
|
+
# A work-programme registration renders bare, as it is written:
|
|
206
|
+
# "PNW 65-915 ED1", not "IEC/PNW 65-915 ED1". Its number is
|
|
207
|
+
# TC-scoped, not an IEC document number, and prefixing "IEC " would
|
|
208
|
+
# break idempotence — "IEC PNW 65-915 ED1" re-parses as an
|
|
209
|
+
# International Standard, so rendering would not be a fixed point.
|
|
190
210
|
parts = []
|
|
191
|
-
if id.publisher
|
|
192
|
-
parts << id.publisher.render(context:)
|
|
193
|
-
if id.copublishers&.any?
|
|
194
|
-
parts << "/#{id.copublishers.map { |c| c.render(context:) }.join('/')}"
|
|
195
|
-
end
|
|
196
|
-
parts << "/"
|
|
197
|
-
end
|
|
198
211
|
parts << id.wp_stage
|
|
199
212
|
if id.wp_type && !id.wp_type.strip.empty?
|
|
200
213
|
parts << " #{id.wp_type.strip}"
|