pubid 2.0.0.alpha.10 → 2.0.0.pre.alpha.1
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/README.adoc +51 -54
- data/data/iec/update_codes.yaml +0 -3
- data/data/ieee/update_codes.yaml +1 -107
- data/data/nist/update_codes.yaml +0 -35
- data/lib/pubid/amca/builder.rb +6 -6
- data/lib/pubid/amca/identifier.rb +16 -2
- data/lib/pubid/amca/identifiers/base.rb +46 -74
- data/lib/pubid/amca/identifiers/interpretation.rb +30 -17
- data/lib/pubid/amca/identifiers/publication.rb +27 -14
- data/lib/pubid/amca/identifiers/standard.rb +5 -3
- data/lib/pubid/amca/identifiers.rb +1 -0
- data/lib/pubid/amca/parser.rb +1 -1
- data/lib/pubid/amca/scheme.rb +16 -0
- data/lib/pubid/amca/single_identifier.rb +24 -1
- data/lib/pubid/amca/urn_generator.rb +3 -4
- data/lib/pubid/amca.rb +3 -50
- data/lib/pubid/ansi/builder.rb +5 -7
- data/lib/pubid/ansi/identifier.rb +1 -19
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +1 -2
- data/lib/pubid/ansi/identifiers/standard.rb +3 -2
- data/lib/pubid/ansi/parser.rb +1 -1
- data/lib/pubid/ansi/scheme.rb +15 -0
- data/lib/pubid/ansi/single_identifier.rb +31 -2
- data/lib/pubid/ansi/urn_generator.rb +38 -3
- data/lib/pubid/ansi.rb +6 -47
- data/lib/pubid/api/builder.rb +72 -45
- data/lib/pubid/api/identifier.rb +9 -30
- data/lib/pubid/api/identifiers/base.rb +14 -2
- data/lib/pubid/api/identifiers/bulletin.rb +2 -0
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +2 -0
- data/lib/pubid/api/identifiers/mpms.rb +28 -10
- data/lib/pubid/api/identifiers/publication.rb +2 -0
- data/lib/pubid/api/identifiers/recommended_practice.rb +2 -0
- data/lib/pubid/api/identifiers/specification.rb +2 -0
- data/lib/pubid/api/identifiers/standard.rb +2 -0
- data/lib/pubid/api/identifiers/technical_report.rb +2 -0
- data/lib/pubid/api/identifiers/typeless_standard.rb +16 -0
- data/lib/pubid/api/parser.rb +1 -1
- data/lib/pubid/api/scheme.rb +66 -0
- data/lib/pubid/api/single_identifier.rb +32 -10
- data/lib/pubid/api/urn_generator.rb +18 -0
- data/lib/pubid/api.rb +5 -56
- data/lib/pubid/ashrae/builder.rb +35 -56
- data/lib/pubid/ashrae/identifier.rb +16 -6
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +11 -7
- data/lib/pubid/ashrae/identifiers/addendum.rb +20 -9
- data/lib/pubid/ashrae/identifiers/base.rb +15 -111
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +16 -8
- data/lib/pubid/ashrae/identifiers/errata.rb +10 -9
- data/lib/pubid/ashrae/identifiers/guideline.rb +0 -3
- data/lib/pubid/ashrae/identifiers/interpretation.rb +10 -16
- data/lib/pubid/ashrae/identifiers/standard.rb +0 -3
- data/lib/pubid/ashrae/identifiers.rb +1 -0
- data/lib/pubid/ashrae/parser.rb +16 -40
- data/lib/pubid/ashrae/scheme.rb +53 -0
- data/lib/pubid/ashrae/single_identifier.rb +14 -1
- data/lib/pubid/ashrae/supplement_identifier.rb +6 -21
- data/lib/pubid/ashrae/urn_generator.rb +10 -8
- data/lib/pubid/ashrae.rb +2 -58
- data/lib/pubid/asme/builder.rb +2 -11
- data/lib/pubid/asme/components/code.rb +2 -10
- data/lib/pubid/asme/identifier.rb +0 -9
- data/lib/pubid/asme/identifiers/base.rb +60 -0
- data/lib/pubid/asme/identifiers/standard.rb +2 -86
- data/lib/pubid/asme/parser.rb +1 -1
- data/lib/pubid/asme/scheme.rb +37 -0
- data/lib/pubid/asme/single_identifier.rb +2 -11
- data/lib/pubid/asme/urn_generator.rb +2 -2
- data/lib/pubid/asme.rb +1 -47
- data/lib/pubid/astm/builder.rb +3 -10
- data/lib/pubid/astm/components/code.rb +0 -9
- data/lib/pubid/astm/identifier.rb +0 -9
- data/lib/pubid/astm/identifiers/adjunct.rb +9 -16
- data/lib/pubid/astm/identifiers/data_series.rb +14 -2
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +34 -25
- data/lib/pubid/astm/identifiers/manual.rb +25 -8
- data/lib/pubid/astm/identifiers/monograph.rb +14 -2
- data/lib/pubid/astm/identifiers/research_report.rb +5 -8
- data/lib/pubid/astm/identifiers/standard.rb +37 -8
- data/lib/pubid/astm/identifiers/technical_report.rb +13 -2
- data/lib/pubid/astm/identifiers/work_in_progress.rb +10 -1
- data/lib/pubid/astm/parser.rb +1 -1
- data/lib/pubid/astm/scheme.rb +55 -0
- data/lib/pubid/astm/single_identifier.rb +10 -32
- data/lib/pubid/astm/urn_generator.rb +5 -7
- data/lib/pubid/astm.rb +27 -44
- data/lib/pubid/bsi/builder.rb +107 -119
- data/lib/pubid/bsi/identifier.rb +25 -4
- data/lib/pubid/bsi/identifiers/addendum_document.rb +37 -3
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +47 -19
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +39 -8
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +55 -2
- data/lib/pubid/bsi/identifiers/amendment.rb +22 -30
- data/lib/pubid/bsi/identifiers/base.rb +11 -0
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +7 -1
- data/lib/pubid/bsi/identifiers/british_standard.rb +1 -2
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +87 -13
- data/lib/pubid/bsi/identifiers/committee_document.rb +17 -10
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +87 -19
- data/lib/pubid/bsi/identifiers/corrigendum.rb +10 -26
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +36 -0
- data/lib/pubid/bsi/identifiers/disc.rb +29 -0
- data/lib/pubid/bsi/identifiers/draft_document.rb +46 -2
- data/lib/pubid/bsi/identifiers/electronic_book.rb +38 -2
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +21 -10
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +47 -0
- data/lib/pubid/bsi/identifiers/flex.rb +34 -3
- data/lib/pubid/bsi/identifiers/handbook.rb +17 -1
- data/lib/pubid/bsi/identifiers/index.rb +32 -0
- data/lib/pubid/bsi/identifiers/method.rb +41 -0
- data/lib/pubid/bsi/identifiers/national_annex.rb +29 -4
- data/lib/pubid/bsi/identifiers/practice_guide.rb +7 -1
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +54 -2
- data/lib/pubid/bsi/identifiers/published_document.rb +54 -2
- data/lib/pubid/bsi/identifiers/section.rb +30 -0
- data/lib/pubid/bsi/identifiers/set.rb +20 -14
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -10
- data/lib/pubid/bsi/identifiers/supplement_document.rb +25 -3
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +46 -0
- data/lib/pubid/bsi/identifiers/technical_specification.rb +47 -2
- data/lib/pubid/bsi/identifiers/test_method.rb +32 -0
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +22 -7
- data/lib/pubid/bsi/identifiers.rb +1 -0
- data/lib/pubid/bsi/parser.rb +6 -20
- data/lib/pubid/bsi/scheme.rb +243 -0
- data/lib/pubid/bsi/single_identifier.rb +82 -94
- data/lib/pubid/bsi/urn_generator.rb +5 -13
- data/lib/pubid/bsi.rb +2 -252
- data/lib/pubid/builder/base.rb +13 -62
- data/lib/pubid/bundled_identifier.rb +10 -18
- data/lib/pubid/ccsds/builder.rb +4 -5
- data/lib/pubid/ccsds/identifier.rb +3 -63
- data/lib/pubid/ccsds/identifiers/base.rb +51 -14
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +8 -9
- data/lib/pubid/ccsds/parser.rb +3 -5
- data/lib/pubid/ccsds/scheme.rb +57 -0
- data/lib/pubid/ccsds/single_identifier.rb +3 -6
- data/lib/pubid/ccsds/supplement_identifier.rb +13 -17
- data/lib/pubid/ccsds/urn_generator.rb +6 -6
- data/lib/pubid/ccsds.rb +1 -44
- data/lib/pubid/cen_cenelec/builder.rb +29 -61
- data/lib/pubid/cen_cenelec/identifier.rb +5 -28
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +4 -9
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +12 -2
- data/lib/pubid/cen_cenelec/identifiers/base.rb +46 -5
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +27 -6
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +17 -2
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +4 -62
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +7 -20
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +6 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -2
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/cen_cenelec/parser.rb +1 -1
- data/lib/pubid/cen_cenelec/scheme.rb +164 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +91 -10
- data/lib/pubid/cen_cenelec/supplement_identifier.rb +7 -6
- data/lib/pubid/cen_cenelec/urn_generator.rb +7 -7
- data/lib/pubid/cen_cenelec.rb +1 -188
- data/lib/pubid/cie/builder.rb +24 -149
- data/lib/pubid/cie/components/code.rb +72 -0
- data/lib/pubid/cie/identifier.rb +5 -20
- data/lib/pubid/cie/identifiers/bundle.rb +5 -35
- data/lib/pubid/cie/identifiers/conference.rb +6 -11
- data/lib/pubid/cie/identifiers/corrigendum.rb +23 -17
- data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
- data/lib/pubid/cie/identifiers/identical.rb +9 -9
- data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
- data/lib/pubid/cie/identifiers/standard.rb +8 -43
- data/lib/pubid/cie/identifiers/supplement.rb +25 -27
- data/lib/pubid/cie/identifiers/tutorial_bundle.rb +3 -7
- data/lib/pubid/cie/identifiers.rb +0 -2
- data/lib/pubid/cie/parser.rb +6 -55
- data/lib/pubid/cie/scheme.rb +64 -0
- data/lib/pubid/cie/single_identifier.rb +5 -44
- data/lib/pubid/cie/supplement_identifier.rb +16 -29
- data/lib/pubid/cie/urn_generator.rb +8 -11
- data/lib/pubid/cie.rb +2 -57
- data/lib/pubid/components/code.rb +8 -22
- data/lib/pubid/components/date.rb +18 -41
- data/lib/pubid/components/edition.rb +6 -9
- data/lib/pubid/components/language.rb +4 -6
- data/lib/pubid/components/locality.rb +1 -10
- data/lib/pubid/components/publisher.rb +6 -9
- data/lib/pubid/components/stage.rb +14 -5
- data/lib/pubid/components/type.rb +15 -5
- data/lib/pubid/components/typed_stage.rb +8 -11
- data/lib/pubid/components.rb +0 -4
- data/lib/pubid/core/update_codes.rb +7 -28
- data/lib/pubid/csa/builder.rb +48 -48
- data/lib/pubid/csa/composite_identifier.rb +7 -18
- data/lib/pubid/csa/identifier.rb +78 -191
- data/lib/pubid/csa/identifiers/base.rb +123 -0
- data/lib/pubid/csa/identifiers/bundled.rb +9 -25
- data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
- data/lib/pubid/csa/identifiers/cec.rb +103 -40
- data/lib/pubid/csa/identifiers/combined.rb +69 -97
- data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
- data/lib/pubid/csa/identifiers/package.rb +4 -4
- data/lib/pubid/csa/identifiers/series.rb +104 -0
- data/lib/pubid/csa/parser.rb +8 -12
- data/lib/pubid/csa/scheme.rb +44 -0
- data/lib/pubid/csa/single_identifier.rb +5 -94
- data/lib/pubid/csa/urn_generator.rb +2 -9
- data/lib/pubid/csa/wrapper_identifier.rb +10 -43
- data/lib/pubid/csa.rb +1 -56
- data/lib/pubid/etsi/builder.rb +4 -13
- data/lib/pubid/etsi/components/code.rb +9 -10
- data/lib/pubid/etsi/components/version.rb +5 -0
- data/lib/pubid/etsi/identifier.rb +12 -2
- data/lib/pubid/etsi/identifiers/base.rb +24 -60
- data/lib/pubid/etsi/identifiers/etsi_standard.rb +4 -207
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +14 -46
- data/lib/pubid/etsi/identifiers.rb +1 -0
- data/lib/pubid/etsi/parser.rb +3 -9
- data/lib/pubid/etsi/scheme.rb +42 -0
- data/lib/pubid/etsi.rb +2 -52
- data/lib/pubid/export/data_class_exporter.rb +59 -0
- data/lib/pubid/export/exporter.rb +47 -6
- data/lib/pubid/export/flavor_exporter.rb +276 -124
- data/lib/pubid/export/ieee_exporter.rb +78 -0
- data/lib/pubid/export/itu_exporter.rb +66 -0
- data/lib/pubid/export/nist_exporter.rb +64 -0
- data/lib/pubid/export/registry_exporter.rb +90 -0
- data/lib/pubid/export/scheme_exporter.rb +70 -0
- data/lib/pubid/export.rb +6 -0
- data/lib/pubid/identifier.rb +37 -920
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/identifier_registry.rb +198 -0
- data/lib/pubid/idf/builder.rb +7 -7
- data/lib/pubid/idf/identifier.rb +13 -23
- data/lib/pubid/idf/identifiers/amendment.rb +1 -2
- data/lib/pubid/idf/identifiers/corrigendum.rb +1 -2
- data/lib/pubid/idf/identifiers/international_standard.rb +1 -2
- data/lib/pubid/idf/identifiers/reviewed_method.rb +1 -2
- data/lib/pubid/idf/parser.rb +5 -6
- data/lib/pubid/idf/scheme.rb +61 -0
- data/lib/pubid/idf/supplement_identifier.rb +13 -5
- data/lib/pubid/idf/urn_generator.rb +39 -4
- data/lib/pubid/idf.rb +1 -65
- data/lib/pubid/iec/builder.rb +91 -92
- data/lib/pubid/iec/components/code.rb +32 -9
- data/lib/pubid/iec/components/publisher.rb +1 -1
- data/lib/pubid/iec/identifier.rb +8 -328
- data/lib/pubid/iec/identifiers/amendment.rb +5 -8
- data/lib/pubid/iec/identifiers/base.rb +31 -7
- data/lib/pubid/iec/identifiers/component_specification.rb +13 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +12 -1
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +30 -29
- data/lib/pubid/iec/identifiers/corrigendum.rb +5 -4
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +36 -43
- data/lib/pubid/iec/identifiers/guide.rb +18 -0
- data/lib/pubid/iec/identifiers/international_standard.rb +9 -24
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +3 -2
- data/lib/pubid/iec/identifiers/operational_document.rb +13 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +15 -2
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +24 -26
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +13 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +13 -2
- data/lib/pubid/iec/identifiers/technical_report.rb +21 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +21 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +12 -1
- data/lib/pubid/iec/identifiers/test_report_form.rb +46 -3
- data/lib/pubid/iec/identifiers/vap_identifier.rb +34 -33
- data/lib/pubid/iec/identifiers/white_paper.rb +13 -3
- data/lib/pubid/iec/identifiers/working_document.rb +60 -26
- data/lib/pubid/iec/parser.rb +42 -73
- data/lib/pubid/iec/scheme.rb +71 -0
- data/lib/pubid/iec/single_identifier.rb +23 -15
- data/lib/pubid/iec/supplement_identifier.rb +67 -84
- data/lib/pubid/iec/urn_generator.rb +143 -195
- data/lib/pubid/iec/urn_parser.rb +246 -85
- data/lib/pubid/iec.rb +66 -45
- data/lib/pubid/ieee/aiee/builder.rb +3 -17
- data/lib/pubid/ieee/aiee/identifier.rb +62 -46
- data/lib/pubid/ieee/aiee/parser.rb +1 -1
- data/lib/pubid/ieee/builder.rb +81 -398
- data/lib/pubid/ieee/components/code.rb +0 -8
- data/lib/pubid/ieee/components/draft.rb +0 -54
- data/lib/pubid/ieee/components/relationship.rb +149 -5
- data/lib/pubid/ieee/identifier.rb +11 -3
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +14 -62
- data/lib/pubid/ieee/identifiers/base.rb +547 -340
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +12 -6
- data/lib/pubid/ieee/identifiers/corrigendum.rb +12 -15
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +13 -24
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +7 -3
- data/lib/pubid/ieee/identifiers/dual_published.rb +7 -58
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +11 -99
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +11 -25
- data/lib/pubid/ieee/identifiers/joint_development.rb +15 -66
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +24 -58
- data/lib/pubid/ieee/identifiers/nesc/base.rb +19 -90
- data/lib/pubid/ieee/identifiers/nesc/draft.rb +5 -20
- data/lib/pubid/ieee/identifiers/nesc/handbook.rb +5 -16
- data/lib/pubid/ieee/identifiers/nesc/redline.rb +2 -11
- data/lib/pubid/ieee/identifiers/nesc/standard.rb +3 -18
- data/lib/pubid/ieee/identifiers/nesc.rb +0 -1
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +9 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +6 -29
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +11 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +39 -4
- data/lib/pubid/ieee/identifiers/standard.rb +2 -5
- data/lib/pubid/ieee/identifiers/supplement_identifier.rb +7 -26
- data/lib/pubid/ieee/identifiers.rb +1 -2
- data/lib/pubid/ieee/ire/builder.rb +6 -7
- data/lib/pubid/ieee/ire/identifier.rb +33 -48
- data/lib/pubid/ieee/ire/parser.rb +1 -1
- data/lib/pubid/ieee/nesc/builder.rb +20 -33
- data/lib/pubid/ieee/nesc/parser.rb +15 -16
- data/lib/pubid/ieee/parser.rb +44 -462
- data/lib/pubid/ieee/scheme.rb +90 -0
- data/lib/pubid/ieee/typed_stages.rb +1 -12
- data/lib/pubid/ieee/urn_generator.rb +8 -35
- data/lib/pubid/ieee.rb +2 -133
- data/lib/pubid/ieee_debug.rb +1 -0
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +17 -5
- data/lib/pubid/iho/identifiers/base.rb +30 -64
- data/lib/pubid/iho/identifiers/bibliographic.rb +5 -1
- data/lib/pubid/iho/identifiers/circular_letter.rb +5 -1
- data/lib/pubid/iho/identifiers/miscellaneous.rb +5 -1
- data/lib/pubid/iho/identifiers/publication.rb +5 -1
- data/lib/pubid/iho/identifiers/standard.rb +5 -1
- data/lib/pubid/iho/identifiers.rb +1 -0
- data/lib/pubid/iho/parser.rb +4 -4
- data/lib/pubid/iho/scheme.rb +29 -0
- data/lib/pubid/iho/urn_generator.rb +3 -3
- data/lib/pubid/iho.rb +3 -59
- data/lib/pubid/iso/builder.rb +57 -68
- data/lib/pubid/iso/bundled_identifier.rb +3 -56
- data/lib/pubid/iso/combined_identifier.rb +4 -6
- data/lib/pubid/iso/components/code.rb +19 -7
- data/lib/pubid/iso/components/publisher.rb +8 -10
- data/lib/pubid/iso/components.rb +4 -2
- data/lib/pubid/iso/identifier.rb +11 -260
- data/lib/pubid/iso/identifiers/addendum.rb +6 -9
- data/lib/pubid/iso/identifiers/amendment.rb +4 -8
- data/lib/pubid/iso/identifiers/base.rb +115 -0
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +1 -0
- data/lib/pubid/iso/identifiers/directives.rb +2 -8
- data/lib/pubid/iso/identifiers/directives_supplement.rb +26 -55
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +1 -0
- data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
- data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +4 -10
- data/lib/pubid/iso/identifiers/pas.rb +2 -2
- data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
- data/lib/pubid/iso/identifiers/supplement.rb +3 -11
- data/lib/pubid/iso/identifiers/tc_document.rb +15 -44
- data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
- data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
- data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
- data/lib/pubid/iso/identifiers.rb +1 -0
- data/lib/pubid/iso/parser.rb +19 -43
- data/lib/pubid/iso/scheme.rb +187 -0
- data/lib/pubid/iso/single_identifier.rb +7 -6
- data/lib/pubid/iso/supplement_identifier.rb +3 -29
- data/lib/pubid/iso/urn_generator.rb +177 -78
- data/lib/pubid/iso/urn_parser.rb +10 -29
- data/lib/pubid/iso.rb +2 -188
- data/lib/pubid/itu/builder.rb +41 -230
- data/lib/pubid/itu/components/code.rb +12 -57
- data/lib/pubid/itu/components/sector.rb +4 -15
- data/lib/pubid/itu/components/series.rb +4 -0
- data/lib/pubid/itu/identifier.rb +51 -2
- data/lib/pubid/itu/identifiers/amendment.rb +31 -7
- data/lib/pubid/itu/identifiers/annex.rb +4 -13
- data/lib/pubid/itu/identifiers/base.rb +128 -456
- data/lib/pubid/itu/identifiers/combined_identifier.rb +25 -99
- data/lib/pubid/itu/identifiers/corrigendum.rb +25 -16
- data/lib/pubid/itu/identifiers/recommendation.rb +4 -3
- data/lib/pubid/itu/identifiers/special_publication.rb +3 -3
- data/lib/pubid/itu/identifiers/supplement.rb +16 -119
- data/lib/pubid/itu/identifiers.rb +1 -10
- data/lib/pubid/itu/model.rb +1 -1
- data/lib/pubid/itu/parser.rb +27 -481
- data/lib/pubid/itu/scheme.rb +174 -0
- data/lib/pubid/itu/urn_generator.rb +6 -36
- data/lib/pubid/itu.rb +2 -58
- data/lib/pubid/jcgm/builder.rb +19 -37
- data/lib/pubid/jcgm/identifier.rb +0 -10
- data/lib/pubid/jcgm/identifiers/amendment.rb +11 -0
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +15 -3
- data/lib/pubid/jcgm/identifiers.rb +0 -2
- data/lib/pubid/jcgm/parser.rb +7 -74
- data/lib/pubid/jcgm/scheme.rb +60 -0
- data/lib/pubid/jcgm/single_identifier.rb +14 -84
- data/lib/pubid/jcgm/supplement_identifier.rb +4 -39
- data/lib/pubid/jcgm/urn_generator.rb +19 -25
- data/lib/pubid/jcgm.rb +2 -57
- data/lib/pubid/jis/builder.rb +52 -44
- data/lib/pubid/jis/components/code.rb +59 -0
- data/lib/pubid/{astm → jis}/components.rb +1 -1
- data/lib/pubid/jis/identifier.rb +5 -181
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/base.rb +72 -0
- data/lib/pubid/jis/identifiers/standard.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_report.rb +1 -2
- data/lib/pubid/jis/identifiers/technical_specification.rb +1 -2
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +6 -32
- data/lib/pubid/jis/scheme.rb +49 -0
- data/lib/pubid/jis/single_identifier.rb +12 -6
- data/lib/pubid/jis/supplement_identifier.rb +14 -17
- data/lib/pubid/jis.rb +2 -48
- data/lib/pubid/nist/builder.rb +1765 -146
- data/lib/pubid/nist/components/code.rb +20 -9
- data/lib/pubid/nist/components/edition.rb +0 -16
- data/lib/pubid/nist/components/publisher.rb +24 -0
- data/lib/pubid/nist/components/supplement.rb +21 -91
- data/lib/pubid/nist/components.rb +1 -0
- data/lib/pubid/nist/configuration.rb +2 -12
- data/lib/pubid/nist/identifiers/base.rb +417 -662
- data/lib/pubid/nist/identifiers/circular.rb +5 -17
- data/lib/pubid/nist/identifiers/circular_supplement.rb +6 -16
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -3
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +5 -7
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +5 -18
- data/lib/pubid/nist/identifiers/crpl_report.rb +13 -16
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -18
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -3
- data/lib/pubid/nist/identifiers/handbook.rb +4 -12
- data/lib/pubid/nist/identifiers/internal_report.rb +7 -15
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -3
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +11 -20
- data/lib/pubid/nist/identifiers/monograph.rb +11 -22
- data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
- data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
- data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
- data/lib/pubid/nist/identifiers/report.rb +10 -19
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -12
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -4
- data/lib/pubid/nist/identifiers.rb +1 -1
- data/lib/pubid/nist/parser.rb +429 -97
- data/lib/pubid/nist/scheme.rb +199 -0
- data/lib/pubid/nist/supplement_identifier.rb +34 -35
- data/lib/pubid/nist/urn_generator.rb +8 -14
- data/lib/pubid/nist.rb +5 -107
- data/lib/pubid/oiml/builder.rb +10 -91
- data/lib/pubid/oiml/components/code.rb +0 -17
- data/lib/pubid/oiml/identifier.rb +0 -53
- data/lib/pubid/oiml/identifiers/annex.rb +46 -13
- data/lib/pubid/oiml/identifiers/base.rb +36 -0
- data/lib/pubid/oiml/identifiers/basic_publication.rb +0 -2
- data/lib/pubid/oiml/identifiers/document.rb +0 -2
- data/lib/pubid/oiml/identifiers/expert_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/guide.rb +0 -2
- data/lib/pubid/oiml/identifiers/recommendation.rb +0 -2
- data/lib/pubid/oiml/identifiers/seminar_report.rb +0 -2
- data/lib/pubid/oiml/identifiers/vocabulary.rb +0 -2
- data/lib/pubid/oiml/identifiers.rb +1 -3
- data/lib/pubid/oiml/parser.rb +17 -118
- data/lib/pubid/oiml/scheme.rb +46 -0
- data/lib/pubid/oiml/single_identifier.rb +43 -66
- data/lib/pubid/oiml/supplement_identifier.rb +17 -62
- data/lib/pubid/oiml/urn_generator.rb +8 -22
- data/lib/pubid/oiml.rb +1 -56
- data/lib/pubid/parser.rb +0 -1
- data/lib/pubid/parsers/mr_string.rb +7 -120
- data/lib/pubid/plateau/builder.rb +4 -8
- data/lib/pubid/plateau/identifiers/base.rb +36 -40
- data/lib/pubid/plateau/identifiers/handbook.rb +7 -1
- data/lib/pubid/plateau/identifiers/technical_report.rb +5 -1
- data/lib/pubid/plateau/identifiers.rb +1 -0
- data/lib/pubid/plateau/parser.rb +6 -16
- data/lib/pubid/plateau/scheme.rb +45 -0
- data/lib/pubid/plateau/supplement_identifier.rb +15 -11
- data/lib/pubid/plateau.rb +1 -58
- data/lib/pubid/renderers/base.rb +0 -47
- data/lib/pubid/renderers/directives_renderer.rb +14 -27
- data/lib/pubid/renderers/guide_renderer.rb +1 -7
- data/lib/pubid/renderers/human_readable.rb +9 -34
- data/lib/pubid/renderers/iwa_renderer.rb +1 -5
- data/lib/pubid/renderers/mr_string.rb +6 -54
- data/lib/pubid/renderers/supplement_renderer.rb +2 -5
- data/lib/pubid/renderers.rb +0 -1
- data/lib/pubid/rendering/base.rb +73 -0
- data/lib/pubid/rendering/common.rb +211 -0
- data/lib/pubid/rendering/context.rb +21 -33
- data/lib/pubid/rendering/format.rb +25 -0
- data/lib/pubid/rendering/numbering.rb +7 -25
- data/lib/pubid/rendering/supplement.rb +4 -4
- data/lib/pubid/rendering.rb +3 -0
- data/lib/pubid/sae/builder.rb +1 -1
- data/lib/pubid/sae/components/date.rb +0 -8
- data/lib/pubid/sae/components/type.rb +1 -5
- data/lib/pubid/sae/identifier.rb +12 -2
- data/lib/pubid/sae/identifiers/base.rb +28 -33
- data/lib/pubid/sae/identifiers.rb +1 -0
- data/lib/pubid/sae/parser.rb +1 -1
- data/lib/pubid/sae/scheme.rb +47 -0
- data/lib/pubid/sae/urn_generator.rb +10 -2
- data/lib/pubid/sae.rb +2 -49
- data/lib/pubid/scheme.rb +207 -0
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +10 -424
- data/lib/tasks/export.rake +5 -6
- data/lib/tasks/website-data.json +1796 -1854
- metadata +45 -307
- data/data/bipm/update_codes.yaml +0 -9
- data/data/nist/series.yaml +0 -155
- data/lib/pubid/adobe/builder.rb +0 -52
- data/lib/pubid/adobe/identifier.rb +0 -47
- data/lib/pubid/adobe/identifiers/publication.rb +0 -31
- data/lib/pubid/adobe/identifiers/tech_note.rb +0 -32
- data/lib/pubid/adobe/identifiers.rb +0 -10
- data/lib/pubid/adobe/parser.rb +0 -136
- data/lib/pubid/adobe/renderer.rb +0 -39
- data/lib/pubid/adobe/urn_generator.rb +0 -42
- data/lib/pubid/adobe/urn_parser.rb +0 -69
- data/lib/pubid/adobe.rb +0 -60
- data/lib/pubid/amca/renderer.rb +0 -82
- data/lib/pubid/amca/urn_parser.rb +0 -28
- data/lib/pubid/ansi/renderer.rb +0 -53
- data/lib/pubid/ansi/urn_parser.rb +0 -23
- data/lib/pubid/api/identifiers.rb +0 -18
- data/lib/pubid/api/renderer.rb +0 -98
- data/lib/pubid/api/urn_parser.rb +0 -35
- data/lib/pubid/ashrae/renderer.rb +0 -117
- data/lib/pubid/ashrae/urn_parser.rb +0 -27
- data/lib/pubid/asme/renderer.rb +0 -66
- data/lib/pubid/asme/urn_parser.rb +0 -31
- data/lib/pubid/astm/identifiers/code_number.rb +0 -81
- data/lib/pubid/astm/identifiers.rb +0 -19
- data/lib/pubid/astm/renderer.rb +0 -172
- data/lib/pubid/astm/urn_parser.rb +0 -30
- data/lib/pubid/bipm/builder.rb +0 -163
- data/lib/pubid/bipm/identifier.rb +0 -285
- data/lib/pubid/bipm/identifiers/committee_document.rb +0 -36
- data/lib/pubid/bipm/identifiers/guide.rb +0 -35
- data/lib/pubid/bipm/identifiers/meeting.rb +0 -53
- data/lib/pubid/bipm/identifiers/mep.rb +0 -33
- data/lib/pubid/bipm/identifiers/metrologia_article.rb +0 -48
- data/lib/pubid/bipm/identifiers/si_brochure.rb +0 -33
- data/lib/pubid/bipm/identifiers.rb +0 -15
- data/lib/pubid/bipm/parser.rb +0 -237
- data/lib/pubid/bipm/renderer.rb +0 -118
- data/lib/pubid/bipm/urn_generator.rb +0 -58
- data/lib/pubid/bipm/urn_parser.rb +0 -60
- data/lib/pubid/bipm.rb +0 -91
- data/lib/pubid/bsi/renderer.rb +0 -1064
- data/lib/pubid/bsi/urn_parser.rb +0 -52
- data/lib/pubid/calconnect/builder.rb +0 -38
- data/lib/pubid/calconnect/identifier.rb +0 -121
- data/lib/pubid/calconnect/identifiers/standard.rb +0 -29
- data/lib/pubid/calconnect/identifiers.rb +0 -9
- data/lib/pubid/calconnect/parser.rb +0 -54
- data/lib/pubid/calconnect/renderer.rb +0 -36
- data/lib/pubid/calconnect/urn_generator.rb +0 -33
- data/lib/pubid/calconnect/urn_parser.rb +0 -34
- data/lib/pubid/calconnect.rb +0 -82
- data/lib/pubid/ccsds/urn_parser.rb +0 -20
- data/lib/pubid/cen_cenelec/renderer.rb +0 -261
- data/lib/pubid/cen_cenelec/urn_parser.rb +0 -28
- data/lib/pubid/cie/identifiers/code_attributes.rb +0 -52
- data/lib/pubid/cie/identifiers/proceedings.rb +0 -41
- data/lib/pubid/cie/urn_parser.rb +0 -28
- data/lib/pubid/components/adoption.rb +0 -104
- data/lib/pubid/components/iteration.rb +0 -32
- data/lib/pubid/components/relationship.rb +0 -151
- data/lib/pubid/components/supplement.rb +0 -184
- data/lib/pubid/csa/renderer.rb +0 -300
- data/lib/pubid/csa/urn_parser.rb +0 -33
- data/lib/pubid/doi/builder.rb +0 -18
- data/lib/pubid/doi/identifier.rb +0 -49
- data/lib/pubid/doi/identifiers/resource.rb +0 -30
- data/lib/pubid/doi/identifiers.rb +0 -9
- data/lib/pubid/doi/parser.rb +0 -52
- data/lib/pubid/doi/renderer.rb +0 -13
- data/lib/pubid/doi.rb +0 -55
- data/lib/pubid/easc/builder.rb +0 -55
- data/lib/pubid/easc/identifier.rb +0 -59
- data/lib/pubid/easc/identifiers/pmg.rb +0 -20
- data/lib/pubid/easc/identifiers/rmg.rb +0 -19
- data/lib/pubid/easc/identifiers.rb +0 -10
- data/lib/pubid/easc/parser.rb +0 -88
- data/lib/pubid/easc/renderer.rb +0 -48
- data/lib/pubid/easc/urn_generator.rb +0 -46
- data/lib/pubid/easc/urn_parser.rb +0 -57
- data/lib/pubid/easc.rb +0 -52
- data/lib/pubid/ecma/builder.rb +0 -45
- data/lib/pubid/ecma/identifier.rb +0 -147
- data/lib/pubid/ecma/identifiers/memento.rb +0 -30
- data/lib/pubid/ecma/identifiers/standard.rb +0 -31
- data/lib/pubid/ecma/identifiers/technical_report.rb +0 -31
- data/lib/pubid/ecma/identifiers.rb +0 -11
- data/lib/pubid/ecma/parser.rb +0 -76
- data/lib/pubid/ecma/renderer.rb +0 -67
- data/lib/pubid/ecma/urn_generator.rb +0 -46
- data/lib/pubid/ecma/urn_parser.rb +0 -51
- data/lib/pubid/ecma.rb +0 -67
- data/lib/pubid/errors.rb +0 -79
- data/lib/pubid/etsi/renderer.rb +0 -48
- data/lib/pubid/etsi/urn_parser.rb +0 -34
- data/lib/pubid/gb/builder.rb +0 -45
- data/lib/pubid/gb/identifier.rb +0 -67
- data/lib/pubid/gb/identifiers/standard.rb +0 -34
- data/lib/pubid/gb/identifiers.rb +0 -9
- data/lib/pubid/gb/parser.rb +0 -63
- data/lib/pubid/gb/renderer.rb +0 -35
- data/lib/pubid/gb.rb +0 -87
- data/lib/pubid/gost/builder.rb +0 -148
- data/lib/pubid/gost/identifier.rb +0 -47
- data/lib/pubid/gost/identifiers/foreign_reference.rb +0 -25
- data/lib/pubid/gost/identifiers/harmonized.rb +0 -39
- data/lib/pubid/gost/identifiers/identical_adoption.rb +0 -39
- data/lib/pubid/gost/identifiers/interstate_standard.rb +0 -20
- data/lib/pubid/gost/identifiers/national_standard.rb +0 -19
- data/lib/pubid/gost/identifiers.rb +0 -13
- data/lib/pubid/gost/parser.rb +0 -105
- data/lib/pubid/gost/renderer.rb +0 -48
- data/lib/pubid/gost/urn_generator.rb +0 -46
- data/lib/pubid/gost/urn_parser.rb +0 -52
- data/lib/pubid/gost.rb +0 -49
- data/lib/pubid/iala/builder.rb +0 -102
- data/lib/pubid/iala/identifier.rb +0 -90
- data/lib/pubid/iala/identifiers/advice.rb +0 -15
- data/lib/pubid/iala/identifiers/annex.rb +0 -57
- data/lib/pubid/iala/identifiers/general_assembly.rb +0 -19
- data/lib/pubid/iala/identifiers/guideline.rb +0 -17
- data/lib/pubid/iala/identifiers/letter.rb +0 -16
- data/lib/pubid/iala/identifiers/manual.rb +0 -18
- data/lib/pubid/iala/identifiers/model_course.rb +0 -17
- data/lib/pubid/iala/identifiers/recommendation.rb +0 -17
- data/lib/pubid/iala/identifiers/report.rb +0 -16
- data/lib/pubid/iala/identifiers/resolution.rb +0 -16
- data/lib/pubid/iala/identifiers/standard.rb +0 -17
- data/lib/pubid/iala/identifiers.rb +0 -19
- data/lib/pubid/iala/parser.rb +0 -138
- data/lib/pubid/iala/renderer.rb +0 -36
- data/lib/pubid/iala/urn_generator.rb +0 -49
- data/lib/pubid/iala/urn_parser.rb +0 -67
- data/lib/pubid/iala.rb +0 -71
- data/lib/pubid/iana/builder.rb +0 -22
- data/lib/pubid/iana/identifier.rb +0 -140
- data/lib/pubid/iana/identifiers/registry.rb +0 -69
- data/lib/pubid/iana/identifiers.rb +0 -9
- data/lib/pubid/iana/parser.rb +0 -38
- data/lib/pubid/iana/renderer.rb +0 -32
- data/lib/pubid/iana/urn_generator.rb +0 -19
- data/lib/pubid/iana/urn_parser.rb +0 -24
- data/lib/pubid/iana.rb +0 -69
- data/lib/pubid/idf/renderer.rb +0 -84
- data/lib/pubid/idf/urn_parser.rb +0 -25
- data/lib/pubid/iec/components.rb +0 -14
- data/lib/pubid/iec/identifiers/technical_group.rb +0 -30
- data/lib/pubid/iec/identifiers.rb +0 -31
- data/lib/pubid/iec/renderer.rb +0 -267
- data/lib/pubid/ieee/compaction.rb +0 -121
- data/lib/pubid/ieee/identifiers/amendment.rb +0 -40
- data/lib/pubid/ieee/identifiers/code_number.rb +0 -82
- data/lib/pubid/ieee/identifiers/nesc/edition.rb +0 -32
- data/lib/pubid/ieee/pre_parser.rb +0 -301
- data/lib/pubid/ieee/renderer.rb +0 -408
- data/lib/pubid/ieee/urn_parser.rb +0 -34
- data/lib/pubid/ietf/builder.rb +0 -78
- data/lib/pubid/ietf/identifier.rb +0 -5
- data/lib/pubid/ietf/identifiers/base.rb +0 -72
- data/lib/pubid/ietf/identifiers/bcp.rb +0 -36
- data/lib/pubid/ietf/identifiers/fyi.rb +0 -36
- data/lib/pubid/ietf/identifiers/internet_draft.rb +0 -45
- data/lib/pubid/ietf/identifiers/rfc.rb +0 -27
- data/lib/pubid/ietf/identifiers/serialization.rb +0 -51
- data/lib/pubid/ietf/identifiers/std.rb +0 -36
- data/lib/pubid/ietf/identifiers.rb +0 -14
- data/lib/pubid/ietf/parser.rb +0 -61
- data/lib/pubid/ietf/renderer.rb +0 -64
- data/lib/pubid/ietf/urn_generator.rb +0 -37
- data/lib/pubid/ietf/urn_parser.rb +0 -43
- data/lib/pubid/ietf.rb +0 -85
- data/lib/pubid/iho/renderer.rb +0 -30
- data/lib/pubid/iho/urn_parser.rb +0 -58
- data/lib/pubid/isbn/builder.rb +0 -44
- data/lib/pubid/isbn/check_digit.rb +0 -53
- data/lib/pubid/isbn/identifier.rb +0 -81
- data/lib/pubid/isbn/identifiers/book.rb +0 -30
- data/lib/pubid/isbn/identifiers.rb +0 -9
- data/lib/pubid/isbn/parser.rb +0 -45
- data/lib/pubid/isbn/renderer.rb +0 -16
- data/lib/pubid/isbn.rb +0 -52
- data/lib/pubid/iso/normalizer.rb +0 -89
- data/lib/pubid/itu/components/designation.rb +0 -35
- data/lib/pubid/itu/components.rb +0 -12
- data/lib/pubid/itu/identifiers/addendum.rb +0 -15
- data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +0 -87
- data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +0 -92
- data/lib/pubid/itu/identifiers/errata.rb +0 -15
- data/lib/pubid/itu/identifiers/handbook.rb +0 -38
- data/lib/pubid/itu/identifiers/question.rb +0 -63
- data/lib/pubid/itu/identifiers/report.rb +0 -39
- data/lib/pubid/itu/identifiers/standard_serialization.rb +0 -58
- data/lib/pubid/itu/urn_parser.rb +0 -31
- data/lib/pubid/jcgm/identifiers/corrigendum.rb +0 -34
- data/lib/pubid/jcgm/identifiers/meeting.rb +0 -47
- data/lib/pubid/jcgm/renderer.rb +0 -89
- data/lib/pubid/jcgm/urn_parser.rb +0 -177
- data/lib/pubid/jis/identifiers/corrigendum.rb +0 -16
- data/lib/pubid/jis/renderer.rb +0 -69
- data/lib/pubid/jis/urn_parser.rb +0 -23
- data/lib/pubid/nist/caster.rb +0 -1234
- data/lib/pubid/nist/circular_supplement_builder.rb +0 -293
- data/lib/pubid/nist/identifier.rb +0 -8
- data/lib/pubid/nist/identifiers/dated_document.rb +0 -49
- data/lib/pubid/nist/parser_output_normalizer.rb +0 -233
- data/lib/pubid/nist/preprocessor.rb +0 -443
- data/lib/pubid/nist/renderer.rb +0 -43
- data/lib/pubid/nist/router.rb +0 -149
- data/lib/pubid/nist/series/base.rb +0 -58
- data/lib/pubid/nist/series/crpl.rb +0 -13
- data/lib/pubid/nist/series/fips.rb +0 -14
- data/lib/pubid/nist/series/ir.rb +0 -57
- data/lib/pubid/nist/series/letter_preserving.rb +0 -15
- data/lib/pubid/nist/series/mono.rb +0 -19
- data/lib/pubid/nist/series/ncstar.rb +0 -20
- data/lib/pubid/nist/series.rb +0 -49
- data/lib/pubid/nist/urn_parser.rb +0 -67
- data/lib/pubid/oasis/builder.rb +0 -79
- data/lib/pubid/oasis/identifier.rb +0 -160
- data/lib/pubid/oasis/identifiers/standard.rb +0 -29
- data/lib/pubid/oasis/identifiers.rb +0 -9
- data/lib/pubid/oasis/parser.rb +0 -34
- data/lib/pubid/oasis/renderer.rb +0 -29
- data/lib/pubid/oasis/urn_generator.rb +0 -25
- data/lib/pubid/oasis/urn_parser.rb +0 -22
- data/lib/pubid/oasis.rb +0 -79
- data/lib/pubid/ogc/builder.rb +0 -33
- data/lib/pubid/ogc/identifier.rb +0 -81
- data/lib/pubid/ogc/identifiers/document.rb +0 -26
- data/lib/pubid/ogc/identifiers.rb +0 -10
- data/lib/pubid/ogc/parser.rb +0 -40
- data/lib/pubid/ogc/renderer.rb +0 -33
- data/lib/pubid/ogc/urn_generator.rb +0 -14
- data/lib/pubid/ogc/urn_parser.rb +0 -22
- data/lib/pubid/ogc.rb +0 -71
- data/lib/pubid/oiml/identifiers/bulletin.rb +0 -137
- data/lib/pubid/oiml/identifiers/code_number.rb +0 -90
- data/lib/pubid/oiml/identifiers/errata.rb +0 -15
- data/lib/pubid/oiml/renderer.rb +0 -232
- data/lib/pubid/oiml/urn_parser.rb +0 -39
- data/lib/pubid/omg/builder.rb +0 -19
- data/lib/pubid/omg/identifier.rb +0 -47
- data/lib/pubid/omg/identifiers/specification.rb +0 -32
- data/lib/pubid/omg/identifiers.rb +0 -9
- data/lib/pubid/omg/parser.rb +0 -40
- data/lib/pubid/omg/renderer.rb +0 -19
- data/lib/pubid/omg.rb +0 -51
- data/lib/pubid/parser/grammar.rb +0 -74
- data/lib/pubid/plateau/identifier.rb +0 -4
- data/lib/pubid/plateau/renderer.rb +0 -51
- data/lib/pubid/plateau/urn_parser.rb +0 -43
- data/lib/pubid/prefixes_support.rb +0 -51
- data/lib/pubid/renderers/annotator.rb +0 -233
- data/lib/pubid/sae/renderer.rb +0 -36
- data/lib/pubid/sae/urn_parser.rb +0 -36
- data/lib/pubid/tgpp/builder.rb +0 -41
- data/lib/pubid/tgpp/identifier.rb +0 -107
- data/lib/pubid/tgpp/identifiers/technical_report.rb +0 -32
- data/lib/pubid/tgpp/identifiers/technical_specification.rb +0 -33
- data/lib/pubid/tgpp/identifiers.rb +0 -11
- data/lib/pubid/tgpp/parser.rb +0 -78
- data/lib/pubid/tgpp/renderer.rb +0 -52
- data/lib/pubid/tgpp/urn_generator.rb +0 -39
- data/lib/pubid/tgpp/urn_parser.rb +0 -30
- data/lib/pubid/tgpp.rb +0 -83
- data/lib/pubid/type_resolver.rb +0 -59
- data/lib/pubid/un/builder.rb +0 -42
- data/lib/pubid/un/identifier.rb +0 -40
- data/lib/pubid/un/identifiers/document.rb +0 -24
- data/lib/pubid/un/identifiers.rb +0 -9
- data/lib/pubid/un/parser.rb +0 -25
- data/lib/pubid/un/renderer.rb +0 -11
- data/lib/pubid/un.rb +0 -46
- data/lib/pubid/urn_parser/base.rb +0 -81
- data/lib/pubid/urn_parser/errors.rb +0 -16
- data/lib/pubid/urn_parser.rb +0 -14
- data/lib/pubid/w3c/builder.rb +0 -55
- data/lib/pubid/w3c/identifier.rb +0 -130
- data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +0 -31
- data/lib/pubid/w3c/identifiers/draft_note.rb +0 -31
- data/lib/pubid/w3c/identifiers/note.rb +0 -30
- data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/standard.rb +0 -12
- data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +0 -31
- data/lib/pubid/w3c/identifiers/working_draft.rb +0 -30
- data/lib/pubid/w3c/identifiers.rb +0 -25
- data/lib/pubid/w3c/parser.rb +0 -43
- data/lib/pubid/w3c/renderer.rb +0 -35
- data/lib/pubid/w3c/urn_generator.rb +0 -18
- data/lib/pubid/w3c/urn_parser.rb +0 -36
- data/lib/pubid/w3c.rb +0 -67
- data/lib/pubid/xsf/builder.rb +0 -17
- data/lib/pubid/xsf/identifier.rb +0 -66
- data/lib/pubid/xsf/identifiers/xep.rb +0 -31
- data/lib/pubid/xsf/identifiers.rb +0 -9
- data/lib/pubid/xsf/parser.rb +0 -25
- data/lib/pubid/xsf/renderer.rb +0 -23
- data/lib/pubid/xsf/urn_generator.rb +0 -13
- data/lib/pubid/xsf/urn_parser.rb +0 -18
- data/lib/pubid/xsf.rb +0 -81
data/lib/pubid/ieee/renderer.rb
DELETED
|
@@ -1,408 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ieee
|
|
5
|
-
# Human-readable renderer for IEEE identifiers.
|
|
6
|
-
#
|
|
7
|
-
# Produces strings like:
|
|
8
|
-
# "IEEE Std 802.11-2020"
|
|
9
|
-
# "IEEE Std 535-2013/Cor. 1-2017"
|
|
10
|
-
# "ANSI C37.61-1973 and IEEE Std 321-1973"
|
|
11
|
-
#
|
|
12
|
-
# The renderer is registered as the +:human+ format in the IEEE format
|
|
13
|
-
# registry and invoked via +render(format: :human)+.
|
|
14
|
-
#
|
|
15
|
-
# For wrapper types (DualPublished, AdoptedStandard, etc.) the renderer
|
|
16
|
-
# composes child identifiers. For simple identifiers it delegates to the
|
|
17
|
-
# identifier's own publisher/code/relationship helpers.
|
|
18
|
-
class Renderer < ::Pubid::Renderers::Base
|
|
19
|
-
def render(context: nil, **opts)
|
|
20
|
-
# IEEE attaches the trademark mark to the document number, before the
|
|
21
|
-
# year and every suffix ("IEEE Std 802.3®-2018"), so the mark is
|
|
22
|
-
# emitted by whichever method renders the number rather than appended
|
|
23
|
-
# to the finished string. A renderer instance is built per render call
|
|
24
|
-
# (Pubid::Identifier#render), so the flag is safe as instance state.
|
|
25
|
-
@trademark = opts[:trademark]
|
|
26
|
-
|
|
27
|
-
render_id(@id)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
private
|
|
31
|
-
|
|
32
|
-
# Trademark mark for a document number, or "" when the flag is off.
|
|
33
|
-
# @param number [String, nil] bare document number
|
|
34
|
-
# @param prefix [String, nil] letter series of the code
|
|
35
|
-
# @param publishers [Array<String>] printed publisher tokens — the ®
|
|
36
|
-
# series belongs to IEEE, not to another body numbering a document 802
|
|
37
|
-
def mark(number, prefix = nil, publishers: nil)
|
|
38
|
-
return "" unless @trademark
|
|
39
|
-
|
|
40
|
-
Pubid::Ieee.trademark_symbol_for(number, prefix, publishers: publishers)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# The publisher tokens an identifier prints, for the ® decision.
|
|
44
|
-
def publishers_of(id)
|
|
45
|
-
return id.publishers if id.respond_to?(:publishers) && id.publishers
|
|
46
|
-
|
|
47
|
-
copublishers = id.copublisher if id.respond_to?(:copublisher)
|
|
48
|
-
[id.publisher, *copublishers].compact
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
# Compose a child identifier, propagating the trademark flag only when it
|
|
52
|
-
# is safe. A foreign (non-IEEE) leaf may not accept the `trademark:`
|
|
53
|
-
# keyword at all — Pubid::Nist's `to_s(format = :short)` would silently
|
|
54
|
-
# swallow it as a positional Hash, and Pubid::Iso's would raise — and an
|
|
55
|
-
# adopted or parenthetical child is not the IEEE document being marked.
|
|
56
|
-
def child_to_s(child, **opts)
|
|
57
|
-
return child.to_s(**opts) unless @trademark &&
|
|
58
|
-
child.is_a?(Pubid::Ieee::Identifier)
|
|
59
|
-
|
|
60
|
-
child.to_s(**opts, trademark: true)
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# Dispatch to the type-specific renderer, returning the composed string
|
|
64
|
-
# (each branch inserts the trademark mark at its own number boundary).
|
|
65
|
-
def render_id(id)
|
|
66
|
-
case id
|
|
67
|
-
when Identifiers::DualPublished
|
|
68
|
-
render_dual_published(id)
|
|
69
|
-
when Identifiers::DualIdentifier
|
|
70
|
-
render_dual_identifier(id)
|
|
71
|
-
when Identifiers::AdoptedStandard
|
|
72
|
-
render_adopted_standard(id)
|
|
73
|
-
when Identifiers::RedlinedStandard
|
|
74
|
-
render_redlined_standard(id)
|
|
75
|
-
when Identifiers::Amendment
|
|
76
|
-
render_amendment(id)
|
|
77
|
-
when Identifiers::Corrigendum
|
|
78
|
-
render_corrigendum(id)
|
|
79
|
-
when Identifiers::InterpretationIdentifier
|
|
80
|
-
render_interpretation(id)
|
|
81
|
-
when Identifiers::ConformanceIdentifier
|
|
82
|
-
render_conformance(id)
|
|
83
|
-
when Identifiers::MultiNumberedIdentifier
|
|
84
|
-
render_multi_numbered(id)
|
|
85
|
-
when Identifiers::ParentheticalIdentifier
|
|
86
|
-
render_parenthetical(id)
|
|
87
|
-
when Identifiers::CsaDualPublished
|
|
88
|
-
render_csa_dual_published(id)
|
|
89
|
-
when Identifiers::IecIeeeCopublished
|
|
90
|
-
render_iec_ieee_copublished(id)
|
|
91
|
-
when Identifiers::SiStandard
|
|
92
|
-
render_si_standard(id)
|
|
93
|
-
when Identifiers::JointDevelopment
|
|
94
|
-
child_to_s(id)
|
|
95
|
-
else
|
|
96
|
-
render_base(id)
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# ------------------------------------------------------------------
|
|
101
|
-
# Base IEEE identifier rendering
|
|
102
|
-
# ------------------------------------------------------------------
|
|
103
|
-
|
|
104
|
-
def render_base(id)
|
|
105
|
-
parts = []
|
|
106
|
-
|
|
107
|
-
# Publisher(s) - handle copublisher array properly
|
|
108
|
-
if id.copublisher && !id.copublisher.empty?
|
|
109
|
-
parts << [id.publisher, *id.copublisher].join("/")
|
|
110
|
-
else
|
|
111
|
-
parts << id.publisher
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
# Draft status
|
|
115
|
-
parts << id.draft_status if id.draft_status
|
|
116
|
-
|
|
117
|
-
# Type - only render for IEEE/AIEE publishers, and only for non-projects.
|
|
118
|
-
# An unapproved draft is not yet a standard, so per IEEE guidance the
|
|
119
|
-
# "Std" token is dropped from the type when draft_status is "Unapproved"
|
|
120
|
-
# (e.g. "Draft Std" -> "Draft", "Std" -> "").
|
|
121
|
-
should_render_type = id.publisher&.match?(/^(IEEE|AIEE)/)
|
|
122
|
-
|
|
123
|
-
if should_render_type && !id.typed_stage&.project_status && id.type && !id.type.to_s.strip.empty? && id.type != "P"
|
|
124
|
-
type_str = id.type.dup
|
|
125
|
-
type_str = type_str.sub(/^P/, "") if type_str.start_with?("P")
|
|
126
|
-
if id.draft_status.to_s.match?(/unapproved/i)
|
|
127
|
-
type_str = type_str.gsub(/\bStd\b/i, "").squeeze(" ").strip
|
|
128
|
-
end
|
|
129
|
-
parts << type_str unless type_str.strip.empty?
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
# Code - with P prefix for projects (concatenated, not separated)
|
|
133
|
-
if id.code_obj
|
|
134
|
-
result = id.code_obj.to_s
|
|
135
|
-
|
|
136
|
-
# Prepend P if this is a project AND code doesn't already have P
|
|
137
|
-
if id.typed_stage&.project_status && should_render_type && !result.start_with?("P")
|
|
138
|
-
result = "P#{result}"
|
|
139
|
-
end
|
|
140
|
-
|
|
141
|
-
# Trademark mark — right after the number and its parts, before the
|
|
142
|
-
# year, the revision, the draft and every other suffix.
|
|
143
|
-
result += mark(id.code_obj.number, id.code_obj.prefix,
|
|
144
|
-
publishers: publishers_of(id))
|
|
145
|
-
|
|
146
|
-
# Only attach year to code if there's no edition, no month, and no draft
|
|
147
|
-
result += "-#{id.year}" if id.year && !id.draft_obj && !id.edition && !id.month
|
|
148
|
-
|
|
149
|
-
# Append the numbered/lettered revision inline, in IEEE's native
|
|
150
|
-
# position — right after the code number and before the draft
|
|
151
|
-
# ("P802.16Rev2/D3"). Keeps a revision distinct from its base standard.
|
|
152
|
-
result += "Rev#{id.revision}" if id.revision
|
|
153
|
-
|
|
154
|
-
# Append draft to code - with or without space based on original format
|
|
155
|
-
if id.draft_obj
|
|
156
|
-
result += id.space_before_draft ? " #{id.draft_obj}" : id.draft_obj.to_s
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
# Append interpretation notation (/INT)
|
|
160
|
-
result += "/INT" if id.interpretation
|
|
161
|
-
|
|
162
|
-
# Conformance is always built as a ConformanceIdentifier wrapper
|
|
163
|
-
# (render_conformance), never inline on a base standard — the base no
|
|
164
|
-
# longer carries a conf_number attribute.
|
|
165
|
-
|
|
166
|
-
# Append ASHRAE joint publication (/ASHRAE Guideline NN-YYYY)
|
|
167
|
-
if id.ashrae_number
|
|
168
|
-
result += "/ASHRAE Guideline #{id.ashrae_number}"
|
|
169
|
-
result += "-#{id.ashrae_year}" if id.ashrae_year
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
# Append IEEE cross-reference (/C62.22.1-1996)
|
|
173
|
-
result += id.crossref if id.crossref
|
|
174
|
-
|
|
175
|
-
parts << result
|
|
176
|
-
elsif should_render_type && id.typed_stage&.project_status
|
|
177
|
-
# No code but is a project - add standalone P
|
|
178
|
-
parts << "P"
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
# Edition - with year if present (IEC style)
|
|
182
|
-
if id.edition
|
|
183
|
-
edition_str = "Edition #{id.edition}"
|
|
184
|
-
if id.year
|
|
185
|
-
edition_str += " #{id.year}"
|
|
186
|
-
edition_str += "-#{id.edition_month}" if id.edition_month
|
|
187
|
-
end
|
|
188
|
-
parts << edition_str
|
|
189
|
-
end
|
|
190
|
-
|
|
191
|
-
# Build the main identifier (without month yet)
|
|
192
|
-
result = parts.join(" ")
|
|
193
|
-
|
|
194
|
-
# Month/Day - append directly to avoid extra space before comma
|
|
195
|
-
if id.month
|
|
196
|
-
result += ", #{id.month}"
|
|
197
|
-
result += " #{id.day}" if id.day
|
|
198
|
-
if id.year && !id.edition
|
|
199
|
-
result += " #{id.year}"
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
# Bounded parenthetical markers only. The unbounded relationship/
|
|
204
|
-
# amendment narrative (relationships, revision_of, amendment_to,
|
|
205
|
-
# adoption, note) is deliberately NOT rendered here: an
|
|
206
|
-
# "as amended by …" list can run 300+ chars, and an identifier's to_s
|
|
207
|
-
# is used by consumers (relaton) as a document number and filename. The
|
|
208
|
-
# narrative is preserved on the runtime accessors (id.relationships
|
|
209
|
-
# etc.), just not embedded in the identifier string.
|
|
210
|
-
parentheticals = []
|
|
211
|
-
|
|
212
|
-
# Reaffirmation year — a bounded status marker.
|
|
213
|
-
reaff = id.reaffirmed
|
|
214
|
-
parentheticals << "(R#{reaff})" if reaff && !reaff.to_s.strip.empty?
|
|
215
|
-
|
|
216
|
-
# The catch-all parenthetical is a bounded, printed identity token, not
|
|
217
|
-
# relationship prose (e.g. the "S-135 (IPCEA P46-426)" co-designation).
|
|
218
|
-
# Long amendment narratives match the structural relationship grammar
|
|
219
|
-
# and land in `relationships`, never in this catch-all, so it stays
|
|
220
|
-
# bounded.
|
|
221
|
-
if id.parenthetical_content
|
|
222
|
-
parentheticals << "(#{id.parenthetical_content})"
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
result += " #{parentheticals.join(' ')}" unless parentheticals.empty?
|
|
226
|
-
|
|
227
|
-
# Book nickname - outside parentheses in square brackets
|
|
228
|
-
result += " [#{id.nickname}]" if id.nickname && !id.nickname.to_s.strip.empty?
|
|
229
|
-
|
|
230
|
-
# Redline suffix
|
|
231
|
-
result += " - Redline" if id.redline
|
|
232
|
-
|
|
233
|
-
result
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
# ------------------------------------------------------------------
|
|
237
|
-
# Wrapper types
|
|
238
|
-
# ------------------------------------------------------------------
|
|
239
|
-
|
|
240
|
-
def render_dual_published(id)
|
|
241
|
-
"#{child_to_s(id.first_identifier)} and " \
|
|
242
|
-
"#{child_to_s(id.second_identifier)}"
|
|
243
|
-
end
|
|
244
|
-
|
|
245
|
-
def render_dual_identifier(id)
|
|
246
|
-
"#{child_to_s(id.first_identifier)} and " \
|
|
247
|
-
"#{child_to_s(id.second_identifier)}"
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
def render_adopted_standard(id)
|
|
251
|
-
# Only the IEEE designation is marked; the adopted identifiers are
|
|
252
|
-
# other bodies' documents (and may be foreign pubid objects).
|
|
253
|
-
result = child_to_s(id.ieee_identifier)
|
|
254
|
-
if id.adopted_identifiers && !id.adopted_identifiers.empty?
|
|
255
|
-
adopted_strs = id.adopted_identifiers.map(&:to_s)
|
|
256
|
-
result += " (#{adopted_strs.join(' and ')})"
|
|
257
|
-
end
|
|
258
|
-
result
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
def render_redlined_standard(id)
|
|
262
|
-
result = child_to_s(id.base)
|
|
263
|
-
# NOTE: currently unreachable — a redline is built as a flat
|
|
264
|
-
# `redline: true` on a plain Standard (see the redline invariant in
|
|
265
|
-
# CLAUDE.md), so determine_identifier_class never routes here. Kept for
|
|
266
|
-
# completeness; if this path is ever revived, note `revision_of` is a
|
|
267
|
-
# bounded single-id reference, unlike the unbounded relationship
|
|
268
|
-
# narrative that render_base deliberately drops.
|
|
269
|
-
result += " (Revision of #{id.revision_of})" if id.revision_of
|
|
270
|
-
result += " - Redline" if id.redline
|
|
271
|
-
result
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
def render_corrigendum(id)
|
|
275
|
-
return render_base(id) unless id.base
|
|
276
|
-
|
|
277
|
-
result = child_to_s(id.base)
|
|
278
|
-
result += "/Cor"
|
|
279
|
-
result += ". " if id.number # Add period and space for formal format
|
|
280
|
-
result += id.number if id.number
|
|
281
|
-
result += "-#{id.year}" if id.year
|
|
282
|
-
result
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
def render_amendment(id)
|
|
286
|
-
return render_base(id) unless id.base
|
|
287
|
-
|
|
288
|
-
result = child_to_s(id.base)
|
|
289
|
-
result += "/Amd"
|
|
290
|
-
result += " #{id.number}" if id.number # canonical "/Amd 4-2020"
|
|
291
|
-
result += "-#{id.year}" if id.year
|
|
292
|
-
result
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
def render_interpretation(id)
|
|
296
|
-
return render_base(id) unless id.base
|
|
297
|
-
|
|
298
|
-
result = child_to_s(id.base)
|
|
299
|
-
result += "/INT"
|
|
300
|
-
result += "-#{id.year}" if id.year
|
|
301
|
-
result
|
|
302
|
-
end
|
|
303
|
-
|
|
304
|
-
def render_conformance(id)
|
|
305
|
-
return render_base(id) unless id.base
|
|
306
|
-
|
|
307
|
-
result = child_to_s(id.base)
|
|
308
|
-
result += "/Conformance#{id.number}" if id.number
|
|
309
|
-
result += "-#{id.year}" if id.year
|
|
310
|
-
result
|
|
311
|
-
end
|
|
312
|
-
|
|
313
|
-
def render_multi_numbered(id)
|
|
314
|
-
return child_to_s(id.primary_identifier) unless id.secondary_identifier
|
|
315
|
-
|
|
316
|
-
# Co-equal designations: each carries its own mark, before its own
|
|
317
|
-
# suffixes, as IEEE prints them.
|
|
318
|
-
primary = child_to_s(id.primary_identifier)
|
|
319
|
-
secondary = child_to_s(id.secondary_identifier)
|
|
320
|
-
|
|
321
|
-
secondary_code = id.secondary_identifier.code.to_s
|
|
322
|
-
if secondary_code.start_with?("C") && secondary_code.match?(/^C\d+\./)
|
|
323
|
-
# A cross-reference prints the bare second designation after the
|
|
324
|
-
# slash — "IEEE Std 1299/C62.22.1-1996" — not a second full
|
|
325
|
-
# reference, so this branch must not reuse `secondary`, which
|
|
326
|
-
# carries its own "IEEE Std " prefix.
|
|
327
|
-
"#{primary}/#{secondary_code}"
|
|
328
|
-
else
|
|
329
|
-
"#{primary} and #{secondary}"
|
|
330
|
-
end
|
|
331
|
-
end
|
|
332
|
-
|
|
333
|
-
def render_parenthetical(id)
|
|
334
|
-
# The mark belongs on the base; the parenthetical is a separate token.
|
|
335
|
-
result = child_to_s(id.base)
|
|
336
|
-
result += " (#{id.parenthetical_identifier})" if id.parenthetical_identifier
|
|
337
|
-
result
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
def render_csa_dual_published(id)
|
|
341
|
-
# csa_identifier is a Pubid::Csa object — never marked.
|
|
342
|
-
csa_str = id.csa_identifier.to_s
|
|
343
|
-
csa_str = "CSA #{csa_str}" unless csa_str.start_with?("CSA", "CAN/")
|
|
344
|
-
|
|
345
|
-
"#{child_to_s(id.ieee_identifier)}/#{csa_str}"
|
|
346
|
-
end
|
|
347
|
-
|
|
348
|
-
def render_iec_ieee_copublished(id)
|
|
349
|
-
result = "IEC/IEEE"
|
|
350
|
-
# copublished_number glues the parts and the publication year onto the
|
|
351
|
-
# number, so the mark is spliced in by that single implementation
|
|
352
|
-
# rather than rebuilt here; with the flag off it is passed "".
|
|
353
|
-
if id.copublished_number
|
|
354
|
-
result += " #{id.copublished_number(mark(id.number,
|
|
355
|
-
publishers: %w[IEC IEEE]))}"
|
|
356
|
-
end
|
|
357
|
-
result += id.draft_info if id.draft_info
|
|
358
|
-
result += " IEC:#{id.iec_year}" if id.iec_year
|
|
359
|
-
result += " #{id.date_info}" if id.date_info
|
|
360
|
-
result
|
|
361
|
-
end
|
|
362
|
-
|
|
363
|
-
def render_si_standard(id)
|
|
364
|
-
parts = []
|
|
365
|
-
|
|
366
|
-
# Publisher (IEEE/ASTM)
|
|
367
|
-
parts << "IEEE/ASTM"
|
|
368
|
-
|
|
369
|
-
# Type (SI or PSI based on typed_stage)
|
|
370
|
-
parts << if id.typed_stage&.abbr&.include?("PSI")
|
|
371
|
-
"PSI"
|
|
372
|
-
else
|
|
373
|
-
"SI"
|
|
374
|
-
end
|
|
375
|
-
|
|
376
|
-
# Code (number) with draft version for PSI — the mark goes after the
|
|
377
|
-
# code, before the draft and the date.
|
|
378
|
-
code_part = id.code.to_s
|
|
379
|
-
code_part += mark(id.code_obj&.number, id.code_obj&.prefix,
|
|
380
|
-
publishers: publishers_of(id))
|
|
381
|
-
if id.draft_obj
|
|
382
|
-
code_part += "/D#{id.draft_obj.version}"
|
|
383
|
-
end
|
|
384
|
-
parts << code_part if id.code
|
|
385
|
-
|
|
386
|
-
# Date
|
|
387
|
-
if id.month && id.year
|
|
388
|
-
parts << ", #{id.month} #{id.year}"
|
|
389
|
-
elsif id.year
|
|
390
|
-
parts << "-#{id.year}"
|
|
391
|
-
end
|
|
392
|
-
|
|
393
|
-
# Join parts with spaces, but don't insert a space before parts
|
|
394
|
-
# that start with "-" or "," (e.g., "-2010", ", July 2014") so the
|
|
395
|
-
# SI form renders as "SI 10-2010" not "SI 10 -2010". The descriptive
|
|
396
|
-
# relationships narrative is deliberately kept out of to_s (see
|
|
397
|
-
# render_base); it stays reachable on id.relationships.
|
|
398
|
-
parts.each_with_object([]) do |part, acc|
|
|
399
|
-
if acc.empty? || part.to_s.start_with?("-", ",")
|
|
400
|
-
acc << part.to_s
|
|
401
|
-
else
|
|
402
|
-
acc << " " << part.to_s
|
|
403
|
-
end
|
|
404
|
-
end.join
|
|
405
|
-
end
|
|
406
|
-
end
|
|
407
|
-
end
|
|
408
|
-
end
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ieee
|
|
5
|
-
# Parses IEEE URNs back into identifiers.
|
|
6
|
-
#
|
|
7
|
-
# UrnGenerator emits many fields; this parser handles the common
|
|
8
|
-
# published-standard shape:
|
|
9
|
-
# urn:ieee:{publisher}:{code}:{year}
|
|
10
|
-
#
|
|
11
|
-
# publisher is the lowercase publisher (with optional copublishers
|
|
12
|
-
# joined by `-`). code is the alphanumeric designation (period is the
|
|
13
|
-
# part separator within the code). The year separator in human-readable
|
|
14
|
-
# form is `-`.
|
|
15
|
-
#
|
|
16
|
-
# Examples:
|
|
17
|
-
# - urn:ieee:ieee:802.3:2018 → IEEE Std 802.3-2018
|
|
18
|
-
# - urn:ieee:ieee:1018:2019 → IEEE Std 1018-2019
|
|
19
|
-
class UrnParser < Pubid::UrnParser::Base
|
|
20
|
-
PUBLISHER_LABEL = "IEEE"
|
|
21
|
-
|
|
22
|
-
def parse_urn(urn)
|
|
23
|
-
body = strip_namespace(urn)
|
|
24
|
-
parts = split_parts(body)
|
|
25
|
-
|
|
26
|
-
_publisher, code, year = parts
|
|
27
|
-
|
|
28
|
-
text = "#{PUBLISHER_LABEL} Std #{code}"
|
|
29
|
-
text += "-#{year}" if year
|
|
30
|
-
flavor_parse(text)
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
data/lib/pubid/ietf/builder.rb
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ietf
|
|
5
|
-
# Turns the Parser's parse tree into a concrete identifier object, choosing
|
|
6
|
-
# the class from which fields are present.
|
|
7
|
-
class Builder
|
|
8
|
-
SUBSERIES_CLASSES = {
|
|
9
|
-
"BCP" => "Bcp",
|
|
10
|
-
"STD" => "Std",
|
|
11
|
-
"FYI" => "Fyi",
|
|
12
|
-
}.freeze
|
|
13
|
-
|
|
14
|
-
def self.build(parsed_data)
|
|
15
|
-
new.build(parsed_data)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def build(data)
|
|
19
|
-
if data.key?(:draft_rest)
|
|
20
|
-
build_draft(data)
|
|
21
|
-
elsif data[:series]
|
|
22
|
-
build_subseries(data)
|
|
23
|
-
else
|
|
24
|
-
build_rfc(data)
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
def build_rfc(data)
|
|
31
|
-
Identifiers::Rfc.new(number: unpad(data[:number]))
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# The series token only selects the class: it is derived back from the
|
|
35
|
-
# class (Identifiers::Std::SERIES) rather than stored, since `_type`
|
|
36
|
-
# already carries it.
|
|
37
|
-
def build_subseries(data)
|
|
38
|
-
klass = Identifiers.const_get(
|
|
39
|
-
SUBSERIES_CLASSES.fetch(data[:series].to_s),
|
|
40
|
-
)
|
|
41
|
-
klass.new(number: unpad(data[:number]))
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# Strip the zero-padding the RFC editor's rfc-index.xml writes ("STD0066",
|
|
45
|
-
# "RFC0001") so the canonical printed form is the unpadded one. The
|
|
46
|
-
# look-ahead keeps the last digit, so an all-zero number stays "0" rather
|
|
47
|
-
# than becoming empty.
|
|
48
|
-
def unpad(number)
|
|
49
|
-
number.to_s.sub(/\A0+(?=\d)/, "")
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def build_draft(data)
|
|
53
|
-
full = "draft-#{data[:draft_rest]}"
|
|
54
|
-
slug, version = split_draft_version(full)
|
|
55
|
-
Identifiers::InternetDraft.new(number: slug, version: version)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# An Internet-Draft version is a trailing "-NN" of *exactly* two digits at
|
|
59
|
-
# the very end of the slug. A three-digit topic tail (e.g. "...-256") is
|
|
60
|
-
# NOT a version: there the char before the last two digits is itself a
|
|
61
|
-
# digit, not "-", so the guard below leaves it in the slug. This also
|
|
62
|
-
# means a (non-existent in practice) revision >= 100 would be read as part
|
|
63
|
-
# of the slug — IETF drafts are always two-digit-versioned, so that case
|
|
64
|
-
# never arises. Either way the printed string round-trips exactly.
|
|
65
|
-
#
|
|
66
|
-
# Dotted slugs need no special handling here: only the final three
|
|
67
|
-
# characters are inspected, so "draft-ietf-pilc-2.5g3g-12" splits into
|
|
68
|
-
# ("draft-ietf-pilc-2.5g3g", "12").
|
|
69
|
-
def split_draft_version(full)
|
|
70
|
-
if full.length > 3 && full[-3] == "-" && full[-2..].match?(/\A\d\d\z/)
|
|
71
|
-
[full[0...-3], full[-2..]]
|
|
72
|
-
else
|
|
73
|
-
[full, nil]
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ietf
|
|
5
|
-
# Base class for every IETF identifier AND the flavor's parse/create entry
|
|
6
|
-
# point (mirrors Pubid::Jis::Identifier). Concrete identifiers under
|
|
7
|
-
# Pubid::Ietf::Identifiers descend from this class, so a parsed IETF id is
|
|
8
|
-
# an instance of Pubid::Ietf::Identifier.
|
|
9
|
-
#
|
|
10
|
-
# All families are flat, supplement-free, and use plain string attributes.
|
|
11
|
-
# Those attributes are declared on the LEAVES by Identifiers::Serialization
|
|
12
|
-
# (see the determinism note there — never re-add `attribute :number` here):
|
|
13
|
-
# * Rfc -> number ("2119")
|
|
14
|
-
# * Bcp/Std/Fyi -> number ("3") + a derived `series` reader
|
|
15
|
-
# * InternetDraft -> number ("draft-giuliano-treedn") + optional version
|
|
16
|
-
class Identifier < ::Pubid::Identifier
|
|
17
|
-
# Polymorphic type map for lutaml::Model key_value (de)serialization: maps
|
|
18
|
-
# each subclass's polymorphic_name to its class name so a stored hash
|
|
19
|
-
# rebuilds the correct identifier type via the shared from_hash dispatch.
|
|
20
|
-
IETF_TYPE_MAP = {
|
|
21
|
-
"pubid:ietf:rfc" => "Pubid::Ietf::Identifiers::Rfc",
|
|
22
|
-
"pubid:ietf:bcp" => "Pubid::Ietf::Identifiers::Bcp",
|
|
23
|
-
"pubid:ietf:std" => "Pubid::Ietf::Identifiers::Std",
|
|
24
|
-
"pubid:ietf:fyi" => "Pubid::Ietf::Identifiers::Fyi",
|
|
25
|
-
"pubid:ietf:internet-draft" =>
|
|
26
|
-
"Pubid::Ietf::Identifiers::InternetDraft",
|
|
27
|
-
}.freeze
|
|
28
|
-
|
|
29
|
-
# NOTE: no `key_value` block here on purpose. The mapping lives on the
|
|
30
|
-
# leaves (Identifiers::Serialization); a block on this shared parent would
|
|
31
|
-
# be inherited-and-merged by every leaf and re-emit keys the leaf did not
|
|
32
|
-
# declare.
|
|
33
|
-
|
|
34
|
-
# Publisher is always "IETF". A plain constant (not a `publisher` method)
|
|
35
|
-
# so it doesn't shadow the inherited lutaml `publisher` attribute, which
|
|
36
|
-
# would otherwise fail serialization type validation.
|
|
37
|
-
PUBLISHER = "IETF"
|
|
38
|
-
|
|
39
|
-
# Basic string representation. Delegates to the flavor renderer.
|
|
40
|
-
def to_s(**opts)
|
|
41
|
-
render(format: :human, **opts)
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# from_hash is the shared polymorphic dispatch on Pubid::Identifier; the
|
|
45
|
-
# IETF_TYPE_MAP above serves as its key_value polymorphic_map.
|
|
46
|
-
|
|
47
|
-
# Parse an IETF identifier string into the appropriate identifier object.
|
|
48
|
-
# @param identifier [String] the IETF identifier string to parse
|
|
49
|
-
# @return [Identifier] the concrete identifier object
|
|
50
|
-
# @raise [Pubid::Errors::InvalidInputError] if the input exceeds
|
|
51
|
-
# Pubid::MAX_INPUT_LENGTH
|
|
52
|
-
# @raise [Pubid::Errors::ParseError] if parsing fails
|
|
53
|
-
def self.parse(identifier)
|
|
54
|
-
# Inline length guard (CodeQL rb/polynomial-redos barrier) — must be
|
|
55
|
-
# the first statement. This class-level funnel is what relaton reaches
|
|
56
|
-
# directly through `pubid_class: ::Pubid::Ietf::Identifier`, so it
|
|
57
|
-
# cannot rely on the guard in Pubid::Ietf.parse.
|
|
58
|
-
unless identifier.is_a?(String)
|
|
59
|
-
raise Pubid::Errors::InvalidInputError,
|
|
60
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
64
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
parsed = Parser.parse(identifier)
|
|
68
|
-
Builder.build(parsed)
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ietf
|
|
5
|
-
module Identifiers
|
|
6
|
-
# A BCP (Best Current Practice) sub-series id, e.g. "BCP 3".
|
|
7
|
-
class Bcp < Identifier
|
|
8
|
-
include Serialization
|
|
9
|
-
|
|
10
|
-
# The series token is derived from the class, not stored:
|
|
11
|
-
# `_type` already encodes it, so serializing `series` would
|
|
12
|
-
# duplicate the type in every index row.
|
|
13
|
-
SERIES = "BCP"
|
|
14
|
-
|
|
15
|
-
def series
|
|
16
|
-
SERIES
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
TYPED_STAGES = [
|
|
20
|
-
Pubid::Components::TypedStage.new(
|
|
21
|
-
code: :bcp,
|
|
22
|
-
stage_code: :published,
|
|
23
|
-
type_code: :bcp,
|
|
24
|
-
abbr: ["BCP"],
|
|
25
|
-
name: "Best Current Practice",
|
|
26
|
-
harmonized_stages: [],
|
|
27
|
-
),
|
|
28
|
-
].freeze
|
|
29
|
-
|
|
30
|
-
def self.type
|
|
31
|
-
{ key: :bcp, web: :bcp, title: "Best Current Practice", short: "BCP" }
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Ietf
|
|
5
|
-
module Identifiers
|
|
6
|
-
# An FYI (For Your Information) sub-series id, e.g. "FYI 1".
|
|
7
|
-
class Fyi < Identifier
|
|
8
|
-
include Serialization
|
|
9
|
-
|
|
10
|
-
# The series token is derived from the class, not stored:
|
|
11
|
-
# `_type` already encodes it, so serializing `series` would
|
|
12
|
-
# duplicate the type in every index row.
|
|
13
|
-
SERIES = "FYI"
|
|
14
|
-
|
|
15
|
-
def series
|
|
16
|
-
SERIES
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
TYPED_STAGES = [
|
|
20
|
-
Pubid::Components::TypedStage.new(
|
|
21
|
-
code: :fyi,
|
|
22
|
-
stage_code: :published,
|
|
23
|
-
type_code: :fyi,
|
|
24
|
-
abbr: ["FYI"],
|
|
25
|
-
name: "For Your Information",
|
|
26
|
-
harmonized_stages: [],
|
|
27
|
-
),
|
|
28
|
-
].freeze
|
|
29
|
-
|
|
30
|
-
def self.type
|
|
31
|
-
{ key: :fyi, web: :fyi, title: "For Your Information", short: "FYI" }
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|