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,117 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ashrae
|
|
5
|
+
# Human-readable renderer for ASHRAE identifiers.
|
|
6
|
+
#
|
|
7
|
+
# Produces strings like:
|
|
8
|
+
# "ASHRAE Standard 15-2024"
|
|
9
|
+
# "ASHRAE Guideline 0-2019"
|
|
10
|
+
# "ASHRAE Addendum a to Standard 15-2001"
|
|
11
|
+
# "ASHRAE Standard 52.2-1999: Addenda Supplement Package"
|
|
12
|
+
# "ASHRAE Addenda c and d to Standard 15-1994"
|
|
13
|
+
# "ASHRAE Guideline 0-2005 Errata (September 28, 2011)"
|
|
14
|
+
# "Interpretations for Standard 15.2-2022"
|
|
15
|
+
#
|
|
16
|
+
# The renderer is registered as the +:human+ format in the ASHRAE format
|
|
17
|
+
# registry and invoked via +render(format: :human)+.
|
|
18
|
+
class Renderer < ::Pubid::Renderers::Base
|
|
19
|
+
def render(context: nil, **_opts)
|
|
20
|
+
id = @id
|
|
21
|
+
|
|
22
|
+
case id
|
|
23
|
+
when Identifiers::Addendum
|
|
24
|
+
render_addendum(id)
|
|
25
|
+
when Identifiers::AddendaPackage
|
|
26
|
+
render_addenda_package(id)
|
|
27
|
+
when Identifiers::CombinedAddenda
|
|
28
|
+
render_combined_addenda(id)
|
|
29
|
+
when Identifiers::Errata
|
|
30
|
+
render_errata(id)
|
|
31
|
+
when Identifiers::Interpretation
|
|
32
|
+
render_interpretation(id)
|
|
33
|
+
when SingleIdentifier
|
|
34
|
+
render_single(id)
|
|
35
|
+
else
|
|
36
|
+
render_single(id)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
# SingleIdentifier (Standard, Guideline): "ASHRAE Standard 15-2024"
|
|
43
|
+
def render_single(id)
|
|
44
|
+
parts = []
|
|
45
|
+
parts << id.publisher if id.publisher
|
|
46
|
+
parts << id.type.to_s if id.type
|
|
47
|
+
result = parts.join(" ")
|
|
48
|
+
result += " " if result.length.positive?
|
|
49
|
+
result += id.number.to_s
|
|
50
|
+
result += "-#{id.year}" if id.year
|
|
51
|
+
result += " (#{id.amendment})" if id.amendment
|
|
52
|
+
result += id.suffix if id.suffix
|
|
53
|
+
result += " (RA#{id.reaffirmed})" if id.reaffirmed
|
|
54
|
+
result
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# Addendum: "ASHRAE Addendum a to Standard 15-2001"
|
|
58
|
+
def render_addendum(id)
|
|
59
|
+
return id.base.to_s unless id.base
|
|
60
|
+
|
|
61
|
+
base_type = id.base.type || "Standard"
|
|
62
|
+
|
|
63
|
+
if id.copublisher
|
|
64
|
+
"#{id.copublisher} Addendum #{id.addendum_code} to #{id.base}"
|
|
65
|
+
else
|
|
66
|
+
result = "ASHRAE Addendum #{id.addendum_code} to #{base_type} #{id.base.number}"
|
|
67
|
+
result += "-#{id.base.year}" if id.base.year
|
|
68
|
+
result
|
|
69
|
+
end.tap { |r| r << " (#{id.addendum_date})" if id.addendum_date }
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# AddendaPackage: "ASHRAE Standard 52.2-1999: Addenda Supplement Package"
|
|
73
|
+
def render_addenda_package(id)
|
|
74
|
+
return id.base.to_s unless id.base
|
|
75
|
+
|
|
76
|
+
result = "ASHRAE #{id.base.type || 'Standard'} #{id.base.number}"
|
|
77
|
+
result += "-#{id.base.year}" if id.base.year
|
|
78
|
+
result += ": Addenda #{id.package_description}" if id.package_description
|
|
79
|
+
result
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# CombinedAddenda: "ASHRAE Addenda c and d to Standard 15-1994"
|
|
83
|
+
def render_combined_addenda(id)
|
|
84
|
+
return id.base.to_s unless id.base
|
|
85
|
+
|
|
86
|
+
base_type = id.base.type || "Standard"
|
|
87
|
+
if id.addendum_codes
|
|
88
|
+
result = "ASHRAE Addenda #{id.addendum_codes} to #{base_type} #{id.base.number}"
|
|
89
|
+
else
|
|
90
|
+
result = "ASHRAE Addenda to #{base_type} #{id.base.number}"
|
|
91
|
+
end
|
|
92
|
+
result += "-#{id.base.year}" if id.base.year
|
|
93
|
+
result
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Errata: "ASHRAE Guideline 0-2005 Errata (September 28, 2011)"
|
|
97
|
+
def render_errata(id)
|
|
98
|
+
return id.base.to_s unless id.base
|
|
99
|
+
|
|
100
|
+
result = id.base.to_s
|
|
101
|
+
result += " Errata"
|
|
102
|
+
result += " (#{id.errata_date})" if id.errata_date
|
|
103
|
+
result
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# Interpretation: "Interpretations for Standard 15.2-2022"
|
|
107
|
+
def render_interpretation(id)
|
|
108
|
+
return id.base.to_s unless id.base
|
|
109
|
+
|
|
110
|
+
base_type = id.base.type || "Standard"
|
|
111
|
+
result = "Interpretations for #{base_type} #{id.base.number}"
|
|
112
|
+
result += "-#{id.base.year}" if id.base.year
|
|
113
|
+
result
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Ashrae
|
|
7
|
+
# Base class for supplement identifiers (addendums, errata, interpretations)
|
|
8
|
+
# Supplements modify or add to a base document
|
|
9
|
+
class SupplementIdentifier < Identifier
|
|
10
|
+
attribute :base, Identifier, polymorphic: true
|
|
11
|
+
|
|
12
|
+
# Delegate publisher to base
|
|
13
|
+
def publisher
|
|
14
|
+
base&.publisher
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Delegate the document code to the base standard.
|
|
18
|
+
#
|
|
19
|
+
# The BODY had to move with the `code` -> `number` rename — it was
|
|
20
|
+
# `base&.code`, and `code` no longer exists anywhere in the hierarchy, so
|
|
21
|
+
# it raised NoMethodError on every Errata/Addendum/CombinedAddenda/
|
|
22
|
+
# AddendaPackage/Interpretation. Nothing inside lib/pubid/ashrae calls
|
|
23
|
+
# it, which is exactly why the suite stayed green while a public method
|
|
24
|
+
# on five types was broken.
|
|
25
|
+
#
|
|
26
|
+
# The NAME deliberately stays `code`. Renaming it to `number` looks
|
|
27
|
+
# tidier and is wrong twice over: `number` is an inherited lutaml
|
|
28
|
+
# attribute typed Components::Code, so a String-returning method of that
|
|
29
|
+
# name makes `to_hash` raise IncorrectModelError on every supplement —
|
|
30
|
+
# and even typed correctly it would serialize a duplicate of the base's
|
|
31
|
+
# number onto the wrapper. `code` is not an attribute anywhere, so it is
|
|
32
|
+
# free to be a plain reader. Use `#root.number` for the index key.
|
|
33
|
+
def code
|
|
34
|
+
base&.number
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ashrae
|
|
5
|
+
class UrnGenerator < Pubid::UrnGenerator::Base
|
|
6
|
+
# A supplement carries no number of its own — only the two
|
|
7
|
+
# single-document leaves declare one — so reach it through #root, which
|
|
8
|
+
# walks `base` to the standard the supplement attaches to. Without the
|
|
9
|
+
# fallback every Errata/Addendum URN lost its number when `code` moved
|
|
10
|
+
# off the shared base onto the leaves.
|
|
11
|
+
def urn_number
|
|
12
|
+
num = identifier.number || identifier.root.number
|
|
13
|
+
return nil if num.nil? || num.to_s.empty?
|
|
14
|
+
|
|
15
|
+
num.to_s
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def urn_suffix
|
|
19
|
+
identifier.suffix&.to_s&.downcase
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def urn_amendment
|
|
23
|
+
"amd.#{identifier.amendment}" if identifier.amendment
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def urn_reaffirmed
|
|
27
|
+
"reaff.#{identifier.reaffirmed}" if identifier.reaffirmed
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def urn_copublisher
|
|
31
|
+
"copub.#{identifier.copublisher.to_s.downcase}" if identifier.copublisher
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def urn_addendum
|
|
35
|
+
val = maybe(:addendum)
|
|
36
|
+
"add.#{val}" if val
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def generate
|
|
40
|
+
parts = ["urn", "ashrae"]
|
|
41
|
+
parts << urn_number if urn_number
|
|
42
|
+
parts << urn_year if urn_year
|
|
43
|
+
parts << identifier.type.to_s.downcase if identifier.type
|
|
44
|
+
parts << urn_suffix if urn_suffix
|
|
45
|
+
parts << urn_amendment if urn_amendment
|
|
46
|
+
parts << urn_reaffirmed if urn_reaffirmed
|
|
47
|
+
parts << urn_copublisher if urn_copublisher
|
|
48
|
+
|
|
49
|
+
parts[1] = identifier.publisher.to_s.downcase if identifier.publisher
|
|
50
|
+
|
|
51
|
+
parts << urn_addendum if urn_addendum
|
|
52
|
+
|
|
53
|
+
parts.join(":")
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ashrae
|
|
5
|
+
# Parses ASHRAE URNs back into identifiers.
|
|
6
|
+
#
|
|
7
|
+
# UrnGenerator emits:
|
|
8
|
+
# urn:ashrae:{number}:{year}:{type}[:{suffix}][:amd.{N}][:reaff.{Y}]
|
|
9
|
+
#
|
|
10
|
+
# The type token follows the year; the human-readable form prefixes the
|
|
11
|
+
# type ("ASHRAE Standard 90.1-2019"). The year separator is `-`.
|
|
12
|
+
#
|
|
13
|
+
# Examples:
|
|
14
|
+
# - urn:ashrae:90.1:2019:standard → ASHRAE Standard 90.1-2019
|
|
15
|
+
class UrnParser < Pubid::UrnParser::Base
|
|
16
|
+
def parse_urn(urn)
|
|
17
|
+
body = strip_namespace(urn)
|
|
18
|
+
parts = split_parts(body)
|
|
19
|
+
|
|
20
|
+
number, year = parts
|
|
21
|
+
text = "ASHRAE Standard #{number}"
|
|
22
|
+
text += "-#{year}" if year
|
|
23
|
+
flavor_parse(text)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
data/lib/pubid/ashrae.rb
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Ashrae
|
|
5
|
+
extend Pubid::PrefixesSupport
|
|
6
|
+
|
|
7
|
+
# ASHRAE publisher token; the ANSI/ASHRAE joint form comes from
|
|
8
|
+
# Pubid::JOINT_PREFIXES.
|
|
9
|
+
PREFIXES = ["ASHRAE"].freeze
|
|
10
|
+
|
|
11
|
+
autoload :Builder, "#{__dir__}/ashrae/builder"
|
|
12
|
+
autoload :Identifier, "#{__dir__}/ashrae/identifiers/base"
|
|
13
|
+
autoload :Identifiers, "#{__dir__}/ashrae/identifiers"
|
|
14
|
+
autoload :Parser, "#{__dir__}/ashrae/parser"
|
|
15
|
+
autoload :Renderer, "#{__dir__}/ashrae/renderer"
|
|
16
|
+
autoload :SingleIdentifier, "#{__dir__}/ashrae/single_identifier"
|
|
17
|
+
autoload :SupplementIdentifier, "#{__dir__}/ashrae/supplement_identifier"
|
|
18
|
+
autoload :UrnGenerator, "#{__dir__}/ashrae/urn_generator"
|
|
19
|
+
autoload :UrnParser, "#{__dir__}/ashrae/urn_parser"
|
|
20
|
+
|
|
21
|
+
def self.parse(identifier)
|
|
22
|
+
unless identifier.is_a?(String)
|
|
23
|
+
raise Pubid::Errors::InvalidInputError,
|
|
24
|
+
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
28
|
+
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
Identifier.parse(identifier)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Auto-discover all identifier types from the Identifiers namespace
|
|
35
|
+
# @return [Array<Class>] identifier classes that define a self.type Hash
|
|
36
|
+
def self.identifier_types
|
|
37
|
+
@identifier_types ||= Identifiers.constants
|
|
38
|
+
.filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
|
|
39
|
+
.select { |c| c.is_a?(Class) && c.singleton_methods(false).include?(:type) }
|
|
40
|
+
.select { |c| c.type.is_a?(Hash) }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Build typed stage index from identifier types
|
|
44
|
+
# @return [Array<Pubid::Components::TypedStage>] all typed stages
|
|
45
|
+
def self.all_typed_stages
|
|
46
|
+
@all_typed_stages ||= identifier_types.flat_map do |klass|
|
|
47
|
+
if klass.const_defined?(:TYPED_STAGES)
|
|
48
|
+
klass.const_get(:TYPED_STAGES)
|
|
49
|
+
else
|
|
50
|
+
[]
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Lookup: type code -> identifier class
|
|
56
|
+
# @param code [String, Symbol] the type key to find
|
|
57
|
+
# @return [Class, nil] the matching identifier class
|
|
58
|
+
def self.locate_type(code)
|
|
59
|
+
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Lookup: abbreviation -> typed stage
|
|
63
|
+
# @param abbr [String, Symbol] the abbreviation to find
|
|
64
|
+
# @return [Pubid::Components::TypedStage, nil] the matching typed stage
|
|
65
|
+
def self.locate_stage(abbr)
|
|
66
|
+
abbr_str = abbr.to_s.upcase
|
|
67
|
+
all_typed_stages.find { |s| s.abbr.any? { |a| a.to_s.upcase == abbr_str } }
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Register Uashrae flavor with the registry
|
|
73
|
+
Pubid::Registry.register(:ashrae, Pubid::Ashrae)
|
|
74
|
+
|
|
75
|
+
# Per-flavor format registry: inherits global formats, overrides :human
|
|
76
|
+
Pubid::Ashrae::Identifier.format_registry = Pubid::FormatRegistry.new(parent: Pubid::Identifier.format_registry)
|
|
77
|
+
Pubid::Ashrae::Identifier.format_registry.register(:human, renderer: Pubid::Ashrae::Renderer)
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Asme
|
|
5
|
+
class Builder
|
|
6
|
+
def build(parsed_hash)
|
|
7
|
+
identifier = Identifiers::Standard.new
|
|
8
|
+
|
|
9
|
+
# Handle joint publishers
|
|
10
|
+
if parsed_hash[:joint_publisher]
|
|
11
|
+
identifier.joint_publisher = parsed_hash[:joint_publisher].to_s
|
|
12
|
+
identifier.publisher = parsed_hash[:joint_publisher].to_s
|
|
13
|
+
elsif parsed_hash[:first_publisher]
|
|
14
|
+
# CSA/ASME or API/ASME format
|
|
15
|
+
identifier.first_publisher = parsed_hash[:first_publisher].to_s
|
|
16
|
+
identifier.first_code = parsed_hash[:first_code].to_s
|
|
17
|
+
identifier.second_publisher = parsed_hash[:second_publisher].to_s
|
|
18
|
+
identifier.publisher = "#{parsed_hash[:first_publisher]}/#{parsed_hash[:second_publisher]}"
|
|
19
|
+
else
|
|
20
|
+
# Standard ASME
|
|
21
|
+
identifier.publisher = "ASME"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# The code is stored as flat index columns on the leaf (see
|
|
25
|
+
# Identifiers::Standard) — `number` is what relaton-index keys on — so
|
|
26
|
+
# the Code built below is unpacked rather than assigned.
|
|
27
|
+
if parsed_hash[:designator]
|
|
28
|
+
identifier.number = build_code(parsed_hash).to_s
|
|
29
|
+
elsif parsed_hash[:number]
|
|
30
|
+
# A joint-published reference ("ISO/ASME 14414-2015") parses to a bare
|
|
31
|
+
# `number` with no designator. The designator-only guard above dropped
|
|
32
|
+
# it, so the document number was lost from BOTH the identifier and its
|
|
33
|
+
# rendering: `to_s` was "ISO/ASME-2015". Pre-existing; recovering it
|
|
34
|
+
# is what gives these ids an index key.
|
|
35
|
+
identifier.number = parsed_hash[:number].to_s
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Set PTC suffix
|
|
39
|
+
if parsed_hash[:ptc_suffix]
|
|
40
|
+
identifier.ptc_suffix = parsed_hash[:ptc_suffix].to_s
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Set year
|
|
44
|
+
if parsed_hash[:year]
|
|
45
|
+
identifier.year = parsed_hash[:year].to_s
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Set draft year
|
|
49
|
+
if parsed_hash[:draft_year]
|
|
50
|
+
identifier.draft_year = parsed_hash[:draft_year].to_s
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Set reaffirmation
|
|
54
|
+
if parsed_hash[:reaffirmation]
|
|
55
|
+
identifier.reaffirmation = "R#{parsed_hash[:reaffirmation]}"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Set language (including lang_suffix from BPVC)
|
|
59
|
+
if parsed_hash[:language]
|
|
60
|
+
identifier.language = parsed_hash[:language].to_s
|
|
61
|
+
elsif parsed_hash[:lang_suffix]
|
|
62
|
+
identifier.language = parsed_hash[:lang_suffix].to_s
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Set CSA number (for ASME/CSA format)
|
|
66
|
+
if parsed_hash[:csa_number]
|
|
67
|
+
identifier.csa_number = parsed_hash[:csa_number].to_s
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Set handbook flag
|
|
71
|
+
if parsed_hash[:handbook]
|
|
72
|
+
identifier.handbook = true
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Set revision note
|
|
76
|
+
if parsed_hash[:revision_note]
|
|
77
|
+
identifier.revision_note = "[#{parsed_hash[:revision_note]}]"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Set parenthetical revision
|
|
81
|
+
if parsed_hash[:ref_standard]
|
|
82
|
+
# Extract the type of revision (Revision/Proposed revision)
|
|
83
|
+
ref = parsed_hash[:ref_standard].to_s
|
|
84
|
+
if parsed_hash[:ref_standard].to_s =~ /^(Proposed revision|Revision) of (.+)$/
|
|
85
|
+
identifier.parenthetical_revision = "(#{$1} of #{$2})"
|
|
86
|
+
else
|
|
87
|
+
identifier.parenthetical_revision = "(Revision of #{ref})"
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
identifier
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
private
|
|
95
|
+
|
|
96
|
+
def build_code(parsed_hash)
|
|
97
|
+
# Handle BPVC subdivision
|
|
98
|
+
if parsed_hash[:designator].is_a?(Hash) && parsed_hash[:designator][:bpvc_code]
|
|
99
|
+
bpvc_data = parsed_hash[:designator][:bpvc_code]
|
|
100
|
+
|
|
101
|
+
# Build BPVC designator string
|
|
102
|
+
designator_str = "BPVC"
|
|
103
|
+
|
|
104
|
+
if bpvc_data[:special]
|
|
105
|
+
# BPVC COMPLETE CODE BIND
|
|
106
|
+
designator_str = "BPVC COMPLETE CODE BIND"
|
|
107
|
+
elsif bpvc_data[:subdivision] && bpvc_data[:subdivision][:ssc_code]
|
|
108
|
+
# BPVC.SSC.XI.II.V.IX pattern
|
|
109
|
+
ssc_sections = bpvc_data[:subdivision][:ssc_sections]
|
|
110
|
+
sections_str = if ssc_sections.is_a?(Array)
|
|
111
|
+
ssc_sections.join(".")
|
|
112
|
+
else
|
|
113
|
+
ssc_sections.to_s
|
|
114
|
+
end
|
|
115
|
+
designator_str = "BPVC.SSC.#{sections_str}"
|
|
116
|
+
elsif bpvc_data[:subdivision] && bpvc_data[:subdivision][:case_code]
|
|
117
|
+
# BPVC.CC.BPV or BPVC.CC.NC.XI - extract from subdivision hash
|
|
118
|
+
cc = bpvc_data[:subdivision][:case_code].to_s
|
|
119
|
+
case_sub = bpvc_data[:subdivision][:case_sub]&.to_s
|
|
120
|
+
|
|
121
|
+
designator_str = case_sub && !case_sub.empty? ? "BPVC.CC.#{cc}.#{case_sub}" : "BPVC.CC.#{cc}"
|
|
122
|
+
elsif bpvc_data[:case_code]
|
|
123
|
+
# Dash notation: BPVC-CC-BPV
|
|
124
|
+
cc = bpvc_data[:case_code].to_s
|
|
125
|
+
designator_str = "BPVC-CC-#{cc}"
|
|
126
|
+
elsif bpvc_data[:subdivision]
|
|
127
|
+
# Standard subdivision
|
|
128
|
+
section = bpvc_data[:subdivision][:section].to_s
|
|
129
|
+
subsection = bpvc_data[:subdivision][:subsection].to_s
|
|
130
|
+
sub_subsection = bpvc_data[:subdivision][:sub_subsection].to_s
|
|
131
|
+
lang_suffix = bpvc_data[:subdivision][:lang_suffix].to_s
|
|
132
|
+
|
|
133
|
+
parts = [section, subsection, sub_subsection].reject do |p|
|
|
134
|
+
p.nil? || p.empty?
|
|
135
|
+
end
|
|
136
|
+
designator_str = "BPVC.#{parts.join('.')}"
|
|
137
|
+
designator_str += "_#{lang_suffix}" if !lang_suffix.empty?
|
|
138
|
+
else
|
|
139
|
+
# Fallback (shouldn't reach here)
|
|
140
|
+
designator_str = "BPVC"
|
|
141
|
+
end
|
|
142
|
+
number_str = ""
|
|
143
|
+
|
|
144
|
+
return Components::Code.new(designator: designator_str,
|
|
145
|
+
number: number_str)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# For joint published, handle special cases
|
|
149
|
+
designator_str = parsed_hash[:designator].to_s
|
|
150
|
+
|
|
151
|
+
# Normalize "V V" to "V&V"
|
|
152
|
+
designator_str = "V&V" if designator_str == "V V"
|
|
153
|
+
|
|
154
|
+
# Existing code for non-BPVC designators
|
|
155
|
+
code = Components::Code.new
|
|
156
|
+
code.designator = designator_str
|
|
157
|
+
code.number = parsed_hash[:number].to_s if parsed_hash[:number]
|
|
158
|
+
code
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
end
|
|
162
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Asme
|
|
7
|
+
module Components
|
|
8
|
+
# Code component for ASME identifiers.
|
|
9
|
+
#
|
|
10
|
+
# Stays independent of Pubid::Components::Code because ASME uses
|
|
11
|
+
# +designator+ (a flavor-specific letter prefix) plus +number+.
|
|
12
|
+
class Code < Lutaml::Model::Serializable
|
|
13
|
+
attribute :designator, :string
|
|
14
|
+
attribute :number, :string
|
|
15
|
+
|
|
16
|
+
def to_s
|
|
17
|
+
render
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def render(context: nil)
|
|
21
|
+
"#{designator}#{number}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Asme
|
|
5
|
+
class Identifier < Pubid::Identifier
|
|
6
|
+
def self.parse(str)
|
|
7
|
+
unless str.is_a?(String)
|
|
8
|
+
raise Pubid::Errors::InvalidInputError,
|
|
9
|
+
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
if str.length > Pubid::MAX_INPUT_LENGTH
|
|
13
|
+
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
parser = Parser.new
|
|
17
|
+
builder = Builder.new
|
|
18
|
+
|
|
19
|
+
parsed = parser.parse(str)
|
|
20
|
+
builder.build(parsed)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Asme
|
|
5
|
+
module Identifiers
|
|
6
|
+
class Standard < Base
|
|
7
|
+
# --- Index columns -------------------------------------------------
|
|
8
|
+
#
|
|
9
|
+
# relaton-index sorts and bsearches every row on
|
|
10
|
+
# `id.root.number.to_s`. ASME used to keep the code inside an
|
|
11
|
+
# Asme::Components::Code under a `code` attribute, leaving the
|
|
12
|
+
# inherited `number` nil and every row keyed "".
|
|
13
|
+
#
|
|
14
|
+
# `number` holds the WHOLE printed code — "B18.3", "A112.19.12",
|
|
15
|
+
# "BPVC-CC-BPV" — not a designator/number split.
|
|
16
|
+
#
|
|
17
|
+
# The split looks tempting (it is what IEEE does) but it cannot key
|
|
18
|
+
# this corpus: 152 of the 731 fixture ids are Boiler and Pressure
|
|
19
|
+
# Vessel Code documents whose entire identity IS the designator
|
|
20
|
+
# ("BPVC COMPLETE CODE BIND", "BPVC.CC.BPV") with no numeric part at
|
|
21
|
+
# all. Splitting leaves every one of them with an empty key, and
|
|
22
|
+
# inventing a number for them would be inventing data.
|
|
23
|
+
#
|
|
24
|
+
# Nothing is lost by joining: Components::Code#render is a plain
|
|
25
|
+
# concatenation of designator and number, and the only readers of
|
|
26
|
+
# `code` anywhere in lib/pubid/asme are `code.to_s` (renderer.rb,
|
|
27
|
+
# urn_generator.rb). Keying on the whole code also clusters editions of
|
|
28
|
+
# one document, which is what relaton narrows on — an ASME reference is
|
|
29
|
+
# always written "ASME B18.3", never "18.3" alone.
|
|
30
|
+
#
|
|
31
|
+
# LANDMINE: `number` redefines the Components::Code attribute inherited
|
|
32
|
+
# from ::Pubid::Identifier, which resolves nondeterministically when
|
|
33
|
+
# declared on a class others inherit from. Standard is the only
|
|
34
|
+
# concrete ASME type and has no subclasses, so it is declared here and
|
|
35
|
+
# never on SingleIdentifier / Identifiers::Base.
|
|
36
|
+
# spec/pubid/asme/root_number_spec.rb carries the tripwire and is only
|
|
37
|
+
# meaningful under the full `rake` suite.
|
|
38
|
+
# There is deliberately no `#code` reader here. An earlier draft had one
|
|
39
|
+
# composing `Components::Code.new(number: number)` so the renderer and
|
|
40
|
+
# the URN generator would not have to change — but because `number`
|
|
41
|
+
# holds the whole printed code, that Code never carried a designator and
|
|
42
|
+
# `code.to_s` equalled `number` for all 731 corpus ids. It wrapped a
|
|
43
|
+
# string in an object whose only job was to unwrap to the same string.
|
|
44
|
+
# Both readers now use `number` directly.
|
|
45
|
+
#
|
|
46
|
+
# ASTM keeps its composed `#code` (Identifiers::CodeNumber) for the
|
|
47
|
+
# opposite reason: its renderer reads `code.letter` / `code.dual_m`
|
|
48
|
+
# field-by-field, so the component there carries real structure.
|
|
49
|
+
attribute :number, :string
|
|
50
|
+
|
|
51
|
+
# MR slug. Before the index column landed, every ASME slug was just
|
|
52
|
+
# "asme": 722 of 731 documents shared one filename, and `to_slug` is
|
|
53
|
+
# what consumers use as an output filename.
|
|
54
|
+
#
|
|
55
|
+
# `handbook` is identity-bearing — it is in the serialized hash and in
|
|
56
|
+
# `==`, and "ASME A17.1/CSA B44-2019" and "ASME A17.1/CSA B44
|
|
57
|
+
# Handbook-2019" are different documents — so it has to reach the slug
|
|
58
|
+
# too. CLAUDE.md's rule: a marker that only reaches `==` still lets two
|
|
59
|
+
# documents share a filename.
|
|
60
|
+
def mr_number_with_part
|
|
61
|
+
mr_join(mr_sanitize(number), (handbook ? "handbook" : nil))
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# ASME keeps its edition in a plain `year` string, not the inherited
|
|
65
|
+
# `date`, so the base `mr_year` hook read nil and every edition of one
|
|
66
|
+
# standard shared a slug.
|
|
67
|
+
def mr_year
|
|
68
|
+
year&.to_s
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# ASME keeps a translation marker in a plain `language` string, not the
|
|
72
|
+
# inherited `languages` collection the base hook reads. Without this,
|
|
73
|
+
# "ASME B31.8-2016" and its Spanish edition "ASME B31.8 (SPANISH)-2016"
|
|
74
|
+
# — different documents, and #== agrees — share one filename.
|
|
75
|
+
def mr_languages
|
|
76
|
+
language&.to_s&.downcase
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# An ASME code legitimately contains "." (B18.3), "-" (BPVC-CC-BPV),
|
|
80
|
+
# "&" (V&V) and spaces ("BPVC COMPLETE CODE BIND"). Renderers::MrString
|
|
81
|
+
# joins SEGMENTS with ".", so a dot inside one breaks that structure —
|
|
82
|
+
# filter by charset, the BIPM `mr_slug` precedent, rather than by an
|
|
83
|
+
# enumerated escape list. The output emptiness check matters: a value
|
|
84
|
+
# made only of out-of-charset characters collapses to "", which is
|
|
85
|
+
# truthy in Ruby and would reach the renderer as a blank segment.
|
|
86
|
+
def mr_sanitize(value)
|
|
87
|
+
return nil if value.nil? || value.to_s.empty?
|
|
88
|
+
|
|
89
|
+
sanitized = value.to_s.downcase
|
|
90
|
+
.gsub(/[^a-z0-9-]+/, "-").gsub(/\A-+|-+\z/, "")
|
|
91
|
+
sanitized.empty? ? nil : sanitized
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|