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,519 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ashrae
|
|
5
|
+
# Builder class for constructing ASHRAE identifier scheme from parsed data
|
|
6
|
+
# Single Responsibility: Transform parsed data into identifier objects
|
|
7
|
+
class Builder
|
|
8
|
+
attr_reader :identifier_class
|
|
9
|
+
|
|
10
|
+
def initialize(identifier_class = Identifier)
|
|
11
|
+
@identifier_class = identifier_class
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# Build a scheme object from parsed data
|
|
15
|
+
# @param parsed [Hash, Array] the parsed identifier data
|
|
16
|
+
# @return [identifier] the constructed scheme object
|
|
17
|
+
def build(parsed)
|
|
18
|
+
# Parslet can return array of hashes - merge them
|
|
19
|
+
parsed_hash = parsed.is_a?(Array) ? merge_parsed_array(parsed) : parsed
|
|
20
|
+
|
|
21
|
+
# Check for supplement identifiers first
|
|
22
|
+
if parsed_hash[:errata_keyword]
|
|
23
|
+
return build_errata(parsed_hash)
|
|
24
|
+
elsif parsed_hash[:interpretation_identifier]
|
|
25
|
+
return build_interpretation(parsed_hash[:interpretation_identifier])
|
|
26
|
+
elsif parsed_hash[:combined_addenda]
|
|
27
|
+
return build_combined_addenda(parsed_hash[:combined_addenda])
|
|
28
|
+
elsif parsed_hash[:addenda_package]
|
|
29
|
+
return build_addenda_package(parsed_hash[:addenda_package])
|
|
30
|
+
elsif parsed_hash[:addendum_identifier]
|
|
31
|
+
return build_addendum_from_identifier(parsed_hash[:addendum_identifier])
|
|
32
|
+
elsif parsed_hash[:publisher_addendum]
|
|
33
|
+
return build_publisher_addendum(parsed_hash[:publisher_addendum])
|
|
34
|
+
elsif parsed_hash[:publisher_addendum_copublisher]
|
|
35
|
+
return build_publisher_addendum_copublisher(parsed_hash[:publisher_addendum_copublisher])
|
|
36
|
+
elsif parsed_hash[:publisher_addendum_copublisher_no_type]
|
|
37
|
+
return build_publisher_addendum_copublisher_no_type(parsed_hash[:publisher_addendum_copublisher_no_type])
|
|
38
|
+
elsif parsed_hash[:addendum_no_type]
|
|
39
|
+
return build_addendum_no_type(parsed_hash[:addendum_no_type])
|
|
40
|
+
elsif parsed_hash[:standard_addendum]
|
|
41
|
+
return build_standard_addendum(parsed_hash[:standard_addendum])
|
|
42
|
+
# These two grammar rules had NO dispatch branch, so they fell through
|
|
43
|
+
# to the plain-identifier path below. That path looks for
|
|
44
|
+
# publisher/type/code at the TOP of the hash, finds only the wrapper
|
|
45
|
+
# key, and builds an empty Standard — 123 corpus ids rendered as the
|
|
46
|
+
# bare string "ASHRAE Standard ". Both subtrees are flat and carry
|
|
47
|
+
# exactly the keys #build_addendum_from_identifier already reads.
|
|
48
|
+
elsif parsed_hash[:addendum]
|
|
49
|
+
return build_addendum_from_identifier(parsed_hash[:addendum])
|
|
50
|
+
elsif parsed_hash[:publisher_base_addendum]
|
|
51
|
+
return build_addendum_from_identifier(
|
|
52
|
+
parsed_hash[:publisher_base_addendum],
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
# Handle base identifier
|
|
57
|
+
if parsed_hash[:base]
|
|
58
|
+
parsed_hash = parsed_hash[:base]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
attributes = extract_attributes(parsed_hash)
|
|
62
|
+
identifier_class = determine_identifier_class(attributes)
|
|
63
|
+
identifier_class.new(**attributes)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# Class method to build an identifier from parsed data
|
|
67
|
+
# @param parsed [Hash, Array] the parsed identifier data
|
|
68
|
+
# @return [Identifier] the constructed identifier object
|
|
69
|
+
def self.build(parsed)
|
|
70
|
+
new.build(parsed)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
private
|
|
74
|
+
|
|
75
|
+
# Merge an array of parsed hashes into a single hash
|
|
76
|
+
# @param parsed_array [Array<Hash>] array of parsed hashes
|
|
77
|
+
# @return [Hash] merged hash
|
|
78
|
+
def merge_parsed_array(parsed_array)
|
|
79
|
+
parsed_array.inject({}) do |result, hash|
|
|
80
|
+
result.merge(hash)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Extract and normalize attributes from parsed data
|
|
85
|
+
# @param parsed [Hash] the parsed data
|
|
86
|
+
# @return [Hash] normalized attributes for identifier
|
|
87
|
+
def extract_attributes(parsed)
|
|
88
|
+
attributes = {}
|
|
89
|
+
|
|
90
|
+
# Extract publisher
|
|
91
|
+
if parsed[:publisher]
|
|
92
|
+
attributes[:publisher] =
|
|
93
|
+
extract_value(parsed[:publisher])
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Extract type - default to "Standard" if not present
|
|
97
|
+
attributes[:type] = extract_value(parsed[:type]) || "Standard"
|
|
98
|
+
|
|
99
|
+
# Extract code (from code or code_with_year format)
|
|
100
|
+
if parsed[:code_with_year]
|
|
101
|
+
# code_with_year contains both code and year
|
|
102
|
+
code_year_data = parsed[:code_with_year]
|
|
103
|
+
if code_year_data && code_year_data[:code]
|
|
104
|
+
attributes[:number] =
|
|
105
|
+
extract_value(code_year_data[:code])
|
|
106
|
+
end
|
|
107
|
+
if code_year_data && code_year_data[:year]
|
|
108
|
+
attributes[:year] =
|
|
109
|
+
extract_value(code_year_data[:year])
|
|
110
|
+
end
|
|
111
|
+
elsif parsed[:code]
|
|
112
|
+
attributes[:number] = extract_value(parsed[:code])
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# Extract year if not already extracted from code_with_year
|
|
116
|
+
attributes[:year] ||= extract_value(parsed[:year]) if parsed[:year]
|
|
117
|
+
|
|
118
|
+
# Extract suffix (R or P)
|
|
119
|
+
attributes[:suffix] = extract_value(parsed[:suffix]) if parsed[:suffix]
|
|
120
|
+
|
|
121
|
+
# Extract reaffirmed year
|
|
122
|
+
if parsed[:reaffirmed]
|
|
123
|
+
attributes[:reaffirmed] =
|
|
124
|
+
extract_value(parsed[:reaffirmed])
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# Extract copublisher
|
|
128
|
+
if parsed[:copublisher]
|
|
129
|
+
attributes[:copublisher] =
|
|
130
|
+
extract_value(parsed[:copublisher])
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
attributes
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
# Determine which identifier class to use based on attributes
|
|
137
|
+
def determine_identifier_class(attributes)
|
|
138
|
+
type_value = attributes[:type]
|
|
139
|
+
|
|
140
|
+
# Use type to determine class
|
|
141
|
+
if type_value == "Guideline"
|
|
142
|
+
Identifiers::Guideline
|
|
143
|
+
elsif type_value == "Standard"
|
|
144
|
+
Identifiers::Standard
|
|
145
|
+
else
|
|
146
|
+
# Default to Standard
|
|
147
|
+
Identifiers::Standard
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Extract a simple value from parsed data
|
|
152
|
+
# @param value [Object] the value to extract
|
|
153
|
+
# @return [String, nil] the extracted string value
|
|
154
|
+
def extract_value(value)
|
|
155
|
+
return nil if value.nil?
|
|
156
|
+
return nil if value.is_a?(Array) && value.empty?
|
|
157
|
+
|
|
158
|
+
if value.is_a?(Array)
|
|
159
|
+
joined = value.join
|
|
160
|
+
return joined.length.positive? ? joined : nil
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
str_value = value.to_s.strip
|
|
164
|
+
str_value.length.positive? ? str_value : nil
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Build an Errata identifier from parsed errata data
|
|
168
|
+
# @param parsed [Hash] the parsed errata data
|
|
169
|
+
# @return [Identifiers::Errata] the constructed errata identifier
|
|
170
|
+
def build_errata(parsed)
|
|
171
|
+
base_attrs = extract_base_attributes(parsed)
|
|
172
|
+
base_class = determine_identifier_class(base_attrs)
|
|
173
|
+
base = base_class.new(**base_attrs)
|
|
174
|
+
|
|
175
|
+
errata_date = extract_errata_date(parsed[:errata_date])
|
|
176
|
+
|
|
177
|
+
Identifiers::Errata.new(
|
|
178
|
+
base: base,
|
|
179
|
+
errata_date: errata_date,
|
|
180
|
+
)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Build an Interpretation identifier from parsed interpretation data
|
|
184
|
+
# @param parsed [Hash] the parsed interpretation data
|
|
185
|
+
# @return [Identifiers::Interpretation] the constructed interpretation identifier
|
|
186
|
+
def build_interpretation(parsed)
|
|
187
|
+
base_attrs = extract_base_attributes(parsed)
|
|
188
|
+
base_class = determine_identifier_class(base_attrs)
|
|
189
|
+
base = base_class.new(**base_attrs)
|
|
190
|
+
|
|
191
|
+
Identifiers::Interpretation.new(
|
|
192
|
+
base: base,
|
|
193
|
+
)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
# Build an Addendum identifier from "Addendum X to Standard" format
|
|
197
|
+
# @param parsed [Hash] the parsed addendum data
|
|
198
|
+
# @return [Identifiers::Addendum] the constructed addendum identifier
|
|
199
|
+
def build_addendum_from_identifier(parsed)
|
|
200
|
+
base_attrs = extract_base_attributes(parsed)
|
|
201
|
+
base_class = determine_identifier_class(base_attrs)
|
|
202
|
+
base = base_class.new(**base_attrs)
|
|
203
|
+
|
|
204
|
+
addendum_code = extract_value(parsed[:addendum_code])
|
|
205
|
+
addendum_date = extract_addendum_date(parsed[:addendum_year])
|
|
206
|
+
|
|
207
|
+
Identifiers::Addendum.new(
|
|
208
|
+
base: base,
|
|
209
|
+
addendum_code: addendum_code,
|
|
210
|
+
addendum_date: addendum_date,
|
|
211
|
+
)
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# Build an Addendum identifier from "ASHRAE Addendum X to Standard" format
|
|
215
|
+
# @param parsed [Hash] the parsed publisher addendum data
|
|
216
|
+
# @return [Identifiers::Addendum] the constructed addendum identifier
|
|
217
|
+
def build_publisher_addendum(parsed)
|
|
218
|
+
base_attrs = {
|
|
219
|
+
type: extract_value(parsed[:type]),
|
|
220
|
+
number: extract_value(parsed[:code]),
|
|
221
|
+
year: extract_value(parsed[:year]),
|
|
222
|
+
}
|
|
223
|
+
base_class = determine_identifier_class(base_attrs)
|
|
224
|
+
base = base_class.new(**base_attrs)
|
|
225
|
+
|
|
226
|
+
addendum_code = extract_value(parsed[:addendum_code])
|
|
227
|
+
addendum_date = extract_addendum_date(parsed[:addendum_year])
|
|
228
|
+
|
|
229
|
+
Identifiers::Addendum.new(
|
|
230
|
+
base: base,
|
|
231
|
+
addendum_code: addendum_code,
|
|
232
|
+
addendum_date: addendum_date,
|
|
233
|
+
)
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
# Build an Addendum identifier from "ASHRAE Addendum X to ANSI/ASHRAE Standard Y-YYYY" format
|
|
237
|
+
# @param parsed [Hash] the parsed publisher addendum with copublisher data
|
|
238
|
+
# @return [Identifiers::Addendum] the constructed addendum identifier
|
|
239
|
+
def build_publisher_addendum_copublisher(parsed)
|
|
240
|
+
base_attrs = {
|
|
241
|
+
copublisher: extract_value(parsed[:copublisher]),
|
|
242
|
+
type: extract_value(parsed[:type]) || "Standard",
|
|
243
|
+
number: extract_value(parsed[:code]),
|
|
244
|
+
year: extract_value(parsed[:year]),
|
|
245
|
+
}
|
|
246
|
+
base_class = determine_identifier_class(base_attrs)
|
|
247
|
+
base = base_class.new(**base_attrs)
|
|
248
|
+
|
|
249
|
+
addendum_code = extract_value(parsed[:addendum_code])
|
|
250
|
+
addendum_date = extract_addendum_date(parsed[:addendum_year])
|
|
251
|
+
|
|
252
|
+
Identifiers::Addendum.new(
|
|
253
|
+
base: base,
|
|
254
|
+
addendum_code: addendum_code,
|
|
255
|
+
addendum_date: addendum_date,
|
|
256
|
+
)
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
# Build an Addendum identifier from "ANSI/ASHRAE Addendum X to ANSI/ASHRAE 34-2024" (no type) format
|
|
260
|
+
# @param parsed [Hash] the parsed addendum data with code_with_year
|
|
261
|
+
# @return [Identifiers::Addendum] the constructed addendum identifier
|
|
262
|
+
def build_addendum_no_type(parsed)
|
|
263
|
+
# Extract copublisher and code_with_year data
|
|
264
|
+
base_attrs = {}
|
|
265
|
+
if parsed[:copublisher]
|
|
266
|
+
base_attrs[:copublisher] =
|
|
267
|
+
extract_value(parsed[:copublisher])
|
|
268
|
+
end
|
|
269
|
+
base_attrs[:type] = "Standard" # Default to Standard when type is missing
|
|
270
|
+
|
|
271
|
+
# Extract code and year from code_with_year
|
|
272
|
+
if parsed[:code_with_year]
|
|
273
|
+
code_year_data = parsed[:code_with_year]
|
|
274
|
+
if code_year_data && code_year_data[:code]
|
|
275
|
+
base_attrs[:number] =
|
|
276
|
+
extract_value(code_year_data[:code])
|
|
277
|
+
end
|
|
278
|
+
if code_year_data && code_year_data[:year]
|
|
279
|
+
base_attrs[:year] =
|
|
280
|
+
extract_value(code_year_data[:year])
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
base_class = determine_identifier_class(base_attrs)
|
|
285
|
+
base = base_class.new(**base_attrs)
|
|
286
|
+
|
|
287
|
+
addendum_code = extract_value(parsed[:addendum_code])
|
|
288
|
+
addendum_date = extract_addendum_date(parsed[:addendum_year])
|
|
289
|
+
|
|
290
|
+
Identifiers::Addendum.new(
|
|
291
|
+
base: base,
|
|
292
|
+
addendum_code: addendum_code,
|
|
293
|
+
addendum_date: addendum_date,
|
|
294
|
+
)
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
# Build an Addendum identifier from "ASHRAE Addendum X to ANSI/ASHRAE 62.1-2022" (publisher + copublisher, no type) format
|
|
298
|
+
# @param parsed [Hash] the parsed publisher addendum with copublisher and code_with_year data
|
|
299
|
+
# @return [Identifiers::Addendum] the constructed addendum identifier
|
|
300
|
+
def build_publisher_addendum_copublisher_no_type(parsed)
|
|
301
|
+
# Extract copublisher and code_with_year data
|
|
302
|
+
base_attrs = {}
|
|
303
|
+
if parsed[:copublisher]
|
|
304
|
+
base_attrs[:copublisher] =
|
|
305
|
+
extract_value(parsed[:copublisher])
|
|
306
|
+
end
|
|
307
|
+
base_attrs[:type] = "Standard" # Default to Standard when type is missing
|
|
308
|
+
|
|
309
|
+
# Extract code and year from code_with_year
|
|
310
|
+
if parsed[:code_with_year]
|
|
311
|
+
code_year_data = parsed[:code_with_year]
|
|
312
|
+
if code_year_data && code_year_data[:code]
|
|
313
|
+
base_attrs[:number] =
|
|
314
|
+
extract_value(code_year_data[:code])
|
|
315
|
+
end
|
|
316
|
+
if code_year_data && code_year_data[:year]
|
|
317
|
+
base_attrs[:year] =
|
|
318
|
+
extract_value(code_year_data[:year])
|
|
319
|
+
end
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
base_class = determine_identifier_class(base_attrs)
|
|
323
|
+
base = base_class.new(**base_attrs)
|
|
324
|
+
|
|
325
|
+
addendum_code = extract_value(parsed[:addendum_code])
|
|
326
|
+
addendum_date = extract_addendum_date(parsed[:addendum_year])
|
|
327
|
+
|
|
328
|
+
Identifiers::Addendum.new(
|
|
329
|
+
base: base,
|
|
330
|
+
addendum_code: addendum_code,
|
|
331
|
+
addendum_date: addendum_date,
|
|
332
|
+
)
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
# Build an Addendum identifier from "Standard X Addendum a" format
|
|
336
|
+
# @param parsed [Hash] the parsed standard addendum data
|
|
337
|
+
# @return [Identifiers::Addendum] the constructed addendum identifier
|
|
338
|
+
def build_standard_addendum(parsed)
|
|
339
|
+
base_attrs = extract_base_attributes(parsed)
|
|
340
|
+
base_class = determine_identifier_class(base_attrs)
|
|
341
|
+
base = base_class.new(**base_attrs)
|
|
342
|
+
|
|
343
|
+
addendum_code = extract_value(parsed[:addendum_code])
|
|
344
|
+
addendum_date = extract_addendum_date(parsed[:addendum_year])
|
|
345
|
+
|
|
346
|
+
Identifiers::Addendum.new(
|
|
347
|
+
base: base,
|
|
348
|
+
addendum_code: addendum_code,
|
|
349
|
+
addendum_date: addendum_date,
|
|
350
|
+
)
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
# Build a CombinedAddenda identifier from "ASHRAE Addenda X and Y to Standard Z-YYYY" format
|
|
354
|
+
# @param parsed [Hash] the parsed combined addenda data
|
|
355
|
+
# @return [Identifiers::CombinedAddenda] the constructed combined addenda identifier
|
|
356
|
+
def build_combined_addenda(parsed)
|
|
357
|
+
# Extract base identifier attributes
|
|
358
|
+
# Handle code_with_year format (used in Formats 5 and 6)
|
|
359
|
+
base_attrs = {}
|
|
360
|
+
|
|
361
|
+
if parsed[:code_with_year]
|
|
362
|
+
code_year_data = parsed[:code_with_year]
|
|
363
|
+
if code_year_data && code_year_data[:code]
|
|
364
|
+
base_attrs[:number] =
|
|
365
|
+
extract_value(code_year_data[:code])
|
|
366
|
+
end
|
|
367
|
+
if code_year_data && code_year_data[:year]
|
|
368
|
+
base_attrs[:year] =
|
|
369
|
+
extract_value(code_year_data[:year])
|
|
370
|
+
end
|
|
371
|
+
else
|
|
372
|
+
base_attrs[:type] = extract_value(parsed[:type]) || "Standard"
|
|
373
|
+
base_attrs[:number] = extract_value(parsed[:code])
|
|
374
|
+
base_attrs[:year] = extract_value(parsed[:year])
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
if parsed[:copublisher]
|
|
378
|
+
base_attrs[:copublisher] =
|
|
379
|
+
extract_value(parsed[:copublisher])
|
|
380
|
+
end
|
|
381
|
+
if parsed[:publisher]
|
|
382
|
+
base_attrs[:publisher] =
|
|
383
|
+
extract_value(parsed[:publisher])
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
base_class = determine_identifier_class(base_attrs)
|
|
387
|
+
base = base_class.new(**base_attrs)
|
|
388
|
+
|
|
389
|
+
# Build the addendum_codes string from first code and additional codes
|
|
390
|
+
first_code = extract_value(parsed[:addendum_code])
|
|
391
|
+
additional_codes = parsed[:additional_codes]
|
|
392
|
+
|
|
393
|
+
# Handle Format 4: "ASHRAE Addenda to Standard" (no specific codes)
|
|
394
|
+
if first_code.nil? && additional_codes.nil?
|
|
395
|
+
# No codes specified - return nil or empty string for addendum_codes
|
|
396
|
+
addendum_codes_str = nil
|
|
397
|
+
else
|
|
398
|
+
addendum_codes_str = first_code || ""
|
|
399
|
+
if additional_codes
|
|
400
|
+
# additional_codes is an array that can contain:
|
|
401
|
+
# - hashes: {:addendum_code=>"f"}
|
|
402
|
+
# - strings: "a", "b", etc.
|
|
403
|
+
# We need to format them as comma-separated
|
|
404
|
+
code_list = []
|
|
405
|
+
additional_codes.each do |code|
|
|
406
|
+
code_str = if code.is_a?(Hash)
|
|
407
|
+
# Extract from {:addendum_code=>"f"}
|
|
408
|
+
extract_value(code[:addendum_code])
|
|
409
|
+
else
|
|
410
|
+
# Direct string value
|
|
411
|
+
extract_value(code)
|
|
412
|
+
end
|
|
413
|
+
code_list << code_str if code_str && code_str != "and"
|
|
414
|
+
end
|
|
415
|
+
# Join with commas
|
|
416
|
+
addendum_codes_str += ", #{code_list.join(', ')}" unless code_list.empty?
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
Identifiers::CombinedAddenda.new(
|
|
421
|
+
base: base,
|
|
422
|
+
addendum_codes: addendum_codes_str,
|
|
423
|
+
)
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
# Build an AddendaPackage identifier from "ASHRAE Standard X-YYYY: Addenda Supplement Package" format
|
|
427
|
+
# @param parsed [Hash] the parsed addenda package data
|
|
428
|
+
# @return [Identifiers::AddendaPackage] the constructed addenda package identifier
|
|
429
|
+
def build_addenda_package(parsed)
|
|
430
|
+
base_attrs = extract_base_attributes(parsed)
|
|
431
|
+
base_class = determine_identifier_class(base_attrs)
|
|
432
|
+
base = base_class.new(**base_attrs)
|
|
433
|
+
|
|
434
|
+
package_description = extract_value(parsed[:package_description])
|
|
435
|
+
|
|
436
|
+
Identifiers::AddendaPackage.new(
|
|
437
|
+
base: base,
|
|
438
|
+
package_description: package_description,
|
|
439
|
+
)
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
# Extract base identifier attributes from parsed data
|
|
443
|
+
# @param parsed [Hash] the parsed data
|
|
444
|
+
# @return [Hash] attributes for base identifier
|
|
445
|
+
def extract_base_attributes(parsed)
|
|
446
|
+
# Unwrap the `:base` subtree the supplement grammars nest the base
|
|
447
|
+
# document under. Builder#build does this for the plain-identifier
|
|
448
|
+
# path, but the five supplement builders that call this method all
|
|
449
|
+
# passed the WHOLE parse hash — so every lookup below missed and the
|
|
450
|
+
# base was built with nothing. 318 Errata rendered as the identical
|
|
451
|
+
# string "ASHRAE Standard Errata"; doing it here fixes all five call
|
|
452
|
+
# sites at once, rather than repeating the unwrap in each.
|
|
453
|
+
parsed = parsed[:base] if parsed.is_a?(Hash) && parsed[:base]
|
|
454
|
+
|
|
455
|
+
attributes = {}
|
|
456
|
+
|
|
457
|
+
if parsed[:publisher]
|
|
458
|
+
attributes[:publisher] =
|
|
459
|
+
extract_value(parsed[:publisher])
|
|
460
|
+
end
|
|
461
|
+
if parsed[:copublisher]
|
|
462
|
+
attributes[:copublisher] =
|
|
463
|
+
extract_value(parsed[:copublisher])
|
|
464
|
+
end
|
|
465
|
+
# Default to "Standard" if type is not present
|
|
466
|
+
attributes[:type] = extract_value(parsed[:type]) || "Standard"
|
|
467
|
+
|
|
468
|
+
# Handle code_with_year format
|
|
469
|
+
if parsed[:code_with_year]
|
|
470
|
+
code_year_data = parsed[:code_with_year]
|
|
471
|
+
if code_year_data && code_year_data[:code]
|
|
472
|
+
attributes[:number] =
|
|
473
|
+
extract_value(code_year_data[:code])
|
|
474
|
+
end
|
|
475
|
+
if code_year_data && code_year_data[:year]
|
|
476
|
+
attributes[:year] =
|
|
477
|
+
extract_value(code_year_data[:year])
|
|
478
|
+
end
|
|
479
|
+
else
|
|
480
|
+
attributes[:number] = extract_value(parsed[:code]) if parsed[:code]
|
|
481
|
+
attributes[:year] = extract_value(parsed[:year]) if parsed[:year]
|
|
482
|
+
end
|
|
483
|
+
|
|
484
|
+
attributes[:suffix] = extract_value(parsed[:suffix]) if parsed[:suffix]
|
|
485
|
+
if parsed[:reaffirmed]
|
|
486
|
+
attributes[:reaffirmed] =
|
|
487
|
+
extract_value(parsed[:reaffirmed])
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
attributes
|
|
491
|
+
end
|
|
492
|
+
|
|
493
|
+
# Extract errata date from parsed errata_date data
|
|
494
|
+
# @param errata_date [Hash] the parsed errata_date hash
|
|
495
|
+
# @return [String, nil] the formatted errata date string
|
|
496
|
+
def extract_errata_date(errata_date)
|
|
497
|
+
return nil unless errata_date
|
|
498
|
+
|
|
499
|
+
# errata_date contains { month_name: "...", errata_year: "..." }
|
|
500
|
+
# We need to format this as "Month Day, Year"
|
|
501
|
+
extract_value(errata_date[:month_name])
|
|
502
|
+
extract_value(errata_date[:errata_year])
|
|
503
|
+
# Note: day is captured as digit.repeat(1,2) but not named in the parser
|
|
504
|
+
# We'll need to reconstruct from the raw string or enhance parser
|
|
505
|
+
nil # For now, return nil - parser enhancement needed
|
|
506
|
+
end
|
|
507
|
+
|
|
508
|
+
# Extract addendum date from parsed addendum_year data
|
|
509
|
+
# @param addendum_year [String, Hash] the parsed addendum year data
|
|
510
|
+
# @return [String, nil] the formatted addendum date string
|
|
511
|
+
def extract_addendum_date(addendum_year)
|
|
512
|
+
return nil unless addendum_year
|
|
513
|
+
|
|
514
|
+
# Date extraction would require more detailed parser
|
|
515
|
+
nil
|
|
516
|
+
end
|
|
517
|
+
end
|
|
518
|
+
end
|
|
519
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# The ASHRAE flavor base class is Pubid::Ashrae::Identifier — a real
|
|
4
|
+
# Pubid::Identifier subclass that every concrete ASHRAE identifier descends
|
|
5
|
+
# from, so `is_a?` identity and the shared polymorphic `from_hash` work natively
|
|
6
|
+
# (no facade needed). Its body and `.parse` live in identifiers/base.rb; this
|
|
7
|
+
# file just ensures it is loaded when a consumer references
|
|
8
|
+
# Pubid::Ashrae::Identifier directly.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Ashrae
|
|
7
|
+
module Identifiers
|
|
8
|
+
# AddendaPackage identifier for ASHRAE addenda collection packages
|
|
9
|
+
# Represents packages that contain multiple addendums
|
|
10
|
+
# Examples:
|
|
11
|
+
# - ASHRAE Standard 52.2-1999: Addenda Supplement Package (Contains Addendum a)
|
|
12
|
+
# - ASHRAE Standard 52.2-2007 Addenda Supplement Package (Contains Addendum b)
|
|
13
|
+
# - ASHRAE Standard 62.2-2004: Addenda Supplement Package (Contains Addendum g) (PDF)
|
|
14
|
+
class AddendaPackage < SupplementIdentifier
|
|
15
|
+
attribute :package_description, :string # e.g., "Addenda Supplement Package"
|
|
16
|
+
|
|
17
|
+
# See Errata.
|
|
18
|
+
def mr_supplement_suffix
|
|
19
|
+
["pkg", mr_sanitize(package_description)]
|
|
20
|
+
.compact.reject(&:empty?).join(".")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
TYPED_STAGES = [
|
|
24
|
+
Components::TypedStage.new(
|
|
25
|
+
abbr: ["Addenda Supplement Package", "Addenda Package"],
|
|
26
|
+
type_code: "addenda_package",
|
|
27
|
+
stage_code: "published",
|
|
28
|
+
),
|
|
29
|
+
].freeze
|
|
30
|
+
|
|
31
|
+
def self.type
|
|
32
|
+
{ key: :addenda_package, title: "ASHRAE Addenda Package",
|
|
33
|
+
short: "Addenda Package" }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def copublisher
|
|
37
|
+
base&.copublisher
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Ashrae
|
|
7
|
+
module Identifiers
|
|
8
|
+
# Addendum identifier for ASHRAE standards and guidelines
|
|
9
|
+
# Examples:
|
|
10
|
+
# - ASHRAE Addendum a to Standard 15-2001
|
|
11
|
+
# - ASHRAE Addendum a to Guideline 1.4-2019
|
|
12
|
+
# - ANSI/ASHRAE Addendum a to ANSI/ASHRAE Standard 15-2019
|
|
13
|
+
# - ASHRAE Standard 15-2013 Addendum a
|
|
14
|
+
class Addendum < SupplementIdentifier
|
|
15
|
+
attribute :addendum_code, :string # a, b, c, ..., aa, ab, ..., ba, etc.
|
|
16
|
+
attribute :addendum_date, :string # Optional date (January 22, 2019)
|
|
17
|
+
|
|
18
|
+
# See Errata: the renderer must recurse into `base`. The addendum
|
|
19
|
+
# letter is what distinguishes addendum a from addendum b of one
|
|
20
|
+
# standard, so it belongs in the slug as well as in `==`.
|
|
21
|
+
def mr_supplement_suffix
|
|
22
|
+
["add", addendum_code&.to_s&.downcase]
|
|
23
|
+
.compact.reject(&:empty?).join(".")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
TYPED_STAGES = [
|
|
27
|
+
Components::TypedStage.new(
|
|
28
|
+
abbr: ["Addendum", "Addenda"],
|
|
29
|
+
type_code: "addendum",
|
|
30
|
+
stage_code: "published",
|
|
31
|
+
),
|
|
32
|
+
].freeze
|
|
33
|
+
|
|
34
|
+
def self.type
|
|
35
|
+
{ key: :addendum, title: "ASHRAE Addendum", short: "Addendum" }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def copublisher
|
|
39
|
+
base&.copublisher
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|