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,122 @@
|
|
|
1
|
+
# NIST pre-parser normalization rules.
|
|
2
|
+
#
|
|
3
|
+
# This file is applied to every NIST identifier string BEFORE any Ruby
|
|
4
|
+
# preprocessing (see lib/pubid/nist/preprocessor.rb). Each entry is one
|
|
5
|
+
# of:
|
|
6
|
+
#
|
|
7
|
+
# "plain string": "replacement"
|
|
8
|
+
# Full-line match (^...$), literal. Use for specific malformed IDs
|
|
9
|
+
# that have a single canonical form.
|
|
10
|
+
#
|
|
11
|
+
# "/regex/": "replacement" (no flags)
|
|
12
|
+
# "/regex/imx": "replacement" (i = IGNORECASE, m = MULTILINE,
|
|
13
|
+
# x = EXTENDED)
|
|
14
|
+
# Applied via gsub. Use for general patterns that are pure
|
|
15
|
+
# string→string substitutions.
|
|
16
|
+
#
|
|
17
|
+
# Design split (MECE):
|
|
18
|
+
# - This file: data-driven lookups and pure subs that any maintainer
|
|
19
|
+
# (including non-Rubyists) can extend safely.
|
|
20
|
+
# - Preprocessor (Ruby): stateful or interdependent transformations
|
|
21
|
+
# where stage order, conditional logic, or external state (e.g.,
|
|
22
|
+
# Roman numeral conversion, year-range reverts) make YAML unsuitable.
|
|
23
|
+
#
|
|
24
|
+
# Reorder entries with care — later entries often match patterns produced
|
|
25
|
+
# by earlier ones. Run `bundle exec rspec spec/pubid/nist/` after edits.
|
|
26
|
+
NBS MN: NBS MONO
|
|
27
|
+
NIST MN: NIST MONO
|
|
28
|
+
# Long-form series names — normalize to the abbreviated form the parser expects.
|
|
29
|
+
/\bMonograph\b/: MONO
|
|
30
|
+
# Citation-form comma before long parameter prefixes — strip so the parser's
|
|
31
|
+
# " Rev. " / " Part. " / " Vol. " prefix rules match (issue #197).
|
|
32
|
+
'/,\s+(Rev\.|Part\.|Vol\.|Revision|Volume|Part)(?=\s|\d)/': ' \1'
|
|
33
|
+
NIST MP: NBS MP
|
|
34
|
+
NIST SP 260-162 2006ed.: NIST SP 260-162e2006
|
|
35
|
+
# Doubled publisher+series prefix — an error in the NIST Tech Pubs source data
|
|
36
|
+
# (pubid/pubid#152). Collapse the repeated "NIST AI" so the remainder parses.
|
|
37
|
+
NIST AI NIST AI 100-2e2023 ipd: NIST AI 100-2e2023 ipd
|
|
38
|
+
NBS CIRC 154suprev: NBS CIRC 154r1sup
|
|
39
|
+
NBS CIRC supJun1925-Jun1926: NBS CIRC 24e7sup2
|
|
40
|
+
NBS CIRC supJun1925-Jun1927: NBS CIRC 24e7sup3
|
|
41
|
+
/^NBS CIRC sup$/: NBS CIRC 24e7sup
|
|
42
|
+
NBS CIRC 25sup-1924: NBS CIRC 25sup
|
|
43
|
+
NIST SP 260-126 rev 2013: NIST SP 260-126r2013
|
|
44
|
+
NIST CSRC White Paper: NIST CSWP
|
|
45
|
+
NIST SP 800-56ar: NIST SP 800-56Ar1
|
|
46
|
+
NIST.LCIRC: NIST.LC
|
|
47
|
+
NBS.LCIRC: NBS.LC
|
|
48
|
+
NIST LCIRC: NIST LC
|
|
49
|
+
NBS LCIRC: NBS LC
|
|
50
|
+
NIST SP 800-57Pt3r1: NIST SP 800-57pt3r1
|
|
51
|
+
NISTIR: NIST IR
|
|
52
|
+
NIST FIPS: FIPS
|
|
53
|
+
NIST.CSWP.01162020pt: NIST.CSWP.01162020(por)
|
|
54
|
+
/^NBS FIPS 11-1-Sep30$/: NBS FIPS 11-1-Sep30/1977
|
|
55
|
+
/^NBS FIPS 89-Sep1$/: NBS FIPS 89-Sep1981
|
|
56
|
+
/^FIPS PUB 54-1-Jan15$/: FIPS 54-1
|
|
57
|
+
/^FIPS 54-1-Jan15$/: FIPS 54-1
|
|
58
|
+
/^FIPS 54-1-Jan17$/: FIPS 54-1-Jan17/1991
|
|
59
|
+
FIPS PUB: FIPS
|
|
60
|
+
NBS CRPL c4-4: NBS CRPL 4-4
|
|
61
|
+
NIST AMS 300-8r1 (February 2021 update): NIST AMS 300-8r1/Upd1-202102
|
|
62
|
+
NIST AMS 300-8r1/upd: NIST AMS 300-8r1/Upd1-202102
|
|
63
|
+
NIST IR 8115r1-upd: NIST IR 8115r1/Upd1-202103
|
|
64
|
+
NIST IR 8170-upd: NIST IR 8170/Upd1-202003
|
|
65
|
+
NIST TN 2150-upd: NIST TN 2150/Upd1-202102
|
|
66
|
+
NBS IR 73-197r: NBS IR 73-197r1
|
|
67
|
+
NBS.HB.105-1r1990: NIST.HB.105-1r1990
|
|
68
|
+
NBS.HB.28p11969: NBS.HB.28-1969pt1
|
|
69
|
+
NIST HB 105-1-1990: NIST HB 105-1r1990
|
|
70
|
+
NBS.FIPS.100-1-1991: NIST.FIPS.100-1-1991
|
|
71
|
+
NBS.LC.1088sp: NBS.LC.1088.spa
|
|
72
|
+
NBS LC 1088sp: NBS LC 1088 spa
|
|
73
|
+
#NBS.LC.145r11/1925: NBS.LC.145/Upd1-192511
|
|
74
|
+
#NBS.LC.118sup12/1926: NBS.LC.118sup/Upd1-192612
|
|
75
|
+
NIST SP 955 Suppl.: NIST SP 955sup
|
|
76
|
+
NIST SP 800-38e: NIST SP 800-38E
|
|
77
|
+
NIST SP 782-1995-96: NIST SP 782-1995
|
|
78
|
+
NIST FIPS 54-Jan15: NIST FIPS 54
|
|
79
|
+
NBS report ;: NBS RPT
|
|
80
|
+
NBS TN 467p1adde1: NBS TN 467pt1-add
|
|
81
|
+
NIST SP 1011-II-1.0: NIST SP 1011v2ver1.0
|
|
82
|
+
NIST SP 1011-II-1 0: NIST SP 1011v2ver1.0
|
|
83
|
+
NIST SP 1011-I-2.0: NIST SP 1011v1ver2.0
|
|
84
|
+
NIST SP 1011-I-2 0: NIST SP 1011v1ver2.0
|
|
85
|
+
NIST SP 500-281-v1.0: NIST SP 500-281v1.0
|
|
86
|
+
NIST IR 8259Aes: NIST IR 8259A(spa)
|
|
87
|
+
NIST IR 8259Apt: NIST IR 8259A(por)
|
|
88
|
+
NIST IR 8211-upd: NIST IR 8211/Upd1-2021
|
|
89
|
+
NIST IR 8115r1/upd: NIST IR 8115r1/Upd1-2021
|
|
90
|
+
NBS CS v: NBS CSM v
|
|
91
|
+
NIST SP 800-57p1r2006: NIST SP 800-57pt1r1
|
|
92
|
+
NIST SP 800-57p1r2007: NIST SP 800-57pt1r2
|
|
93
|
+
NIST SP 500-268v1 1: NIST SP 500-268v1.1
|
|
94
|
+
NIST SP 500-270v1 1: NIST SP 500-270v1.1
|
|
95
|
+
NIST SP 500-280v2 1: NIST SP 500-280v2.1
|
|
96
|
+
NIST SP 500-281-v1 0: NIST SP 500-281v1.0
|
|
97
|
+
NIST SP 800-63v1 0 1: NIST SP 800-63v1.0.1
|
|
98
|
+
NIST SP 800-63v1 0 2: NIST SP 800-63v1.0.2
|
|
99
|
+
NIST SP 955 Suppl: NIST SP 955sup
|
|
100
|
+
NIST SP 984 4: NIST SP 984-4
|
|
101
|
+
NISTPUB 0413171251: NIST TN 1648-2009
|
|
102
|
+
/\-draft$/: " (Draft)"
|
|
103
|
+
/\-draft2$/: " 2pd"
|
|
104
|
+
NIST HB 135e2022-upd1: NIST HB 135e2022/Upd1-202205
|
|
105
|
+
NIST SP 1900-206-upd1: NIST SP 1900-206/Upd1-202202
|
|
106
|
+
NIST TN 2207-upd1: NIST TN 2207/Upd1-202205
|
|
107
|
+
NIST IR 8290-upd1: NIST IR 8290/Upd1-202205
|
|
108
|
+
NIST IR 8413-upd1: NIST IR 8413/Upd1-202207
|
|
109
|
+
NIST IR 85-3273-37-upd1: NIST IR 85-3273-37/Upd1-202205
|
|
110
|
+
/NBS CRPL-F-B(?=\d+)/: "NBS CRPL-F-B "
|
|
111
|
+
"NIST.AMS.300-8r1/upd": NIST.AMS.300-8r1-upd1
|
|
112
|
+
NIST.hb.150-1-2017: NIST HB 105-1r2017
|
|
113
|
+
nbs.tn.671: NBS TN 671
|
|
114
|
+
NIST.TN.1648_2009: NIST TN 1648-2009
|
|
115
|
+
NBS NSRDS: NSRDS-NBS
|
|
116
|
+
nist ir: NIST IR
|
|
117
|
+
/(?<=\d)es/: (spa)
|
|
118
|
+
/(?<=\d)chi/: (zho)
|
|
119
|
+
/(?<=\d)viet/: (vie)
|
|
120
|
+
/(?<=\d)port/: (por)
|
|
121
|
+
/(?<=\d)(pt)(?!\d)/: (por)
|
|
122
|
+
/(?<=\d)id/: (ind)
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"PLATEAU Handbook #11 第1.0版(民間活用編)": "PLATEAU Handbook #06 第1.0版"
|
|
2
|
+
"PLATEAU Handbook #11 第1.0版(公共活用編)": "PLATEAU Handbook #04 第1.0版"
|
|
3
|
+
"PLATEAU Handbook #11 第2.0版(民間活用編)": "PLATEAU Handbook #06 第2.0版"
|
|
4
|
+
"PLATEAU Handbook #11 第2.0版(公共活用編)": "PLATEAU Handbook #04 第2.0版"
|
|
5
|
+
"PLATEAU Handbook #11 第3.0版(民間活用編)": "PLATEAU Handbook #06 第3.0版"
|
|
6
|
+
"PLATEAU Handbook #11 第3.0版(公共活用編)": "PLATEAU Handbook #04 第3.0版"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Adobe
|
|
5
|
+
# Builds an Adobe identifier object from the Parslet parse tree.
|
|
6
|
+
class Builder
|
|
7
|
+
def build(parsed)
|
|
8
|
+
return build_tech_note(parsed[:tech_note]) if parsed[:tech_note]
|
|
9
|
+
return build_tech_note_bare(parsed[:tech_note_bare]) if parsed[:tech_note_bare]
|
|
10
|
+
return build_publication_version(parsed[:publication_version]) if parsed[:publication_version]
|
|
11
|
+
return build_publication(parsed[:slug]) if parsed[:slug]
|
|
12
|
+
|
|
13
|
+
raise ArgumentError, "Unrecognized Adobe parse tree: #{parsed.inspect}"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.build(parsed)
|
|
17
|
+
new.build(parsed)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def build_tech_note(hash)
|
|
23
|
+
Identifiers::TechNote.new(
|
|
24
|
+
number: stringify(hash[:number]),
|
|
25
|
+
slug: stringify(hash[:slug]),
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def build_tech_note_bare(number_hash)
|
|
30
|
+
Identifiers::TechNote.new(number: stringify(number_hash))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def build_publication(slug_value)
|
|
34
|
+
Identifiers::Publication.new(slug: stringify(slug_value))
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def build_publication_version(hash)
|
|
38
|
+
Identifiers::Publication.new(
|
|
39
|
+
slug: stringify(hash[:slug]),
|
|
40
|
+
version: stringify(hash[:version]),
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def stringify(value)
|
|
45
|
+
return nil if value.nil?
|
|
46
|
+
|
|
47
|
+
str = value.to_s
|
|
48
|
+
str.empty? ? nil : str
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Adobe
|
|
5
|
+
# Base class for all Adobe identifiers. Canonical name
|
|
6
|
+
# Pubid::Adobe::Identifier; every concrete Adobe identifier
|
|
7
|
+
# (Identifiers::*) descends from it.
|
|
8
|
+
#
|
|
9
|
+
# Adobe identifiers come in two shapes:
|
|
10
|
+
#
|
|
11
|
+
# * TechNote — `Adobe Technical Note #<number>` / `ATN<number>`
|
|
12
|
+
# e.g. `Adobe Technical Note #5014`, `ATN5014`.
|
|
13
|
+
# * Publication — slug-keyed named specs that have no number
|
|
14
|
+
# e.g. `adobe-glyph-list`, `adobe-japan1-7`.
|
|
15
|
+
class Identifier < ::Pubid::Identifier
|
|
16
|
+
# Parse an Adobe identifier string into an identifier object.
|
|
17
|
+
# @param identifier [String]
|
|
18
|
+
# @return [Pubid::Adobe::Identifier]
|
|
19
|
+
# @raise [Pubid::Errors::ParseError] If parsing fails
|
|
20
|
+
def self.parse(identifier)
|
|
21
|
+
parsed = Parser.parse(identifier)
|
|
22
|
+
Builder.build(parsed)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
attribute :publisher, :string, default: "Adobe"
|
|
26
|
+
|
|
27
|
+
ADOBE_TYPE_MAP = {
|
|
28
|
+
"pubid:adobe:tech-note" => "Pubid::Adobe::Identifiers::TechNote",
|
|
29
|
+
"pubid:adobe:publication" => "Pubid::Adobe::Identifiers::Publication",
|
|
30
|
+
}.freeze
|
|
31
|
+
|
|
32
|
+
key_value do
|
|
33
|
+
map "_type", to: :_type, polymorphic_map: ADOBE_TYPE_MAP
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def to_urn
|
|
37
|
+
UrnGenerator.new(self).generate
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Short type code (e.g. "ATN", nil for Publication) — convenience
|
|
41
|
+
# accessor used by Renderer and UrnGenerator.
|
|
42
|
+
def type_short
|
|
43
|
+
self.class.type[:short]
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Adobe
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Adobe named publication. Slug-keyed specs that have no tech-note
|
|
7
|
+
# number — Adobe Glyph List, PostScript Language, character
|
|
8
|
+
# collections, etc.
|
|
9
|
+
#
|
|
10
|
+
# Surface forms:
|
|
11
|
+
# * slug `adobe-glyph-list`, `adobe-postscript-language`
|
|
12
|
+
# * versioned character collections: `adobe-japan1` + version `7`
|
|
13
|
+
# * human render is the slug title-cased (`Adobe Glyph List`,
|
|
14
|
+
# `Adobe-Japan1-7`); the full publication title lives in the
|
|
15
|
+
# data repo's title attribute, not here.
|
|
16
|
+
class Publication < Identifier
|
|
17
|
+
attribute :slug, :string # "adobe-glyph-list", "adobe-japan1"
|
|
18
|
+
attribute :version, :string # "7", "3", nil
|
|
19
|
+
|
|
20
|
+
key_value do
|
|
21
|
+
map "slug", to: :slug
|
|
22
|
+
map "version", to: :version
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.type
|
|
26
|
+
{ key: :publication, title: "Publication", short: nil }
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Adobe
|
|
5
|
+
module Identifiers
|
|
6
|
+
# Adobe Technical Note. Numbered 4-digit (5xxx series observed).
|
|
7
|
+
#
|
|
8
|
+
# Surface forms:
|
|
9
|
+
# * `Adobe Technical Note #5014` — formal citation form
|
|
10
|
+
# * `ATN5014` — short alias used in Metanorma
|
|
11
|
+
# anchor ids ([[atn5014,…]])
|
|
12
|
+
# * filename `5014.CIDFont_Spec.pdf` (data repo splits filename
|
|
13
|
+
# into number + slug before calling the parser)
|
|
14
|
+
#
|
|
15
|
+
# The optional `slug` carries the filename's title segment
|
|
16
|
+
# (`CIDFont_Spec`) so round-trip through the data repo is lossless.
|
|
17
|
+
class TechNote < Identifier
|
|
18
|
+
attribute :number, :string # "5014", "5902"
|
|
19
|
+
attribute :slug, :string # "CIDFont_Spec", "AFM_Spec", nil
|
|
20
|
+
|
|
21
|
+
key_value do
|
|
22
|
+
map "number", to: :number
|
|
23
|
+
map "slug", to: :slug
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.type
|
|
27
|
+
{ key: :"tech-note", title: "Technical Note", short: "ATN" }
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "parslet"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Adobe
|
|
7
|
+
# Parslet grammar for Adobe identifiers.
|
|
8
|
+
#
|
|
9
|
+
# Canonical citation forms (what the renderer produces):
|
|
10
|
+
#
|
|
11
|
+
# Adobe TN 5014 (tech note; replaces the older
|
|
12
|
+
# "Adobe Technical Note #5014")
|
|
13
|
+
# Adobe Publication adobe-glyph-list
|
|
14
|
+
# Adobe Publication adobe-japan1-7
|
|
15
|
+
#
|
|
16
|
+
# The parser also accepts these legacy forms for back-compat:
|
|
17
|
+
#
|
|
18
|
+
# Adobe Technical Note #5014
|
|
19
|
+
# Adobe Technical Note 5014
|
|
20
|
+
# Adobe TN5014 (no space)
|
|
21
|
+
# ATN5014 (short alias)
|
|
22
|
+
# 5014 (bare number; data-repo context)
|
|
23
|
+
# adobe-glyph-list (bare slug)
|
|
24
|
+
class Parser < ::Pubid::Parser::Grammar
|
|
25
|
+
include ::Pubid::Parser::CommonParseRules
|
|
26
|
+
|
|
27
|
+
root :identifier
|
|
28
|
+
|
|
29
|
+
rule(:space) { str(" ") }
|
|
30
|
+
rule(:space?) { space.maybe }
|
|
31
|
+
rule(:hash) { str("#") }
|
|
32
|
+
rule(:dot) { str(".") }
|
|
33
|
+
rule(:dash) { str("-") }
|
|
34
|
+
|
|
35
|
+
# Canonical short prefix: "Adobe TN" with optional trailing space.
|
|
36
|
+
# Matches both "Adobe TN 5014" and "Adobe TN5014".
|
|
37
|
+
rule(:tech_note_tn_prefix) do
|
|
38
|
+
str("Adobe") >> space >> str("TN") >> space?.maybe
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Legacy long prefix: "Adobe Technical Note" with optional "#".
|
|
42
|
+
rule(:tech_note_long_prefix) do
|
|
43
|
+
str("Adobe") >> space >> str("Technical") >> space >> str("Note") >>
|
|
44
|
+
(space? >> hash.maybe >> space?).maybe
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Legacy short alias: "ATN" with optional trailing space.
|
|
48
|
+
rule(:tech_note_atn_prefix) do
|
|
49
|
+
str("ATN") >> space?.maybe
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
rule(:tech_note_prefix) do
|
|
53
|
+
tech_note_tn_prefix | tech_note_long_prefix | tech_note_atn_prefix
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
rule(:digits) do
|
|
57
|
+
match("[0-9]").repeat(1)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# 4-digit tech note number, optionally followed by ".<Slug>" from
|
|
61
|
+
# the filename form. The slug is captured but not required.
|
|
62
|
+
rule(:slug_chars) do
|
|
63
|
+
match("[A-Za-z0-9_]").repeat(1)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
rule(:tech_note) do
|
|
67
|
+
(tech_note_prefix >>
|
|
68
|
+
digits.as(:number) >>
|
|
69
|
+
(dot >> slug_chars.as(:slug)).maybe).as(:tech_note)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Bare number form (e.g. when the data repo passes just "5014"
|
|
73
|
+
# extracted from a filename). Not advertised in user docs; used
|
|
74
|
+
# internally by AdobeFetcher::Docid.
|
|
75
|
+
rule(:bare_number) do
|
|
76
|
+
digits.as(:number).as(:tech_note_bare)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# "Adobe Publication " prefix. Matched literally then discarded —
|
|
80
|
+
# the publication slug/version is parsed by the inner rule.
|
|
81
|
+
rule(:publication_prefix) do
|
|
82
|
+
str("Adobe") >> space >> str("Publication") >> space
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Publication slug. Lowercase ASCII letters and digits joined by `-`.
|
|
86
|
+
# Each segment starts with a letter (so a trailing `-<digits>` is
|
|
87
|
+
# unambiguously a version suffix, not part of the slug).
|
|
88
|
+
rule(:slug_segment) do
|
|
89
|
+
match("[a-z]") >> match("[a-z0-9]").repeat
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
rule(:slug_inner) do
|
|
93
|
+
slug_segment >> (dash >> slug_segment).repeat
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
rule(:publication_with_version) do
|
|
97
|
+
(slug_inner.as(:slug) >> dash >> digits.as(:version)).as(:publication_version)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
rule(:publication_slug_or_version) do
|
|
101
|
+
# Try with-version first so `adobe-japan1-7` doesn't get captured
|
|
102
|
+
# as slug `adobe-japan1-7` with no version. The flat `:slug` form
|
|
103
|
+
# is the fallback for unversioned slugs.
|
|
104
|
+
publication_with_version | slug_inner.as(:slug)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
rule(:publication) do
|
|
108
|
+
# Optional "Adobe Publication " prefix. The prefix is consumed
|
|
109
|
+
# but not captured — the inner rule produces :slug or
|
|
110
|
+
# :publication_version as before.
|
|
111
|
+
publication_prefix.maybe >> publication_slug_or_version
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
rule(:identifier) do
|
|
115
|
+
tech_note | bare_number | publication
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Parse a string and return the raw parslet tree.
|
|
119
|
+
# @param string [String]
|
|
120
|
+
# @return [Hash]
|
|
121
|
+
def self.parse(string)
|
|
122
|
+
unless string.is_a?(String)
|
|
123
|
+
raise ::Pubid::Errors::InvalidInputError,
|
|
124
|
+
::Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
if string.length > ::Pubid::MAX_INPUT_LENGTH
|
|
128
|
+
raise ::Pubid::Errors::InvalidInputError,
|
|
129
|
+
::Pubid::INPUT_TOO_LONG_MESSAGE
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
new.parse(string.strip)
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Adobe
|
|
5
|
+
# Human-readable renderer for Adobe identifiers.
|
|
6
|
+
#
|
|
7
|
+
# Produces the canonical citation forms:
|
|
8
|
+
# "Adobe TN 5014" (tech note)
|
|
9
|
+
# "Adobe Publication adobe-glyph-list" (publication, slug)
|
|
10
|
+
# "Adobe Publication adobe-japan1-7" (publication, slug + version)
|
|
11
|
+
#
|
|
12
|
+
# The data repo (AdobeFetcher::Docid) overrides #to_s for publications
|
|
13
|
+
# to use the title from metadata instead of the slug, producing e.g.
|
|
14
|
+
# "Adobe Publication Adobe Glyph List". Pubid::Adobe itself is purely
|
|
15
|
+
# structural and renders slug-form citations.
|
|
16
|
+
class Renderer < ::Pubid::Renderers::Base
|
|
17
|
+
def render(context: nil, **_opts)
|
|
18
|
+
id = @id
|
|
19
|
+
|
|
20
|
+
return render_tech_note(id) if id.is_a?(Identifiers::TechNote)
|
|
21
|
+
return render_publication(id) if id.is_a?(Identifiers::Publication)
|
|
22
|
+
|
|
23
|
+
raise ArgumentError, "Unknown Adobe identifier class: #{id.class}"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
|
|
28
|
+
def render_tech_note(id)
|
|
29
|
+
"Adobe TN #{id.number}"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def render_publication(id)
|
|
33
|
+
rendered = "Adobe Publication #{id.slug}"
|
|
34
|
+
rendered << "-#{id.version}" if id.version
|
|
35
|
+
rendered
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Adobe
|
|
5
|
+
# Generates URN strings for Adobe identifiers.
|
|
6
|
+
#
|
|
7
|
+
# Format:
|
|
8
|
+
# urn:adobe:tech-note:<number> e.g. urn:adobe:tech-note:5014
|
|
9
|
+
# urn:adobe:publication:<slug>[:v<ver>] e.g. urn:adobe:publication:adobe-glyph-list
|
|
10
|
+
# urn:adobe:publication:adobe-japan1:v7
|
|
11
|
+
class UrnGenerator
|
|
12
|
+
attr_reader :identifier
|
|
13
|
+
|
|
14
|
+
def initialize(identifier)
|
|
15
|
+
@identifier = identifier
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def generate
|
|
19
|
+
if identifier.is_a?(Identifiers::TechNote)
|
|
20
|
+
generate_tech_note
|
|
21
|
+
elsif identifier.is_a?(Identifiers::Publication)
|
|
22
|
+
generate_publication
|
|
23
|
+
else
|
|
24
|
+
raise ArgumentError,
|
|
25
|
+
"Unknown Adobe identifier class: #{identifier.class}"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def generate_tech_note
|
|
32
|
+
"urn:adobe:tech-note:#{identifier.number}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def generate_publication
|
|
36
|
+
parts = ["urn:adobe:publication", identifier.slug]
|
|
37
|
+
parts << "v#{identifier.version}" if identifier.version
|
|
38
|
+
parts.join(":")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Adobe
|
|
5
|
+
# Parses Adobe URNs back into identifiers.
|
|
6
|
+
#
|
|
7
|
+
# UrnGenerator emits:
|
|
8
|
+
# urn:adobe:tech-note:<number>
|
|
9
|
+
# urn:adobe:publication:<slug>[:v<version>]
|
|
10
|
+
#
|
|
11
|
+
# Examples:
|
|
12
|
+
# urn:adobe:tech-note:5014 → Adobe Technical Note #5014
|
|
13
|
+
# urn:adobe:publication:adobe-glyph-list → adobe-glyph-list
|
|
14
|
+
# urn:adobe:publication:adobe-japan1:v7 → adobe-japan1-7
|
|
15
|
+
class UrnParser < Pubid::UrnParser::Base
|
|
16
|
+
PREFIX = "urn:adobe:".freeze
|
|
17
|
+
|
|
18
|
+
def parse_urn(urn)
|
|
19
|
+
body = strip_namespace(urn)
|
|
20
|
+
parts = split_parts(body)
|
|
21
|
+
namespace = parts.fetch(0)
|
|
22
|
+
|
|
23
|
+
case namespace
|
|
24
|
+
when "tech-note"
|
|
25
|
+
parse_tech_note(parts)
|
|
26
|
+
when "publication"
|
|
27
|
+
parse_publication(parts)
|
|
28
|
+
else
|
|
29
|
+
raise Pubid::UrnParser::Errors::ParseError,
|
|
30
|
+
"Unknown Adobe URN namespace: #{namespace.inspect} in #{urn.inspect}"
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def strip_namespace(urn)
|
|
37
|
+
unless urn.downcase.start_with?(PREFIX)
|
|
38
|
+
raise Pubid::UrnParser::Errors::ParseError,
|
|
39
|
+
"Invalid Adobe URN: #{urn.inspect}"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
urn[PREFIX.length..]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def parse_tech_note(parts)
|
|
46
|
+
number = parts.fetch(1)
|
|
47
|
+
flavor_parse("Adobe Technical Note ##{number}")
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def parse_publication(parts)
|
|
51
|
+
slug = parts.fetch(1)
|
|
52
|
+
version_seg = parts[2]
|
|
53
|
+
if version_seg&.start_with?("v")
|
|
54
|
+
flavor_parse("#{slug}-#{version_seg.sub(/\Av/, "")}")
|
|
55
|
+
else
|
|
56
|
+
flavor_parse(slug)
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def split_parts(body)
|
|
61
|
+
body.split(":")
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def flavor_parse(text)
|
|
65
|
+
::Pubid::Adobe.parse(text)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
data/lib/pubid/adobe.rb
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pubid
|
|
4
|
+
module Adobe
|
|
5
|
+
extend Pubid::PrefixesSupport
|
|
6
|
+
|
|
7
|
+
# Leading identifier prefix tokens that an Adobe document id can start
|
|
8
|
+
# with. Tech notes appear as both `Adobe Technical Note #<n>` and the
|
|
9
|
+
# short alias `ATN<n>` in citations; both must route to this flavor.
|
|
10
|
+
# Named publications start with `Adobe` (e.g. `Adobe Glyph List`,
|
|
11
|
+
# `Adobe-Japan1-7`).
|
|
12
|
+
PREFIXES = ["Adobe", "ATN"].freeze
|
|
13
|
+
|
|
14
|
+
autoload :Builder, "#{__dir__}/adobe/builder"
|
|
15
|
+
autoload :Identifier, "#{__dir__}/adobe/identifier"
|
|
16
|
+
autoload :Identifiers, "#{__dir__}/adobe/identifiers"
|
|
17
|
+
autoload :Parser, "#{__dir__}/adobe/parser"
|
|
18
|
+
autoload :Renderer, "#{__dir__}/adobe/renderer"
|
|
19
|
+
autoload :UrnGenerator, "#{__dir__}/adobe/urn_generator"
|
|
20
|
+
autoload :UrnParser, "#{__dir__}/adobe/urn_parser"
|
|
21
|
+
|
|
22
|
+
# Parse an Adobe identifier string into an identifier object.
|
|
23
|
+
# @param identifier [String]
|
|
24
|
+
# @return [Pubid::Adobe::Identifier]
|
|
25
|
+
def self.parse(identifier)
|
|
26
|
+
Identifier.parse(identifier)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Per-flavor format registry: inherits global formats, overrides :human
|
|
30
|
+
# with the Adobe-specific renderer.
|
|
31
|
+
Identifier.format_registry = FormatRegistry.new(parent: ::Pubid::Identifier.format_registry)
|
|
32
|
+
Identifier.format_registry.register(:human, renderer: Adobe::Renderer)
|
|
33
|
+
|
|
34
|
+
# Auto-discover identifier types from the Identifiers namespace.
|
|
35
|
+
# @return [Array<Class>]
|
|
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 < Pubid::Identifier }
|
|
40
|
+
.reject { |c| c == Identifier }
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Lookup: type key → identifier class
|
|
44
|
+
# @param code [String, Symbol]
|
|
45
|
+
# @return [Class, nil]
|
|
46
|
+
def self.locate_type(code)
|
|
47
|
+
identifier_types.find { |t| t.type[:key].to_s == code.to_s }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Lookup: type short letter (e.g. "ATN") → identifier class
|
|
51
|
+
# @param short [String]
|
|
52
|
+
# @return [Class<Identifier>]
|
|
53
|
+
def self.identifier_klass_for_short(short)
|
|
54
|
+
@by_short ||= identifier_types.to_h { |klass| [klass.type[:short].to_s, klass] }
|
|
55
|
+
@by_short.fetch(short.to_s)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
Pubid::Registry.register(:adobe, Pubid::Adobe)
|