relaton 2.2.0.pre.alpha.1 → 3.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/{docs/README.adoc → README.adoc} +109 -38
- data/lib/relaton/3gpp/bibdata.rb +9 -0
- data/lib/relaton/3gpp/bibitem.rb +9 -0
- data/lib/relaton/3gpp/bibliography.rb +48 -0
- data/lib/relaton/3gpp/data_fetcher.rb +255 -0
- data/lib/relaton/3gpp/doctype.rb +9 -0
- data/lib/relaton/3gpp/ext.rb +31 -0
- data/lib/relaton/3gpp/item.rb +12 -0
- data/lib/relaton/3gpp/item_data.rb +15 -0
- data/lib/relaton/3gpp/parser.rb +400 -0
- data/lib/relaton/3gpp/processor.rb +68 -0
- data/lib/relaton/3gpp/release.rb +34 -0
- data/lib/relaton/3gpp/util.rb +8 -0
- data/lib/relaton/3gpp.rb +25 -0
- data/lib/relaton/bib/converter/asciibib/to_asciibib.rb +663 -0
- data/lib/relaton/bib/converter/asciibib.rb +13 -0
- data/lib/relaton/bib/converter/bibtex/from_bibtex.rb +245 -0
- data/lib/relaton/bib/converter/bibtex/to_bibtex.rb +341 -0
- data/lib/relaton/bib/converter/bibtex.rb +23 -0
- data/lib/relaton/bib/converter/bibxml/from_rfcxml.rb +386 -0
- data/lib/relaton/bib/converter/bibxml/from_rfcxml_referencegroup.rb +71 -0
- data/lib/relaton/bib/converter/bibxml/to_rfcxml.rb +308 -0
- data/lib/relaton/bib/converter/bibxml/to_rfcxml_referencegroup.rb +52 -0
- data/lib/relaton/bib/converter/bibxml.rb +51 -0
- data/lib/relaton/bib/hash_parser_v1.rb +767 -0
- data/lib/relaton/bib/item_data.rb +229 -0
- data/lib/relaton/bib/model/abstract.rb +16 -0
- data/lib/relaton/bib/model/address.rb +22 -0
- data/lib/relaton/bib/model/affiliation.rb +16 -0
- data/lib/relaton/bib/model/bibdata.rb +11 -0
- data/lib/relaton/bib/model/bibdata_shared.rb +12 -0
- data/lib/relaton/bib/model/bibitem.rb +11 -0
- data/lib/relaton/bib/model/bibitem_shared.rb +12 -0
- data/lib/relaton/bib/model/contact.rb +18 -0
- data/lib/relaton/bib/model/contribution_info.rb +15 -0
- data/lib/relaton/bib/model/contributor.rb +29 -0
- data/lib/relaton/bib/model/copyright.rb +27 -0
- data/lib/relaton/bib/model/date.rb +31 -0
- data/lib/relaton/bib/model/depiction.rb +16 -0
- data/lib/relaton/bib/model/docidentifier.rb +34 -0
- data/lib/relaton/bib/model/doctype.rb +14 -0
- data/lib/relaton/bib/model/edition.rb +14 -0
- data/lib/relaton/bib/model/ext.rb +39 -0
- data/lib/relaton/bib/model/extent.rb +16 -0
- data/lib/relaton/bib/model/formattedref.rb +43 -0
- data/lib/relaton/bib/model/full_name_type.rb +64 -0
- data/lib/relaton/bib/model/fullname.rb +11 -0
- data/lib/relaton/bib/model/ics.rb +49 -0
- data/lib/relaton/bib/model/image.rb +28 -0
- data/lib/relaton/bib/model/item.rb +96 -0
- data/lib/relaton/bib/model/item_base.rb +20 -0
- data/lib/relaton/bib/model/item_shared.rb +88 -0
- data/lib/relaton/bib/model/keyword.rb +30 -0
- data/lib/relaton/bib/model/locality.rb +18 -0
- data/lib/relaton/bib/model/locality_stack.rb +14 -0
- data/lib/relaton/bib/model/localized_string.rb +48 -0
- data/lib/relaton/bib/model/localized_string_attrs.rb +24 -0
- data/lib/relaton/bib/model/logo.rb +14 -0
- data/lib/relaton/bib/model/medium.rb +22 -0
- data/lib/relaton/bib/model/note.rb +16 -0
- data/lib/relaton/bib/model/organization.rb +13 -0
- data/lib/relaton/bib/model/organization_type.rb +42 -0
- data/lib/relaton/bib/model/person.rb +36 -0
- data/lib/relaton/bib/model/phone.rb +14 -0
- data/lib/relaton/bib/model/place.rb +33 -0
- data/lib/relaton/bib/model/price.rb +14 -0
- data/lib/relaton/bib/model/relation.rb +43 -0
- data/lib/relaton/bib/model/series.rb +34 -0
- data/lib/relaton/bib/model/size.rb +23 -0
- data/lib/relaton/bib/model/source_locality_stack.rb +14 -0
- data/lib/relaton/bib/model/status.rb +27 -0
- data/lib/relaton/bib/model/structured_identifier.rb +48 -0
- data/lib/relaton/bib/model/subdivision.rb +16 -0
- data/lib/relaton/bib/model/title.rb +56 -0
- data/lib/relaton/bib/model/type/plain_date.rb +16 -0
- data/lib/relaton/bib/model/type/string_date.rb +48 -0
- data/lib/relaton/bib/model/uri.rb +18 -0
- data/lib/relaton/bib/model/validity.rb +16 -0
- data/lib/relaton/bib/model/version.rb +43 -0
- data/lib/relaton/bib/namespace_helper.rb +21 -0
- data/lib/relaton/bib/sanitizer.rb +68 -0
- data/lib/relaton/bib/util.rb +18 -0
- data/lib/relaton/bib/versions.json +35 -0
- data/lib/relaton/bib.rb +48 -0
- data/lib/relaton/bipm/bibliography.rb +82 -0
- data/lib/relaton/bipm/converter/asciibib.rb +64 -0
- data/lib/relaton/bipm/data_fetcher.rb +57 -0
- data/lib/relaton/bipm/data_outcomes_parser.rb +657 -0
- data/lib/relaton/bipm/id_parser.rb +277 -0
- data/lib/relaton/bipm/item_data.rb +47 -0
- data/lib/relaton/bipm/model/bibdata.rb +9 -0
- data/lib/relaton/bipm/model/bibitem.rb +9 -0
- data/lib/relaton/bipm/model/comment_period.rb +13 -0
- data/lib/relaton/bipm/model/doctype.rb +12 -0
- data/lib/relaton/bipm/model/ext.rb +38 -0
- data/lib/relaton/bipm/model/item.rb +11 -0
- data/lib/relaton/bipm/model/structured_identifier.rb +15 -0
- data/lib/relaton/bipm/processor.rb +69 -0
- data/lib/relaton/bipm/rawdata_bipm_metrologia/affiliations.rb +111 -0
- data/lib/relaton/bipm/rawdata_bipm_metrologia/fetcher.rb +174 -0
- data/lib/relaton/bipm/rawdata_bipm_metrologia/niso_jats_parser.rb +353 -0
- data/lib/relaton/bipm/si_brochure_parser.rb +186 -0
- data/lib/relaton/bipm/util.rb +8 -0
- data/lib/relaton/bipm.rb +32 -0
- data/lib/relaton/bsi/bibliography.rb +124 -0
- data/lib/relaton/bsi/hit.rb +14 -0
- data/lib/relaton/bsi/hit_collection.rb +114 -0
- data/lib/relaton/bsi/item_data.rb +13 -0
- data/lib/relaton/bsi/model/bibdata.rb +8 -0
- data/lib/relaton/bsi/model/bibitem.rb +8 -0
- data/lib/relaton/bsi/model/docidentifier.rb +9 -0
- data/lib/relaton/bsi/model/doctype.rb +14 -0
- data/lib/relaton/bsi/model/ext.rb +17 -0
- data/lib/relaton/bsi/model/item.rb +17 -0
- data/lib/relaton/bsi/model/item_base.rb +22 -0
- data/lib/relaton/bsi/model/relation.rb +9 -0
- data/lib/relaton/bsi/processor.rb +42 -0
- data/lib/relaton/bsi/schema.json +24882 -0
- data/lib/relaton/bsi/scraper.rb +288 -0
- data/lib/relaton/bsi/util.rb +8 -0
- data/lib/relaton/bsi.rb +25 -0
- data/lib/relaton/calconnect/bibliography.rb +95 -0
- data/lib/relaton/calconnect/data_fetcher.rb +106 -0
- data/lib/relaton/calconnect/hit.rb +14 -0
- data/lib/relaton/calconnect/hit_collection.rb +84 -0
- data/lib/relaton/calconnect/item_data.rb +12 -0
- data/lib/relaton/calconnect/model/bibdata.rb +8 -0
- data/lib/relaton/calconnect/model/bibitem.rb +8 -0
- data/lib/relaton/calconnect/model/doctype.rb +11 -0
- data/lib/relaton/calconnect/model/ext.rb +11 -0
- data/lib/relaton/calconnect/model/item.rb +13 -0
- data/lib/relaton/calconnect/processor.rb +66 -0
- data/lib/relaton/calconnect/scraper.rb +87 -0
- data/lib/relaton/calconnect/util.rb +8 -0
- data/lib/relaton/calconnect.rb +26 -0
- data/lib/relaton/ccsds/bibliography.rb +63 -0
- data/lib/relaton/ccsds/data/fetcher.rb +247 -0
- data/lib/relaton/ccsds/data/iso_references.rb +30 -0
- data/lib/relaton/ccsds/data/parser.rb +194 -0
- data/lib/relaton/ccsds/hit.rb +24 -0
- data/lib/relaton/ccsds/hit_collection.rb +42 -0
- data/lib/relaton/ccsds/item_data.rb +9 -0
- data/lib/relaton/ccsds/model/bibdata.rb +8 -0
- data/lib/relaton/ccsds/model/bibitem.rb +8 -0
- data/lib/relaton/ccsds/model/doctype.rb +9 -0
- data/lib/relaton/ccsds/model/ext.rb +19 -0
- data/lib/relaton/ccsds/model/item.rb +13 -0
- data/lib/relaton/ccsds/processor.rb +68 -0
- data/lib/relaton/ccsds/util.rb +10 -0
- data/lib/relaton/ccsds.rb +33 -0
- data/lib/relaton/cen/bibliography.rb +121 -0
- data/lib/relaton/cen/committees.yaml +66 -0
- data/lib/relaton/cen/hit.rb +16 -0
- data/lib/relaton/cen/hit_collection.rb +68 -0
- data/lib/relaton/cen/item_data.rb +7 -0
- data/lib/relaton/cen/model/bibdata.rb +8 -0
- data/lib/relaton/cen/model/bibitem.rb +8 -0
- data/lib/relaton/cen/model/docidentifier.rb +9 -0
- data/lib/relaton/cen/model/ext.rb +11 -0
- data/lib/relaton/cen/model/item.rb +14 -0
- data/lib/relaton/cen/model/structured_identifier.rb +9 -0
- data/lib/relaton/cen/processor.rb +40 -0
- data/lib/relaton/cen/scraper.rb +210 -0
- data/lib/relaton/cen/util.rb +8 -0
- data/lib/relaton/cen.rb +29 -0
- data/lib/relaton/cie/bibdata.rb +8 -0
- data/lib/relaton/cie/bibitem.rb +8 -0
- data/lib/relaton/cie/bibliography.rb +31 -0
- data/lib/relaton/cie/data_fetcher.rb +355 -0
- data/lib/relaton/cie/ext.rb +7 -0
- data/lib/relaton/cie/item.rb +11 -0
- data/lib/relaton/cie/item_data.rb +6 -0
- data/lib/relaton/cie/processor.rb +66 -0
- data/lib/relaton/cie/scrapper.rb +39 -0
- data/lib/relaton/cie/util.rb +8 -0
- data/lib/relaton/cie.rb +28 -0
- data/lib/relaton/core/array_wrapper.rb +20 -0
- data/lib/relaton/core/data_fetcher.rb +97 -0
- data/lib/relaton/core/date_parser.rb +42 -0
- data/lib/relaton/core/hash_keys_sybolizer.rb +19 -0
- data/lib/relaton/core/hit.rb +49 -0
- data/lib/relaton/core/hit_collection.rb +118 -0
- data/lib/relaton/core/processor.rb +48 -0
- data/lib/relaton/core/workers_pool.rb +45 -0
- data/lib/relaton/core.rb +9 -0
- data/lib/relaton/db/registry.rb +4 -4
- data/lib/relaton/db.rb +0 -1
- data/lib/relaton/doi/crossref.rb +72 -0
- data/lib/relaton/doi/parser.rb +827 -0
- data/lib/relaton/doi/processor.rb +65 -0
- data/lib/relaton/doi/util.rb +8 -0
- data/lib/relaton/doi.rb +20 -0
- data/lib/relaton/ecma/bibdata.rb +8 -0
- data/lib/relaton/ecma/bibitem.rb +8 -0
- data/lib/relaton/ecma/bibliography.rb +81 -0
- data/lib/relaton/ecma/data_fetcher.rb +103 -0
- data/lib/relaton/ecma/data_parser.rb +49 -0
- data/lib/relaton/ecma/edition_parser.rb +80 -0
- data/lib/relaton/ecma/ext.rb +7 -0
- data/lib/relaton/ecma/item.rb +11 -0
- data/lib/relaton/ecma/item_data.rb +6 -0
- data/lib/relaton/ecma/memento_parser.rb +60 -0
- data/lib/relaton/ecma/page_fetcher.rb +27 -0
- data/lib/relaton/ecma/parser_common.rb +33 -0
- data/lib/relaton/ecma/processor.rb +66 -0
- data/lib/relaton/ecma/standard_parser.rb +134 -0
- data/lib/relaton/ecma/util.rb +8 -0
- data/lib/relaton/ecma.rb +24 -0
- data/lib/relaton/etsi/bibdata.rb +10 -0
- data/lib/relaton/etsi/bibitem.rb +10 -0
- data/lib/relaton/etsi/bibliography.rb +46 -0
- data/lib/relaton/etsi/data_fetcher.rb +128 -0
- data/lib/relaton/etsi/data_parser.rb +208 -0
- data/lib/relaton/etsi/doctype.rb +30 -0
- data/lib/relaton/etsi/ext.rb +31 -0
- data/lib/relaton/etsi/item.rb +15 -0
- data/lib/relaton/etsi/item_data.rb +6 -0
- data/lib/relaton/etsi/processor.rb +69 -0
- data/lib/relaton/etsi/pubid.rb +37 -0
- data/lib/relaton/etsi/status.rb +13 -0
- data/lib/relaton/etsi/util.rb +8 -0
- data/lib/relaton/etsi.rb +25 -0
- data/lib/relaton/gb/bibdata.rb +8 -0
- data/lib/relaton/gb/bibitem.rb +8 -0
- data/lib/relaton/gb/bibliography.rb +145 -0
- data/lib/relaton/gb/ccs.rb +14 -0
- data/lib/relaton/gb/committee.rb +13 -0
- data/lib/relaton/gb/docidentifier.rb +23 -0
- data/lib/relaton/gb/doctype.rb +9 -0
- data/lib/relaton/gb/ext.rb +36 -0
- data/lib/relaton/gb/gb_scraper.rb +61 -0
- data/lib/relaton/gb/gb_type.rb +20 -0
- data/lib/relaton/gb/hit.rb +48 -0
- data/lib/relaton/gb/hit_collection.rb +19 -0
- data/lib/relaton/gb/item.rb +13 -0
- data/lib/relaton/gb/item_data.rb +6 -0
- data/lib/relaton/gb/processor.rb +46 -0
- data/lib/relaton/gb/project_number.rb +38 -0
- data/lib/relaton/gb/scraper.rb +204 -0
- data/lib/relaton/gb/sec_scraper.rb +92 -0
- data/lib/relaton/gb/stage_name.rb +13 -0
- data/lib/relaton/gb/structured_identifier.rb +26 -0
- data/lib/relaton/gb/t_scraper.rb +126 -0
- data/lib/relaton/gb/util.rb +8 -0
- data/lib/relaton/gb/yaml/prefixes.yaml +200 -0
- data/lib/relaton/gb.rb +33 -0
- data/lib/relaton/iana/bibdata.rb +8 -0
- data/lib/relaton/iana/bibitem.rb +8 -0
- data/lib/relaton/iana/bibliography.rb +47 -0
- data/lib/relaton/iana/data_fetcher.rb +71 -0
- data/lib/relaton/iana/item.rb +7 -0
- data/lib/relaton/iana/item_data.rb +6 -0
- data/lib/relaton/iana/parser.rb +146 -0
- data/lib/relaton/iana/processor.rb +68 -0
- data/lib/relaton/iana/util.rb +8 -0
- data/lib/relaton/iana.rb +29 -0
- data/lib/relaton/iec/bibliography.rb +283 -0
- data/lib/relaton/iec/data_fetcher.rb +216 -0
- data/lib/relaton/iec/data_parser.rb +391 -0
- data/lib/relaton/iec/hit.rb +26 -0
- data/lib/relaton/iec/hit_collection.rb +138 -0
- data/lib/relaton/iec/item_data.rb +7 -0
- data/lib/relaton/iec/model/bibdata.rb +8 -0
- data/lib/relaton/iec/model/bibitem.rb +8 -0
- data/lib/relaton/iec/model/docidentifier.rb +131 -0
- data/lib/relaton/iec/model/doctype.rb +12 -0
- data/lib/relaton/iec/model/ext.rb +53 -0
- data/lib/relaton/iec/model/item.rb +20 -0
- data/lib/relaton/iec/model/item_base.rb +12 -0
- data/lib/relaton/iec/model/relation.rb +7 -0
- data/lib/relaton/iec/model/stage_name.rb +13 -0
- data/lib/relaton/iec/processor.rb +73 -0
- data/lib/relaton/iec/statuses.yml +199 -0
- data/lib/relaton/iec/util.rb +8 -0
- data/lib/relaton/iec.rb +98 -0
- data/lib/relaton/ieee/balloting_group.rb +13 -0
- data/lib/relaton/ieee/bibdata.rb +8 -0
- data/lib/relaton/ieee/bibitem.rb +8 -0
- data/lib/relaton/ieee/bibliography.rb +51 -0
- data/lib/relaton/ieee/converter/bibxml/from_rfcxml.rb +10 -0
- data/lib/relaton/ieee/converter/bibxml/from_rfcxml_referencegroup.rb +10 -0
- data/lib/relaton/ieee/converter/bibxml.rb +20 -0
- data/lib/relaton/ieee/data_fetcher.rb +630 -0
- data/lib/relaton/ieee/doctype.rb +9 -0
- data/lib/relaton/ieee/editorial_group.rb +19 -0
- data/lib/relaton/ieee/ext.rb +36 -0
- data/lib/relaton/ieee/idams_parser.rb +323 -0
- data/lib/relaton/ieee/item.rb +11 -0
- data/lib/relaton/ieee/item_data.rb +7 -0
- data/lib/relaton/ieee/processor.rb +68 -0
- data/lib/relaton/ieee/pub_id.rb +161 -0
- data/lib/relaton/ieee/rawbib_id_parser.rb +548 -0
- data/lib/relaton/ieee/util.rb +8 -0
- data/lib/relaton/ieee.rb +29 -0
- data/lib/relaton/ietf/bibdata.rb +8 -0
- data/lib/relaton/ietf/bibitem.rb +8 -0
- data/lib/relaton/ietf/bibliography.rb +35 -0
- data/lib/relaton/ietf/bibxml_parser.rb +232 -0
- data/lib/relaton/ietf/data_fetcher.rb +278 -0
- data/lib/relaton/ietf/doctype.rb +9 -0
- data/lib/relaton/ietf/ext.rb +63 -0
- data/lib/relaton/ietf/item.rb +16 -0
- data/lib/relaton/ietf/item_base.rb +18 -0
- data/lib/relaton/ietf/item_data.rb +6 -0
- data/lib/relaton/ietf/processing_instructions.rb +79 -0
- data/lib/relaton/ietf/processor.rb +68 -0
- data/lib/relaton/ietf/relation.rb +9 -0
- data/lib/relaton/ietf/rfc/abstract.rb +19 -0
- data/lib/relaton/ietf/rfc/author.rb +21 -0
- data/lib/relaton/ietf/rfc/entry.rb +410 -0
- data/lib/relaton/ietf/rfc/entry_date.rb +21 -0
- data/lib/relaton/ietf/rfc/format.rb +19 -0
- data/lib/relaton/ietf/rfc/index.rb +46 -0
- data/lib/relaton/ietf/rfc/is_also.rb +21 -0
- data/lib/relaton/ietf/rfc/keywords.rb +19 -0
- data/lib/relaton/ietf/rfc/rfc_index_namespace.rb +11 -0
- data/lib/relaton/ietf/scraper.rb +68 -0
- data/lib/relaton/ietf/util.rb +8 -0
- data/lib/relaton/ietf/wg_name_resolver.rb +42 -0
- data/lib/relaton/ietf.rb +27 -0
- data/lib/relaton/iho/bibdata.rb +8 -0
- data/lib/relaton/iho/bibitem.rb +8 -0
- data/lib/relaton/iho/bibliography.rb +114 -0
- data/lib/relaton/iho/comment_period.rb +13 -0
- data/lib/relaton/iho/docidentifier.rb +31 -0
- data/lib/relaton/iho/doctype.rb +10 -0
- data/lib/relaton/iho/ext.rb +20 -0
- data/lib/relaton/iho/hash_parser_v1.rb +144 -0
- data/lib/relaton/iho/item.rb +20 -0
- data/lib/relaton/iho/item_base.rb +18 -0
- data/lib/relaton/iho/item_data.rb +6 -0
- data/lib/relaton/iho/processor.rb +54 -0
- data/lib/relaton/iho/relation.rb +9 -0
- data/lib/relaton/iho/structured_identifier.rb +20 -0
- data/lib/relaton/iho/util.rb +8 -0
- data/lib/relaton/iho.rb +27 -0
- data/lib/relaton/index/config.rb +52 -0
- data/lib/relaton/index/file_io.rb +305 -0
- data/lib/relaton/index/file_storage.rb +61 -0
- data/lib/relaton/index/id_number.rb +30 -0
- data/lib/relaton/index/pool.rb +41 -0
- data/lib/relaton/index/type.rb +159 -0
- data/lib/relaton/index/util.rb +18 -0
- data/lib/relaton/index.rb +60 -0
- data/lib/relaton/isbn/isbn.rb +61 -0
- data/lib/relaton/isbn/open_library.rb +43 -0
- data/lib/relaton/isbn/parser.rb +88 -0
- data/lib/relaton/isbn/processor.rb +48 -0
- data/lib/relaton/isbn/util.rb +8 -0
- data/lib/relaton/isbn.rb +19 -0
- data/lib/relaton/iso/bibliography.rb +407 -0
- data/lib/relaton/iso/data_fetcher.rb +338 -0
- data/lib/relaton/iso/data_parser.rb +444 -0
- data/lib/relaton/iso/hash_parser_v1.rb +177 -0
- data/lib/relaton/iso/hit.rb +57 -0
- data/lib/relaton/iso/hit_collection.rb +184 -0
- data/lib/relaton/iso/item_data.rb +28 -0
- data/lib/relaton/iso/model/bibdata.rb +10 -0
- data/lib/relaton/iso/model/bibitem.rb +8 -0
- data/lib/relaton/iso/model/contributor.rb +6 -0
- data/lib/relaton/iso/model/contributor_info.rb +9 -0
- data/lib/relaton/iso/model/docidentifier.rb +134 -0
- data/lib/relaton/iso/model/doctype.rb +13 -0
- data/lib/relaton/iso/model/ext.rb +35 -0
- data/lib/relaton/iso/model/item.rb +17 -0
- data/lib/relaton/iso/model/item_base.rb +22 -0
- data/lib/relaton/iso/model/organization.rb +9 -0
- data/lib/relaton/iso/model/project_number.rb +22 -0
- data/lib/relaton/iso/model/relation.rb +9 -0
- data/lib/relaton/iso/model/stagename.rb +14 -0
- data/lib/relaton/iso/model/structured_identifier.rb +31 -0
- data/lib/relaton/iso/processor.rb +84 -0
- data/lib/relaton/iso/scraper.rb +619 -0
- data/lib/relaton/iso/type/pubid.rb +50 -0
- data/lib/relaton/iso/util.rb +8 -0
- data/lib/relaton/iso.rb +30 -0
- data/lib/relaton/itu/bibliography.rb +90 -0
- data/lib/relaton/itu/data_fetcher.rb +104 -0
- data/lib/relaton/itu/data_parser_r.rb +140 -0
- data/lib/relaton/itu/hit.rb +22 -0
- data/lib/relaton/itu/hit_collection.rb +127 -0
- data/lib/relaton/itu/item_data.rb +6 -0
- data/lib/relaton/itu/model/approval_stage.rb +13 -0
- data/lib/relaton/itu/model/bibdata.rb +8 -0
- data/lib/relaton/itu/model/bibitem.rb +8 -0
- data/lib/relaton/itu/model/docidentifier.rb +9 -0
- data/lib/relaton/itu/model/doctype.rb +13 -0
- data/lib/relaton/itu/model/ext.rb +47 -0
- data/lib/relaton/itu/model/item.rb +13 -0
- data/lib/relaton/itu/model/meeting.rb +13 -0
- data/lib/relaton/itu/model/meeting_date.rb +15 -0
- data/lib/relaton/itu/model/question.rb +13 -0
- data/lib/relaton/itu/model/recommendation_status.rb +11 -0
- data/lib/relaton/itu/model/structured_identifier.rb +19 -0
- data/lib/relaton/itu/processor.rb +66 -0
- data/lib/relaton/itu/pubid.rb +177 -0
- data/lib/relaton/itu/radio_regulations_parser.rb +70 -0
- data/lib/relaton/itu/recommendation_parser.rb +161 -0
- data/lib/relaton/itu/scraper.rb +193 -0
- data/lib/relaton/itu/util.rb +8 -0
- data/lib/relaton/itu.rb +33 -0
- data/lib/relaton/jis/bibdata.rb +8 -0
- data/lib/relaton/jis/bibitem.rb +8 -0
- data/lib/relaton/jis/bibliography.rb +75 -0
- data/lib/relaton/jis/data_fetcher.rb +181 -0
- data/lib/relaton/jis/docidentifier.rb +21 -0
- data/lib/relaton/jis/doctype.rb +9 -0
- data/lib/relaton/jis/ext.rb +13 -0
- data/lib/relaton/jis/hit.rb +93 -0
- data/lib/relaton/jis/hit_collection.rb +127 -0
- data/lib/relaton/jis/item.rb +22 -0
- data/lib/relaton/jis/item_base.rb +26 -0
- data/lib/relaton/jis/item_data.rb +8 -0
- data/lib/relaton/jis/processor.rb +55 -0
- data/lib/relaton/jis/relation.rb +11 -0
- data/lib/relaton/jis/scraper.rb +232 -0
- data/lib/relaton/jis/structured_identifier.rb +13 -0
- data/lib/relaton/jis/util.rb +8 -0
- data/lib/relaton/jis.rb +33 -0
- data/lib/relaton/logger/channels/gh_issue.rb +78 -0
- data/lib/relaton/logger/config.rb +34 -0
- data/lib/relaton/logger/formatter_json.rb +8 -0
- data/lib/relaton/logger/formatter_string.rb +12 -0
- data/lib/relaton/logger/log.rb +64 -0
- data/lib/relaton/logger/log_device.rb +27 -0
- data/lib/relaton/logger/pool.rb +24 -0
- data/lib/relaton/logger.rb +18 -0
- data/lib/relaton/nist/bibdata.rb +8 -0
- data/lib/relaton/nist/bibitem.rb +8 -0
- data/lib/relaton/nist/bibliography.rb +191 -0
- data/lib/relaton/nist/comment_period.rb +15 -0
- data/lib/relaton/nist/data_fetcher.rb +84 -0
- data/lib/relaton/nist/date.rb +7 -0
- data/lib/relaton/nist/doctype.rb +7 -0
- data/lib/relaton/nist/ext.rb +16 -0
- data/lib/relaton/nist/hit.rb +18 -0
- data/lib/relaton/nist/hit_collection.rb +362 -0
- data/lib/relaton/nist/item.rb +17 -0
- data/lib/relaton/nist/item_data.rb +6 -0
- data/lib/relaton/nist/mods_parser.rb +276 -0
- data/lib/relaton/nist/processor.rb +68 -0
- data/lib/relaton/nist/pubs_export.rb +69 -0
- data/lib/relaton/nist/relation.rb +7 -0
- data/lib/relaton/nist/scraper.rb +290 -0
- data/lib/relaton/nist/series.yaml +49 -0
- data/lib/relaton/nist/util.rb +8 -0
- data/lib/relaton/nist.rb +34 -0
- data/lib/relaton/oasis/bibdata.rb +8 -0
- data/lib/relaton/oasis/bibitem.rb +8 -0
- data/lib/relaton/oasis/bibliography.rb +60 -0
- data/lib/relaton/oasis/browser_agent.rb +71 -0
- data/lib/relaton/oasis/data_fetcher.rb +94 -0
- data/lib/relaton/oasis/data_parser.rb +305 -0
- data/lib/relaton/oasis/data_parser_utils.rb +296 -0
- data/lib/relaton/oasis/data_part_parser.rb +239 -0
- data/lib/relaton/oasis/doctype.rb +7 -0
- data/lib/relaton/oasis/ext.rb +19 -0
- data/lib/relaton/oasis/item.rb +11 -0
- data/lib/relaton/oasis/item_data.rb +6 -0
- data/lib/relaton/oasis/processor.rb +68 -0
- data/lib/relaton/oasis/util.rb +8 -0
- data/lib/relaton/oasis.rb +28 -0
- data/lib/relaton/ogc/bibdata.rb +8 -0
- data/lib/relaton/ogc/bibitem.rb +8 -0
- data/lib/relaton/ogc/bibliography.rb +64 -0
- data/lib/relaton/ogc/data_fetcher.rb +110 -0
- data/lib/relaton/ogc/docidentifier.rb +6 -0
- data/lib/relaton/ogc/doctype.rb +12 -0
- data/lib/relaton/ogc/ext.rb +15 -0
- data/lib/relaton/ogc/hit.rb +18 -0
- data/lib/relaton/ogc/hit_collection.rb +36 -0
- data/lib/relaton/ogc/item.rb +13 -0
- data/lib/relaton/ogc/item_data.rb +6 -0
- data/lib/relaton/ogc/processor.rb +58 -0
- data/lib/relaton/ogc/scraper.rb +225 -0
- data/lib/relaton/ogc/util.rb +8 -0
- data/lib/relaton/ogc.rb +26 -0
- data/lib/relaton/oiml/bibdata.rb +8 -0
- data/lib/relaton/oiml/bibitem.rb +8 -0
- data/lib/relaton/oiml/bibliography.rb +94 -0
- data/lib/relaton/oiml/docidentifier.rb +33 -0
- data/lib/relaton/oiml/doctype.rb +13 -0
- data/lib/relaton/oiml/ext.rb +42 -0
- data/lib/relaton/oiml/item.rb +20 -0
- data/lib/relaton/oiml/item_base.rb +18 -0
- data/lib/relaton/oiml/item_data.rb +6 -0
- data/lib/relaton/oiml/processor.rb +54 -0
- data/lib/relaton/oiml/relation.rb +9 -0
- data/lib/relaton/oiml/util.rb +8 -0
- data/lib/relaton/oiml.rb +24 -0
- data/lib/relaton/omg/bibdata.rb +8 -0
- data/lib/relaton/omg/bibitem.rb +8 -0
- data/lib/relaton/omg/bibliography.rb +31 -0
- data/lib/relaton/omg/ext.rb +7 -0
- data/lib/relaton/omg/item.rb +8 -0
- data/lib/relaton/omg/item_data.rb +6 -0
- data/lib/relaton/omg/processor.rb +34 -0
- data/lib/relaton/omg/scraper.rb +141 -0
- data/lib/relaton/omg/util.rb +8 -0
- data/lib/relaton/omg.rb +24 -0
- data/lib/relaton/plateau/bibdata.rb +8 -0
- data/lib/relaton/plateau/bibitem.rb +8 -0
- data/lib/relaton/plateau/bibliography.rb +24 -0
- data/lib/relaton/plateau/data_fetcher.rb +153 -0
- data/lib/relaton/plateau/doctype.rb +7 -0
- data/lib/relaton/plateau/ext.rb +23 -0
- data/lib/relaton/plateau/handbook_parser.rb +95 -0
- data/lib/relaton/plateau/hit.rb +13 -0
- data/lib/relaton/plateau/hit_collection.rb +59 -0
- data/lib/relaton/plateau/item.rb +12 -0
- data/lib/relaton/plateau/item_data.rb +6 -0
- data/lib/relaton/plateau/parser.rb +101 -0
- data/lib/relaton/plateau/processor.rb +49 -0
- data/lib/relaton/plateau/technical_report_parser.rb +91 -0
- data/lib/relaton/plateau/util.rb +8 -0
- data/lib/relaton/plateau.rb +28 -0
- data/lib/relaton/un/bibdata.rb +8 -0
- data/lib/relaton/un/bibitem.rb +8 -0
- data/lib/relaton/un/bibliography.rb +48 -0
- data/lib/relaton/un/doctype.rb +10 -0
- data/lib/relaton/un/ext.rb +30 -0
- data/lib/relaton/un/hit.rb +56 -0
- data/lib/relaton/un/hit_collection.rb +61 -0
- data/lib/relaton/un/item.rb +11 -0
- data/lib/relaton/un/item_data.rb +6 -0
- data/lib/relaton/un/parser.rb +108 -0
- data/lib/relaton/un/processor.rb +38 -0
- data/lib/relaton/un/session.rb +25 -0
- data/lib/relaton/un/token_generator.rb +105 -0
- data/lib/relaton/un/util.rb +8 -0
- data/lib/relaton/un/wasm/decoder.rb +434 -0
- data/lib/relaton/un/wasm/instance.rb +101 -0
- data/lib/relaton/un/wasm/interpreter.rb +613 -0
- data/lib/relaton/un/wasm/memory.rb +112 -0
- data/lib/relaton/un/wasm/module.rb +47 -0
- data/lib/relaton/un/wasm.rb +17 -0
- data/lib/relaton/un/wasm_v_bg.wasm +0 -0
- data/lib/relaton/un.rb +28 -0
- data/lib/relaton/version.rb +1 -1
- data/lib/relaton/w3c/bibdata.rb +8 -0
- data/lib/relaton/w3c/bibitem.rb +8 -0
- data/lib/relaton/w3c/bibliography.rb +54 -0
- data/lib/relaton/w3c/data_fetcher.rb +309 -0
- data/lib/relaton/w3c/data_parser.rb +379 -0
- data/lib/relaton/w3c/doctype.rb +7 -0
- data/lib/relaton/w3c/ext.rb +11 -0
- data/lib/relaton/w3c/item.rb +12 -0
- data/lib/relaton/w3c/item_data.rb +6 -0
- data/lib/relaton/w3c/processor.rb +49 -0
- data/lib/relaton/w3c/pubid.rb +73 -0
- data/lib/relaton/w3c/safe_realize.rb +59 -0
- data/lib/relaton/w3c/util.rb +8 -0
- data/lib/relaton/w3c.rb +25 -0
- data/lib/relaton/xsf/bibdata.rb +8 -0
- data/lib/relaton/xsf/bibitem.rb +8 -0
- data/lib/relaton/xsf/bibliography.rb +24 -0
- data/lib/relaton/xsf/data_fetcher.rb +56 -0
- data/lib/relaton/xsf/hit.rb +17 -0
- data/lib/relaton/xsf/hit_collection.rb +24 -0
- data/lib/relaton/xsf/item.rb +7 -0
- data/lib/relaton/xsf/item_data.rb +6 -0
- data/lib/relaton/xsf/processor.rb +50 -0
- data/lib/relaton/xsf/util.rb +9 -0
- data/lib/relaton/xsf.rb +30 -0
- data/lib/relaton-core.rb +1 -0
- data/lib/relaton.rb +43 -0
- metadata +673 -170
- data/.github/workflows/rake.yml +0 -14
- data/.github/workflows/release.yml +0 -24
- data/.github/workflows/rubocop.yml +0 -48
- data/.gitignore +0 -12
- data/.rspec +0 -3
- data/CLAUDE.md +0 -78
- data/Gemfile +0 -29
- data/Rakefile +0 -6
- data/docs/CHANGELOG.adoc +0 -16
- data/docs/VERSIONING_POLICY.adoc +0 -38
- data/docs/navigation.adoc +0 -6
- data/lib/relaton/db/version.rb +0 -5
- data/relaton.gemspec +0 -72
- data/spec/relaton/config_spec.rb +0 -10
- data/spec/relaton/db_cache_spec.rb +0 -51
- data/spec/relaton/db_spec.rb +0 -567
- data/spec/relaton/registry_spec.rb +0 -178
- data/spec/relaton/util_spec.rb +0 -3
- data/spec/relaton_meta_spec.rb +0 -25
- data/spec/relaton_spec.rb +0 -800
- data/spec/spec_helper.rb +0 -45
- data/spec/support/gb_t_20223_2006.xml +0 -33
- data/spec/support/iso_111111119115_1.xml +0 -0
- data/spec/support/iso_19115_1.xml +0 -115
- data/spec/support/iso_19115_2.xml +0 -95
- data/spec/support/rfc_8341.xml +0 -46
- data/spec/vcr_cassetes/api_relaton_org.yml +0 -121
- data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +0 -140
- data/spec/vcr_cassetes/cc_dir_10005_2019.yml +0 -202
- data/spec/vcr_cassetes/cipm_meeting_43.yml +0 -1505
- data/spec/vcr_cassetes/gb_t_20223_2006.yml +0 -729
- data/spec/vcr_cassetes/iso_111111119115_1.yml +0 -12951
- data/spec/vcr_cassetes/iso_19115_1.yml +0 -17334
- data/spec/vcr_cassetes/iso_19115_1_2.yml +0 -322
- data/spec/vcr_cassetes/iso_19115_1_std.yml +0 -17334
- data/spec/vcr_cassetes/iso_19115_all_parts.yml +0 -185
- data/spec/vcr_cassetes/iso_19133_2005.yml +0 -144
- data/spec/vcr_cassetes/iso_combined_applied.yml +0 -318
- data/spec/vcr_cassetes/iso_combined_included.yml +0 -318
- data/spec/vcr_cassetes/ogc_19_025r1.yml +0 -374
- data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +0 -317
- data/spec/vcr_cassetes/rfc_8341.yml +0 -1278
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "addressable/uri"
|
|
4
|
+
require_relative "hit"
|
|
5
|
+
|
|
6
|
+
module Relaton
|
|
7
|
+
module Iec
|
|
8
|
+
# Page of hit collection.
|
|
9
|
+
class HitCollection < Core::HitCollection
|
|
10
|
+
def_delegators :@array, :detect, :last, :max_by, :sort_by
|
|
11
|
+
|
|
12
|
+
# @param exclude [Array<Symbol>] keys to exclude from comparison (e.g. :year, :part, :type)
|
|
13
|
+
def search(exclude: [:year])
|
|
14
|
+
@array = fetch_from_index exclude
|
|
15
|
+
self
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# @return [Relaton::Iec::ItemData, nil]
|
|
19
|
+
def to_all_parts(r_year, opts = {}) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
|
20
|
+
parts = @array.select { |h| h.part && (!r_year || h.hit[:id]&.date&.year&.to_s == r_year) }
|
|
21
|
+
if opts[:publication_date_before] || opts[:publication_date_after]
|
|
22
|
+
parts = parts.select { |h| Bibliography.send(:year_in_range?, h.hit[:id].date&.year.to_i, opts) }
|
|
23
|
+
end
|
|
24
|
+
hit = parts.min_by { |h| h.part.to_i }
|
|
25
|
+
return @array.first&.item unless hit
|
|
26
|
+
|
|
27
|
+
bibitem = hit.item
|
|
28
|
+
all_parts_item = bibitem.to_all_parts
|
|
29
|
+
others = parts.reject { |h| h.hit[:id] == hit.hit[:id] }
|
|
30
|
+
others.sort_by { |h| part_sort_key(h.hit[:id]) }.each do |hi|
|
|
31
|
+
code = hi.hit[:id].to_s
|
|
32
|
+
bib = ItemData.new(
|
|
33
|
+
formattedref: Bib::Formattedref.new(content: code),
|
|
34
|
+
docidentifier: [Docidentifier.new(content: code, type: "IEC", primary: true)],
|
|
35
|
+
)
|
|
36
|
+
all_parts_item.relation << Relation.new(type: "partOf", bibitem: bib)
|
|
37
|
+
end
|
|
38
|
+
all_parts_item
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
# Ascending sort key for part ordering, e.g. 61326-2-1 < 61326-2-6.
|
|
44
|
+
# part/subpart are pubid Code components; coerce via to_s, missing → 0.
|
|
45
|
+
def part_sort_key(pubid)
|
|
46
|
+
sub = pubid.respond_to?(:subpart) ? pubid.subpart : nil
|
|
47
|
+
[pubid.part.to_s.to_i, sub.to_s.to_i]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def index
|
|
51
|
+
@index ||= Relaton::Index.find_or_create(
|
|
52
|
+
:IEC,
|
|
53
|
+
url: "#{Hit::GHURL}#{INDEXFILE}.zip",
|
|
54
|
+
file: "#{INDEXFILE}.yaml",
|
|
55
|
+
pubid_class: ::Pubid::Iec::Identifier
|
|
56
|
+
)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# Returns array of integers for sorting compound parts like "2-1", "2-6"
|
|
60
|
+
# @param part [String, nil] part string e.g. "1", "2-1", "2-6"
|
|
61
|
+
# @return [Array<Integer>] e.g. [2, 1] for "2-1", [6] for "6"
|
|
62
|
+
def part_sort_key(part)
|
|
63
|
+
return [] unless part
|
|
64
|
+
|
|
65
|
+
part.to_s.split("-").map(&:to_i)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# Keys pubid re-emits at a default value after `from_hash` but omits on a
|
|
69
|
+
# fresh `parse` (a lutaml render_default asymmetry: a deserialized
|
|
70
|
+
# attribute loses its using_default flag, so render_default: false no
|
|
71
|
+
# longer suppresses it). Equality must ignore them so a deserialized index
|
|
72
|
+
# row compares equal to the freshly-parsed query. Values are the
|
|
73
|
+
# stringified defaults (see #stringify).
|
|
74
|
+
LEAKING_DEFAULTS = { "publisher" => "IEC", "all_parts" => "false", "database" => "false" }.freeze
|
|
75
|
+
|
|
76
|
+
# Map a flat exclude symbol to the lean to_hash key it removes (at every
|
|
77
|
+
# nesting level). :type removes the polymorphic `_type` discriminator.
|
|
78
|
+
EXCLUDE_KEYS = { year: "year", part: "part", subpart: "subpart", type: "_type" }.freeze
|
|
79
|
+
|
|
80
|
+
# Compare pubids for matching, excluding specified fields.
|
|
81
|
+
# @param row_pubid [Pubid::Iec::Identifier] pubid from index row
|
|
82
|
+
# @return [Boolean]
|
|
83
|
+
def pubid_matches?(row_pubid, exclude)
|
|
84
|
+
return false unless row_pubid
|
|
85
|
+
|
|
86
|
+
canonical_id(@ref, exclude) == canonical_id(row_pubid, exclude)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Build-path-independent comparison key: the lean `to_hash` with keys and
|
|
90
|
+
# scalars stringified, leaking defaults dropped, and excluded fields
|
|
91
|
+
# removed at every nesting level. More robust than comparing attribute
|
|
92
|
+
# objects, whose derived `type`/`stage` differ between a parsed identifier
|
|
93
|
+
# (component object) and a deserialized one (nil/symbol) — at the top level
|
|
94
|
+
# and inside `base_identifier`.
|
|
95
|
+
def canonical_id(pubid, exclude)
|
|
96
|
+
drop = exclude.filter_map { |e| EXCLUDE_KEYS[e] }
|
|
97
|
+
prune(stringify(pubid.to_hash), drop)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
# Stringify hash keys and scalar values so comparison ignores YAML scalar
|
|
101
|
+
# typing (1 vs "1") and string/symbol key differences.
|
|
102
|
+
def stringify(value)
|
|
103
|
+
case value
|
|
104
|
+
when Hash then value.to_h { |k, v| [k.to_s, stringify(v)] }
|
|
105
|
+
when Array then value.map { |v| stringify(v) }
|
|
106
|
+
when nil then nil
|
|
107
|
+
else value.to_s
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
# Recursively drop nil values, leaking defaults, and excluded keys.
|
|
112
|
+
def prune(value, drop)
|
|
113
|
+
case value
|
|
114
|
+
when Hash
|
|
115
|
+
value.each_with_object({}) do |(k, v), h|
|
|
116
|
+
next if v.nil? || drop.include?(k) || LEAKING_DEFAULTS[k] == v
|
|
117
|
+
|
|
118
|
+
h[k] = prune(v, drop)
|
|
119
|
+
end
|
|
120
|
+
when Array then value.map { |v| prune(v, drop) }
|
|
121
|
+
else value
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def fetch_from_index(exclude) # rubocop:disable Metrics/MethodLength
|
|
126
|
+
return [] unless @ref
|
|
127
|
+
|
|
128
|
+
index.search(@ref) do |row|
|
|
129
|
+
pubid_matches?(row[:id], exclude)
|
|
130
|
+
end.sort_by do |row|
|
|
131
|
+
[row[:id].date&.year.to_i, *part_sort_key(row[:id].part)]
|
|
132
|
+
end.map do |row|
|
|
133
|
+
Hit.new(row, self)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Iec
|
|
3
|
+
class Docidentifier < Bib::Docidentifier
|
|
4
|
+
attribute :content, :string
|
|
5
|
+
|
|
6
|
+
attr_reader :pubid
|
|
7
|
+
|
|
8
|
+
def initialize(arg = nil, **kwargs)
|
|
9
|
+
arg.is_a?(Hash) ? super(arg) : super(**kwargs)
|
|
10
|
+
raw = arg.is_a?(Hash) ? (arg["content"] || arg[:content]) : kwargs[:content]
|
|
11
|
+
self.content = raw if raw
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
alias_method :original_content=, :content=
|
|
15
|
+
alias_method :original_content, :content
|
|
16
|
+
|
|
17
|
+
def content=(value)
|
|
18
|
+
@pubid = nil
|
|
19
|
+
@raw_content = nil
|
|
20
|
+
|
|
21
|
+
parsed =
|
|
22
|
+
case value
|
|
23
|
+
when ::Pubid::Iec::Identifier then value
|
|
24
|
+
when String
|
|
25
|
+
begin
|
|
26
|
+
::Pubid::Iec::Identifier.parse(value)
|
|
27
|
+
rescue StandardError
|
|
28
|
+
Util.warn "Failed to parse Pubid: #{value}"
|
|
29
|
+
nil
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
if parsed
|
|
34
|
+
@pubid = parsed
|
|
35
|
+
elsif value.is_a?(String)
|
|
36
|
+
@raw_content = value
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
send(:original_content=, to_s)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def content
|
|
43
|
+
return @raw_content if @raw_content
|
|
44
|
+
return render_pubid(@pubid) if @pubid
|
|
45
|
+
|
|
46
|
+
original_content
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def to_s
|
|
50
|
+
content.to_s
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def to_all_parts!
|
|
54
|
+
return unless @pubid
|
|
55
|
+
|
|
56
|
+
remove_part!
|
|
57
|
+
remove_date!
|
|
58
|
+
remove_stage!
|
|
59
|
+
@pubid.all_parts = true if @pubid.respond_to?(:all_parts=)
|
|
60
|
+
refresh_content!
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def remove_stage!
|
|
64
|
+
remove_attr!(:stage)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def remove_part!
|
|
68
|
+
remove_attr!(:part)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def remove_date!
|
|
72
|
+
remove_attr!(:date)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
private
|
|
76
|
+
|
|
77
|
+
def render_pubid(pubid)
|
|
78
|
+
case type
|
|
79
|
+
# pubid owns the legacy positional IEC URN format (and the all-parts
|
|
80
|
+
# ":::ser" series form); render through it.
|
|
81
|
+
when "URN" then pubid.to_urn.to_s
|
|
82
|
+
else pubid.to_s
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def remove_attr!(attr)
|
|
87
|
+
return unless @pubid
|
|
88
|
+
|
|
89
|
+
# For supplements (Amendment/Corrigendum, which carry their own
|
|
90
|
+
# date/version as an addition to the base), preserve the
|
|
91
|
+
# supplement's own attrs and only clear the base chain — e.g.
|
|
92
|
+
# "IEC 60027-1:1992/AMD1:1997" should drop the base year but keep
|
|
93
|
+
# the amendment year. For wrappers (VapIdentifier, ConsolidatedIdentifier),
|
|
94
|
+
# clear the outer attr too — they re-state the base year and need it
|
|
95
|
+
# gone everywhere.
|
|
96
|
+
unless @pubid.is_a?(::Pubid::Iec::SupplementIdentifier)
|
|
97
|
+
clear_attr_on(@pubid, attr)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
node = @pubid.base_identifier
|
|
101
|
+
while node
|
|
102
|
+
clear_attr_on(node, attr)
|
|
103
|
+
# ConsolidatedIdentifier carries a sibling collection of bundled
|
|
104
|
+
# identifiers; clear the attr on each non-supplement entry too.
|
|
105
|
+
if node.respond_to?(:identifiers) && node.identifiers
|
|
106
|
+
node.identifiers.each do |id|
|
|
107
|
+
next if id.is_a?(::Pubid::Iec::SupplementIdentifier)
|
|
108
|
+
|
|
109
|
+
clear_attr_on(id, attr)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
node = node.base_identifier
|
|
113
|
+
end
|
|
114
|
+
refresh_content!
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Clear one attribute on a single pubid; for :part also clear the
|
|
118
|
+
# paired :subpart (pubid 2.x splits "16-1-1" into part="1" + subpart="1").
|
|
119
|
+
def clear_attr_on(pubid, attr)
|
|
120
|
+
pubid.send("#{attr}=", nil) if pubid.respond_to?("#{attr}=")
|
|
121
|
+
return unless attr == :part && pubid.respond_to?(:subpart=)
|
|
122
|
+
|
|
123
|
+
pubid.subpart = nil
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def refresh_content!
|
|
127
|
+
send(:original_content=, to_s)
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Iec
|
|
3
|
+
class Doctype < Bib::Doctype
|
|
4
|
+
TYPES = %w[
|
|
5
|
+
international-standard technical-specification technical-report publicly-available-specification
|
|
6
|
+
international-workshop-agreement guide industry-technical-agreement system-reference-deliverable
|
|
7
|
+
].freeze
|
|
8
|
+
|
|
9
|
+
attribute :content, :string, values: TYPES
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require_relative "doctype"
|
|
2
|
+
require_relative "stage_name"
|
|
3
|
+
|
|
4
|
+
module Relaton
|
|
5
|
+
module Iec
|
|
6
|
+
class Ext < Bib::Ext
|
|
7
|
+
attribute :doctype, Doctype
|
|
8
|
+
attribute :subdoctype, :string, values: %w[specification method-of-test vocabulary code-of-practice]
|
|
9
|
+
attribute :structuredidentifier, Iso::StructuredIdentifier
|
|
10
|
+
attribute :horizontal, :boolean
|
|
11
|
+
attribute :stagename, StageName
|
|
12
|
+
attribute :updates_document_type, :string, values: Doctype::TYPES
|
|
13
|
+
attribute :fast_track, :boolean
|
|
14
|
+
attribute :price_code, :string
|
|
15
|
+
attribute :function, :string, values: %w[emc safety environment quality-assurance]
|
|
16
|
+
attribute :accessibility_color_inside, :boolean
|
|
17
|
+
attribute :cen_processing, :boolean
|
|
18
|
+
attribute :secretary, :string
|
|
19
|
+
attribute :interest_to_committees, :string
|
|
20
|
+
attribute :tc_sc_officers_note, :string, raw: true
|
|
21
|
+
|
|
22
|
+
xml do
|
|
23
|
+
map_element "horizontal", to: :horizontal
|
|
24
|
+
map_element "stagename", to: :stagename
|
|
25
|
+
map_element "updates-document-type", to: :updates_document_type
|
|
26
|
+
map_element "fast-track", to: :fast_track
|
|
27
|
+
map_element "price-code", to: :price_code
|
|
28
|
+
map_element "function", to: :function
|
|
29
|
+
map_element "accessibility-color-inside", to: :accessibility_color_inside
|
|
30
|
+
map_element "cen-processing", to: :cen_processing
|
|
31
|
+
map_element "secretary", to: :secretary
|
|
32
|
+
map_element "interest-to-committees", to: :interest_to_committees
|
|
33
|
+
map_element "tc-sc-officers-note", to: :tc_sc_officers_note
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
key_value do
|
|
37
|
+
map_element "horizontal", to: :horizontal
|
|
38
|
+
map_element "stagename", to: :stagename
|
|
39
|
+
map_element "updates_document_type", to: :updates_document_type
|
|
40
|
+
map_element "fast_track", to: :fast_track
|
|
41
|
+
map_element "price_code", to: :price_code
|
|
42
|
+
map_element "function", to: :function
|
|
43
|
+
map_element "accessibility_color_inside", to: :accessibility_color_inside
|
|
44
|
+
map_element "cen_processing", to: :cen_processing
|
|
45
|
+
map_element "secretary", to: :secretary
|
|
46
|
+
map_element "interest_to_committees", to: :interest_to_committees
|
|
47
|
+
map_element "tc_sc_officers_note", to: :tc_sc_officers_note
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def get_schema_version = Relaton.schema_versions["relaton-model-iec"]
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require_relative "docidentifier"
|
|
2
|
+
require_relative "ext"
|
|
3
|
+
|
|
4
|
+
module Relaton
|
|
5
|
+
module Iec
|
|
6
|
+
class Relation < Bib::Relation
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
class Item < Iso::Item
|
|
10
|
+
model ItemData
|
|
11
|
+
|
|
12
|
+
attribute :docidentifier, Docidentifier, collection: true, initialize_empty: true
|
|
13
|
+
attribute :relation, Relation, collection: true, initialize_empty: true
|
|
14
|
+
attribute :ext, Ext
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
require_relative "item_base"
|
|
20
|
+
require_relative "relation"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require_relative "docidentifier"
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Iec
|
|
5
|
+
class ItemBase < Iso::ItemBase
|
|
6
|
+
model ItemData
|
|
7
|
+
|
|
8
|
+
attribute :docidentifier, Docidentifier, collection: true, initialize_empty: true
|
|
9
|
+
attribute :relation, Relation, collection: true, initialize_empty: true
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Iec
|
|
3
|
+
class StageName < Lutaml::Model::Serializable
|
|
4
|
+
attribute :abbreviation, :string
|
|
5
|
+
attribute :content, :string
|
|
6
|
+
|
|
7
|
+
xml do
|
|
8
|
+
map_attribute "abbreviation", to: :abbreviation
|
|
9
|
+
map_content to: :content
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require "relaton/core/processor"
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Iec
|
|
5
|
+
class Processor < Core::Processor
|
|
6
|
+
def initialize
|
|
7
|
+
@short = :relaton_iec
|
|
8
|
+
@prefix = "IEC"
|
|
9
|
+
@defaultprefix = %r{^(IEC\s|CISPR\s|IEV($|\s))}
|
|
10
|
+
@idtype = "IEC"
|
|
11
|
+
@datasets = %w[iec-harmonized-all iec-harmonized-latest]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
# @param code [String]
|
|
15
|
+
# @param date [String, nil] year
|
|
16
|
+
# @param opts [Hash]
|
|
17
|
+
# @return [Relaton::Iec::ItemData, nil]
|
|
18
|
+
def get(code, date, opts)
|
|
19
|
+
require_relative "../iec"
|
|
20
|
+
Bibliography.get(code, date, opts)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# Fetch all the documents from a source
|
|
25
|
+
#
|
|
26
|
+
# @param [String] source source name (iec-harmonized-all, iec-harmonized-latest)
|
|
27
|
+
# @param [Hash] opts
|
|
28
|
+
# @option opts [String] :output directory to output documents
|
|
29
|
+
# @option opts [String] :format output format (xml, yaml, bibxml)
|
|
30
|
+
#
|
|
31
|
+
def fetch_data(source, opts)
|
|
32
|
+
require_relative "data_fetcher"
|
|
33
|
+
DataFetcher.fetch(source, **opts)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @param xml [String]
|
|
37
|
+
# @return [Relaton::Iec::ItemData]
|
|
38
|
+
def from_xml(xml)
|
|
39
|
+
require_relative "../iec"
|
|
40
|
+
Item.from_xml xml
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @param yaml [String]
|
|
44
|
+
# @return [Relaton::Iec::ItemData]
|
|
45
|
+
def from_yaml(yaml)
|
|
46
|
+
require_relative "../iec"
|
|
47
|
+
Item.from_yaml yaml
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Returns hash of XML grammar
|
|
51
|
+
# @return [String]
|
|
52
|
+
def grammar_hash
|
|
53
|
+
require_relative "../iec"
|
|
54
|
+
@grammar_hash ||= ::Relaton::Iec.grammar_hash
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# @param code [String]
|
|
58
|
+
# @return [String, nil]
|
|
59
|
+
def urn_to_code(code)
|
|
60
|
+
require_relative "../iec"
|
|
61
|
+
Relaton::Iec.urn_to_code code
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
#
|
|
65
|
+
# Remove index file
|
|
66
|
+
#
|
|
67
|
+
def remove_index_file
|
|
68
|
+
require_relative "../iec"
|
|
69
|
+
Relaton::Index.find_or_create(:iec, url: true, file: "#{INDEXFILE}.yaml").remove_file
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
ACD:
|
|
2
|
+
status: Approved for CD
|
|
3
|
+
stage: '20.99'
|
|
4
|
+
ACDV:
|
|
5
|
+
status: Approved for CDV
|
|
6
|
+
stage: '30.99'
|
|
7
|
+
ADISSB:
|
|
8
|
+
status: Preparation of text subcontracted to CO
|
|
9
|
+
stage: '40.95'
|
|
10
|
+
ADTR:
|
|
11
|
+
status: Approved for DTR
|
|
12
|
+
stage: '40.99'
|
|
13
|
+
ADTS:
|
|
14
|
+
status: Approved for DTS
|
|
15
|
+
stage: '40.99'
|
|
16
|
+
AFDIS:
|
|
17
|
+
status: Approved for FDIS
|
|
18
|
+
stage: '40.99'
|
|
19
|
+
AMW:
|
|
20
|
+
status: Document under revision
|
|
21
|
+
stage: '92.20'
|
|
22
|
+
ANW:
|
|
23
|
+
status: Registration of new project
|
|
24
|
+
stage: '20.00'
|
|
25
|
+
APUB:
|
|
26
|
+
status: Approved for publication
|
|
27
|
+
stage: '50.99'
|
|
28
|
+
APUBSB:
|
|
29
|
+
status: Preparation of text subcontracted to CO
|
|
30
|
+
stage: '50.95'
|
|
31
|
+
BPUB:
|
|
32
|
+
status: Being published
|
|
33
|
+
stage: '60.00'
|
|
34
|
+
BWG:
|
|
35
|
+
status: Return to drafting phase or redefine project
|
|
36
|
+
stage: '30.92'
|
|
37
|
+
CAN:
|
|
38
|
+
status: Draft cancelled
|
|
39
|
+
stage: '20.98'
|
|
40
|
+
CCDV:
|
|
41
|
+
status: Draft circulated as CDV
|
|
42
|
+
stage: '40.00'
|
|
43
|
+
CD:
|
|
44
|
+
status: Draft circulated as CD
|
|
45
|
+
stage: '30.00'
|
|
46
|
+
CDISH:
|
|
47
|
+
status: Draft circulated as DISH
|
|
48
|
+
stage: '50.20'
|
|
49
|
+
CDM:
|
|
50
|
+
status: CD to be discussed at meeting
|
|
51
|
+
stage: '30.20'
|
|
52
|
+
CDPAS:
|
|
53
|
+
status: Draft circulated as DPAS
|
|
54
|
+
stage: '50.20'
|
|
55
|
+
CDTR:
|
|
56
|
+
status: Draft circulated as DTR
|
|
57
|
+
stage: '50.20'
|
|
58
|
+
CDTS:
|
|
59
|
+
status: Draft circulated as DTS
|
|
60
|
+
stage: '50.20'
|
|
61
|
+
CDVM:
|
|
62
|
+
status: Rejected CDV to be discussed at a meeting
|
|
63
|
+
stage: '40.93'
|
|
64
|
+
CFDIS:
|
|
65
|
+
status: Draft circulated as FDIS
|
|
66
|
+
stage: '50.20'
|
|
67
|
+
DECDISH:
|
|
68
|
+
status: DISH at editing check
|
|
69
|
+
stage: '40.99'
|
|
70
|
+
DECFDIS:
|
|
71
|
+
status: FDIS at editing check
|
|
72
|
+
stage: '50.60'
|
|
73
|
+
DECPUB:
|
|
74
|
+
status: Publication at editing check
|
|
75
|
+
stage: '60.00'
|
|
76
|
+
DEL:
|
|
77
|
+
status: Deleted/abandoned
|
|
78
|
+
stage: '00.99'
|
|
79
|
+
DELPUB:
|
|
80
|
+
status: Deleted publication
|
|
81
|
+
stage: '90.99'
|
|
82
|
+
DREJ:
|
|
83
|
+
status: Abandon
|
|
84
|
+
stage: '30.98'
|
|
85
|
+
DTRM:
|
|
86
|
+
status: Rejected DTR to be discussed at meeting
|
|
87
|
+
stage: '50.92'
|
|
88
|
+
DTSM:
|
|
89
|
+
status: Rejected DTS to be discussed at meeting
|
|
90
|
+
stage: '50.92'
|
|
91
|
+
MERGED:
|
|
92
|
+
status: Fragment merged
|
|
93
|
+
stage: '30.97'
|
|
94
|
+
NADIS:
|
|
95
|
+
status: Repeat enquiry
|
|
96
|
+
stage: '40.93'
|
|
97
|
+
NCDV:
|
|
98
|
+
status: CDV rejected
|
|
99
|
+
stage: '40.98'
|
|
100
|
+
NDTR:
|
|
101
|
+
status: DTR rejected
|
|
102
|
+
stage: '50.98'
|
|
103
|
+
NDTS:
|
|
104
|
+
status: DTS rejected
|
|
105
|
+
stage: '50.98'
|
|
106
|
+
NFDIS:
|
|
107
|
+
status: FDIS rejected
|
|
108
|
+
stage: '50.98'
|
|
109
|
+
PCC:
|
|
110
|
+
status: Preparation of CC
|
|
111
|
+
stage: '30.92'
|
|
112
|
+
PNW:
|
|
113
|
+
status: New work item proposal
|
|
114
|
+
stage: '10.00'
|
|
115
|
+
PPUB:
|
|
116
|
+
status: Publication issued
|
|
117
|
+
stage: '60.60'
|
|
118
|
+
PRVC:
|
|
119
|
+
status: Preparation of RVC
|
|
120
|
+
stage: '40.92'
|
|
121
|
+
PRVD:
|
|
122
|
+
status: Preparation of RVD
|
|
123
|
+
stage: '40.92'
|
|
124
|
+
PRVDISH:
|
|
125
|
+
status: Preparation of RVDISH
|
|
126
|
+
stage: '40.92' # ?
|
|
127
|
+
PRVDPAS:
|
|
128
|
+
status: Preparation of RVDPAS
|
|
129
|
+
stage: '40.92'
|
|
130
|
+
PRVDTR:
|
|
131
|
+
status: Preparation of RVDTR
|
|
132
|
+
stage: '40.92'
|
|
133
|
+
PRVDTS:
|
|
134
|
+
status: Preparation of RVDTS
|
|
135
|
+
stage: '40.92'
|
|
136
|
+
PRVN:
|
|
137
|
+
status: Preparation of RVN
|
|
138
|
+
stage: '40.92'
|
|
139
|
+
PWI:
|
|
140
|
+
status: Preliminary work item
|
|
141
|
+
stage: '00.00'
|
|
142
|
+
RDIS:
|
|
143
|
+
status: Registration for formal approval
|
|
144
|
+
stage: '50.00'
|
|
145
|
+
RDISH:
|
|
146
|
+
status: DISH received and registered
|
|
147
|
+
stage: '50.00'
|
|
148
|
+
RFDIS:
|
|
149
|
+
status: FDIS received and registered
|
|
150
|
+
stage: '50.00'
|
|
151
|
+
RPUB:
|
|
152
|
+
status: Publication received and registered
|
|
153
|
+
stage: '60.60'
|
|
154
|
+
SPE:
|
|
155
|
+
stage: SPE # ?
|
|
156
|
+
SPLIT:
|
|
157
|
+
status: Project Fragmented
|
|
158
|
+
stage: SPLIT # ?
|
|
159
|
+
SRP:
|
|
160
|
+
stage: SRP
|
|
161
|
+
SUSPENDED:
|
|
162
|
+
status: Project Suspended
|
|
163
|
+
stage: SUSPENDED # ?
|
|
164
|
+
TCDV:
|
|
165
|
+
status: Translation of CDV
|
|
166
|
+
stage: '50.00'
|
|
167
|
+
TDISH:
|
|
168
|
+
status: Translation of DISH
|
|
169
|
+
stage: '50.00' # ?
|
|
170
|
+
TDTR:
|
|
171
|
+
status: Translation of DTR
|
|
172
|
+
stage: '50.00'
|
|
173
|
+
TDTS:
|
|
174
|
+
status: Translation of DTS
|
|
175
|
+
stage: '50.00'
|
|
176
|
+
TFDIS:
|
|
177
|
+
status: Translation of FDIS
|
|
178
|
+
stage: '50.00'
|
|
179
|
+
TPUB:
|
|
180
|
+
status: Translation of publication
|
|
181
|
+
stage: '60.00'
|
|
182
|
+
WPUB:
|
|
183
|
+
status: Publication withdrawn
|
|
184
|
+
stage: '95.99'
|
|
185
|
+
preCD:
|
|
186
|
+
status: Preparation of CD document
|
|
187
|
+
stage: preCD
|
|
188
|
+
preCDPAS:
|
|
189
|
+
status: Preparation of DPAS
|
|
190
|
+
stage: preCDPAS
|
|
191
|
+
preDISH:
|
|
192
|
+
status: Preparation of DISH
|
|
193
|
+
stage: preDISH
|
|
194
|
+
preDTR:
|
|
195
|
+
status: Preparation of DTR document
|
|
196
|
+
stage: preDTR
|
|
197
|
+
prePNW:
|
|
198
|
+
status: Preparation of NP document
|
|
199
|
+
stage: prePNW
|