pubid 2.0.0.pre.alpha.1 → 2.0.0.pre.alpha.3
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 +5 -1
- data/data/nist/update_codes.yaml +27 -0
- data/lib/pubid/amca/builder.rb +2 -2
- data/lib/pubid/amca/identifier.rb +7 -0
- data/lib/pubid/amca/identifiers/base.rb +0 -26
- data/lib/pubid/amca/identifiers/interpretation.rb +0 -17
- data/lib/pubid/amca/identifiers/publication.rb +0 -13
- data/lib/pubid/amca/renderer.rb +82 -0
- data/lib/pubid/amca/single_identifier.rb +0 -23
- data/lib/pubid/amca/urn_parser.rb +28 -0
- data/lib/pubid/amca.rb +42 -1
- data/lib/pubid/ansi/builder.rb +5 -3
- data/lib/pubid/ansi/identifier.rb +1 -1
- data/lib/pubid/ansi/identifiers/american_national_standard.rb +2 -1
- data/lib/pubid/ansi/identifiers/standard.rb +2 -3
- data/lib/pubid/ansi/renderer.rb +53 -0
- data/lib/pubid/ansi/single_identifier.rb +2 -31
- data/lib/pubid/ansi/urn_generator.rb +3 -38
- data/lib/pubid/ansi/urn_parser.rb +23 -0
- data/lib/pubid/ansi.rb +38 -3
- data/lib/pubid/api/builder.rb +29 -74
- data/lib/pubid/api/identifier.rb +0 -4
- data/lib/pubid/api/identifiers/base.rb +0 -2
- data/lib/pubid/api/identifiers/bulletin.rb +0 -2
- data/lib/pubid/api/identifiers/continuous_operations_standard.rb +0 -2
- data/lib/pubid/api/identifiers/mpms.rb +1 -17
- data/lib/pubid/api/identifiers/publication.rb +0 -2
- data/lib/pubid/api/identifiers/recommended_practice.rb +0 -2
- data/lib/pubid/api/identifiers/specification.rb +0 -2
- data/lib/pubid/api/identifiers/standard.rb +0 -2
- data/lib/pubid/api/identifiers/technical_report.rb +0 -2
- data/lib/pubid/api/identifiers/typeless_standard.rb +1 -14
- data/lib/pubid/api/identifiers.rb +18 -0
- data/lib/pubid/api/renderer.rb +89 -0
- data/lib/pubid/api/single_identifier.rb +1 -13
- data/lib/pubid/api/urn_generator.rb +0 -18
- data/lib/pubid/api/urn_parser.rb +35 -0
- data/lib/pubid/api.rb +51 -5
- data/lib/pubid/ashrae/builder.rb +3 -3
- data/lib/pubid/ashrae/identifier.rb +6 -0
- data/lib/pubid/ashrae/identifiers/addenda_package.rb +0 -10
- data/lib/pubid/ashrae/identifiers/addendum.rb +0 -19
- data/lib/pubid/ashrae/identifiers/base.rb +3 -0
- data/lib/pubid/ashrae/identifiers/combined_addenda.rb +0 -15
- data/lib/pubid/ashrae/identifiers/errata.rb +0 -10
- data/lib/pubid/ashrae/identifiers/interpretation.rb +0 -10
- data/lib/pubid/ashrae/renderer.rb +117 -0
- data/lib/pubid/ashrae/single_identifier.rb +0 -13
- data/lib/pubid/ashrae/urn_generator.rb +0 -8
- data/lib/pubid/ashrae/urn_parser.rb +27 -0
- data/lib/pubid/ashrae.rb +42 -1
- data/lib/pubid/asme/components/code.rb +10 -2
- data/lib/pubid/asme/identifiers/base.rb +0 -60
- data/lib/pubid/asme/renderer.rb +66 -0
- data/lib/pubid/asme/urn_parser.rb +31 -0
- data/lib/pubid/asme.rb +42 -1
- data/lib/pubid/astm/components/code.rb +9 -0
- data/lib/pubid/{jis → astm}/components.rb +1 -1
- data/lib/pubid/astm/identifiers/adjunct.rb +0 -8
- data/lib/pubid/astm/identifiers/data_series.rb +0 -14
- data/lib/pubid/astm/identifiers/iso_dual_published.rb +9 -34
- data/lib/pubid/astm/identifiers/manual.rb +0 -27
- data/lib/pubid/astm/identifiers/monograph.rb +0 -14
- data/lib/pubid/astm/identifiers/research_report.rb +0 -7
- data/lib/pubid/astm/identifiers/standard.rb +0 -39
- data/lib/pubid/astm/identifiers/technical_report.rb +0 -13
- data/lib/pubid/astm/identifiers/work_in_progress.rb +0 -11
- data/lib/pubid/astm/identifiers.rb +18 -0
- data/lib/pubid/astm/renderer.rb +172 -0
- data/lib/pubid/astm/single_identifier.rb +0 -10
- data/lib/pubid/astm/urn_parser.rb +30 -0
- data/lib/pubid/astm.rb +39 -27
- data/lib/pubid/bsi/builder.rb +21 -12
- data/lib/pubid/bsi/identifier.rb +8 -2
- data/lib/pubid/bsi/identifiers/addendum_document.rb +3 -33
- data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +11 -47
- data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +11 -38
- data/lib/pubid/bsi/identifiers/aerospace_standard.rb +3 -53
- data/lib/pubid/bsi/identifiers/amendment.rb +3 -19
- data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +2 -4
- data/lib/pubid/bsi/identifiers/british_standard.rb +2 -1
- data/lib/pubid/bsi/identifiers/bundled_identifier.rb +3 -84
- data/lib/pubid/bsi/identifiers/committee_document.rb +1 -14
- data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +3 -84
- data/lib/pubid/bsi/identifiers/corrigendum.rb +3 -7
- data/lib/pubid/bsi/identifiers/detailed_specification.rb +1 -34
- data/lib/pubid/bsi/identifiers/disc.rb +1 -27
- data/lib/pubid/bsi/identifiers/draft_document.rb +3 -44
- data/lib/pubid/bsi/identifiers/electronic_book.rb +3 -36
- data/lib/pubid/bsi/identifiers/expert_commentary.rb +3 -15
- data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +1 -45
- data/lib/pubid/bsi/identifiers/flex.rb +1 -33
- data/lib/pubid/bsi/identifiers/handbook.rb +2 -13
- data/lib/pubid/bsi/identifiers/index.rb +1 -30
- data/lib/pubid/bsi/identifiers/method.rb +1 -39
- data/lib/pubid/bsi/identifiers/national_annex.rb +5 -27
- data/lib/pubid/bsi/identifiers/practice_guide.rb +2 -4
- data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +3 -52
- data/lib/pubid/bsi/identifiers/published_document.rb +3 -52
- data/lib/pubid/bsi/identifiers/section.rb +1 -28
- data/lib/pubid/bsi/identifiers/set.rb +3 -17
- data/lib/pubid/bsi/identifiers/standalone_amendment.rb +1 -7
- data/lib/pubid/bsi/identifiers/supplement_document.rb +3 -21
- data/lib/pubid/bsi/identifiers/supplementary_index.rb +1 -44
- data/lib/pubid/bsi/identifiers/technical_specification.rb +3 -45
- data/lib/pubid/bsi/identifiers/test_method.rb +1 -30
- data/lib/pubid/bsi/identifiers/value_added_publication.rb +3 -14
- data/lib/pubid/bsi/identifiers.rb +0 -1
- data/lib/pubid/bsi/renderer.rb +1050 -0
- data/lib/pubid/bsi/single_identifier.rb +6 -70
- data/lib/pubid/bsi/urn_generator.rb +2 -3
- data/lib/pubid/bsi/urn_parser.rb +52 -0
- data/lib/pubid/bsi.rb +224 -1
- data/lib/pubid/builder/base.rb +57 -10
- data/lib/pubid/bundled_identifier.rb +0 -1
- data/lib/pubid/ccsds/builder.rb +4 -3
- data/lib/pubid/ccsds/identifier.rb +66 -1
- data/lib/pubid/ccsds/identifiers/base.rb +11 -50
- data/lib/pubid/ccsds/identifiers/corrigendum.rb +7 -6
- data/lib/pubid/ccsds/parser.rb +4 -2
- data/lib/pubid/ccsds/single_identifier.rb +4 -1
- data/lib/pubid/ccsds/supplement_identifier.rb +15 -11
- data/lib/pubid/ccsds/urn_generator.rb +3 -3
- data/lib/pubid/ccsds/urn_parser.rb +20 -0
- data/lib/pubid/ccsds.rb +39 -1
- data/lib/pubid/cen_cenelec/builder.rb +12 -14
- data/lib/pubid/cen_cenelec/identifier.rb +8 -2
- data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +13 -4
- data/lib/pubid/cen_cenelec/identifiers/amendment.rb +2 -8
- data/lib/pubid/cen_cenelec/identifiers/base.rb +5 -41
- data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +2 -25
- data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +2 -13
- data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +4 -7
- data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/fragment.rb +2 -2
- data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +2 -1
- data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +2 -1
- data/lib/pubid/cen_cenelec/renderer.rb +261 -0
- data/lib/pubid/cen_cenelec/single_identifier.rb +11 -89
- data/lib/pubid/cen_cenelec/urn_generator.rb +6 -6
- data/lib/pubid/cen_cenelec/urn_parser.rb +28 -0
- data/lib/pubid/cen_cenelec.rb +168 -1
- data/lib/pubid/cie/components/code.rb +8 -0
- data/lib/pubid/cie/identifier.rb +6 -4
- data/lib/pubid/cie/urn_parser.rb +28 -0
- data/lib/pubid/cie.rb +43 -1
- data/lib/pubid/components/adoption.rb +104 -0
- data/lib/pubid/components/code.rb +22 -8
- data/lib/pubid/components/date.rb +23 -16
- data/lib/pubid/components/edition.rb +9 -6
- data/lib/pubid/components/iteration.rb +32 -0
- data/lib/pubid/components/language.rb +6 -4
- data/lib/pubid/components/locality.rb +10 -1
- data/lib/pubid/components/publisher.rb +9 -6
- data/lib/pubid/components/relationship.rb +151 -0
- data/lib/pubid/components/stage.rb +5 -14
- data/lib/pubid/components/supplement.rb +184 -0
- data/lib/pubid/components/type.rb +5 -15
- data/lib/pubid/components/typed_stage.rb +11 -8
- data/lib/pubid/components.rb +4 -0
- data/lib/pubid/core/update_codes.rb +28 -7
- data/lib/pubid/csa/identifier.rb +0 -3
- data/lib/pubid/csa/identifiers/base.rb +2 -122
- data/lib/pubid/csa/identifiers/cec.rb +2 -101
- data/lib/pubid/csa/identifiers/series.rb +2 -102
- data/lib/pubid/csa/renderer.rb +292 -0
- data/lib/pubid/csa/urn_generator.rb +1 -1
- data/lib/pubid/csa/urn_parser.rb +33 -0
- data/lib/pubid/csa.rb +42 -1
- data/lib/pubid/etsi/components/code.rb +9 -2
- data/lib/pubid/etsi/identifiers/base.rb +1 -4
- data/lib/pubid/etsi/identifiers/supplement_identifier.rb +2 -9
- data/lib/pubid/etsi/renderer.rb +42 -0
- data/lib/pubid/etsi/urn_parser.rb +34 -0
- data/lib/pubid/etsi.rb +42 -1
- data/lib/pubid/export/exporter.rb +4 -46
- data/lib/pubid/export/flavor_exporter.rb +111 -278
- data/lib/pubid/export.rb +0 -6
- data/lib/pubid/identifier.rb +10 -18
- data/lib/pubid/identifier_facade.rb +114 -0
- data/lib/pubid/identifier_metadata.rb +1 -1
- data/lib/pubid/idf/builder.rb +3 -3
- data/lib/pubid/idf/identifier.rb +3 -6
- data/lib/pubid/idf/identifiers/amendment.rb +2 -1
- data/lib/pubid/idf/identifiers/corrigendum.rb +2 -1
- data/lib/pubid/idf/identifiers/international_standard.rb +2 -1
- data/lib/pubid/idf/identifiers/reviewed_method.rb +2 -1
- data/lib/pubid/idf/parser.rb +3 -2
- data/lib/pubid/idf/renderer.rb +84 -0
- data/lib/pubid/idf/supplement_identifier.rb +2 -10
- data/lib/pubid/idf/urn_generator.rb +4 -39
- data/lib/pubid/idf/urn_parser.rb +25 -0
- data/lib/pubid/idf.rb +51 -1
- data/lib/pubid/iec/builder.rb +48 -65
- data/lib/pubid/iec/components/code.rb +9 -32
- data/lib/pubid/iec/components/publisher.rb +1 -1
- data/lib/pubid/iec/components.rb +14 -0
- data/lib/pubid/iec/identifier.rb +276 -3
- data/lib/pubid/iec/identifiers/amendment.rb +2 -3
- data/lib/pubid/iec/identifiers/base.rb +8 -28
- data/lib/pubid/iec/identifiers/component_specification.rb +3 -3
- data/lib/pubid/iec/identifiers/conformity_assessment.rb +1 -2
- data/lib/pubid/iec/identifiers/consolidated_identifier.rb +27 -30
- data/lib/pubid/iec/identifiers/corrigendum.rb +2 -3
- data/lib/pubid/iec/identifiers/fragment_identifier.rb +37 -26
- data/lib/pubid/iec/identifiers/guide.rb +0 -2
- data/lib/pubid/iec/identifiers/international_standard.rb +2 -3
- data/lib/pubid/iec/identifiers/interpretation_sheet.rb +2 -3
- data/lib/pubid/iec/identifiers/operational_document.rb +3 -3
- data/lib/pubid/iec/identifiers/publicly_available_specification.rb +2 -3
- data/lib/pubid/iec/identifiers/sheet_identifier.rb +21 -15
- data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +3 -3
- data/lib/pubid/iec/identifiers/systems_reference_document.rb +2 -3
- data/lib/pubid/iec/identifiers/technical_report.rb +2 -3
- data/lib/pubid/iec/identifiers/technical_specification.rb +2 -3
- data/lib/pubid/iec/identifiers/technology_report.rb +1 -2
- data/lib/pubid/iec/identifiers/test_report_form.rb +5 -34
- data/lib/pubid/iec/identifiers/vap_identifier.rb +26 -23
- data/lib/pubid/iec/identifiers/white_paper.rb +3 -3
- data/lib/pubid/iec/identifiers/working_document.rb +4 -48
- data/lib/pubid/iec/identifiers.rb +30 -0
- data/lib/pubid/iec/parser.rb +20 -14
- data/lib/pubid/iec/renderer.rb +254 -0
- data/lib/pubid/iec/single_identifier.rb +6 -12
- data/lib/pubid/iec/supplement_identifier.rb +58 -54
- data/lib/pubid/iec/urn_generator.rb +57 -171
- data/lib/pubid/iec/urn_parser.rb +53 -252
- data/lib/pubid/iec.rb +40 -68
- data/lib/pubid/ieee/builder.rb +12 -12
- data/lib/pubid/ieee/components/code.rb +8 -0
- data/lib/pubid/ieee/components/draft.rb +14 -0
- data/lib/pubid/ieee/components/relationship.rb +5 -149
- data/lib/pubid/ieee/identifier.rb +6 -0
- data/lib/pubid/ieee/identifiers/adopted_standard.rb +1 -6
- data/lib/pubid/ieee/identifiers/base.rb +101 -458
- data/lib/pubid/ieee/identifiers/conformance_identifier.rb +1 -7
- data/lib/pubid/ieee/identifiers/corrigendum.rb +1 -9
- data/lib/pubid/ieee/identifiers/csa_dual_published.rb +1 -7
- data/lib/pubid/ieee/identifiers/dual_identifier.rb +1 -1
- data/lib/pubid/ieee/identifiers/dual_published.rb +1 -1
- data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +1 -6
- data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +1 -7
- data/lib/pubid/ieee/identifiers/joint_development.rb +2 -0
- data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +1 -15
- data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +1 -3
- data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +15 -0
- data/lib/pubid/ieee/identifiers/redlined_standard.rb +1 -4
- data/lib/pubid/ieee/identifiers/si_standard.rb +1 -35
- data/lib/pubid/ieee/identifiers/standard.rb +1 -1
- data/lib/pubid/ieee/pre_parser.rb +301 -0
- data/lib/pubid/ieee/renderer.rb +307 -0
- data/lib/pubid/ieee/urn_parser.rb +34 -0
- data/lib/pubid/ieee.rb +62 -1
- data/lib/pubid/ieee_debug.rb +0 -1
- data/lib/pubid/iho/builder.rb +2 -2
- data/lib/pubid/iho/identifier.rb +8 -0
- data/lib/pubid/iho/identifiers/base.rb +49 -10
- data/lib/pubid/iho/identifiers/bibliographic.rb +0 -4
- data/lib/pubid/iho/identifiers/circular_letter.rb +0 -4
- data/lib/pubid/iho/identifiers/miscellaneous.rb +0 -4
- data/lib/pubid/iho/identifiers/publication.rb +0 -4
- data/lib/pubid/iho/identifiers/standard.rb +0 -4
- data/lib/pubid/iho/parser.rb +3 -3
- data/lib/pubid/iho/renderer.rb +30 -0
- data/lib/pubid/iho/urn_generator.rb +3 -3
- data/lib/pubid/iho/urn_parser.rb +58 -0
- data/lib/pubid/iho.rb +50 -1
- data/lib/pubid/iso/builder.rb +59 -53
- data/lib/pubid/iso/bundled_identifier.rb +51 -0
- data/lib/pubid/iso/components/code.rb +7 -19
- data/lib/pubid/iso/components/publisher.rb +10 -8
- data/lib/pubid/iso/components.rb +2 -4
- data/lib/pubid/iso/identifier.rb +233 -6
- data/lib/pubid/iso/identifiers/addendum.rb +9 -6
- data/lib/pubid/iso/identifiers/amendment.rb +8 -4
- data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
- data/lib/pubid/iso/identifiers/data.rb +0 -1
- data/lib/pubid/iso/identifiers/directives.rb +8 -2
- data/lib/pubid/iso/identifiers/directives_supplement.rb +43 -14
- data/lib/pubid/iso/identifiers/extract.rb +2 -2
- data/lib/pubid/iso/identifiers/guide.rb +0 -1
- 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 +10 -4
- 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 +11 -3
- data/lib/pubid/iso/identifiers/tc_document.rb +44 -15
- 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 +0 -1
- data/lib/pubid/iso/normalizer.rb +89 -0
- data/lib/pubid/iso/parser.rb +26 -6
- data/lib/pubid/iso/single_identifier.rb +6 -3
- data/lib/pubid/iso/supplement_identifier.rb +15 -2
- data/lib/pubid/iso/urn_generator.rb +74 -176
- data/lib/pubid/iso/urn_parser.rb +28 -9
- data/lib/pubid/iso.rb +173 -2
- data/lib/pubid/itu/builder.rb +0 -12
- data/lib/pubid/itu/components/code.rb +8 -0
- data/lib/pubid/itu/components.rb +11 -0
- data/lib/pubid/itu/identifier.rb +6 -39
- data/lib/pubid/itu/identifiers/amendment.rb +0 -2
- data/lib/pubid/itu/identifiers/annex.rb +0 -2
- data/lib/pubid/itu/identifiers/base.rb +0 -6
- data/lib/pubid/itu/identifiers/combined_identifier.rb +0 -2
- data/lib/pubid/itu/identifiers/corrigendum.rb +0 -2
- data/lib/pubid/itu/identifiers/recommendation.rb +0 -2
- data/lib/pubid/itu/identifiers/special_publication.rb +0 -2
- data/lib/pubid/itu/identifiers/supplement.rb +0 -2
- data/lib/pubid/itu/urn_parser.rb +23 -0
- data/lib/pubid/itu.rb +42 -1
- data/lib/pubid/jcgm/builder.rb +16 -8
- data/lib/pubid/jcgm/identifiers/amendment.rb +2 -7
- data/lib/pubid/jcgm/identifiers/gum_guide.rb +2 -10
- data/lib/pubid/jcgm/renderer.rb +68 -0
- data/lib/pubid/jcgm/single_identifier.rb +1 -5
- data/lib/pubid/jcgm/urn_generator.rb +4 -6
- data/lib/pubid/jcgm/urn_parser.rb +23 -0
- data/lib/pubid/jcgm.rb +43 -2
- data/lib/pubid/jis/builder.rb +44 -52
- data/lib/pubid/jis/identifier.rb +132 -3
- data/lib/pubid/jis/identifiers/amendment.rb +1 -1
- data/lib/pubid/jis/identifiers/corrigendum.rb +16 -0
- data/lib/pubid/jis/identifiers/standard.rb +2 -1
- data/lib/pubid/jis/identifiers/technical_report.rb +2 -1
- data/lib/pubid/jis/identifiers/technical_specification.rb +2 -1
- data/lib/pubid/jis/identifiers.rb +1 -1
- data/lib/pubid/jis/parser.rb +31 -5
- data/lib/pubid/jis/renderer.rb +69 -0
- data/lib/pubid/jis/single_identifier.rb +6 -12
- data/lib/pubid/jis/supplement_identifier.rb +17 -14
- data/lib/pubid/jis/urn_parser.rb +23 -0
- data/lib/pubid/jis.rb +42 -2
- data/lib/pubid/nist/builder.rb +122 -1761
- data/lib/pubid/nist/caster.rb +1272 -0
- data/lib/pubid/nist/circular_supplement_builder.rb +291 -0
- data/lib/pubid/nist/components/code.rb +9 -20
- data/lib/pubid/nist/components/edition.rb +16 -0
- data/lib/pubid/nist/components/supplement.rb +88 -21
- data/lib/pubid/nist/components.rb +0 -1
- data/lib/pubid/nist/identifier.rb +25 -0
- data/lib/pubid/nist/identifiers/base.rb +206 -64
- data/lib/pubid/nist/identifiers/circular.rb +7 -2
- data/lib/pubid/nist/identifiers/circular_supplement.rb +3 -2
- data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -1
- data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +6 -4
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +10 -3
- data/lib/pubid/nist/identifiers/crpl_report.rb +8 -11
- data/lib/pubid/nist/identifiers/dated_document.rb +49 -0
- data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -16
- data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -1
- data/lib/pubid/nist/identifiers/handbook.rb +2 -1
- data/lib/pubid/nist/identifiers/internal_report.rb +2 -1
- data/lib/pubid/nist/identifiers/letter_circular.rb +2 -1
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +5 -4
- data/lib/pubid/nist/identifiers/monograph.rb +7 -3
- data/lib/pubid/nist/identifiers/report.rb +4 -3
- data/lib/pubid/nist/identifiers/special_publication.rb +2 -1
- data/lib/pubid/nist/identifiers/technical_note.rb +3 -2
- data/lib/pubid/nist/identifiers.rb +1 -0
- data/lib/pubid/nist/parser.rb +67 -424
- data/lib/pubid/nist/parser_output_normalizer.rb +233 -0
- data/lib/pubid/nist/preprocessor.rb +416 -0
- data/lib/pubid/nist/renderer.rb +43 -0
- data/lib/pubid/nist/router.rb +148 -0
- data/lib/pubid/nist/series/base.rb +58 -0
- data/lib/pubid/nist/series/crpl.rb +13 -0
- data/lib/pubid/nist/series/fips.rb +14 -0
- data/lib/pubid/nist/series/ir.rb +60 -0
- data/lib/pubid/nist/series/letter_preserving.rb +15 -0
- data/lib/pubid/nist/series/mono.rb +19 -0
- data/lib/pubid/nist/series/ncstar.rb +20 -0
- data/lib/pubid/nist/series.rb +49 -0
- data/lib/pubid/nist/supplement_identifier.rb +11 -25
- data/lib/pubid/nist/urn_generator.rb +14 -8
- data/lib/pubid/nist/urn_parser.rb +67 -0
- data/lib/pubid/nist.rb +83 -4
- data/lib/pubid/oiml/components/code.rb +10 -0
- data/lib/pubid/oiml/identifiers/annex.rb +3 -45
- data/lib/pubid/oiml/identifiers/base.rb +2 -17
- data/lib/pubid/oiml/renderer.rb +161 -0
- data/lib/pubid/oiml/single_identifier.rb +6 -45
- data/lib/pubid/oiml/supplement_identifier.rb +4 -19
- data/lib/pubid/oiml/urn_generator.rb +0 -8
- data/lib/pubid/oiml/urn_parser.rb +22 -0
- data/lib/pubid/oiml.rb +42 -1
- data/lib/pubid/plateau/identifier.rb +23 -0
- data/lib/pubid/plateau/identifiers/handbook.rb +1 -3
- data/lib/pubid/plateau/identifiers/technical_report.rb +1 -1
- data/lib/pubid/plateau/renderer.rb +51 -0
- data/lib/pubid/plateau/supplement_identifier.rb +1 -1
- data/lib/pubid/plateau/urn_parser.rb +43 -0
- data/lib/pubid/plateau.rb +44 -1
- data/lib/pubid/renderers/base.rb +34 -0
- data/lib/pubid/renderers/directives_renderer.rb +27 -14
- data/lib/pubid/renderers/guide_renderer.rb +7 -1
- data/lib/pubid/renderers/human_readable.rb +31 -8
- data/lib/pubid/renderers/iwa_renderer.rb +5 -1
- data/lib/pubid/renderers/supplement_renderer.rb +4 -1
- data/lib/pubid/rendering/context.rb +33 -21
- data/lib/pubid/rendering.rb +0 -3
- data/lib/pubid/sae/components/date.rb +8 -0
- data/lib/pubid/sae/components/type.rb +5 -1
- data/lib/pubid/sae/identifiers/base.rb +2 -16
- data/lib/pubid/sae/renderer.rb +36 -0
- data/lib/pubid/sae/urn_generator.rb +2 -10
- data/lib/pubid/sae/urn_parser.rb +36 -0
- data/lib/pubid/sae.rb +42 -1
- data/lib/pubid/urn_generator/base.rb +12 -12
- data/lib/pubid/urn_parser/base.rb +81 -0
- data/lib/pubid/urn_parser/errors.rb +9 -0
- data/lib/pubid/urn_parser.rb +14 -0
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid.rb +29 -7
- data/lib/tasks/website-data.json +1940 -1882
- metadata +77 -43
- data/lib/pubid/amca/scheme.rb +0 -16
- data/lib/pubid/ansi/scheme.rb +0 -15
- data/lib/pubid/api/scheme.rb +0 -66
- data/lib/pubid/ashrae/scheme.rb +0 -53
- data/lib/pubid/asme/scheme.rb +0 -37
- data/lib/pubid/astm/scheme.rb +0 -55
- data/lib/pubid/bsi/identifiers/base.rb +0 -11
- data/lib/pubid/bsi/scheme.rb +0 -243
- data/lib/pubid/ccsds/scheme.rb +0 -57
- data/lib/pubid/cen_cenelec/scheme.rb +0 -164
- data/lib/pubid/cie/scheme.rb +0 -64
- data/lib/pubid/csa/scheme.rb +0 -44
- data/lib/pubid/etsi/scheme.rb +0 -42
- data/lib/pubid/export/data_class_exporter.rb +0 -59
- data/lib/pubid/export/ieee_exporter.rb +0 -78
- data/lib/pubid/export/itu_exporter.rb +0 -66
- data/lib/pubid/export/nist_exporter.rb +0 -64
- data/lib/pubid/export/registry_exporter.rb +0 -90
- data/lib/pubid/export/scheme_exporter.rb +0 -70
- data/lib/pubid/identifier_registry.rb +0 -198
- data/lib/pubid/idf/scheme.rb +0 -61
- data/lib/pubid/iec/scheme.rb +0 -71
- data/lib/pubid/ieee/scheme.rb +0 -90
- data/lib/pubid/iho/scheme.rb +0 -29
- data/lib/pubid/iso/identifiers/base.rb +0 -115
- data/lib/pubid/iso/scheme.rb +0 -187
- data/lib/pubid/itu/scheme.rb +0 -174
- data/lib/pubid/jcgm/scheme.rb +0 -60
- data/lib/pubid/jis/components/code.rb +0 -59
- data/lib/pubid/jis/identifiers/base.rb +0 -72
- data/lib/pubid/jis/scheme.rb +0 -49
- data/lib/pubid/nist/components/publisher.rb +0 -24
- data/lib/pubid/nist/scheme.rb +0 -199
- data/lib/pubid/oiml/scheme.rb +0 -46
- data/lib/pubid/plateau/scheme.rb +0 -45
- data/lib/pubid/rendering/base.rb +0 -73
- data/lib/pubid/rendering/common.rb +0 -211
- data/lib/pubid/rendering/format.rb +0 -25
- data/lib/pubid/sae/scheme.rb +0 -47
- data/lib/pubid/scheme.rb +0 -207
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "lutaml/model"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Jis
|
|
7
|
-
module Components
|
|
8
|
-
# Represents a JIS code with series letter, number, and optional parts
|
|
9
|
-
# Examples:
|
|
10
|
-
# A 0001 => series: "A", number: 1, parts: []
|
|
11
|
-
# B 0060-1 => series: "B", number: 60, parts: [1]
|
|
12
|
-
# C 61000-3-2 => series: "C", number: 61000, parts: [3, 2]
|
|
13
|
-
# C 5401-2-001 => series: "C", number: 5401, parts: [2, 1] (with formatting)
|
|
14
|
-
class Code < Lutaml::Model::Serializable
|
|
15
|
-
attribute :series, :string # Single letter A-Z
|
|
16
|
-
attribute :number, :integer # Required number
|
|
17
|
-
attribute :parts, :integer, collection: true # Optional multi-level parts
|
|
18
|
-
|
|
19
|
-
# Store original string representations for formatting
|
|
20
|
-
attr_accessor :number_string, :part_strings
|
|
21
|
-
|
|
22
|
-
def initialize(series:, number:, parts: nil, number_string: nil,
|
|
23
|
-
part_strings: nil)
|
|
24
|
-
@series = series
|
|
25
|
-
@number = number
|
|
26
|
-
@parts = parts || []
|
|
27
|
-
@number_string = number_string || format_number(number)
|
|
28
|
-
@part_strings = part_strings || @parts.map(&:to_s)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# Render as "SERIES NUMBER[-PART[-SUBPART[...]]]"
|
|
32
|
-
def to_s
|
|
33
|
-
result = "#{series} #{number_string}"
|
|
34
|
-
result += part_strings.map { |p| "-#{p}" }.join if part_strings&.any?
|
|
35
|
-
result
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def ==(other)
|
|
39
|
-
return false unless other.is_a?(Code)
|
|
40
|
-
|
|
41
|
-
series == other.series &&
|
|
42
|
-
number == other.number &&
|
|
43
|
-
parts == other.parts
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
private
|
|
47
|
-
|
|
48
|
-
def format_number(num)
|
|
49
|
-
# Preserve leading zeros: pad to 4 digits if less than 1000
|
|
50
|
-
if num < 1000
|
|
51
|
-
num.to_s.rjust(4, "0")
|
|
52
|
-
else
|
|
53
|
-
num.to_s
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jis
|
|
5
|
-
module Identifiers
|
|
6
|
-
# Base class for all JIS identifiers
|
|
7
|
-
# Provides common attributes and behavior
|
|
8
|
-
class Base < Pubid::Identifier
|
|
9
|
-
# Generate URN for this identifier
|
|
10
|
-
#
|
|
11
|
-
# @return [String] URN representation
|
|
12
|
-
|
|
13
|
-
attribute :code, Pubid::Jis::Components::Code
|
|
14
|
-
attribute :year, :integer
|
|
15
|
-
attribute :language, :string # "E" or "J"
|
|
16
|
-
attribute :all_parts, :boolean, default: -> { false }
|
|
17
|
-
|
|
18
|
-
def initialize(code: nil, series: nil, number: nil, parts: nil,
|
|
19
|
-
year: nil, language: nil, all_parts: false)
|
|
20
|
-
if code
|
|
21
|
-
@code = code
|
|
22
|
-
elsif series && number
|
|
23
|
-
@code = Components::Code.new(
|
|
24
|
-
series: series,
|
|
25
|
-
number: number,
|
|
26
|
-
parts: parts || [],
|
|
27
|
-
)
|
|
28
|
-
end
|
|
29
|
-
@year = year
|
|
30
|
-
@language = language
|
|
31
|
-
@all_parts = all_parts
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
# Publisher is always JIS
|
|
35
|
-
def publisher
|
|
36
|
-
"JIS"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def all_parts?
|
|
40
|
-
all_parts == true
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# Comparison with all_parts logic
|
|
44
|
-
# When either identifier has all_parts=true, compare only series and number
|
|
45
|
-
def ==(other)
|
|
46
|
-
return false unless other.is_a?(Base)
|
|
47
|
-
|
|
48
|
-
if all_parts? || other.all_parts?
|
|
49
|
-
# Compare only series and number, ignore year, parts, all_parts
|
|
50
|
-
return code.series == other.code.series &&
|
|
51
|
-
code.number == other.code.number
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Normal full comparison
|
|
55
|
-
code == other.code &&
|
|
56
|
-
year == other.year &&
|
|
57
|
-
language == other.language &&
|
|
58
|
-
all_parts == other.all_parts
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Basic string representation (override in subclasses)
|
|
62
|
-
def to_s
|
|
63
|
-
parts = [publisher, code.to_s]
|
|
64
|
-
parts << ":#{year}" if year
|
|
65
|
-
parts << "(#{language})" if language
|
|
66
|
-
parts << "(規格群)" if all_parts?
|
|
67
|
-
parts.join(" ")
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
data/lib/pubid/jis/scheme.rb
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Jis
|
|
5
|
-
class Scheme < Pubid::Scheme
|
|
6
|
-
class << self
|
|
7
|
-
def identifiers
|
|
8
|
-
[
|
|
9
|
-
Identifiers::Standard,
|
|
10
|
-
Identifiers::TechnicalReport,
|
|
11
|
-
Identifiers::TechnicalSpecification,
|
|
12
|
-
]
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def typed_stages
|
|
16
|
-
identifiers.flat_map { |klass| klass::TYPED_STAGES }
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def locate_typed_stage_by_abbr(abbr)
|
|
20
|
-
abbr = "JIS" if abbr.nil? || abbr.to_s.empty?
|
|
21
|
-
|
|
22
|
-
typed_stage = typed_stages.detect do |ts|
|
|
23
|
-
ts.abbr.include?(abbr)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
unless typed_stage
|
|
27
|
-
raise ArgumentError,
|
|
28
|
-
"Unknown type abbreviation: '#{abbr}'"
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
typed_stage
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def locate_identifier_klass_by_type_code(type_code)
|
|
35
|
-
identifier_klass = identifiers.detect do |klass|
|
|
36
|
-
klass.type[:key].to_s == type_code.to_s
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
unless identifier_klass
|
|
40
|
-
raise ArgumentError,
|
|
41
|
-
"Unknown type code: #{type_code}"
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
identifier_klass
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "lutaml/model"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Nist
|
|
7
|
-
module Components
|
|
8
|
-
# Publisher component for NIST identifiers
|
|
9
|
-
# Handles NIST and NBS publishers
|
|
10
|
-
class Publisher < Lutaml::Model::Serializable
|
|
11
|
-
attribute :publisher, :string
|
|
12
|
-
|
|
13
|
-
def to_s
|
|
14
|
-
publisher
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
# Alias for compatibility
|
|
18
|
-
def body
|
|
19
|
-
publisher
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
data/lib/pubid/nist/scheme.rb
DELETED
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Nist
|
|
5
|
-
# Scheme class for NIST identifier registry
|
|
6
|
-
# Single Responsibility: Identifier class registry and series-to-class mapping
|
|
7
|
-
class Scheme < Pubid::Scheme
|
|
8
|
-
class << self
|
|
9
|
-
# Aggregate TYPED_STAGES from all identifier classes
|
|
10
|
-
# @return [Array<Components::TypedStage>] all typed stages
|
|
11
|
-
def typed_stages
|
|
12
|
-
@typed_stages ||= identifiers
|
|
13
|
-
.reject { |klass| klass == Identifiers::Base } # Skip Base fallback class
|
|
14
|
-
.flat_map(&:typed_stages)
|
|
15
|
-
.freeze
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
# Locate TypedStage by abbreviation
|
|
19
|
-
# @param abbr [String, Symbol] the type abbreviation
|
|
20
|
-
# @return [Components::TypedStage] the matching typed stage
|
|
21
|
-
# @raise [ArgumentError] if abbreviation not found
|
|
22
|
-
def locate_typed_stage_by_abbr(abbr)
|
|
23
|
-
abbr_str = abbr.to_s.upcase
|
|
24
|
-
typed_stages.find do |ts|
|
|
25
|
-
ts.abbr.any? { |a| a.to_s.upcase == abbr_str }
|
|
26
|
-
end || raise(ArgumentError, "Unknown type abbreviation: #{abbr}")
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
# Locate identifier class by type code
|
|
30
|
-
# @param type_code [String, Symbol] the type code
|
|
31
|
-
# @return [Class] the identifier class
|
|
32
|
-
# @raise [ArgumentError] if type code not found
|
|
33
|
-
def locate_identifier_klass_by_type_code(type_code)
|
|
34
|
-
type_str = type_code.to_s
|
|
35
|
-
identifiers
|
|
36
|
-
.reject { |klass| klass == Identifiers::Base } # Skip Base fallback class
|
|
37
|
-
.find do |klass|
|
|
38
|
-
klass.typed_stages.any? { |ts| ts.type_code.to_s == type_str }
|
|
39
|
-
end || raise(ArgumentError, "Unknown type code: #{type_code}")
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Locate identifier class by series and pattern
|
|
43
|
-
# @param parsed_hash [Hash] the parsed identifier data
|
|
44
|
-
# @return [Class] the identifier class
|
|
45
|
-
def locate_identifier_klass(parsed_hash)
|
|
46
|
-
series = parsed_hash[:series]&.to_s
|
|
47
|
-
|
|
48
|
-
# Handle compound series that include publisher (both space and dot separated)
|
|
49
|
-
if series&.start_with?("NBS ")
|
|
50
|
-
simple_series = series.sub("NBS ", "")
|
|
51
|
-
|
|
52
|
-
# Check for CIRC supplement
|
|
53
|
-
if simple_series == "CIRC"
|
|
54
|
-
if has_supplement?(parsed_hash)
|
|
55
|
-
return Identifiers::CircularSupplement
|
|
56
|
-
else
|
|
57
|
-
return Identifiers::Circular
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# Use simple series for lookup (TYPED_STAGES abbr handles compound forms)
|
|
62
|
-
series = simple_series
|
|
63
|
-
elsif series&.start_with?("NBS.")
|
|
64
|
-
# Handle dot-separated patterns (e.g., "NBS.LCIRC" after preprocessing)
|
|
65
|
-
simple_series = series.sub("NBS.", "")
|
|
66
|
-
|
|
67
|
-
# Check for LCIRC supplement (dot-separated variant)
|
|
68
|
-
if simple_series == "LCIRC"
|
|
69
|
-
if has_supplement?(parsed_hash)
|
|
70
|
-
return Identifiers::CircularSupplement
|
|
71
|
-
else
|
|
72
|
-
return Identifiers::LetterCircular
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
# Check for CIRC supplement (dot-separated variant)
|
|
77
|
-
if simple_series == "CIRC"
|
|
78
|
-
if has_supplement?(parsed_hash)
|
|
79
|
-
return Identifiers::CircularSupplement
|
|
80
|
-
else
|
|
81
|
-
return Identifiers::Circular
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
# Use simple series for lookup
|
|
86
|
-
series = simple_series
|
|
87
|
-
elsif series&.start_with?("NIST.")
|
|
88
|
-
# Handle dot-separated NIST patterns
|
|
89
|
-
simple_series = series.sub("NIST.", "")
|
|
90
|
-
|
|
91
|
-
# Check for LCIRC supplement (dot-separated variant)
|
|
92
|
-
if simple_series == "LCIRC"
|
|
93
|
-
if has_supplement?(parsed_hash)
|
|
94
|
-
return Identifiers::CircularSupplement
|
|
95
|
-
else
|
|
96
|
-
return Identifiers::LetterCircular
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
# Use simple series for lookup
|
|
101
|
-
series = simple_series
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
# Check for CS variants (works for both compound "NBS CS" and simple "CS")
|
|
105
|
-
if series == "CS"
|
|
106
|
-
first_num = parsed_hash[:first_number]
|
|
107
|
-
|
|
108
|
-
# Check for CSM (monthly) - v#n# pattern inside first_number hash
|
|
109
|
-
if first_num.is_a?(Hash) && first_num[:volume_number] && first_num[:issue_number]
|
|
110
|
-
return Identifiers::CommercialStandardsMonthly
|
|
111
|
-
end
|
|
112
|
-
|
|
113
|
-
# Check for CS-E (emergency) - e-prefix with 3+ digits
|
|
114
|
-
# Handle Parslet::Slice by converting to string
|
|
115
|
-
first_num_str = first_num.is_a?(String) ? first_num.to_str : first_num.to_s
|
|
116
|
-
|
|
117
|
-
# Match e104 or e104 (when "e104-43" is split into first+second)
|
|
118
|
-
if /^e\d{3,}/.match?(first_num_str)
|
|
119
|
-
return Identifiers::CommercialStandardEmergency
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
# Look up using TYPED_STAGES registry (replaces series_to_class_map)
|
|
124
|
-
# This handles simple series, compound series (via abbr array), and all variants
|
|
125
|
-
begin
|
|
126
|
-
typed_stage = locate_typed_stage_by_abbr(series)
|
|
127
|
-
type_code = typed_stage.type_code
|
|
128
|
-
locate_identifier_klass_by_type_code(type_code)
|
|
129
|
-
rescue ArgumentError
|
|
130
|
-
# Fallback to Base for unmapped series (e.g., "AMS", "VTS")
|
|
131
|
-
Identifiers::Base
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
# Check if parsed hash has supplement indicators
|
|
136
|
-
def has_supplement?(parsed_hash)
|
|
137
|
-
parsed_hash[:supplement] ||
|
|
138
|
-
parsed_hash[:supplement_date_range] ||
|
|
139
|
-
parsed_hash[:supplement_date] ||
|
|
140
|
-
parsed_hash[:supplement_slash_year] ||
|
|
141
|
-
parsed_hash[:supplement_with_rev]
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
# All identifier classes
|
|
145
|
-
# @return [Array<Class>] list of all identifier classes
|
|
146
|
-
def identifiers
|
|
147
|
-
@identifiers ||= [
|
|
148
|
-
Identifiers::SpecialPublication,
|
|
149
|
-
Identifiers::FederalInformationProcessingStandards,
|
|
150
|
-
Identifiers::InteragencyReport,
|
|
151
|
-
Identifiers::Handbook,
|
|
152
|
-
Identifiers::TechnicalNote,
|
|
153
|
-
Identifiers::Circular,
|
|
154
|
-
Identifiers::CircularSupplement,
|
|
155
|
-
Identifiers::CrplReport,
|
|
156
|
-
Identifiers::Report,
|
|
157
|
-
Identifiers::Monograph,
|
|
158
|
-
Identifiers::MiscellaneousPublication,
|
|
159
|
-
Identifiers::GrantContractorReport,
|
|
160
|
-
Identifiers::Ncstar,
|
|
161
|
-
Identifiers::Owmwp,
|
|
162
|
-
Identifiers::Nsrds,
|
|
163
|
-
Identifiers::LetterCircular,
|
|
164
|
-
Identifiers::CommercialStandard,
|
|
165
|
-
Identifiers::CommercialStandardEmergency,
|
|
166
|
-
Identifiers::CommercialStandardsMonthly,
|
|
167
|
-
Identifiers::Base, # Fallback for unmapped series
|
|
168
|
-
].freeze
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
# Check if series is valid
|
|
172
|
-
# @param series_code [String] the series code
|
|
173
|
-
# @return [Boolean] true if series is valid
|
|
174
|
-
def valid_series?(series_code)
|
|
175
|
-
VALID_SERIES.include?(series_code)
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
# All valid series codes (comprehensive list)
|
|
179
|
-
VALID_SERIES = [
|
|
180
|
-
# Major series with dedicated classes
|
|
181
|
-
"SP", "FIPS", "IR", "HB", "TN",
|
|
182
|
-
# Specialized series with dedicated classes
|
|
183
|
-
"CIRC", "CRPL", "CS", "CSM",
|
|
184
|
-
# Other series (use Base class)
|
|
185
|
-
"GCR", "AMS", "BSS", "BMS", "BH", "MONO", "MP",
|
|
186
|
-
"NCSTAR", "NSRDS", "CSWP", "VTS", "AI", "OWMWP",
|
|
187
|
-
"PC", "RPT", "SIBS", "TIBM", "TTB", "EAB",
|
|
188
|
-
"JPCRD", "JRES", "CIS", "HR", "IRPL", "IP",
|
|
189
|
-
"LC", "PS", "LCIRC",
|
|
190
|
-
# Compound series
|
|
191
|
-
"BRPD-CRPL-D", "CRPL-F-A", "CRPL-F-B", "CS-E",
|
|
192
|
-
"CSRC Building Block", "CSRC Use Case", "CSRC Book",
|
|
193
|
-
"ITL Bulletin", "NIST LC", "NIST PS", "NIST DCI",
|
|
194
|
-
"NIST Other", "NSRDS-NBS"
|
|
195
|
-
].freeze
|
|
196
|
-
end
|
|
197
|
-
end
|
|
198
|
-
end
|
|
199
|
-
end
|
data/lib/pubid/oiml/scheme.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Oiml
|
|
5
|
-
class Scheme < Pubid::Scheme
|
|
6
|
-
class << self
|
|
7
|
-
def identifiers
|
|
8
|
-
@identifiers ||= [
|
|
9
|
-
Identifiers::BasicPublication,
|
|
10
|
-
Identifiers::Document,
|
|
11
|
-
Identifiers::ExpertReport,
|
|
12
|
-
Identifiers::Guide,
|
|
13
|
-
Identifiers::Recommendation,
|
|
14
|
-
Identifiers::SeminarReport,
|
|
15
|
-
Identifiers::Vocabulary,
|
|
16
|
-
].freeze
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def supplement_identifiers
|
|
20
|
-
@supplement_identifiers ||= [
|
|
21
|
-
Identifiers::Amendment,
|
|
22
|
-
Identifiers::Annex,
|
|
23
|
-
].freeze
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def typed_stages
|
|
27
|
-
@typed_stages ||= [].freeze
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def supplement_typed_stages
|
|
31
|
-
@supplement_typed_stages ||= [].freeze
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def locate_typed_stage_by_abbr(_abbr)
|
|
35
|
-
raise ArgumentError,
|
|
36
|
-
"OIML identifiers do not use typed stages"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def locate_identifier_klass_by_type_code(_type_code)
|
|
40
|
-
raise ArgumentError,
|
|
41
|
-
"OIML identifiers do not use type codes"
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
data/lib/pubid/plateau/scheme.rb
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
require "lutaml/model"
|
|
2
|
-
# frozen_string_literal: true
|
|
3
|
-
|
|
4
|
-
module Pubid
|
|
5
|
-
module Plateau
|
|
6
|
-
class Scheme < Lutaml::Model::Serializable
|
|
7
|
-
attribute :type, :string
|
|
8
|
-
attribute :number, :integer
|
|
9
|
-
attribute :annex, :integer, default: -> {}
|
|
10
|
-
attribute :edition, :string, default: -> {}
|
|
11
|
-
|
|
12
|
-
def to_s
|
|
13
|
-
result = "PLATEAU #{type_string} #{formatted_number}"
|
|
14
|
-
result += formatted_annex if annex
|
|
15
|
-
result += " #{formatted_edition}" if edition
|
|
16
|
-
result
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
private
|
|
20
|
-
|
|
21
|
-
def type_string
|
|
22
|
-
case type
|
|
23
|
-
when "Handbook"
|
|
24
|
-
"Handbook"
|
|
25
|
-
when "Technical Report"
|
|
26
|
-
"Technical Report"
|
|
27
|
-
else
|
|
28
|
-
type
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def formatted_number
|
|
33
|
-
"#%02d" % number
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def formatted_annex
|
|
37
|
-
"-#{annex}"
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def formatted_edition
|
|
41
|
-
"第#{edition}版"
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
data/lib/pubid/rendering/base.rb
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "publisher"
|
|
4
|
-
require_relative "numbering"
|
|
5
|
-
require_relative "date"
|
|
6
|
-
require_relative "supplement"
|
|
7
|
-
require_relative "stage"
|
|
8
|
-
require_relative "language"
|
|
9
|
-
require_relative "format"
|
|
10
|
-
|
|
11
|
-
module Pubid
|
|
12
|
-
module Rendering
|
|
13
|
-
module Base
|
|
14
|
-
include Pubid::Rendering::Publisher
|
|
15
|
-
include Pubid::Rendering::Numbering
|
|
16
|
-
include Pubid::Rendering::Date
|
|
17
|
-
include Pubid::Rendering::Supplement
|
|
18
|
-
include Pubid::Rendering::Stage
|
|
19
|
-
include Pubid::Rendering::Language
|
|
20
|
-
include Pubid::Rendering::Format
|
|
21
|
-
|
|
22
|
-
# Base rendering method to be composed by subclasses
|
|
23
|
-
# @param options [Hash] rendering options
|
|
24
|
-
# @return [String] formatted identifier string
|
|
25
|
-
def render_base(**options)
|
|
26
|
-
parts = []
|
|
27
|
-
|
|
28
|
-
# Publisher/copublisher
|
|
29
|
-
pub = maybe(:publisher)
|
|
30
|
-
if pub
|
|
31
|
-
parts << render_publisher(pub,
|
|
32
|
-
maybe(:copublishers), **options)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
# Numbering (number, part, subpart)
|
|
36
|
-
num = maybe(:number)
|
|
37
|
-
if num
|
|
38
|
-
parts << render_numbering(num, maybe(:part),
|
|
39
|
-
maybe(:subpart), **options)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
# Date
|
|
43
|
-
d = maybe(:date)
|
|
44
|
-
if d
|
|
45
|
-
parts << render_date(d, **options)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Stage and type
|
|
49
|
-
stg = maybe(:stage)
|
|
50
|
-
if stg
|
|
51
|
-
parts << render_stage(stg, maybe(:type),
|
|
52
|
-
has_copublisher: maybe(:copublishers)&.any?, **options)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
# Language codes
|
|
56
|
-
langs = maybe(:languages)
|
|
57
|
-
if langs&.any?
|
|
58
|
-
parts << render_languages(langs, **options)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
parts.compact.join
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
private
|
|
65
|
-
|
|
66
|
-
def maybe(method_name)
|
|
67
|
-
return nil unless self.class.attributes.key?(method_name)
|
|
68
|
-
|
|
69
|
-
public_send(method_name)
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|