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/iso/identifier.rb
CHANGED
|
@@ -3,66 +3,17 @@
|
|
|
3
3
|
module Pubid
|
|
4
4
|
module Iso
|
|
5
5
|
class Identifier < ::Pubid::Identifier
|
|
6
|
-
# Override base types with ISO-specific ones
|
|
7
|
-
|
|
8
|
-
# so an omitted publisher key reconstructs correctly on from_hash.
|
|
9
|
-
attribute :publisher, ::Pubid::Iso::Components::Publisher,
|
|
10
|
-
default: -> { self.class.default_publisher }
|
|
6
|
+
# Override base types with ISO-specific ones
|
|
7
|
+
attribute :publisher, ::Pubid::Iso::Components::Publisher
|
|
11
8
|
attribute :copublishers, ::Pubid::Iso::Components::Publisher,
|
|
12
9
|
collection: true
|
|
13
|
-
|
|
14
|
-
# The publisher implied when none is serialized. ISO for most types;
|
|
15
|
-
# publisher-less types (IWA) override this to nil.
|
|
16
|
-
def self.default_publisher
|
|
17
|
-
::Pubid::Iso::Components::Publisher.new
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
# typed_stage is the single source of truth for stage (and, with the class,
|
|
21
|
-
# the doctype). Default to the class's published typed_stage, so an omitted
|
|
22
|
-
# "stage" key reconstructs the published state on from_hash.
|
|
23
|
-
attribute :typed_stage, ::Pubid::Components::TypedStage,
|
|
24
|
-
default: -> { self.class.published_typed_stage }
|
|
25
|
-
|
|
26
|
-
# The class's published typed_stage (canonical surface form), or nil for
|
|
27
|
-
# types with no stages (e.g. TC documents).
|
|
28
|
-
def self.published_typed_stage
|
|
29
|
-
return nil unless const_defined?(:TYPED_STAGES)
|
|
30
|
-
|
|
31
|
-
ts = self::TYPED_STAGES.find { |t| t.stage_code.to_s == "published" }
|
|
32
|
-
return nil unless ts
|
|
33
|
-
|
|
34
|
-
ts = ts.dup
|
|
35
|
-
ts.original_abbr = ts.canonical_abbreviation
|
|
36
|
-
ts
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
# type and stage are derived from typed_stage, never stored — so the
|
|
40
|
-
# doctype (fixed by the class / _type) can't be lost when "stage" is
|
|
41
|
-
# omitted for the published default.
|
|
42
|
-
def type
|
|
43
|
-
typed_stage&.to_type
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def stage
|
|
47
|
-
typed_stage&.to_stage
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
# Return a copy with the lifecycle stage set from an ISO harmonized stage
|
|
51
|
-
# code (e.g. "90.92"). typed_stage is the single source of truth, so this
|
|
52
|
-
# is all that is needed to surface the stage in #to_s and #to_urn. Returns
|
|
53
|
-
# an unchanged copy if the code is not recognised.
|
|
54
|
-
def with_harmonized_stage(harmonized_code)
|
|
55
|
-
ts = Pubid::Iso.locate_stage_by_harmonized_code(harmonized_code)
|
|
56
|
-
ts ? dup.tap { |id| id.typed_stage = ts } : dup
|
|
57
|
-
end
|
|
58
|
-
|
|
59
10
|
attribute :number, ::Pubid::Iso::Components::Code
|
|
60
11
|
attribute :part, ::Pubid::Iso::Components::Code
|
|
61
12
|
attribute :subpart, ::Pubid::Iso::Components::Code
|
|
62
13
|
|
|
63
14
|
# Polymorphic type map for lutaml::Model key_value serialization
|
|
64
15
|
# Maps polymorphic_name → class name for deserialization
|
|
65
|
-
# Validated by spec to stay in sync with
|
|
16
|
+
# Validated by spec to stay in sync with Scheme.identifiers
|
|
66
17
|
ISO_TYPE_MAP = {
|
|
67
18
|
"pubid:iso:international-standard" => "Pubid::Iso::Identifiers::InternationalStandard",
|
|
68
19
|
"pubid:iso:international-standardized-profile" => "Pubid::Iso::Identifiers::InternationalStandardizedProfile",
|
|
@@ -82,221 +33,20 @@ module Pubid
|
|
|
82
33
|
"pubid:iso:data" => "Pubid::Iso::Identifiers::Data",
|
|
83
34
|
"pubid:iso:tc-document" => "Pubid::Iso::Identifiers::TcDocument",
|
|
84
35
|
"pubid:iso:technology-trends-assessments" => "Pubid::Iso::Identifiers::TechnologyTrendsAssessments",
|
|
85
|
-
"pubid:iso:bundled-identifier" => "Pubid::Iso::BundledIdentifier",
|
|
86
36
|
}.freeze
|
|
87
37
|
|
|
88
|
-
#
|
|
89
|
-
# polymorphic `_type`, so the shared polymorphic_type_map needs it
|
|
90
|
-
# explicitly (see Pubid::Identifier#additional_identifier_classes).
|
|
91
|
-
def self.additional_identifier_classes
|
|
92
|
-
[Pubid::Iso::BundledIdentifier]
|
|
93
|
-
end
|
|
94
|
-
private_class_method :additional_identifier_classes
|
|
95
|
-
|
|
96
|
-
# Build type map from Pubid::Iso.identifier_types for validation
|
|
38
|
+
# Build type map from Scheme.identifiers for validation
|
|
97
39
|
def self.build_type_map
|
|
98
|
-
|
|
40
|
+
Scheme.identifiers.to_h do |klass|
|
|
99
41
|
[klass.polymorphic_name, klass.name]
|
|
100
42
|
end
|
|
101
43
|
end
|
|
102
44
|
|
|
103
|
-
# The base Pubid::Identifier no longer auto-maps attributes, so each
|
|
104
|
-
# flavor's top class must declare its own key_value mapping. Subclasses
|
|
105
|
-
# merge their own blocks on top of this one (e.g. SupplementIdentifier
|
|
106
|
-
# adds base; Directives adds subgroup), so list every base
|
|
107
|
-
# attribute ISO serializes here once.
|
|
108
45
|
key_value do
|
|
109
46
|
map "_type", to: :_type, polymorphic_map: ISO_TYPE_MAP
|
|
110
|
-
# Code components serialize as their plain string value, not {value,number}.
|
|
111
|
-
map "number", with: { to: :number_to_kv, from: :number_from_kv }
|
|
112
|
-
map "part", with: { to: :part_to_kv, from: :part_from_kv }
|
|
113
|
-
map "subpart", with: { to: :subpart_to_kv, from: :subpart_from_kv }
|
|
114
|
-
map "stage_iteration",
|
|
115
|
-
with: { to: :stage_iteration_to_kv, from: :stage_iteration_from_kv }
|
|
116
|
-
# date serialized flat as year/month/day, nils omitted.
|
|
117
|
-
map "year", with: { to: :year_to_kv, from: :year_from_kv }
|
|
118
|
-
map "month", with: { to: :month_to_kv, from: :month_from_kv }
|
|
119
|
-
map "day", with: { to: :day_to_kv, from: :day_from_kv }
|
|
120
|
-
# ISO/IEC undated reference (e.g. ISO 16634:--). The `false` default
|
|
121
|
-
# is omitted; only the meaningful `true` round-trips via to_hash.
|
|
122
|
-
map "undated", with: { to: :undated_to_kv, from: :undated_from_kv }
|
|
123
|
-
map "edition", to: :edition
|
|
124
|
-
map "languages", to: :languages
|
|
125
|
-
# publisher emitted only when the primary isn't the type default;
|
|
126
|
-
# copublishers (the other bodies) as an array, omitted when empty.
|
|
127
|
-
map "publisher", with: { to: :publisher_to_kv, from: :publisher_from_kv }
|
|
128
|
-
map "copublishers", with: { to: :copublishers_to_kv, from: :copublishers_from_kv }
|
|
129
|
-
map "locality", to: :locality
|
|
130
|
-
# `type` and generic `stage` are fully derived from `typed_stage`
|
|
131
|
-
# (builder sets them via to_type/to_stage), so we serialize only the
|
|
132
|
-
# unique typed-stage `code` under "stage" and recompute the rest on
|
|
133
|
-
# load. _type already pins the document type.
|
|
134
|
-
map "stage", with: { to: :stage_to_kv, from: :stage_from_kv }
|
|
135
|
-
# Omit the `false` default; only the meaningful `true` is serialized.
|
|
136
|
-
map "all_parts", with: { to: :all_parts_to_kv, from: :all_parts_from_kv }
|
|
137
|
-
end
|
|
138
|
-
|
|
139
|
-
def all_parts_to_kv(model, doc)
|
|
140
|
-
return unless model.all_parts
|
|
141
|
-
|
|
142
|
-
doc.add_child(
|
|
143
|
-
Lutaml::KeyValue::DataModel::Element.new("all_parts", true),
|
|
144
|
-
)
|
|
145
|
-
end
|
|
146
|
-
|
|
147
|
-
def all_parts_from_kv(model, value)
|
|
148
|
-
model.all_parts = value
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
# Serialize typed_stage as just its unique code (e.g. "is", "dis",
|
|
152
|
-
# "committee_draft_amd"). type/stage are recomputed from it on load.
|
|
153
|
-
def stage_to_kv(model, doc)
|
|
154
|
-
ts = model.typed_stage
|
|
155
|
-
return unless ts&.code
|
|
156
|
-
# Omit the published default (recomputed from the class on load).
|
|
157
|
-
return if ts.stage_code.to_s == "published"
|
|
158
|
-
|
|
159
|
-
doc.add_child(
|
|
160
|
-
Lutaml::KeyValue::DataModel::Element.new("stage", ts.code.to_s),
|
|
161
|
-
)
|
|
162
|
-
end
|
|
163
|
-
|
|
164
|
-
# Resolve the typed-stage code back to the full TypedStage within this
|
|
165
|
-
# identifier's class, then derive type/stage from it.
|
|
166
|
-
def stage_from_kv(model, value)
|
|
167
|
-
return if value.nil? || value.to_s.empty?
|
|
168
|
-
|
|
169
|
-
# The fallback consults the flavor-wide table. It used to call
|
|
170
|
-
# `Pubid::Iso::Scheme`, a class removed repo-wide in e3c19ea1 — so any
|
|
171
|
-
# code absent from the class's own TYPED_STAGES raised NameError
|
|
172
|
-
# instead of falling back. The IEC twin (iec/identifier.rb) was
|
|
173
|
-
# migrated at the time; ISO was missed.
|
|
174
|
-
ts = (model.class.const_defined?(:TYPED_STAGES) &&
|
|
175
|
-
model.class::TYPED_STAGES.find { |t| t.code.to_s == value.to_s }) ||
|
|
176
|
-
Pubid::Iso.locate_stage_by_code(value)
|
|
177
|
-
return unless ts
|
|
178
|
-
|
|
179
|
-
# The renderer prefers `original_abbr` (the parsed surface form); without
|
|
180
|
-
# it the supplement renderer falls back to `short_abbr` (e.g. "AMD").
|
|
181
|
-
# Resolving from a code has no surface form, so render the canonical
|
|
182
|
-
# abbreviation (`abbr.first`, e.g. "Amd").
|
|
183
|
-
ts = ts.dup
|
|
184
|
-
ts.original_abbr = ts.canonical_abbreviation
|
|
185
|
-
model.typed_stage = ts
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
# --- Code components <-> plain string ---
|
|
189
|
-
def number_to_kv(model, doc) = emit_code(doc, "number", model.number)
|
|
190
|
-
def number_from_kv(model, value) = model.number = build_code(value)
|
|
191
|
-
def part_to_kv(model, doc) = emit_code(doc, "part", model.part)
|
|
192
|
-
def part_from_kv(model, value) = model.part = build_code(value)
|
|
193
|
-
def subpart_to_kv(model, doc) = emit_code(doc, "subpart", model.subpart)
|
|
194
|
-
def subpart_from_kv(model, value) = model.subpart = build_code(value)
|
|
195
|
-
|
|
196
|
-
def stage_iteration_to_kv(model, doc)
|
|
197
|
-
iter = model.stage_iteration
|
|
198
|
-
v = iter.is_a?(::Pubid::Components::Iteration) ? iter.number : iter
|
|
199
|
-
return if v.nil? || v.to_s.empty?
|
|
200
|
-
|
|
201
|
-
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("stage_iteration",
|
|
202
|
-
v.to_s))
|
|
203
|
-
end
|
|
204
|
-
|
|
205
|
-
def stage_iteration_from_kv(model, value)
|
|
206
|
-
model.stage_iteration = ::Pubid::Components::Iteration.new(number: value.to_s)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
def emit_code(doc, key, code)
|
|
210
|
-
v = code.is_a?(::Pubid::Components::Code) ? code.value : code
|
|
211
|
-
return if v.nil? || v.to_s.empty?
|
|
212
|
-
|
|
213
|
-
doc.add_child(Lutaml::KeyValue::DataModel::Element.new(key, v.to_s))
|
|
214
|
-
end
|
|
215
|
-
|
|
216
|
-
def build_code(value)
|
|
217
|
-
::Pubid::Iso::Components::Code.new(value: value.to_s)
|
|
218
|
-
end
|
|
219
|
-
|
|
220
|
-
# --- date serialized flat as year/month/day ---
|
|
221
|
-
def year_to_kv(model, doc) = emit_date_part(doc, "year", model.date&.year)
|
|
222
|
-
def year_from_kv(model, value) = date_for(model).year = value.to_s
|
|
223
|
-
def month_to_kv(model, doc) = emit_date_part(doc, "month", model.date&.month)
|
|
224
|
-
def month_from_kv(model, value) = date_for(model).month = value.to_s
|
|
225
|
-
def day_to_kv(model, doc) = emit_date_part(doc, "day", model.date&.day)
|
|
226
|
-
def day_from_kv(model, value) = date_for(model).day = value.to_s
|
|
227
|
-
|
|
228
|
-
# --- date undated flag (ISO/IEC undated reference, e.g. ISO 16634:--) ---
|
|
229
|
-
# The `false` default is omitted; only the meaningful `true` round-trips
|
|
230
|
-
# via to_hash / from_hash.
|
|
231
|
-
def undated_to_kv(model, doc)
|
|
232
|
-
return unless model.date&.undated?
|
|
233
|
-
|
|
234
|
-
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("undated", true))
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
def undated_from_kv(model, value)
|
|
238
|
-
date_for(model).undated = value.to_s == "true"
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
def emit_date_part(doc, key, val)
|
|
242
|
-
return if val.nil? || val.to_s.empty?
|
|
243
|
-
|
|
244
|
-
doc.add_child(Lutaml::KeyValue::DataModel::Element.new(key, val.to_s))
|
|
245
|
-
end
|
|
246
|
-
|
|
247
|
-
def date_for(model)
|
|
248
|
-
model.date ||= ::Pubid::Components::Date.new
|
|
249
|
-
end
|
|
250
|
-
|
|
251
|
-
# --- publisher: primary only when non-default; copublishers as a list ---
|
|
252
|
-
def publisher_to_kv(model, doc)
|
|
253
|
-
pub = model.publisher&.publisher
|
|
254
|
-
return if pub.nil? || pub == model.class.default_publisher&.publisher
|
|
255
|
-
|
|
256
|
-
doc.add_child(Lutaml::KeyValue::DataModel::Element.new("publisher", pub))
|
|
257
|
-
end
|
|
258
|
-
|
|
259
|
-
def publisher_from_kv(model, value)
|
|
260
|
-
publisher_for(model).publisher = value.to_s
|
|
261
|
-
end
|
|
262
|
-
|
|
263
|
-
def copublishers_to_kv(model, doc)
|
|
264
|
-
cp = model.publisher&.copublisher
|
|
265
|
-
return unless cp&.any?
|
|
266
|
-
|
|
267
|
-
doc.add_child(
|
|
268
|
-
Lutaml::KeyValue::DataModel::Element.new("copublishers", cp.map(&:to_s)),
|
|
269
|
-
)
|
|
270
|
-
end
|
|
271
|
-
|
|
272
|
-
def copublishers_from_kv(model, value)
|
|
273
|
-
list = Array(value).map(&:to_s)
|
|
274
|
-
return unless list.any?
|
|
275
|
-
|
|
276
|
-
# Mirror Builder#parse: copublishers live both on the primary
|
|
277
|
-
# publisher (as strings) and as the top-level `copublishers`
|
|
278
|
-
# collection of Publisher objects. `==` compares the latter, so
|
|
279
|
-
# populate both or a deserialized id never equals a parsed one.
|
|
280
|
-
publisher_for(model).copublisher = list
|
|
281
|
-
model.copublishers = list.map do |cp|
|
|
282
|
-
::Pubid::Iso::Components::Publisher.new(publisher: cp)
|
|
283
|
-
end
|
|
284
|
-
end
|
|
285
|
-
|
|
286
|
-
def publisher_for(model)
|
|
287
|
-
model.publisher ||= ::Pubid::Iso::Components::Publisher.new
|
|
288
47
|
end
|
|
289
48
|
|
|
290
49
|
def self.parse(string, format: :auto)
|
|
291
|
-
unless string.is_a?(String)
|
|
292
|
-
raise Pubid::Errors::InvalidInputError,
|
|
293
|
-
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
if string.length > Pubid::MAX_INPUT_LENGTH
|
|
297
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
298
|
-
end
|
|
299
|
-
|
|
300
50
|
format = Pubid::FormatDetector.detect(string) if format == :auto
|
|
301
51
|
|
|
302
52
|
case format
|
|
@@ -306,13 +56,14 @@ module Pubid
|
|
|
306
56
|
Pubid::Parsers::MrString.parse(string)
|
|
307
57
|
else
|
|
308
58
|
parsed = Pubid::Iso::Parser.new.parse(string)
|
|
309
|
-
|
|
59
|
+
if parsed.nil? || parsed.empty?
|
|
60
|
+
raise Pubid::Iso::Parser::ParseError,
|
|
61
|
+
"Invalid identifier format"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
Pubid::Iso::Builder.new(Pubid::Iso::Scheme).build(parsed)
|
|
310
65
|
end
|
|
311
66
|
end
|
|
312
|
-
|
|
313
|
-
# from_hash is the shared polymorphic dispatch on Pubid::Identifier, which
|
|
314
|
-
# routes `_type` through polymorphic_type_map (ISO_TYPE_MAP's dynamic
|
|
315
|
-
# equivalent). ISO_TYPE_MAP remains as the key_value polymorphic_map.
|
|
316
67
|
end
|
|
317
68
|
end
|
|
318
69
|
end
|
|
@@ -4,6 +4,7 @@ module Pubid
|
|
|
4
4
|
module Iso
|
|
5
5
|
module Identifiers
|
|
6
6
|
class Addendum < SupplementIdentifier
|
|
7
|
+
attribute :type, ::Pubid::Components::Type, default: -> { self.class.type[:key] }
|
|
7
8
|
|
|
8
9
|
# Override URN supplement type to use generic "sup" instead of "add"
|
|
9
10
|
# This matches the ISO URN specification where addendums use "sup"
|
|
@@ -64,11 +65,9 @@ module Pubid
|
|
|
64
65
|
),
|
|
65
66
|
::Pubid::Components::TypedStage.new(
|
|
66
67
|
code: :dad,
|
|
67
|
-
abbr: ["DAD", "DAdd", "D ADD", "Dad"
|
|
68
|
+
abbr: ["DAD", "DAdd", "D ADD", "Dad"],
|
|
68
69
|
short_abbr: "DAD",
|
|
69
|
-
|
|
70
|
-
# "DAD" (pubid v1 legacy_abbr parity). No long_abbr → no long render.
|
|
71
|
-
long_abbr: nil,
|
|
70
|
+
long_abbr: "DAdd",
|
|
72
71
|
type_code: :add,
|
|
73
72
|
stage_code: :dad,
|
|
74
73
|
name: "Draft Addendum",
|
|
@@ -76,10 +75,9 @@ module Pubid
|
|
|
76
75
|
),
|
|
77
76
|
::Pubid::Components::TypedStage.new(
|
|
78
77
|
code: :fdad,
|
|
79
|
-
abbr: ["FDAD", "FDAdd", "FD ADD", "FDad"
|
|
78
|
+
abbr: ["FDAD", "FDAdd", "FD ADD", "FDad"],
|
|
80
79
|
short_abbr: "FDAD",
|
|
81
|
-
|
|
82
|
-
long_abbr: nil,
|
|
80
|
+
long_abbr: "FDAdd",
|
|
83
81
|
type_code: :add,
|
|
84
82
|
stage_code: :fdad,
|
|
85
83
|
name: "Final Draft Addendum",
|
|
@@ -98,8 +96,7 @@ module Pubid
|
|
|
98
96
|
].freeze
|
|
99
97
|
|
|
100
98
|
def self.type
|
|
101
|
-
{ key: :add,
|
|
102
|
-
web: :addendum, title: "Addendum", short: "ADD" }
|
|
99
|
+
{ key: :add, title: "Addendum", short: "ADD" }
|
|
103
100
|
end
|
|
104
101
|
end
|
|
105
102
|
end
|
|
@@ -4,6 +4,7 @@ module Pubid
|
|
|
4
4
|
module Iso
|
|
5
5
|
module Identifiers
|
|
6
6
|
class Amendment < SupplementIdentifier
|
|
7
|
+
attribute :type, ::Pubid::Components::Type, default: -> { self.class.type[:key] }
|
|
7
8
|
|
|
8
9
|
TYPED_STAGES = [
|
|
9
10
|
::Pubid::Components::TypedStage.new(
|
|
@@ -70,10 +71,7 @@ module Pubid
|
|
|
70
71
|
code: :damd,
|
|
71
72
|
abbr: ["DAM", "DAmd"],
|
|
72
73
|
short_abbr: "DAM",
|
|
73
|
-
|
|
74
|
-
# "DAM" (matches pubid v1's legacy_abbr semantics: parse the long
|
|
75
|
-
# spelling, emit the short one). No long_abbr → no long rendering.
|
|
76
|
-
long_abbr: nil,
|
|
74
|
+
long_abbr: "DAmd",
|
|
77
75
|
type_code: :amd,
|
|
78
76
|
stage_code: :damd,
|
|
79
77
|
name: "Draft Amendment",
|
|
@@ -83,8 +81,7 @@ module Pubid
|
|
|
83
81
|
code: :fdamd,
|
|
84
82
|
abbr: ["FDAM", "FDAmd"],
|
|
85
83
|
short_abbr: "FDAM",
|
|
86
|
-
|
|
87
|
-
long_abbr: nil,
|
|
84
|
+
long_abbr: "FDAmd",
|
|
88
85
|
type_code: :amd,
|
|
89
86
|
stage_code: :fdamd,
|
|
90
87
|
name: "Final Draft Amendment",
|
|
@@ -123,8 +120,7 @@ module Pubid
|
|
|
123
120
|
].freeze
|
|
124
121
|
|
|
125
122
|
def self.type
|
|
126
|
-
{ key: :amd,
|
|
127
|
-
web: :amendment, title: "Amendment", short: "AMD" }
|
|
123
|
+
{ key: :amd, title: "Amendment", short: "AMD" }
|
|
128
124
|
end
|
|
129
125
|
end
|
|
130
126
|
end
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
5
|
+
module Pubid
|
|
6
|
+
module Iso
|
|
7
|
+
module Identifiers
|
|
8
|
+
# Base class for ISO identifiers
|
|
9
|
+
class Base < ::Pubid::Identifier
|
|
10
|
+
# Inherit most attributes from parent
|
|
11
|
+
# ISO-specific attributes
|
|
12
|
+
attribute :stage_iteration, ::Pubid::Iso::Components::Code
|
|
13
|
+
|
|
14
|
+
# ISO rendering context singleton
|
|
15
|
+
def self.rendering_context
|
|
16
|
+
@rendering_context ||= Pubid::Rendering::RenderingContext.iso
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Render identifier using OOP approach - each component renders itself
|
|
20
|
+
#
|
|
21
|
+
# @param lang [Symbol] language for rendering (:en or :fr)
|
|
22
|
+
# @param lang_single [Boolean] use single char language format
|
|
23
|
+
# @param with_edition [Boolean] include edition in output
|
|
24
|
+
# @return [String] formatted identifier string
|
|
25
|
+
def to_s(lang: :en, lang_single: false, with_edition: false)
|
|
26
|
+
# Create rendering context with language settings
|
|
27
|
+
context = Pubid::Rendering::RenderingContext.new(
|
|
28
|
+
stage_separator: "/",
|
|
29
|
+
stage_separator_with_copublisher: " ",
|
|
30
|
+
type_separator: "/",
|
|
31
|
+
type_separator_with_prefix: " ",
|
|
32
|
+
default_type_abbr: "IS",
|
|
33
|
+
lang: lang,
|
|
34
|
+
lang_single: lang_single,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
# Compose the identifier from component renderings
|
|
38
|
+
render_from_components(context: context, with_edition: with_edition)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
# Compose identifier string by having each component render itself
|
|
44
|
+
#
|
|
45
|
+
# @param context [RenderingContext] rendering context for flavor rules
|
|
46
|
+
# @param with_edition [Boolean] include edition in output
|
|
47
|
+
# @return [String] composed identifier string
|
|
48
|
+
def render_from_components(context:, with_edition: false)
|
|
49
|
+
parts = []
|
|
50
|
+
parts << publisher.to_s
|
|
51
|
+
|
|
52
|
+
# Stage renders itself with context-aware separators
|
|
53
|
+
if stage
|
|
54
|
+
has_copub = publisher&.has_copublisher?
|
|
55
|
+
parts << stage.to_s(context: context, has_copublisher: has_copub)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Type renders itself with context-aware separators and default handling
|
|
59
|
+
if type
|
|
60
|
+
has_prefix = stage || publisher&.has_copublisher?
|
|
61
|
+
type_render = type.to_s(context: context, has_prefix: has_prefix)
|
|
62
|
+
parts << type_render if type_render != ""
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# Number renders itself
|
|
66
|
+
parts << " #{number.value}" if number&.value
|
|
67
|
+
|
|
68
|
+
# Parts render themselves
|
|
69
|
+
parts << "-#{part.value}" if part&.value
|
|
70
|
+
parts << "-#{subpart.value}" if subpart&.value
|
|
71
|
+
|
|
72
|
+
# Stage iteration renders itself
|
|
73
|
+
parts << ".#{stage_iteration.value}" if stage_iteration&.value
|
|
74
|
+
|
|
75
|
+
# Date renders itself with context
|
|
76
|
+
parts << date.to_s(context: context) if date&.year
|
|
77
|
+
|
|
78
|
+
# Edition renders itself
|
|
79
|
+
parts << " #{edition}" if with_edition && edition&.number
|
|
80
|
+
|
|
81
|
+
# Languages render themselves
|
|
82
|
+
if languages&.any?
|
|
83
|
+
parts << "(#{languages.map do |l|
|
|
84
|
+
l.to_s(lang_single: context.lang_single)
|
|
85
|
+
end.join('/')})"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
parts.join
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
public
|
|
92
|
+
|
|
93
|
+
# V1 API compatibility - tests expect .copublishers returning array of Publisher objects
|
|
94
|
+
def copublishers
|
|
95
|
+
return [] unless publisher.copublisher&.any?
|
|
96
|
+
|
|
97
|
+
publisher.copublisher.map do |cp|
|
|
98
|
+
::Pubid::Components::Publisher.new(body: cp)
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def ==(other)
|
|
103
|
+
return false unless other.is_a?(Base)
|
|
104
|
+
|
|
105
|
+
publisher == other.publisher &&
|
|
106
|
+
type == other.type &&
|
|
107
|
+
number == other.number &&
|
|
108
|
+
part == other.part &&
|
|
109
|
+
date == other.date &&
|
|
110
|
+
stage == other.stage
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
end
|
|
@@ -4,6 +4,7 @@ module Pubid
|
|
|
4
4
|
module Iso
|
|
5
5
|
module Identifiers
|
|
6
6
|
class Corrigendum < SupplementIdentifier
|
|
7
|
+
attribute :type, ::Pubid::Components::Type, default: -> { self.class.type[:key] }
|
|
7
8
|
|
|
8
9
|
TYPED_STAGES = [
|
|
9
10
|
::Pubid::Components::TypedStage.new(
|
|
@@ -58,7 +59,7 @@ module Pubid
|
|
|
58
59
|
),
|
|
59
60
|
::Pubid::Components::TypedStage.new(
|
|
60
61
|
code: :dcor,
|
|
61
|
-
abbr: ["DCor", "DCOR"
|
|
62
|
+
abbr: ["DCor", "DCOR"],
|
|
62
63
|
short_abbr: "DCOR",
|
|
63
64
|
long_abbr: "DCor",
|
|
64
65
|
type_code: :cor,
|
|
@@ -68,7 +69,7 @@ module Pubid
|
|
|
68
69
|
),
|
|
69
70
|
::Pubid::Components::TypedStage.new(
|
|
70
71
|
code: :fdcor,
|
|
71
|
-
abbr: ["FDCor", "FDCOR", "FCOR"
|
|
72
|
+
abbr: ["FDCor", "FDCOR", "FCOR"],
|
|
72
73
|
short_abbr: "FDCOR",
|
|
73
74
|
long_abbr: "FDCor",
|
|
74
75
|
type_code: :cor,
|
|
@@ -99,8 +100,7 @@ module Pubid
|
|
|
99
100
|
].freeze
|
|
100
101
|
|
|
101
102
|
def self.type
|
|
102
|
-
{ key: :cor,
|
|
103
|
-
web: :corrigendum, title: "Corrigendum", short: "COR" }
|
|
103
|
+
{ key: :cor, title: "Corrigendum", short: "COR" }
|
|
104
104
|
end
|
|
105
105
|
end
|
|
106
106
|
end
|
|
@@ -4,14 +4,9 @@ module Pubid
|
|
|
4
4
|
module Iso
|
|
5
5
|
module Identifiers
|
|
6
6
|
class Directives < SingleIdentifier
|
|
7
|
+
attribute :type, ::Pubid::Components::Type, default: -> { self.class.type[:key] }
|
|
7
8
|
attribute :subgroup, ::Pubid::Components::Code
|
|
8
9
|
|
|
9
|
-
# Merges with Identifier's block (base attributes); only adds the
|
|
10
|
-
# Directives-specific subgroup so it survives to_hash/from_hash.
|
|
11
|
-
key_value do
|
|
12
|
-
map "subgroup", to: :subgroup
|
|
13
|
-
end
|
|
14
|
-
|
|
15
10
|
TYPED_STAGES = [
|
|
16
11
|
::Pubid::Components::TypedStage.new(
|
|
17
12
|
code: :pubguide,
|
|
@@ -27,8 +22,7 @@ module Pubid
|
|
|
27
22
|
].freeze
|
|
28
23
|
|
|
29
24
|
def self.type
|
|
30
|
-
{ key: :dir,
|
|
31
|
-
web: :directives, title: "Directives", short: "DIR" }
|
|
25
|
+
{ key: :dir, title: "Directives", short: "DIR" }
|
|
32
26
|
end
|
|
33
27
|
|
|
34
28
|
def to_s(**opts)
|