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,196 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Utils
|
|
5
|
+
# String normalization utilities for PubID parsing and rendering
|
|
6
|
+
#
|
|
7
|
+
# This module provides centralized string manipulation methods
|
|
8
|
+
# to reduce duplication and improve consistency.
|
|
9
|
+
#
|
|
10
|
+
# == Usage
|
|
11
|
+
#
|
|
12
|
+
# Pubid::Utils::StringNormalizer.normalize_dashes(str)
|
|
13
|
+
# Pubid::Utils::StringNormalizer.normalize_whitespace(str)
|
|
14
|
+
# Pubid::Utils::StringNormalizer.split_compound_number(str)
|
|
15
|
+
#
|
|
16
|
+
class StringNormalizer
|
|
17
|
+
# Unicode dash characters that should be normalized to ASCII hyphen
|
|
18
|
+
DASH_CHARS = ["-", "‑", "‐", "–", "—"].freeze
|
|
19
|
+
|
|
20
|
+
# Whitespace characters to normalize to single space
|
|
21
|
+
WHITESPACE_CHARS = [" ", "\t", "\n", "\r", "\u00A0"].freeze
|
|
22
|
+
|
|
23
|
+
class << self
|
|
24
|
+
# Normalize all dash characters to ASCII hyphen
|
|
25
|
+
#
|
|
26
|
+
# @param str [String, nil] input string
|
|
27
|
+
# @return [String] normalized string with ASCII hyphens
|
|
28
|
+
#
|
|
29
|
+
# @example Normalize unicode dashes
|
|
30
|
+
# StringNormalizer.normalize_dashes("ISO‑9001") # => "ISO-9001"
|
|
31
|
+
# StringNormalizer.normalize_dashes("ISO–9001") # => "ISO-9001"
|
|
32
|
+
#
|
|
33
|
+
def normalize_dashes(str)
|
|
34
|
+
return str if str.nil?
|
|
35
|
+
|
|
36
|
+
str.tr(DASH_CHARS.join, "-")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Normalize whitespace to single space and strip
|
|
40
|
+
#
|
|
41
|
+
# @param str [String, nil] input string
|
|
42
|
+
# @return [String] normalized string with single spaces
|
|
43
|
+
#
|
|
44
|
+
# @example Normalize whitespace
|
|
45
|
+
# StringNormalizer.normalize_whitespace("ISO 9001") # => "ISO 9001"
|
|
46
|
+
# StringNormalizer.normalize_whitespace("ISO\t9001") # => "ISO 9001"
|
|
47
|
+
#
|
|
48
|
+
def normalize_whitespace(str)
|
|
49
|
+
return "" if str.nil?
|
|
50
|
+
|
|
51
|
+
str.gsub(/[#{WHITESPACE_CHARS.join}]+/, " ").strip
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Clean and uppercase abbreviation
|
|
55
|
+
#
|
|
56
|
+
# @param str [String, nil] input string
|
|
57
|
+
# @return [String] cleaned and uppercased abbreviation
|
|
58
|
+
#
|
|
59
|
+
# @example Clean abbreviation
|
|
60
|
+
# StringNormalizer.clean_abbr(" amd ") # => "AMD"
|
|
61
|
+
# StringNormalizer.clean_abbr("Amd") # => "AMD"
|
|
62
|
+
#
|
|
63
|
+
def clean_abbr(str)
|
|
64
|
+
return "" if str.nil?
|
|
65
|
+
|
|
66
|
+
normalize_whitespace(str).upcase
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
# Split compound number (e.g., "800-53-1" -> ["800", "53", "1"])
|
|
70
|
+
#
|
|
71
|
+
# @param str [String] input string
|
|
72
|
+
# @param separators [Array<String>] separators to split on
|
|
73
|
+
# @return [Array<String>] split parts
|
|
74
|
+
#
|
|
75
|
+
# @example Split compound numbers
|
|
76
|
+
# StringNormalizer.split_compound_number("800-53-1")
|
|
77
|
+
# # => ["800", "53", "1"]
|
|
78
|
+
# StringNormalizer.split_compound_number("800/53")
|
|
79
|
+
# # => ["800", "53"]
|
|
80
|
+
#
|
|
81
|
+
def split_compound_number(str, separators: ["-", "/"])
|
|
82
|
+
return [] unless str
|
|
83
|
+
|
|
84
|
+
normalized = normalize_dashes(str)
|
|
85
|
+
normalized.split(/[#{separators.join}]/).reject(&:empty?)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Extract numeric suffix from string
|
|
89
|
+
#
|
|
90
|
+
# @param str [String] input string
|
|
91
|
+
# @return [Array<String, nil>] [number, suffix] or [nil, nil]
|
|
92
|
+
#
|
|
93
|
+
# @example Extract number and suffix
|
|
94
|
+
# StringNormalizer.extract_number_suffix("800-53r5") # => ["53", "r5"]
|
|
95
|
+
# StringNormalizer.extract_number_suffix("ISO") # => [nil, nil]
|
|
96
|
+
#
|
|
97
|
+
def extract_number_suffix(str)
|
|
98
|
+
return [nil, nil] unless str
|
|
99
|
+
|
|
100
|
+
match = str.match(/^(\D+)?(\d+)([a-zA-Z]+)?$/)
|
|
101
|
+
return [nil, nil] unless match
|
|
102
|
+
|
|
103
|
+
number = match[2]
|
|
104
|
+
suffix = match[3]
|
|
105
|
+
[number, suffix]
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Join parts with proper separator, skipping nils
|
|
109
|
+
#
|
|
110
|
+
# @param parts [Array] parts to join
|
|
111
|
+
# @param separator [String] separator between parts
|
|
112
|
+
# @return [String] joined string
|
|
113
|
+
#
|
|
114
|
+
# @example Join parts
|
|
115
|
+
# StringNormalizer.join_parts(["ISO", "9001", nil, "2015"], " ")
|
|
116
|
+
# # => "ISO 9001 2015"
|
|
117
|
+
# StringNormalizer.join_parts(["ISO", nil, "9001"], "-")
|
|
118
|
+
# # => "ISO-9001"
|
|
119
|
+
#
|
|
120
|
+
def join_parts(parts, separator: "")
|
|
121
|
+
parts.compact.join(separator)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Truncate string to max length with ellipsis
|
|
125
|
+
#
|
|
126
|
+
# @param str [String] input string
|
|
127
|
+
# @param max_length [Integer] maximum length
|
|
128
|
+
# @param ellipsis [String] ellipsis string (default: "...")
|
|
129
|
+
# @return [String] truncated string
|
|
130
|
+
#
|
|
131
|
+
# @example Truncate string
|
|
132
|
+
# StringNormalizer.truncate("International Standard", 15)
|
|
133
|
+
# # => "International ..."
|
|
134
|
+
# StringNormalizer.truncate("ISO", 10)
|
|
135
|
+
# # => "ISO"
|
|
136
|
+
#
|
|
137
|
+
def truncate(str, max_length:, ellipsis: "...")
|
|
138
|
+
return str if str.nil? || str.length <= max_length
|
|
139
|
+
|
|
140
|
+
str[0...(max_length - ellipsis.length)] + ellipsis
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Convert to title case (first letter of each word uppercase)
|
|
144
|
+
#
|
|
145
|
+
# @param str [String] input string
|
|
146
|
+
# @return [String] title cased string
|
|
147
|
+
#
|
|
148
|
+
# @example Title case
|
|
149
|
+
# StringNormalizer.title_case("international standard")
|
|
150
|
+
# # => "International Standard"
|
|
151
|
+
# StringNormalizer.title_case("ISO/TR")
|
|
152
|
+
# # => "ISO/TR" # Preserves existing caps
|
|
153
|
+
#
|
|
154
|
+
def title_case(str)
|
|
155
|
+
return "" if str.nil?
|
|
156
|
+
|
|
157
|
+
str.split.map do |word|
|
|
158
|
+
if word.upcase == word # Preserve acronyms
|
|
159
|
+
word
|
|
160
|
+
else
|
|
161
|
+
word.capitalize
|
|
162
|
+
end
|
|
163
|
+
end.join(" ")
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# Check if string is blank (nil, empty, or only whitespace)
|
|
167
|
+
#
|
|
168
|
+
# @param str [String] input string
|
|
169
|
+
# @return [Boolean] true if blank
|
|
170
|
+
#
|
|
171
|
+
# @example Check blank
|
|
172
|
+
# StringNormalizer.blank?(nil) # => true
|
|
173
|
+
# StringNormalizer.blank?("") # => true
|
|
174
|
+
# StringNormalizer.blank?(" ") # => true
|
|
175
|
+
# StringNormalizer.blank?("ISO") # => false
|
|
176
|
+
#
|
|
177
|
+
def blank?(str)
|
|
178
|
+
str.nil? || str.to_s.strip.empty?
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
# Safe to_s method that handles nil
|
|
182
|
+
#
|
|
183
|
+
# @param str [String, nil] input string
|
|
184
|
+
# @return [String] string or empty string
|
|
185
|
+
#
|
|
186
|
+
# @example Safe to_s
|
|
187
|
+
# StringNormalizer.to_s(nil) # => ""
|
|
188
|
+
# StringNormalizer.to_s("ISO") # => "ISO"
|
|
189
|
+
#
|
|
190
|
+
def to_s(str)
|
|
191
|
+
str.nil? ? "" : str.to_s
|
|
192
|
+
end
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
end
|
|
196
|
+
end
|
data/lib/pubid/utils.rb
ADDED
data/lib/pubid/version.rb
CHANGED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
# Turns the parse tree into a concrete identifier: picks the class from the
|
|
6
|
+
# leading maturity token and splits the captured remainder into slug + date.
|
|
7
|
+
class Builder
|
|
8
|
+
# Maturity token -> concrete identifier class name (resolved lazily so the
|
|
9
|
+
# Identifiers namespace need not be loaded at class-definition time).
|
|
10
|
+
TYPE_CLASSES = {
|
|
11
|
+
"NOTE" => "Note",
|
|
12
|
+
"DNOTE" => "DraftNote",
|
|
13
|
+
"WD" => "WorkingDraft",
|
|
14
|
+
"CR" => "CandidateRecommendation",
|
|
15
|
+
"CRD" => "CandidateRecommendationDraft",
|
|
16
|
+
"REC" => "Recommendation",
|
|
17
|
+
"PR" => "ProposedRecommendation",
|
|
18
|
+
"PER" => "ProposedEditedRecommendation",
|
|
19
|
+
"SPSD" => "SupersededRecommendation",
|
|
20
|
+
"OBSL" => "ObsoleteRecommendation",
|
|
21
|
+
}.freeze
|
|
22
|
+
|
|
23
|
+
# A trailing "-<digits>" group is the date only when the digit run is
|
|
24
|
+
# exactly 8 (YYYYMMDD), 6 (legacy YYMMDD) or 4 (legacy MMDD) wide. No real
|
|
25
|
+
# W3C slug ends in such a run, so this never mis-splits a slug that merely
|
|
26
|
+
# ends in a short digit run (e.g. "url-1", "ATAG10").
|
|
27
|
+
DATE_RE = /\A(.+)-(\d{8}|\d{6}|\d{4})\z/
|
|
28
|
+
|
|
29
|
+
def self.build(parsed_data)
|
|
30
|
+
new.build(parsed_data)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def build(data)
|
|
34
|
+
number, date = split_date(data[:rest].to_s)
|
|
35
|
+
klass_for(data[:type]&.to_s).new(number: number, date: date)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def klass_for(type)
|
|
41
|
+
name = TYPE_CLASSES[type] || "Standard"
|
|
42
|
+
Identifiers.const_get(name)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @return [Array(String, String|nil)] the slug and the optional date
|
|
46
|
+
def split_date(rest)
|
|
47
|
+
if (m = DATE_RE.match(rest))
|
|
48
|
+
[m[1], m[2]]
|
|
49
|
+
else
|
|
50
|
+
[rest, nil]
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
# Base class for every W3C identifier AND the flavor's parse/create entry
|
|
6
|
+
# point. Concrete identifiers under Pubid::W3c::Identifiers descend from
|
|
7
|
+
# this class (one per W3C maturity level), so a parsed W3C id is an
|
|
8
|
+
# instance of Pubid::W3c::Identifier.
|
|
9
|
+
#
|
|
10
|
+
# W3C identifiers are flat: a slug `number`, an optional publication `date`
|
|
11
|
+
# (kept verbatim as a string — width varies: 8-digit YYYYMMDD, or legacy
|
|
12
|
+
# 6-digit YYMMDD / 4-digit MMDD), and a document-type carried by the
|
|
13
|
+
# concrete class (its `type_prefix` returns the printed token, e.g. "WD").
|
|
14
|
+
class Identifier < ::Pubid::Identifier
|
|
15
|
+
# Document slug, e.g. "charmod", "css-backgrounds-3", "07-WebData".
|
|
16
|
+
#
|
|
17
|
+
# This is the relaton index key: Relaton::Index sorts and bsearches every
|
|
18
|
+
# row on `id.root.number.to_s`, and an empty key degrades that binary
|
|
19
|
+
# search to a linear scan over the whole index — silently, with no error.
|
|
20
|
+
# Every W3C identifier is its own root (the flavor has no supplement or
|
|
21
|
+
# wrapper type), so this attribute is always the key and must never be
|
|
22
|
+
# empty. It was named `code` before; there is no alias.
|
|
23
|
+
#
|
|
24
|
+
# It redefines the parent ::Pubid::Identifier's
|
|
25
|
+
# `attribute :number, Components::Code` as a plain :string. CLAUDE.md
|
|
26
|
+
# records that doing so on a class the concrete types INHERIT from can
|
|
27
|
+
# resolve against the parent definition nondeterministically under
|
|
28
|
+
# multi-flavor load (the IEEE lesson). That hazard does not apply to W3C's
|
|
29
|
+
# shape, and the reason is worth keeping: lutaml's `inherited` hook
|
|
30
|
+
# deep-dups the parent's attribute table into each subclass at
|
|
31
|
+
# class-definition time (serialize/initialization.rb#initialize_attrs), so
|
|
32
|
+
# a subclass holds a SNAPSHOT, not a live view. A base-level override is
|
|
33
|
+
# therefore safe iff every subclass body opens after this body has run —
|
|
34
|
+
# and Ruby resolves the superclass constant, running this file to
|
|
35
|
+
# completion, before opening any leaf body. That holds because this class
|
|
36
|
+
# lives in ONE file, in ONE class body, and is never reopened. Split it
|
|
37
|
+
# the way IEEE splits its base and a leaf can snapshot a half-built
|
|
38
|
+
# parent, silently reverting `number` to Components::Code. The `date`
|
|
39
|
+
# override below has relied on the same property since the flavor landed.
|
|
40
|
+
# spec/pubid/w3c/root_number_spec.rb pins it, and is only meaningful under
|
|
41
|
+
# the FULL suite.
|
|
42
|
+
attribute :number, :string
|
|
43
|
+
# Publication date verbatim, or nil. Overrides the base Components::Date
|
|
44
|
+
# attribute with a plain string (same mechanism JIS uses for `number`):
|
|
45
|
+
# W3C dates are opaque digit runs that must round-trip exactly, and are
|
|
46
|
+
# never re-parsed as calendar dates.
|
|
47
|
+
attribute :date, :string
|
|
48
|
+
|
|
49
|
+
# Polymorphic type map for lutaml::Model key_value (de)serialization: maps
|
|
50
|
+
# each subclass's polymorphic_name to its class name so a stored hash
|
|
51
|
+
# rebuilds the correct identifier type via from_hash.
|
|
52
|
+
W3C_TYPE_MAP = {
|
|
53
|
+
"pubid:w3c:standard" => "Pubid::W3c::Identifiers::Standard",
|
|
54
|
+
"pubid:w3c:note" => "Pubid::W3c::Identifiers::Note",
|
|
55
|
+
"pubid:w3c:draft-note" => "Pubid::W3c::Identifiers::DraftNote",
|
|
56
|
+
"pubid:w3c:working-draft" => "Pubid::W3c::Identifiers::WorkingDraft",
|
|
57
|
+
"pubid:w3c:candidate-recommendation" =>
|
|
58
|
+
"Pubid::W3c::Identifiers::CandidateRecommendation",
|
|
59
|
+
"pubid:w3c:candidate-recommendation-draft" =>
|
|
60
|
+
"Pubid::W3c::Identifiers::CandidateRecommendationDraft",
|
|
61
|
+
"pubid:w3c:recommendation" =>
|
|
62
|
+
"Pubid::W3c::Identifiers::Recommendation",
|
|
63
|
+
"pubid:w3c:proposed-recommendation" =>
|
|
64
|
+
"Pubid::W3c::Identifiers::ProposedRecommendation",
|
|
65
|
+
"pubid:w3c:proposed-edited-recommendation" =>
|
|
66
|
+
"Pubid::W3c::Identifiers::ProposedEditedRecommendation",
|
|
67
|
+
"pubid:w3c:superseded-recommendation" =>
|
|
68
|
+
"Pubid::W3c::Identifiers::SupersededRecommendation",
|
|
69
|
+
"pubid:w3c:obsolete-recommendation" =>
|
|
70
|
+
"Pubid::W3c::Identifiers::ObsoleteRecommendation",
|
|
71
|
+
}.freeze
|
|
72
|
+
|
|
73
|
+
key_value do
|
|
74
|
+
map "_type", to: :_type, polymorphic_map: W3C_TYPE_MAP
|
|
75
|
+
map "number", to: :number
|
|
76
|
+
map "date", to: :date
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Publisher is always "W3C". A plain constant (not a `publisher` method)
|
|
80
|
+
# so it doesn't shadow the inherited lutaml `publisher` attribute, which
|
|
81
|
+
# would otherwise fail serialization type validation.
|
|
82
|
+
PUBLISHER = "W3C"
|
|
83
|
+
|
|
84
|
+
# The printed document-type token (e.g. "WD"). nil for the bare-slug
|
|
85
|
+
# Standard form; concrete typed subclasses override it.
|
|
86
|
+
def type_prefix
|
|
87
|
+
nil
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
attr_reader :with_publisher
|
|
91
|
+
|
|
92
|
+
# Publication year derived from an 8-digit YYYYMMDD date, else nil. `date`
|
|
93
|
+
# is a plain string here (not a Components::Date), so the inherited
|
|
94
|
+
# `year` — which calls `date&.year` — would break; override it.
|
|
95
|
+
def year
|
|
96
|
+
return nil unless date.is_a?(::String) && date.length == 8
|
|
97
|
+
|
|
98
|
+
date[0, 4]
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def to_s(with_publisher: true, **opts)
|
|
102
|
+
@with_publisher = with_publisher
|
|
103
|
+
render(format: :human, **opts)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# from_hash is the shared polymorphic dispatch on Pubid::Identifier;
|
|
107
|
+
# W3C_TYPE_MAP remains as the key_value polymorphic_map.
|
|
108
|
+
|
|
109
|
+
# Parse a W3C identifier string into an identifier object
|
|
110
|
+
# @param identifier [String] The W3C identifier string to parse
|
|
111
|
+
# @return [Identifier] The appropriate identifier object
|
|
112
|
+
# @raise [Pubid::Errors::ParseError] If parsing fails
|
|
113
|
+
def self.parse(identifier)
|
|
114
|
+
# Reject pathological inputs before they reach the parser
|
|
115
|
+
# (CodeQL rb/polynomial-redos barrier — inline .length by design).
|
|
116
|
+
unless identifier.is_a?(String)
|
|
117
|
+
raise Pubid::Errors::InvalidInputError,
|
|
118
|
+
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
122
|
+
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
parsed = Parser.parse(identifier)
|
|
126
|
+
Builder.build(parsed)
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# W3C Candidate Recommendation. Printed token: "CR".
|
|
7
|
+
# Example: "W3C CR-exi-20091208".
|
|
8
|
+
class CandidateRecommendation < Identifier
|
|
9
|
+
TYPED_STAGES = [
|
|
10
|
+
Pubid::Components::TypedStage.new(
|
|
11
|
+
code: :cr,
|
|
12
|
+
stage_code: :candidate_recommendation,
|
|
13
|
+
type_code: :cr,
|
|
14
|
+
abbr: ["CR"],
|
|
15
|
+
name: "Candidate Recommendation",
|
|
16
|
+
harmonized_stages: [],
|
|
17
|
+
),
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.type
|
|
21
|
+
{ key: :cr, web: :candidate_recommendation,
|
|
22
|
+
title: "Candidate Recommendation", short: "CR" }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def type_prefix
|
|
26
|
+
"CR"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# W3C Candidate Recommendation Draft. Printed token: "CRD".
|
|
7
|
+
# Example: "W3C CRD-accelerometer-20250212".
|
|
8
|
+
class CandidateRecommendationDraft < Identifier
|
|
9
|
+
TYPED_STAGES = [
|
|
10
|
+
Pubid::Components::TypedStage.new(
|
|
11
|
+
code: :crd,
|
|
12
|
+
stage_code: :candidate_recommendation_draft,
|
|
13
|
+
type_code: :crd,
|
|
14
|
+
abbr: ["CRD"],
|
|
15
|
+
name: "Candidate Recommendation Draft",
|
|
16
|
+
harmonized_stages: [],
|
|
17
|
+
),
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.type
|
|
21
|
+
{ key: :crd, web: :candidate_recommendation_draft,
|
|
22
|
+
title: "Candidate Recommendation Draft", short: "CRD" }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def type_prefix
|
|
26
|
+
"CRD"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Draft W3C Note. Printed token: "DNOTE".
|
|
7
|
+
# Example: "W3C DNOTE-webcodecs-flac-codec-registration-20240419".
|
|
8
|
+
class DraftNote < Identifier
|
|
9
|
+
TYPED_STAGES = [
|
|
10
|
+
Pubid::Components::TypedStage.new(
|
|
11
|
+
code: :dnote,
|
|
12
|
+
stage_code: :draft_note,
|
|
13
|
+
type_code: :dnote,
|
|
14
|
+
abbr: ["DNOTE"],
|
|
15
|
+
name: "Draft W3C Note",
|
|
16
|
+
harmonized_stages: [],
|
|
17
|
+
),
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.type
|
|
21
|
+
{ key: :dnote, web: :draft_note, title: "Draft W3C Note",
|
|
22
|
+
short: "DNOTE" }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def type_prefix
|
|
26
|
+
"DNOTE"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# W3C Note (formerly Working Group / Interest Group Note).
|
|
7
|
+
# Printed token: "NOTE". Example: "W3C NOTE-xml-names".
|
|
8
|
+
class Note < Identifier
|
|
9
|
+
TYPED_STAGES = [
|
|
10
|
+
Pubid::Components::TypedStage.new(
|
|
11
|
+
code: :note,
|
|
12
|
+
stage_code: :note,
|
|
13
|
+
type_code: :note,
|
|
14
|
+
abbr: ["NOTE"],
|
|
15
|
+
name: "W3C Note",
|
|
16
|
+
harmonized_stages: [],
|
|
17
|
+
),
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.type
|
|
21
|
+
{ key: :note, web: :note, title: "W3C Note", short: "NOTE" }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def type_prefix
|
|
25
|
+
"NOTE"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Obsolete W3C Recommendation. Printed token: "OBSL".
|
|
7
|
+
# Example: "W3C OBSL-widgets-apis-20181011".
|
|
8
|
+
class ObsoleteRecommendation < Identifier
|
|
9
|
+
TYPED_STAGES = [
|
|
10
|
+
Pubid::Components::TypedStage.new(
|
|
11
|
+
code: :obsl,
|
|
12
|
+
stage_code: :obsolete_recommendation,
|
|
13
|
+
type_code: :obsl,
|
|
14
|
+
abbr: ["OBSL"],
|
|
15
|
+
name: "Obsolete Recommendation",
|
|
16
|
+
harmonized_stages: [],
|
|
17
|
+
),
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.type
|
|
21
|
+
{ key: :obsl, web: :obsolete_recommendation,
|
|
22
|
+
title: "Obsolete Recommendation", short: "OBSL" }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def type_prefix
|
|
26
|
+
"OBSL"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# W3C Proposed Edited Recommendation. Printed token: "PER".
|
|
7
|
+
# Example: "W3C PER-rif-dtb-20121211".
|
|
8
|
+
class ProposedEditedRecommendation < Identifier
|
|
9
|
+
TYPED_STAGES = [
|
|
10
|
+
Pubid::Components::TypedStage.new(
|
|
11
|
+
code: :per,
|
|
12
|
+
stage_code: :proposed_edited_recommendation,
|
|
13
|
+
type_code: :per,
|
|
14
|
+
abbr: ["PER"],
|
|
15
|
+
name: "Proposed Edited Recommendation",
|
|
16
|
+
harmonized_stages: [],
|
|
17
|
+
),
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.type
|
|
21
|
+
{ key: :per, web: :proposed_edited_recommendation,
|
|
22
|
+
title: "Proposed Edited Recommendation", short: "PER" }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def type_prefix
|
|
26
|
+
"PER"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# W3C Proposed Recommendation. Printed token: "PR".
|
|
7
|
+
# Example: "W3C PR-InkML-20110510".
|
|
8
|
+
class ProposedRecommendation < Identifier
|
|
9
|
+
TYPED_STAGES = [
|
|
10
|
+
Pubid::Components::TypedStage.new(
|
|
11
|
+
code: :pr,
|
|
12
|
+
stage_code: :proposed_recommendation,
|
|
13
|
+
type_code: :pr,
|
|
14
|
+
abbr: ["PR"],
|
|
15
|
+
name: "Proposed Recommendation",
|
|
16
|
+
harmonized_stages: [],
|
|
17
|
+
),
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.type
|
|
21
|
+
{ key: :pr, web: :proposed_recommendation,
|
|
22
|
+
title: "Proposed Recommendation", short: "PR" }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def type_prefix
|
|
26
|
+
"PR"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# W3C Recommendation (a published standard). Printed token: "REC".
|
|
7
|
+
# Example: "W3C REC-ATAG10-20000203".
|
|
8
|
+
class Recommendation < Identifier
|
|
9
|
+
TYPED_STAGES = [
|
|
10
|
+
Pubid::Components::TypedStage.new(
|
|
11
|
+
code: :rec,
|
|
12
|
+
stage_code: :recommendation,
|
|
13
|
+
type_code: :rec,
|
|
14
|
+
abbr: ["REC"],
|
|
15
|
+
name: "Recommendation",
|
|
16
|
+
harmonized_stages: [],
|
|
17
|
+
),
|
|
18
|
+
].freeze
|
|
19
|
+
|
|
20
|
+
def self.type
|
|
21
|
+
{ key: :rec, web: :recommendation, title: "Recommendation",
|
|
22
|
+
short: "REC" }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def type_prefix
|
|
26
|
+
"REC"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module W3c
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Bare-code W3C reference with no maturity token, e.g. "W3C 2dcontext",
|
|
7
|
+
# "W3C 07-WebData". The default type; carries no `type_prefix`.
|
|
8
|
+
class Standard < Identifier
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|