pubid 1.15.21 → 2.0.0.alpha.10
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 +2044 -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/bipm/update_codes.yaml +9 -0
- data/data/ccsds/update_codes.yaml +1 -0
- data/data/iec/update_codes.yaml +70 -0
- data/data/ieee/update_codes.yaml +210 -0
- data/data/iso/update_codes.yaml +21 -0
- data/data/nist/series.yaml +155 -0
- data/data/nist/update_codes.yaml +122 -0
- data/data/plateau/update_codes.yaml +6 -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 +60 -0
- data/lib/pubid/amca/builder.rb +176 -0
- data/lib/pubid/amca/identifier.rb +4 -0
- data/lib/pubid/amca/identifiers/base.rb +92 -0
- data/lib/pubid/amca/identifiers/interpretation.rb +38 -0
- data/lib/pubid/amca/identifiers/publication.rb +34 -0
- data/lib/pubid/amca/identifiers/standard.rb +20 -0
- data/lib/pubid/amca/identifiers.rb +11 -0
- data/lib/pubid/amca/parser.rb +153 -0
- data/lib/pubid/amca/renderer.rb +82 -0
- data/lib/pubid/amca/single_identifier.rb +10 -0
- data/lib/pubid/amca/urn_generator.rb +51 -0
- data/lib/pubid/amca/urn_parser.rb +28 -0
- data/lib/pubid/amca.rb +73 -0
- data/lib/pubid/ansi/builder.rb +54 -0
- data/lib/pubid/ansi/identifier.rb +31 -0
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +13 -0
- data/lib/pubid/ansi/identifiers/standard.rb +15 -0
- data/lib/pubid/ansi/identifiers.rb +11 -0
- data/lib/pubid/ansi/parser.rb +91 -0
- data/lib/pubid/ansi/renderer.rb +53 -0
- data/lib/pubid/ansi/single_identifier.rb +16 -0
- data/lib/pubid/ansi/urn_generator.rb +41 -0
- data/lib/pubid/ansi/urn_parser.rb +23 -0
- data/lib/pubid/ansi.rb +68 -0
- data/lib/pubid/api/builder.rb +58 -0
- data/lib/pubid/api/components/code.rb +9 -0
- data/lib/pubid/api/identifier.rb +42 -0
- data/lib/pubid/api/identifiers/base.rb +12 -0
- data/lib/pubid/api/identifiers/bulletin.rb +13 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +13 -0
- data/lib/pubid/api/identifiers/mpms.rb +26 -0
- data/lib/pubid/api/identifiers/publication.rb +13 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +13 -0
- data/lib/pubid/api/identifiers/specification.rb +13 -0
- data/lib/pubid/api/identifiers/standard.rb +13 -0
- data/lib/pubid/api/identifiers/technical_report.rb +13 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +11 -0
- data/lib/pubid/api/identifiers.rb +18 -0
- data/lib/pubid/api/parser.rb +140 -0
- data/lib/pubid/api/renderer.rb +98 -0
- data/lib/pubid/api/single_identifier.rb +24 -0
- data/lib/pubid/api/urn_generator.rb +23 -0
- data/lib/pubid/api/urn_parser.rb +35 -0
- data/lib/pubid/api.rb +68 -0
- data/lib/pubid/ashrae/builder.rb +519 -0
- data/lib/pubid/ashrae/identifier.rb +8 -0
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +42 -0
- data/lib/pubid/ashrae/identifiers/addendum.rb +44 -0
- data/lib/pubid/ashrae/identifiers/base.rb +119 -0
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +43 -0
- data/lib/pubid/ashrae/identifiers/errata.rb +39 -0
- data/lib/pubid/ashrae/identifiers/guideline.rb +41 -0
- data/lib/pubid/ashrae/identifiers/interpretation.rb +45 -0
- data/lib/pubid/ashrae/identifiers/standard.rb +41 -0
- data/lib/pubid/ashrae/identifiers.rb +15 -0
- data/lib/pubid/ashrae/parser.rb +748 -0
- data/lib/pubid/ashrae/renderer.rb +117 -0
- data/lib/pubid/ashrae/single_identifier.rb +10 -0
- data/lib/pubid/ashrae/supplement_identifier.rb +38 -0
- data/lib/pubid/ashrae/urn_generator.rb +57 -0
- data/lib/pubid/ashrae/urn_parser.rb +27 -0
- data/lib/pubid/ashrae.rb +77 -0
- data/lib/pubid/asme/builder.rb +162 -0
- data/lib/pubid/asme/components/code.rb +26 -0
- data/lib/pubid/asme/identifier.rb +24 -0
- data/lib/pubid/asme/identifiers/base.rb +10 -0
- data/lib/pubid/asme/identifiers/standard.rb +96 -0
- data/lib/pubid/asme/identifiers.rb +10 -0
- data/lib/pubid/asme/parser.rb +308 -0
- data/lib/pubid/asme/renderer.rb +66 -0
- data/lib/pubid/asme/single_identifier.rb +38 -0
- data/lib/pubid/asme/urn_generator.rb +133 -0
- data/lib/pubid/asme/urn_parser.rb +31 -0
- data/lib/pubid/asme.rb +67 -0
- data/lib/pubid/astm/builder.rb +166 -0
- data/lib/pubid/astm/components/code.rb +42 -0
- data/lib/pubid/astm/components.rb +9 -0
- data/lib/pubid/astm/identifier.rb +24 -0
- data/lib/pubid/astm/identifiers/adjunct.rb +28 -0
- data/lib/pubid/astm/identifiers/base.rb +13 -0
- data/lib/pubid/astm/identifiers/code_number.rb +81 -0
- data/lib/pubid/astm/identifiers/data_series.rb +13 -0
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +65 -0
- data/lib/pubid/astm/identifiers/manual.rb +23 -0
- data/lib/pubid/astm/identifiers/monograph.rb +13 -0
- data/lib/pubid/astm/identifiers/research_report.rb +21 -0
- data/lib/pubid/astm/identifiers/standard.rb +23 -0
- data/lib/pubid/astm/identifiers/technical_report.rb +12 -0
- data/lib/pubid/astm/identifiers/work_in_progress.rb +12 -0
- data/lib/pubid/astm/identifiers.rb +19 -0
- data/lib/pubid/astm/parser.rb +244 -0
- data/lib/pubid/astm/renderer.rb +172 -0
- data/lib/pubid/astm/single_identifier.rb +47 -0
- data/lib/pubid/astm/urn_generator.rb +101 -0
- data/lib/pubid/astm/urn_parser.rb +30 -0
- data/lib/pubid/astm.rb +55 -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 +91 -0
- data/lib/pubid/bsi/builder.rb +1495 -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 +6 -0
- data/lib/pubid/bsi/identifiers/addendum_document.rb +30 -0
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +67 -0
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +51 -0
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +65 -0
- data/lib/pubid/bsi/identifiers/amendment.rb +48 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +21 -0
- data/lib/pubid/bsi/identifiers/british_standard.rb +34 -0
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +40 -0
- data/lib/pubid/bsi/identifiers/committee_document.rb +44 -0
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +84 -0
- data/lib/pubid/bsi/identifiers/corrigendum.rb +44 -0
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +33 -0
- data/lib/pubid/bsi/identifiers/disc.rb +27 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +27 -0
- data/lib/pubid/bsi/identifiers/electronic_book.rb +16 -0
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +36 -0
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +35 -0
- data/lib/pubid/bsi/identifiers/flex.rb +30 -0
- data/lib/pubid/bsi/identifiers/handbook.rb +23 -0
- data/lib/pubid/bsi/identifiers/index.rb +30 -0
- data/lib/pubid/bsi/identifiers/method.rb +35 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +48 -0
- data/lib/pubid/bsi/identifiers/practice_guide.rb +21 -0
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +27 -0
- data/lib/pubid/bsi/identifiers/published_document.rb +27 -0
- data/lib/pubid/bsi/identifiers/section.rb +32 -0
- data/lib/pubid/bsi/identifiers/set.rb +40 -0
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +40 -0
- data/lib/pubid/bsi/identifiers/supplement_document.rb +29 -0
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +35 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +34 -0
- data/lib/pubid/bsi/identifiers/test_method.rb +35 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +37 -0
- data/lib/pubid/bsi/identifiers.rb +51 -0
- data/lib/pubid/bsi/model.rb +196 -0
- data/lib/pubid/bsi/parser.rb +673 -0
- data/lib/pubid/bsi/renderer.rb +1064 -0
- data/lib/pubid/bsi/single_identifier.rb +141 -0
- data/lib/pubid/bsi/urn_generator.rb +92 -0
- data/lib/pubid/bsi/urn_parser.rb +52 -0
- data/lib/pubid/bsi.rb +282 -0
- data/lib/pubid/builder/base.rb +187 -0
- data/lib/pubid/bundled_identifier.rb +134 -0
- 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 +82 -0
- data/lib/pubid/ccsds/builder.rb +57 -0
- data/lib/pubid/ccsds/identifier.rb +76 -0
- data/lib/pubid/ccsds/identifiers/base.rb +41 -0
- data/lib/pubid/ccsds/identifiers/base_BASE_88929.rb +70 -0
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +40 -0
- data/lib/pubid/ccsds/identifiers.rb +10 -0
- data/lib/pubid/ccsds/parser.rb +73 -0
- data/lib/pubid/ccsds/single_identifier.rb +77 -0
- data/lib/pubid/ccsds/supplement_identifier.rb +37 -0
- data/lib/pubid/ccsds/urn_generator.rb +115 -0
- data/lib/pubid/ccsds/urn_parser.rb +20 -0
- data/lib/pubid/ccsds.rb +64 -0
- data/lib/pubid/cen_cenelec/builder.rb +362 -0
- data/lib/pubid/cen_cenelec/identifier.rb +38 -0
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +45 -0
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +19 -0
- data/lib/pubid/cen_cenelec/identifiers/base.rb +34 -0
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +29 -0
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +28 -0
- data/lib/pubid/cen_cenelec/identifiers/cenelec_harmonization_document.rb +28 -0
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +40 -0
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +20 -0
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +99 -0
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +50 -0
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +29 -0
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +18 -0
- data/lib/pubid/cen_cenelec/identifiers/guide.rb +27 -0
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +28 -0
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +28 -0
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +36 -0
- data/lib/pubid/cen_cenelec/identifiers.rb +32 -0
- data/lib/pubid/cen_cenelec/parser.rb +144 -0
- data/lib/pubid/cen_cenelec/renderer.rb +261 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +49 -0
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +47 -0
- data/lib/pubid/cen_cenelec/urn_generator.rb +129 -0
- data/lib/pubid/cen_cenelec/urn_parser.rb +28 -0
- data/lib/pubid/cen_cenelec.rb +208 -0
- data/lib/pubid/cie/builder.rb +524 -0
- data/lib/pubid/cie/components/language.rb +58 -0
- data/lib/pubid/cie/identifier.rb +33 -0
- data/lib/pubid/cie/identifiers/bundle.rb +50 -0
- data/lib/pubid/cie/identifiers/code_attributes.rb +52 -0
- data/lib/pubid/cie/identifiers/conference.rb +37 -0
- data/lib/pubid/cie/identifiers/corrigendum.rb +34 -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/proceedings.rb +41 -0
- data/lib/pubid/cie/identifiers/standard.rb +93 -0
- data/lib/pubid/cie/identifiers/supplement.rb +47 -0
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +24 -0
- data/lib/pubid/cie/identifiers.rb +19 -0
- data/lib/pubid/cie/parser.rb +396 -0
- data/lib/pubid/cie/single_identifier.rb +69 -0
- data/lib/pubid/cie/supplement_identifier.rb +39 -0
- data/lib/pubid/cie/urn_generator.rb +126 -0
- data/lib/pubid/cie/urn_parser.rb +28 -0
- data/lib/pubid/cie.rb +83 -0
- data/lib/pubid/components/adoption.rb +104 -0
- data/lib/pubid/components/code.rb +47 -0
- data/lib/pubid/components/date.rb +72 -0
- data/lib/pubid/components/edition.rb +35 -0
- data/lib/pubid/components/iteration.rb +32 -0
- data/lib/pubid/components/language.rb +39 -0
- data/lib/pubid/components/locality.rb +19 -0
- data/lib/pubid/components/publisher.rb +39 -0
- data/lib/pubid/components/relationship.rb +151 -0
- data/lib/pubid/components/stage.rb +45 -0
- data/lib/pubid/components/supplement.rb +184 -0
- data/lib/pubid/components/type.rb +48 -0
- data/lib/pubid/components/typed_stage.rb +58 -0
- data/lib/pubid/components.rb +19 -0
- data/lib/pubid/core/pattern_doc_generator.rb +272 -0
- data/lib/pubid/core/update_codes.rb +98 -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 +38 -0
- data/lib/pubid/csa/identifier.rb +570 -0
- data/lib/pubid/csa/identifiers/base.rb +10 -0
- data/lib/pubid/csa/identifiers/bundled.rb +141 -0
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +82 -0
- data/lib/pubid/csa/identifiers/cec.rb +66 -0
- data/lib/pubid/csa/identifiers/combined.rb +158 -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 +23 -0
- data/lib/pubid/csa/identifiers/standard.rb +10 -0
- data/lib/pubid/csa/identifiers.rb +17 -0
- data/lib/pubid/csa/parser.rb +449 -0
- data/lib/pubid/csa/renderer.rb +300 -0
- data/lib/pubid/csa/single_identifier.rb +119 -0
- data/lib/pubid/csa/urn_generator.rb +87 -0
- data/lib/pubid/csa/urn_parser.rb +33 -0
- data/lib/pubid/csa/wrapper_identifier.rb +64 -0
- data/lib/pubid/csa.rb +80 -0
- 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 +55 -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 +52 -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 +67 -0
- data/lib/pubid/errors.rb +79 -0
- data/lib/pubid/etsi/builder.rb +142 -0
- data/lib/pubid/etsi/components/code.rb +43 -0
- data/lib/pubid/etsi/components/version.rb +32 -0
- data/lib/pubid/etsi/components.rb +10 -0
- data/lib/pubid/etsi/identifier.rb +4 -0
- data/lib/pubid/etsi/identifiers/amendment.rb +15 -0
- data/lib/pubid/etsi/identifiers/base.rb +74 -0
- data/lib/pubid/etsi/identifiers/corrigendum.rb +15 -0
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +222 -0
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +123 -0
- data/lib/pubid/etsi/identifiers.rb +13 -0
- data/lib/pubid/etsi/parser.rb +139 -0
- data/lib/pubid/etsi/renderer.rb +48 -0
- data/lib/pubid/etsi/urn_generator.rb +76 -0
- data/lib/pubid/etsi/urn_parser.rb +34 -0
- data/lib/pubid/etsi.rb +71 -0
- data/lib/pubid/export/auditor.rb +89 -0
- data/lib/pubid/export/exporter.rb +33 -0
- data/lib/pubid/export/flavor_exporter.rb +250 -0
- data/lib/pubid/export/result.rb +97 -0
- data/lib/pubid/export.rb +12 -0
- data/lib/pubid/format_detector.rb +16 -0
- data/lib/pubid/format_registry.rb +42 -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 +87 -0
- data/lib/pubid/gost/builder.rb +148 -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 +49 -0
- data/lib/pubid/iala/builder.rb +102 -0
- data/lib/pubid/iala/identifier.rb +90 -0
- data/lib/pubid/iala/identifiers/advice.rb +15 -0
- data/lib/pubid/iala/identifiers/annex.rb +57 -0
- data/lib/pubid/iala/identifiers/general_assembly.rb +19 -0
- data/lib/pubid/iala/identifiers/guideline.rb +17 -0
- data/lib/pubid/iala/identifiers/letter.rb +16 -0
- data/lib/pubid/iala/identifiers/manual.rb +18 -0
- data/lib/pubid/iala/identifiers/model_course.rb +17 -0
- data/lib/pubid/iala/identifiers/recommendation.rb +17 -0
- data/lib/pubid/iala/identifiers/report.rb +16 -0
- data/lib/pubid/iala/identifiers/resolution.rb +16 -0
- data/lib/pubid/iala/identifiers/standard.rb +17 -0
- data/lib/pubid/iala/identifiers.rb +19 -0
- data/lib/pubid/iala/parser.rb +138 -0
- data/lib/pubid/iala/renderer.rb +36 -0
- data/lib/pubid/iala/urn_generator.rb +49 -0
- data/lib/pubid/iala/urn_parser.rb +67 -0
- data/lib/pubid/iala.rb +71 -0
- 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 +69 -0
- data/lib/pubid/identifier.rb +1118 -0
- data/lib/pubid/identifier_metadata.rb +148 -0
- data/lib/pubid/idf/builder.rb +82 -0
- data/lib/pubid/idf/identifier.rb +79 -0
- data/lib/pubid/idf/identifiers/amendment.rb +28 -0
- data/lib/pubid/idf/identifiers/corrigendum.rb +28 -0
- data/lib/pubid/idf/identifiers/international_standard.rb +124 -0
- data/lib/pubid/idf/identifiers/reviewed_method.rb +101 -0
- data/lib/pubid/idf/identifiers.rb +13 -0
- data/lib/pubid/idf/parser.rb +144 -0
- data/lib/pubid/idf/renderer.rb +84 -0
- data/lib/pubid/idf/single_identifier.rb +19 -0
- data/lib/pubid/idf/supplement_identifier.rb +35 -0
- data/lib/pubid/idf/urn_generator.rb +49 -0
- data/lib/pubid/idf/urn_parser.rb +25 -0
- data/lib/pubid/idf.rb +89 -0
- data/lib/pubid/iec/builder.rb +458 -0
- data/lib/pubid/iec/components/code.rb +36 -0
- data/lib/pubid/iec/components/consolidated_amendment.rb +59 -0
- data/lib/pubid/iec/components/publisher.rb +35 -0
- data/lib/pubid/iec/components/sheet.rb +32 -0
- data/lib/pubid/iec/components/trf_info.rb +38 -0
- data/lib/pubid/iec/components/vap_suffix.rb +41 -0
- data/lib/pubid/iec/components.rb +14 -0
- data/lib/pubid/iec/identifier.rb +341 -0
- data/lib/pubid/iec/identifiers/amendment.rb +97 -0
- data/lib/pubid/iec/identifiers/base.rb +54 -0
- data/lib/pubid/iec/identifiers/component_specification.rb +29 -0
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +28 -0
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +85 -0
- data/lib/pubid/iec/identifiers/corrigendum.rb +93 -0
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +148 -0
- data/lib/pubid/iec/identifiers/guide.rb +86 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +162 -0
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +103 -0
- data/lib/pubid/iec/identifiers/operational_document.rb +29 -0
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +88 -0
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +68 -0
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +30 -0
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +29 -0
- data/lib/pubid/iec/identifiers/technical_group.rb +30 -0
- data/lib/pubid/iec/identifiers/technical_report.rb +114 -0
- data/lib/pubid/iec/identifiers/technical_specification.rb +114 -0
- data/lib/pubid/iec/identifiers/technology_report.rb +28 -0
- data/lib/pubid/iec/identifiers/test_report_form.rb +35 -0
- data/lib/pubid/iec/identifiers/vap_identifier.rb +76 -0
- data/lib/pubid/iec/identifiers/white_paper.rb +29 -0
- data/lib/pubid/iec/identifiers/working_document.rb +62 -0
- data/lib/pubid/iec/identifiers.rb +31 -0
- data/lib/pubid/iec/parser.rb +443 -0
- data/lib/pubid/iec/renderer.rb +267 -0
- data/lib/pubid/iec/rendering_style.rb +113 -0
- data/lib/pubid/iec/single_identifier.rb +72 -0
- data/lib/pubid/iec/supplement_identifier.rb +178 -0
- data/lib/pubid/iec/urn_generator.rb +245 -0
- data/lib/pubid/iec/urn_parser.rb +128 -0
- data/lib/pubid/iec.rb +64 -0
- data/lib/pubid/ieee/aiee/builder.rb +85 -0
- data/lib/pubid/ieee/aiee/identifier.rb +89 -0
- data/lib/pubid/ieee/aiee/parser.rb +130 -0
- data/lib/pubid/ieee/aiee.rb +11 -0
- data/lib/pubid/ieee/builder.rb +1554 -0
- data/lib/pubid/ieee/compaction.rb +121 -0
- data/lib/pubid/ieee/components/code.rb +110 -0
- data/lib/pubid/ieee/components/draft.rb +147 -0
- data/lib/pubid/ieee/components/relationship.rb +13 -0
- data/lib/pubid/ieee/components/typed_stage.rb +100 -0
- data/lib/pubid/ieee/identifier.rb +5 -0
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +81 -0
- data/lib/pubid/ieee/identifiers/amendment.rb +40 -0
- data/lib/pubid/ieee/identifiers/base.rb +384 -0
- data/lib/pubid/ieee/identifiers/code_number.rb +82 -0
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +29 -0
- data/lib/pubid/ieee/identifiers/corrigendum.rb +40 -0
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +62 -0
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +14 -0
- data/lib/pubid/ieee/identifiers/dual_published.rb +79 -0
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +115 -0
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +48 -0
- data/lib/pubid/ieee/identifiers/joint_development.rb +223 -0
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +85 -0
- data/lib/pubid/ieee/identifiers/nesc/base.rb +127 -0
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +43 -0
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +32 -0
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +43 -0
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +35 -0
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +41 -0
- data/lib/pubid/ieee/identifiers/nesc.rb +16 -0
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +14 -0
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +49 -0
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +26 -0
- data/lib/pubid/ieee/identifiers/si_standard.rb +38 -0
- data/lib/pubid/ieee/identifiers/standard.rb +44 -0
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +42 -0
- data/lib/pubid/ieee/identifiers.rb +34 -0
- data/lib/pubid/ieee/ire/builder.rb +62 -0
- data/lib/pubid/ieee/ire/identifier.rb +73 -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 +114 -0
- data/lib/pubid/ieee/nesc/parser.rb +155 -0
- data/lib/pubid/ieee/nesc.rb +10 -0
- data/lib/pubid/ieee/parser.rb +1644 -0
- data/lib/pubid/ieee/pre_parser.rb +301 -0
- data/lib/pubid/ieee/renderer.rb +408 -0
- data/lib/pubid/ieee/typed_stages.rb +183 -0
- data/lib/pubid/ieee/urn_generator.rb +215 -0
- data/lib/pubid/ieee/urn_parser.rb +34 -0
- data/lib/pubid/ieee.rb +163 -0
- data/lib/pubid/ieee_debug.rb +30 -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 +85 -0
- data/lib/pubid/iho/builder.rb +37 -0
- data/lib/pubid/iho/identifier.rb +7 -0
- data/lib/pubid/iho/identifiers/base.rb +75 -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 +13 -0
- data/lib/pubid/iho/parser.rb +68 -0
- data/lib/pubid/iho/renderer.rb +30 -0
- data/lib/pubid/iho/urn_generator.rb +29 -0
- data/lib/pubid/iho/urn_parser.rb +58 -0
- data/lib/pubid/iho.rb +77 -0
- 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 +52 -0
- data/lib/pubid/iso/builder.rb +316 -0
- data/lib/pubid/iso/bundled_identifier.rb +138 -0
- data/lib/pubid/iso/combined_identifier.rb +24 -0
- data/lib/pubid/iso/components/code.rb +24 -0
- data/lib/pubid/iso/components/publisher.rb +62 -0
- data/lib/pubid/iso/components.rb +10 -0
- data/lib/pubid/iso/format_resolver.rb +45 -0
- data/lib/pubid/iso/identifier.rb +318 -0
- data/lib/pubid/iso/identifiers/addendum.rb +107 -0
- data/lib/pubid/iso/identifiers/amendment.rb +132 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +108 -0
- data/lib/pubid/iso/identifiers/data.rb +75 -0
- data/lib/pubid/iso/identifiers/directives.rb +65 -0
- data/lib/pubid/iso/identifiers/directives_supplement.rb +148 -0
- data/lib/pubid/iso/identifiers/extract.rb +30 -0
- data/lib/pubid/iso/identifiers/guide.rb +99 -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 +95 -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 +95 -0
- data/lib/pubid/iso/identifiers/tc_document.rb +137 -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 +32 -0
- data/lib/pubid/iso/normalizer.rb +89 -0
- data/lib/pubid/iso/parser.rb +534 -0
- data/lib/pubid/iso/rendering_style.rb +120 -0
- data/lib/pubid/iso/single_identifier.rb +60 -0
- data/lib/pubid/iso/supplement_identifier.rb +53 -0
- data/lib/pubid/iso/urn_generator.rb +313 -0
- data/lib/pubid/iso/urn_parser.rb +442 -0
- data/lib/pubid/iso/utilities.rb +86 -0
- data/lib/pubid/iso.rb +236 -0
- data/lib/pubid/itu/builder.rb +360 -0
- data/lib/pubid/itu/components/code.rb +84 -0
- data/lib/pubid/itu/components/designation.rb +35 -0
- data/lib/pubid/itu/components/sector.rb +46 -0
- data/lib/pubid/itu/components/series.rb +25 -0
- data/lib/pubid/itu/components.rb +12 -0
- data/lib/pubid/itu/i18n.rb +9 -0
- data/lib/pubid/itu/i18n.yaml +30 -0
- data/lib/pubid/itu/identifier.rb +4 -0
- data/lib/pubid/itu/identifiers/addendum.rb +15 -0
- data/lib/pubid/itu/identifiers/amendment.rb +19 -0
- data/lib/pubid/itu/identifiers/annex.rb +83 -0
- 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 +482 -0
- data/lib/pubid/itu/identifiers/combined_identifier.rb +121 -0
- data/lib/pubid/itu/identifiers/corrigendum.rb +35 -0
- 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 +15 -0
- data/lib/pubid/itu/identifiers/report.rb +39 -0
- data/lib/pubid/itu/identifiers/special_publication.rb +31 -0
- data/lib/pubid/itu/identifiers/standard_serialization.rb +58 -0
- data/lib/pubid/itu/identifiers/supplement.rb +149 -0
- data/lib/pubid/itu/identifiers.rb +25 -0
- data/lib/pubid/itu/model.rb +111 -0
- data/lib/pubid/itu/parser.rb +679 -0
- data/lib/pubid/itu/urn_generator.rb +135 -0
- data/lib/pubid/itu/urn_parser.rb +31 -0
- data/lib/pubid/itu.rb +78 -0
- data/lib/pubid/jcgm/builder.rb +106 -0
- data/lib/pubid/jcgm/components/publisher.rb +20 -0
- data/lib/pubid/jcgm/components.rb +9 -0
- data/lib/pubid/jcgm/identifier.rb +21 -0
- data/lib/pubid/jcgm/identifiers/amendment.rb +24 -0
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +34 -0
- data/lib/pubid/jcgm/identifiers/guide.rb +21 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +39 -0
- data/lib/pubid/jcgm/identifiers/meeting.rb +47 -0
- data/lib/pubid/jcgm/identifiers.rb +13 -0
- data/lib/pubid/jcgm/parser.rb +151 -0
- data/lib/pubid/jcgm/renderer.rb +89 -0
- data/lib/pubid/jcgm/single_identifier.rb +118 -0
- data/lib/pubid/jcgm/supplement_identifier.rb +51 -0
- data/lib/pubid/jcgm/urn_generator.rb +116 -0
- data/lib/pubid/jcgm/urn_parser.rb +177 -0
- data/lib/pubid/jcgm.rb +86 -0
- data/lib/pubid/jis/builder.rb +116 -0
- data/lib/pubid/jis/identifier.rb +194 -0
- data/lib/pubid/jis/identifiers/amendment.rb +16 -0
- data/lib/pubid/jis/identifiers/corrigendum.rb +16 -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 +28 -0
- data/lib/pubid/jis/identifiers/technical_report.rb +32 -0
- data/lib/pubid/jis/identifiers/technical_specification.rb +32 -0
- data/lib/pubid/jis/identifiers.rb +17 -0
- data/lib/pubid/jis/parser.rb +135 -0
- data/lib/pubid/jis/renderer.rb +69 -0
- data/lib/pubid/jis/single_identifier.rb +31 -0
- data/lib/pubid/jis/supplement_identifier.rb +50 -0
- data/lib/pubid/jis/urn_generator.rb +25 -0
- data/lib/pubid/jis/urn_parser.rb +23 -0
- data/lib/pubid/jis.rb +69 -0
- data/lib/pubid/lutaml/no_store_registration.rb +30 -0
- data/lib/pubid/nist/builder.rb +481 -0
- data/lib/pubid/nist/caster.rb +1234 -0
- data/lib/pubid/nist/circular_supplement_builder.rb +293 -0
- data/lib/pubid/nist/components/code.rb +27 -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/stage.rb +53 -0
- data/lib/pubid/nist/components/supplement.rb +191 -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 +18 -0
- data/lib/pubid/nist/configuration.rb +87 -0
- data/lib/pubid/nist/identifier.rb +8 -0
- data/lib/pubid/nist/identifiers/base.rb +744 -0
- data/lib/pubid/nist/identifiers/circular.rb +80 -0
- data/lib/pubid/nist/identifiers/circular_supplement.rb +60 -0
- data/lib/pubid/nist/identifiers/commercial_standard.rb +42 -0
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +58 -0
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +69 -0
- data/lib/pubid/nist/identifiers/crpl_report.rb +138 -0
- data/lib/pubid/nist/identifiers/dated_document.rb +49 -0
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +95 -0
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +36 -0
- data/lib/pubid/nist/identifiers/handbook.rb +58 -0
- data/lib/pubid/nist/identifiers/internal_report.rb +64 -0
- data/lib/pubid/nist/identifiers/letter_circular.rb +46 -0
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +74 -0
- data/lib/pubid/nist/identifiers/monograph.rb +80 -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 +77 -0
- data/lib/pubid/nist/identifiers/special_publication.rb +46 -0
- data/lib/pubid/nist/identifiers/technical_note.rb +91 -0
- data/lib/pubid/nist/identifiers.rb +33 -0
- data/lib/pubid/nist/parser.rb +752 -0
- data/lib/pubid/nist/parser_output_normalizer.rb +233 -0
- data/lib/pubid/nist/preprocessor.rb +443 -0
- data/lib/pubid/nist/renderer.rb +43 -0
- data/lib/pubid/nist/router.rb +149 -0
- data/lib/pubid/nist/series/base.rb +58 -0
- data/lib/pubid/nist/series/crpl.rb +13 -0
- data/lib/pubid/nist/series/fips.rb +14 -0
- data/lib/pubid/nist/series/ir.rb +57 -0
- data/lib/pubid/nist/series/letter_preserving.rb +15 -0
- data/lib/pubid/nist/series/mono.rb +19 -0
- data/lib/pubid/nist/series/ncstar.rb +20 -0
- data/lib/pubid/nist/series.rb +49 -0
- data/lib/pubid/nist/supplement_identifier.rb +84 -0
- data/lib/pubid/nist/urn_generator.rb +133 -0
- data/lib/pubid/nist/urn_parser.rb +67 -0
- data/lib/pubid/nist.rb +138 -0
- 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 +79 -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 +71 -0
- data/lib/pubid/oiml/builder.rb +270 -0
- data/lib/pubid/oiml/components/code.rb +37 -0
- data/lib/pubid/oiml/components.rb +9 -0
- data/lib/pubid/oiml/identifier.rb +64 -0
- data/lib/pubid/oiml/identifiers/amendment.rb +13 -0
- data/lib/pubid/oiml/identifiers/annex.rb +29 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +15 -0
- data/lib/pubid/oiml/identifiers/bulletin.rb +137 -0
- data/lib/pubid/oiml/identifiers/code_number.rb +90 -0
- data/lib/pubid/oiml/identifiers/document.rb +15 -0
- data/lib/pubid/oiml/identifiers/errata.rb +15 -0
- data/lib/pubid/oiml/identifiers/expert_report.rb +15 -0
- data/lib/pubid/oiml/identifiers/guide.rb +15 -0
- data/lib/pubid/oiml/identifiers/recommendation.rb +15 -0
- data/lib/pubid/oiml/identifiers/seminar_report.rb +15 -0
- data/lib/pubid/oiml/identifiers/vocabulary.rb +15 -0
- data/lib/pubid/oiml/identifiers.rb +20 -0
- data/lib/pubid/oiml/parser.rb +274 -0
- data/lib/pubid/oiml/renderer.rb +232 -0
- data/lib/pubid/oiml/single_identifier.rb +113 -0
- data/lib/pubid/oiml/supplement_identifier.rb +88 -0
- data/lib/pubid/oiml/urn_generator.rb +78 -0
- data/lib/pubid/oiml/urn_parser.rb +39 -0
- data/lib/pubid/oiml.rb +81 -0
- data/lib/pubid/omg/builder.rb +19 -0
- data/lib/pubid/omg/identifier.rb +47 -0
- data/lib/pubid/omg/identifiers/specification.rb +32 -0
- data/lib/pubid/omg/identifiers.rb +9 -0
- data/lib/pubid/omg/parser.rb +40 -0
- data/lib/pubid/omg/renderer.rb +19 -0
- data/lib/pubid/omg.rb +51 -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/grammar.rb +74 -0
- data/lib/pubid/parser.rb +9 -0
- data/lib/pubid/parsers/base.rb +11 -0
- data/lib/pubid/parsers/mr_string.rb +206 -0
- data/lib/pubid/plateau/builder.rb +54 -0
- data/lib/pubid/plateau/identifier.rb +4 -0
- data/lib/pubid/plateau/identifiers/annex.rb +16 -0
- data/lib/pubid/plateau/identifiers/base.rb +55 -0
- data/lib/pubid/plateau/identifiers/handbook.rb +28 -0
- data/lib/pubid/plateau/identifiers/technical_report.rb +16 -0
- data/lib/pubid/plateau/identifiers.rb +11 -0
- data/lib/pubid/plateau/parser.rb +73 -0
- data/lib/pubid/plateau/renderer.rb +51 -0
- data/lib/pubid/plateau/supplement_identifier.rb +68 -0
- data/lib/pubid/plateau/urn_generator.rb +29 -0
- data/lib/pubid/plateau/urn_parser.rb +43 -0
- data/lib/pubid/plateau.rb +82 -0
- data/lib/pubid/prefixes_support.rb +51 -0
- data/lib/pubid/renderers/annotator.rb +233 -0
- data/lib/pubid/renderers/base.rb +66 -0
- data/lib/pubid/renderers/directives_renderer.rb +75 -0
- data/lib/pubid/renderers/guide_renderer.rb +26 -0
- data/lib/pubid/renderers/human_readable.rb +83 -0
- data/lib/pubid/renderers/iwa_renderer.rb +20 -0
- data/lib/pubid/renderers/mr_string.rb +64 -0
- data/lib/pubid/renderers/supplement_renderer.rb +36 -0
- data/lib/pubid/renderers/urn.rb +11 -0
- data/lib/pubid/renderers.rb +15 -0
- data/lib/pubid/rendering/context.rb +168 -0
- data/lib/pubid/rendering/date.rb +27 -0
- data/lib/pubid/rendering/language.rb +21 -0
- data/lib/pubid/rendering/numbering.rb +42 -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 +13 -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 +27 -0
- data/lib/pubid/sae/components/type.rb +23 -0
- data/lib/pubid/sae/components.rb +11 -0
- data/lib/pubid/sae/identifier.rb +4 -0
- data/lib/pubid/sae/identifiers/base.rb +47 -0
- data/lib/pubid/sae/identifiers.rb +8 -0
- data/lib/pubid/sae/parser.rb +55 -0
- data/lib/pubid/sae/renderer.rb +36 -0
- data/lib/pubid/sae/urn_generator.rb +30 -0
- data/lib/pubid/sae/urn_parser.rb +36 -0
- data/lib/pubid/sae.rb +66 -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 +83 -0
- data/lib/pubid/type_resolver.rb +59 -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 +46 -0
- data/lib/pubid/urn_generator/base.rb +110 -0
- data/lib/pubid/urn_parser/base.rb +81 -0
- data/lib/pubid/urn_parser/errors.rb +16 -0
- data/lib/pubid/urn_parser.rb +14 -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/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 +67 -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 +25 -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 +81 -0
- data/lib/pubid.rb +551 -13
- data/lib/tasks/docs.rake +37 -0
- data/lib/tasks/export.rake +39 -0
- data/lib/tasks/website-data.json +7546 -0
- metadata +875 -171
- data/lib/pubid/registry.rb +0 -30
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Iec
|
|
5
|
+
# Human-readable renderer for IEC identifiers.
|
|
6
|
+
#
|
|
7
|
+
# Components are accessed only through `component.render(context:)`.
|
|
8
|
+
#
|
|
9
|
+
# Produces strings like:
|
|
10
|
+
# "IEC 60038:2009"
|
|
11
|
+
# "IEC/CD 60038"
|
|
12
|
+
# "IEC 60038:2009/AMD1:2011"
|
|
13
|
+
# "IEC/FDAM 60038-1"
|
|
14
|
+
# "IEC 60529:1989+AMD1:1999 CSV"
|
|
15
|
+
#
|
|
16
|
+
# The renderer is registered as the `:human` format in the IEC format
|
|
17
|
+
# registry and invoked via `render(format: :human)`.
|
|
18
|
+
#
|
|
19
|
+
# For simple (non-wrapper) identifiers, the renderer delegates to the
|
|
20
|
+
# identifier's own `publisher_portion` / `number_portion` helpers so that
|
|
21
|
+
# per-type overrides (e.g. TR, TS, Guide) continue to work without
|
|
22
|
+
# duplication. Wrapper types (Consolidated, VAP, Sheet, Fragment,
|
|
23
|
+
# Supplement, WorkingDocument, TestReportForm) have rendering logic
|
|
24
|
+
# here because their structure differs fundamentally.
|
|
25
|
+
class Renderer < ::Pubid::Renderers::Base
|
|
26
|
+
def render(context: nil, **opts)
|
|
27
|
+
id = @id
|
|
28
|
+
|
|
29
|
+
case id
|
|
30
|
+
when Identifiers::ConsolidatedIdentifier
|
|
31
|
+
render_consolidated(id, opts, context)
|
|
32
|
+
when Identifiers::VapIdentifier
|
|
33
|
+
render_vap(id, opts, context)
|
|
34
|
+
when Identifiers::SheetIdentifier
|
|
35
|
+
render_sheet(id, opts, context)
|
|
36
|
+
when Identifiers::FragmentIdentifier
|
|
37
|
+
render_fragment(id, opts, context)
|
|
38
|
+
when Identifiers::WorkingDocument
|
|
39
|
+
render_working_document(id, context)
|
|
40
|
+
when Identifiers::TechnicalGroup
|
|
41
|
+
render_technical_group(id, context)
|
|
42
|
+
when Identifiers::TestReportForm
|
|
43
|
+
render_test_report_form(id, context)
|
|
44
|
+
when SupplementIdentifier
|
|
45
|
+
render_supplement(id, opts, context)
|
|
46
|
+
else
|
|
47
|
+
render_single(id, opts, context)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
|
|
53
|
+
def render_single(id, opts, context)
|
|
54
|
+
parts = []
|
|
55
|
+
parts << id.publisher_portion
|
|
56
|
+
parts << id.number_portion
|
|
57
|
+
|
|
58
|
+
if id.is_a?(Identifiers::Base)
|
|
59
|
+
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
60
|
+
elsif opts[:with_edition] && id.edition&.number
|
|
61
|
+
parts << " #{id.edition.render(context:)}"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# VAP codes live on VapIdentifier (rendered in render_vap), not Base.
|
|
65
|
+
|
|
66
|
+
if id.is_a?(Identifiers::Base) && id.database
|
|
67
|
+
parts << " DB"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
parts << " (all parts)" if id.all_parts
|
|
71
|
+
|
|
72
|
+
result = parts.compact.join
|
|
73
|
+
|
|
74
|
+
result << id.language_portion(lang_single: opts[:lang_single]) if id.languages&.any?
|
|
75
|
+
|
|
76
|
+
result
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def render_supplement(id, opts, context)
|
|
80
|
+
id.ensure_base
|
|
81
|
+
|
|
82
|
+
if id.synthetic_base?
|
|
83
|
+
render_supplement_standalone(id, context)
|
|
84
|
+
elsif id.base
|
|
85
|
+
render_supplement_attached(id, opts, context)
|
|
86
|
+
else
|
|
87
|
+
render_single(id, opts, context)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
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.
|
|
96
|
+
parts = []
|
|
97
|
+
|
|
98
|
+
if id.publisher
|
|
99
|
+
publishers = [id.publisher.render(context:)]
|
|
100
|
+
if id.copublishers&.any?
|
|
101
|
+
publishers += id.copublishers.map { |c| c.render(context:) }
|
|
102
|
+
end
|
|
103
|
+
parts << publishers.join("/")
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
abbr = id.typed_stage.abbr.first
|
|
107
|
+
number_str = id.base.number.to_s
|
|
108
|
+
number_str += "-#{id.number}" if id.number
|
|
109
|
+
number_str += "-#{id.subpart}" if id.subpart
|
|
110
|
+
parts << "#{abbr} #{number_str}"
|
|
111
|
+
|
|
112
|
+
result = parts.join(" ")
|
|
113
|
+
result += ":#{id.date.render(context:)}" if id.date
|
|
114
|
+
result += " #{id.edition.render(context:)}" if id.edition&.number
|
|
115
|
+
result
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def render_supplement_attached(id, opts, context)
|
|
119
|
+
parts = []
|
|
120
|
+
parts << id.base.to_s(**opts)
|
|
121
|
+
|
|
122
|
+
abbr = id.typed_stage.abbr.first.upcase
|
|
123
|
+
supp_part = "/#{abbr}#{id.number}"
|
|
124
|
+
supp_part += ":#{id.date.render(context:)}" if id.date
|
|
125
|
+
parts << supp_part
|
|
126
|
+
|
|
127
|
+
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
128
|
+
|
|
129
|
+
parts.join
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def render_consolidated(id, opts, _context)
|
|
133
|
+
id.identifiers.map.with_index do |sub_id, idx|
|
|
134
|
+
if idx.zero?
|
|
135
|
+
sub_id.to_s(**opts)
|
|
136
|
+
elsif sub_id.is_a?(Identifiers::Amendment)
|
|
137
|
+
render_consolidated_amendment(sub_id)
|
|
138
|
+
elsif sub_id.is_a?(Identifiers::Corrigendum)
|
|
139
|
+
render_consolidated_corrigendum(sub_id)
|
|
140
|
+
else
|
|
141
|
+
"+#{sub_id.to_s(**opts)}"
|
|
142
|
+
end
|
|
143
|
+
end.join
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def render_consolidated_amendment(id)
|
|
147
|
+
if id.date&.present?
|
|
148
|
+
"+AMD#{id.number}:#{id.date.render}"
|
|
149
|
+
else
|
|
150
|
+
"+AMD#{id.number}"
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def render_consolidated_corrigendum(id)
|
|
155
|
+
if id.date&.present?
|
|
156
|
+
"+COR#{id.number}:#{id.date.render}"
|
|
157
|
+
else
|
|
158
|
+
"+COR#{id.number}"
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def render_vap(id, opts, context)
|
|
163
|
+
parts = []
|
|
164
|
+
|
|
165
|
+
parts << id.base.to_s(**opts.merge(with_edition: false))
|
|
166
|
+
parts << " #{id.vap.join('-')}" if id.vap&.any?
|
|
167
|
+
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
168
|
+
|
|
169
|
+
parts.compact.join
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
def render_sheet(id, opts, context)
|
|
173
|
+
parts = []
|
|
174
|
+
parts << id.base.to_s(**opts)
|
|
175
|
+
parts << "/#{id.sheet_number}"
|
|
176
|
+
parts << ":#{id.year}" if id.year
|
|
177
|
+
parts.join
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def render_fragment(id, opts, context)
|
|
181
|
+
parts = []
|
|
182
|
+
parts << id.base.to_s(**opts)
|
|
183
|
+
|
|
184
|
+
parts << if id.base.is_a?(Identifiers::Corrigendum)
|
|
185
|
+
"/FRAGC#{id.fragment_number}"
|
|
186
|
+
else
|
|
187
|
+
"/FRAG#{id.fragment_number}"
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
191
|
+
|
|
192
|
+
parts.join
|
|
193
|
+
end
|
|
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
|
+
|
|
203
|
+
def render_working_document(id, context)
|
|
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.
|
|
210
|
+
parts = []
|
|
211
|
+
parts << id.wp_stage
|
|
212
|
+
if id.wp_type && !id.wp_type.strip.empty?
|
|
213
|
+
parts << " #{id.wp_type.strip}"
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
if id.number
|
|
217
|
+
num_str = id.number.to_s
|
|
218
|
+
num_str += "-#{id.part}" if id.part && id.part.to_s != ""
|
|
219
|
+
num_str += "-#{id.subpart}" if id.subpart && id.subpart.to_s != ""
|
|
220
|
+
parts << " #{num_str}"
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
parts << " #{id.edition.render(context:)}" if id.edition&.number
|
|
224
|
+
return parts.join
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
parts = []
|
|
228
|
+
parts << id.technical_committee if id.technical_committee
|
|
229
|
+
|
|
230
|
+
if id.wd_number
|
|
231
|
+
num_part = id.wd_number.to_s
|
|
232
|
+
num_part += "(#{id.wd_language})" if id.wd_language
|
|
233
|
+
parts << num_part
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
parts << id.wd_stage if id.wd_stage
|
|
237
|
+
|
|
238
|
+
parts.join("/")
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
def render_test_report_form(id, context)
|
|
242
|
+
parts = []
|
|
243
|
+
parts << id.publisher_portion
|
|
244
|
+
|
|
245
|
+
if id.cispr_identifier
|
|
246
|
+
cispr_parts = []
|
|
247
|
+
cispr_parts << id.cispr_identifier.publisher.render(context:)
|
|
248
|
+
|
|
249
|
+
num_str = id.cispr_identifier.number.to_s
|
|
250
|
+
num_str += "-#{id.cispr_identifier.part}" if id.cispr_identifier.part && id.cispr_identifier.part.to_s != ""
|
|
251
|
+
cispr_parts << num_str
|
|
252
|
+
|
|
253
|
+
cispr_str = cispr_parts.join(" ")
|
|
254
|
+
cispr_str += ":#{id.date.render(context:)}" if id.date
|
|
255
|
+
|
|
256
|
+
parts << " #{cispr_str}"
|
|
257
|
+
else
|
|
258
|
+
parts << id.number_portion
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
parts << id.trf_info.to_s if id.trf_info && !id.trf_info.empty?
|
|
262
|
+
|
|
263
|
+
parts.compact.join
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
end
|
|
267
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Iec
|
|
5
|
+
# Base class for rendering styles using Strategy pattern
|
|
6
|
+
# Each identifier stores its own rendering_style which knows how to render it
|
|
7
|
+
class RenderingStyle
|
|
8
|
+
attr_reader :with_language_code, :stage_format_long, :with_date
|
|
9
|
+
|
|
10
|
+
def initialize(with_language_code:, stage_format_long:, with_date:)
|
|
11
|
+
@with_language_code = with_language_code
|
|
12
|
+
@stage_format_long = stage_format_long
|
|
13
|
+
@with_date = with_date
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Render the identifier according to this style
|
|
17
|
+
def render(identifier, with_edition: false)
|
|
18
|
+
parts = []
|
|
19
|
+
|
|
20
|
+
# Publisher portion
|
|
21
|
+
parts << identifier.publisher_portion(
|
|
22
|
+
lang: :en,
|
|
23
|
+
stage_format_long: stage_format_long,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# Number portion
|
|
27
|
+
parts << identifier.number_portion(
|
|
28
|
+
lang_single: single_char_language?,
|
|
29
|
+
with_date: with_date,
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
# Edition portion (if requested)
|
|
33
|
+
if with_edition && identifier.edition && (identifier.edition.number || identifier.edition.original_text)
|
|
34
|
+
parts << identifier.edition_portion(lang: :en)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
result = parts.compact.join(" ")
|
|
38
|
+
|
|
39
|
+
# Language portion (if applicable)
|
|
40
|
+
if identifier.languages&.any? && with_language_code != :none
|
|
41
|
+
result << identifier.language_portion(lang_single: single_char_language?)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
result
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def single_char_language?
|
|
48
|
+
with_language_code == :single
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.from_format(format)
|
|
52
|
+
case format
|
|
53
|
+
when :ref_num_short
|
|
54
|
+
RefNumShort.new
|
|
55
|
+
when :ref_num_long
|
|
56
|
+
RefNumLong.new
|
|
57
|
+
when :ref_dated
|
|
58
|
+
RefDated.new
|
|
59
|
+
when :ref_dated_long
|
|
60
|
+
RefDatedLong.new
|
|
61
|
+
when :ref_undated
|
|
62
|
+
RefUndated.new
|
|
63
|
+
when :ref_undated_long
|
|
64
|
+
RefUndatedLong.new
|
|
65
|
+
else
|
|
66
|
+
RefDatedLong.new # Default
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# Instance reference number: 1-letter language code + short form + dated
|
|
72
|
+
class RefNumShort < RenderingStyle
|
|
73
|
+
def initialize
|
|
74
|
+
super(with_language_code: :single, stage_format_long: false, with_date: true)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Instance reference number long: 2-letter language code + long form + dated
|
|
79
|
+
class RefNumLong < RenderingStyle
|
|
80
|
+
def initialize
|
|
81
|
+
super(with_language_code: :iso, stage_format_long: true, with_date: true)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Reference dated: no language code + short form + dated
|
|
86
|
+
class RefDated < RenderingStyle
|
|
87
|
+
def initialize
|
|
88
|
+
super(with_language_code: :none, stage_format_long: false, with_date: true)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# Reference dated long: no language code + long form + dated
|
|
93
|
+
class RefDatedLong < RenderingStyle
|
|
94
|
+
def initialize
|
|
95
|
+
super(with_language_code: :none, stage_format_long: true, with_date: true)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Reference undated: no language code + short form + undated
|
|
100
|
+
class RefUndated < RenderingStyle
|
|
101
|
+
def initialize
|
|
102
|
+
super(with_language_code: :none, stage_format_long: false, with_date: false)
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Reference undated long: no language code + long form + undated
|
|
107
|
+
class RefUndatedLong < RenderingStyle
|
|
108
|
+
def initialize
|
|
109
|
+
super(with_language_code: :none, stage_format_long: true, with_date: false)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Iec
|
|
5
|
+
class SingleIdentifier < Identifier
|
|
6
|
+
# Default to the class's published typed_stage so an omitted "stage" key
|
|
7
|
+
# reconstructs the published state on from_hash.
|
|
8
|
+
attribute :typed_stage, ::Pubid::Components::TypedStage,
|
|
9
|
+
default: -> { self.class.published_typed_stage }
|
|
10
|
+
|
|
11
|
+
# Generate URN for this identifier
|
|
12
|
+
#
|
|
13
|
+
# @return [String] URN representation
|
|
14
|
+
|
|
15
|
+
def to_s(**opts)
|
|
16
|
+
render(format: :human, **opts)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def publisher_portion(lang: :en)
|
|
20
|
+
# IEC identifiers can have copublishers (e.g., IEC/IEEE, ISO/IEC)
|
|
21
|
+
|
|
22
|
+
# Build publisher string
|
|
23
|
+
pub_string = if copublishers&.any?
|
|
24
|
+
# Has copublishers: "IEC/IEEE" or "ISO/IEC"
|
|
25
|
+
([publisher] + copublishers).map(&:body).join("/")
|
|
26
|
+
else
|
|
27
|
+
# No copublishers: just "IEC"
|
|
28
|
+
publisher.body
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# IEC house style separates the publisher from the typed-stage
|
|
32
|
+
# abbreviation with a SPACE, for every type and whether or not there
|
|
33
|
+
# are copublishers: "IEC CD 60038", "IEC PNW 1000-1:2023". The slash
|
|
34
|
+
# stays the copublisher separator only. The slash input spelling
|
|
35
|
+
# ("IEC/CD 60038") is still accepted by the parser; only rendering
|
|
36
|
+
# normalises. See issue #360 item 2.
|
|
37
|
+
abbr = typed_stage&.abbreviation.to_s
|
|
38
|
+
pub_string += " #{abbr}" unless abbr.empty?
|
|
39
|
+
|
|
40
|
+
pub_string
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def number_portion(lang_single: false)
|
|
44
|
+
[
|
|
45
|
+
(number ? number.to_s : ""),
|
|
46
|
+
(part ? "-#{part}" : ""),
|
|
47
|
+
(subpart ? "-#{subpart}" : ""),
|
|
48
|
+
(stage_iteration ? ".#{stage_iteration}" : ""),
|
|
49
|
+
(date ? ":#{date.render}" : ""),
|
|
50
|
+
].join
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def language_portion(lang_single: false)
|
|
54
|
+
return "" unless languages&.any?
|
|
55
|
+
|
|
56
|
+
[
|
|
57
|
+
"(",
|
|
58
|
+
languages.map do |lang|
|
|
59
|
+
lang.to_s(lang_single: lang_single)
|
|
60
|
+
end.join(lang_single ? "/" : ","),
|
|
61
|
+
")",
|
|
62
|
+
].join
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def edition_portion(lang: :en)
|
|
66
|
+
return nil unless edition&.number
|
|
67
|
+
|
|
68
|
+
"ED#{edition.number}"
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Iec
|
|
5
|
+
# Identifier that represents a supplement to a base identifier.
|
|
6
|
+
class SupplementIdentifier < SingleIdentifier
|
|
7
|
+
attribute :base, Identifier, polymorphic: true
|
|
8
|
+
|
|
9
|
+
# Serialize the supplemented document under "base". The supplement's own
|
|
10
|
+
# number/date/stage come from the inherited common maps; route the nested
|
|
11
|
+
# base hash back through Identifier.from_hash so its concrete subclass (and
|
|
12
|
+
# any further nesting) is reconstructed.
|
|
13
|
+
key_value do
|
|
14
|
+
map "base", with: { to: :base_to_kv, from: :base_from_kv }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def base_to_kv(model, doc)
|
|
18
|
+
base = model.base
|
|
19
|
+
return unless base
|
|
20
|
+
|
|
21
|
+
# `base` synthesises a base for a supplement that has none
|
|
22
|
+
# (e.g. a bare "+AMD1:2008" nested in a consolidation): a fake doc whose
|
|
23
|
+
# number equals the supplement's own. It renders nothing and the getter
|
|
24
|
+
# recreates it identically on load, so don't persist it. A standalone
|
|
25
|
+
# supplement ("IEC/FDAM 60038-1") instead moves the real base number into
|
|
26
|
+
# the synthetic base (base.number != own number), which must be kept.
|
|
27
|
+
return if model.synthetic_base? && base.number.to_s == model.number.to_s
|
|
28
|
+
|
|
29
|
+
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("base",
|
|
30
|
+
base.to_hash))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def base_from_kv(model, value)
|
|
34
|
+
return unless value
|
|
35
|
+
|
|
36
|
+
base = ::Pubid::Iec::Identifier.from_hash(value)
|
|
37
|
+
model.base = base
|
|
38
|
+
|
|
39
|
+
# A base of the exact SingleIdentifier class is the synthetic self-base
|
|
40
|
+
# of a standalone supplement ("IEC/FDAM 60038-1"); a real attached base
|
|
41
|
+
# is always a concrete type (InternationalStandard, etc.). Re-engage the
|
|
42
|
+
# synthetic-base state so the supplement renders in standalone form
|
|
43
|
+
# (publisher/TYPE base-number-supp-number) instead of attached form.
|
|
44
|
+
if base.instance_of?(::Pubid::Iec::SingleIdentifier)
|
|
45
|
+
model.mark_synthetic_standalone!
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# Re-engage the standalone synthetic-base state on a deserialized
|
|
50
|
+
# supplement. At this point `number` already holds the supplement number
|
|
51
|
+
# (set from the "number" key before "base"), so preserve it as the
|
|
52
|
+
# supplement number and flag the synthetic base.
|
|
53
|
+
def mark_synthetic_standalone!
|
|
54
|
+
@synthetic_base = true
|
|
55
|
+
@supplement_number = @number
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Override base getter to ensure it's always created for standalone supplements
|
|
59
|
+
def base
|
|
60
|
+
@base || ensure_base
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Override number getter to trigger swap for standalone supplements
|
|
64
|
+
def number
|
|
65
|
+
# Guard against recursion in ensure_base
|
|
66
|
+
return @number if @ensuring_base
|
|
67
|
+
|
|
68
|
+
# For standalone supplements, trigger base creation first
|
|
69
|
+
ensure_base if @synthetic_base.nil? && publisher && part
|
|
70
|
+
|
|
71
|
+
if @synthetic_base
|
|
72
|
+
@supplement_number || @number
|
|
73
|
+
else
|
|
74
|
+
super
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# Override part getter for standalone supplements (part becomes nil after swap)
|
|
79
|
+
def part
|
|
80
|
+
# For standalone supplements with synthetic base, part is nil (moved to number)
|
|
81
|
+
if @synthetic_base
|
|
82
|
+
nil
|
|
83
|
+
else
|
|
84
|
+
super
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Delegate publisher and copublishers to base whenever there is
|
|
89
|
+
# a base (a supplement carries the publisher of the document it
|
|
90
|
+
# supplements). Checking base first — rather than `@publisher || base` — is
|
|
91
|
+
# required now that the publisher attribute has an IEC default, which would
|
|
92
|
+
# otherwise mask the delegation.
|
|
93
|
+
def publisher
|
|
94
|
+
return @publisher if @ensuring_base
|
|
95
|
+
|
|
96
|
+
base ? base.publisher : @publisher
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def copublishers
|
|
100
|
+
return @copublishers if @ensuring_base
|
|
101
|
+
|
|
102
|
+
base ? base.copublishers : @copublishers
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# Ensure we have a base for standalone supplements
|
|
106
|
+
# Creates a synthetic base identifier from supplement attributes if needed
|
|
107
|
+
# Returns the base
|
|
108
|
+
def ensure_base
|
|
109
|
+
return @base if @base
|
|
110
|
+
|
|
111
|
+
# Guard flag to prevent recursion in number getter
|
|
112
|
+
@ensuring_base = true
|
|
113
|
+
|
|
114
|
+
# For standalone supplements like "IEC/FDAM 60038-1"
|
|
115
|
+
# The supplement number is in the `part` attribute, while `number` is the base number
|
|
116
|
+
# We need to create a synthetic base and use part as the supplement number
|
|
117
|
+
return nil unless publisher && (number || part)
|
|
118
|
+
|
|
119
|
+
# Capture original values BEFORE marking as synthetic
|
|
120
|
+
# (otherwise our getters will return swapped values)
|
|
121
|
+
base_number = number
|
|
122
|
+
supplement_number = part
|
|
123
|
+
|
|
124
|
+
# NOW mark that this is a synthetic base (after capturing values)
|
|
125
|
+
@synthetic_base = true
|
|
126
|
+
|
|
127
|
+
# Use SingleIdentifier which has typed_stage attribute
|
|
128
|
+
base = SingleIdentifier.new
|
|
129
|
+
base.publisher = publisher
|
|
130
|
+
base.number = base_number if base_number
|
|
131
|
+
base.part = nil # Base doesn't have part - part is the supplement number
|
|
132
|
+
base.subpart = subpart if subpart
|
|
133
|
+
base.date = date if date
|
|
134
|
+
|
|
135
|
+
# Create typed_stage for the base - use "IS" (International Standard) type
|
|
136
|
+
# not the supplement type
|
|
137
|
+
base.typed_stage = Pubid::Components::TypedStage.new(
|
|
138
|
+
abbr: ["IS"],
|
|
139
|
+
type_code: :is,
|
|
140
|
+
stage_code: :undated,
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
@base = base
|
|
144
|
+
|
|
145
|
+
# Store the supplement number for getter override
|
|
146
|
+
# The original number is the base number (moved to base)
|
|
147
|
+
# The original part is the supplement number (what we want to return)
|
|
148
|
+
@supplement_number = supplement_number
|
|
149
|
+
|
|
150
|
+
@base
|
|
151
|
+
ensure
|
|
152
|
+
@ensuring_base = false
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Check if this supplement has a synthetic base (created for standalone format)
|
|
156
|
+
def synthetic_base?
|
|
157
|
+
@synthetic_base ||= false
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def to_s(**opts)
|
|
161
|
+
render(format: :human, **opts)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# MR supplement suffix: `/{type}.{number}.{year}` (e.g. "/amd.1.2016").
|
|
165
|
+
# The MrString renderer recurses into `base` and appends this so the
|
|
166
|
+
# full supplement chain round-trips losslessly (issue #142).
|
|
167
|
+
def mr_supplement_suffix
|
|
168
|
+
segments = []
|
|
169
|
+
segments << mr_type if mr_type
|
|
170
|
+
segments << number&.to_s if number
|
|
171
|
+
segments << date&.year&.to_s if date&.year
|
|
172
|
+
return nil if segments.empty?
|
|
173
|
+
|
|
174
|
+
segments.join(".")
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|