relaton 2.2.0.pre.alpha.1 → 3.0.0.pre.alpha.2
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} +165 -38
- data/bin/console +0 -1
- data/lib/relaton/3gpp/bibdata.rb +9 -0
- data/lib/relaton/3gpp/bibitem.rb +9 -0
- data/lib/relaton/3gpp/bibliography.rb +123 -0
- data/lib/relaton/3gpp/data_fetcher.rb +303 -0
- data/lib/relaton/3gpp/docidentifier.rb +114 -0
- data/lib/relaton/3gpp/doctype.rb +9 -0
- data/lib/relaton/3gpp/ext.rb +31 -0
- data/lib/relaton/3gpp/item.rb +18 -0
- data/lib/relaton/3gpp/item_data.rb +15 -0
- data/lib/relaton/3gpp/parser.rb +400 -0
- data/lib/relaton/3gpp/processor.rb +71 -0
- data/lib/relaton/3gpp/release.rb +34 -0
- data/lib/relaton/3gpp/util.rb +8 -0
- data/lib/relaton/3gpp.rb +29 -0
- data/lib/relaton/adobe/bibdata.rb +8 -0
- data/lib/relaton/adobe/bibitem.rb +8 -0
- data/lib/relaton/adobe/bibliography.rb +92 -0
- data/lib/relaton/adobe/docidentifier.rb +49 -0
- data/lib/relaton/adobe/doctype.rb +14 -0
- data/lib/relaton/adobe/ext.rb +32 -0
- data/lib/relaton/adobe/item.rb +15 -0
- data/lib/relaton/adobe/item_base.rb +18 -0
- data/lib/relaton/adobe/item_data.rb +6 -0
- data/lib/relaton/adobe/processor.rb +45 -0
- data/lib/relaton/adobe/util.rb +8 -0
- data/lib/relaton/adobe.rb +37 -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 +49 -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 +49 -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 +264 -0
- data/lib/relaton/bib/util.rb +18 -0
- data/lib/relaton/bib/versions.json +35 -0
- data/lib/relaton/bib.rb +46 -0
- data/lib/relaton/bipm/bibliography.rb +231 -0
- data/lib/relaton/bipm/converter/asciibib.rb +64 -0
- data/lib/relaton/bipm/data_fetcher.rb +81 -0
- data/lib/relaton/bipm/data_outcomes_parser.rb +656 -0
- data/lib/relaton/bipm/id_parser.rb +278 -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 +36 -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 +172 -0
- data/lib/relaton/bipm/rawdata_bipm_metrologia/niso_jats_parser.rb +353 -0
- data/lib/relaton/bipm/si_brochure_parser.rb +188 -0
- data/lib/relaton/bipm/util.rb +8 -0
- data/lib/relaton/bipm.rb +38 -0
- data/lib/relaton/bsi/bibliography.rb +196 -0
- data/lib/relaton/bsi/hit.rb +28 -0
- data/lib/relaton/bsi/hit_collection.rb +113 -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 +107 -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 +43 -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 +93 -0
- data/lib/relaton/calconnect/data_fetcher.rb +174 -0
- data/lib/relaton/calconnect/docidentifier.rb +80 -0
- data/lib/relaton/calconnect/hit.rb +14 -0
- data/lib/relaton/calconnect/hit_collection.rb +92 -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 +20 -0
- data/lib/relaton/calconnect/processor.rb +72 -0
- data/lib/relaton/calconnect/scraper.rb +87 -0
- data/lib/relaton/calconnect/util.rb +8 -0
- data/lib/relaton/calconnect.rb +36 -0
- data/lib/relaton/ccsds/bibliography.rb +63 -0
- data/lib/relaton/ccsds/data/fetcher.rb +252 -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 +47 -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/docidentifier.rb +121 -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 +15 -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 +149 -0
- data/lib/relaton/cen/committees.yaml +66 -0
- data/lib/relaton/cen/hit.rb +31 -0
- data/lib/relaton/cen/hit_collection.rb +116 -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 +100 -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 +45 -0
- data/lib/relaton/cen/scraper.rb +218 -0
- data/lib/relaton/cen/util.rb +8 -0
- data/lib/relaton/cen.rb +30 -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 +540 -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 +68 -0
- data/lib/relaton/cie/scrapper.rb +52 -0
- data/lib/relaton/cie/util.rb +8 -0
- data/lib/relaton/cie.rb +29 -0
- data/lib/relaton/core/array_wrapper.rb +20 -0
- data/lib/relaton/core/data_fetcher.rb +244 -0
- data/lib/relaton/core/date_parser.rb +42 -0
- data/lib/relaton/core/governor.rb +320 -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/pacer.rb +134 -0
- data/lib/relaton/core/processor.rb +67 -0
- data/lib/relaton/core/request_error.rb +14 -0
- data/lib/relaton/core/workers_pool.rb +45 -0
- data/lib/relaton/core.rb +12 -0
- data/lib/relaton/db/registry.rb +44 -4
- data/lib/relaton/db.rb +0 -1
- data/lib/relaton/doi/crossref.rb +89 -0
- data/lib/relaton/doi/parser.rb +921 -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/easc/bibdata.rb +8 -0
- data/lib/relaton/easc/bibitem.rb +8 -0
- data/lib/relaton/easc/bibliography.rb +95 -0
- data/lib/relaton/easc/docidentifier.rb +100 -0
- data/lib/relaton/easc/doctype.rb +14 -0
- data/lib/relaton/easc/ext.rb +44 -0
- data/lib/relaton/easc/item.rb +13 -0
- data/lib/relaton/easc/item_base.rb +18 -0
- data/lib/relaton/easc/item_data.rb +6 -0
- data/lib/relaton/easc/processor.rb +46 -0
- data/lib/relaton/easc/util.rb +8 -0
- data/lib/relaton/easc.rb +35 -0
- data/lib/relaton/ecma/bibdata.rb +8 -0
- data/lib/relaton/ecma/bibitem.rb +8 -0
- data/lib/relaton/ecma/bibliography.rb +149 -0
- data/lib/relaton/ecma/data_fetcher.rb +162 -0
- data/lib/relaton/ecma/data_parser.rb +49 -0
- data/lib/relaton/ecma/docidentifier.rb +124 -0
- data/lib/relaton/ecma/edition_parser.rb +80 -0
- data/lib/relaton/ecma/ext.rb +7 -0
- data/lib/relaton/ecma/item.rb +13 -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 +39 -0
- data/lib/relaton/ecma/parser_common.rb +33 -0
- data/lib/relaton/ecma/processor.rb +69 -0
- data/lib/relaton/ecma/standard_parser.rb +134 -0
- data/lib/relaton/ecma/util.rb +8 -0
- data/lib/relaton/ecma.rb +33 -0
- data/lib/relaton/etsi/bibdata.rb +10 -0
- data/lib/relaton/etsi/bibitem.rb +10 -0
- data/lib/relaton/etsi/bibliography.rb +111 -0
- data/lib/relaton/etsi/data_fetcher.rb +167 -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 +71 -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 +26 -0
- data/lib/relaton/gb/bibdata.rb +8 -0
- data/lib/relaton/gb/bibitem.rb +8 -0
- data/lib/relaton/gb/bibliography.rb +171 -0
- data/lib/relaton/gb/ccs.rb +14 -0
- data/lib/relaton/gb/committee.rb +13 -0
- data/lib/relaton/gb/docidentifier.rb +72 -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 +49 -0
- data/lib/relaton/gb/project_number.rb +38 -0
- data/lib/relaton/gb/scraper.rb +221 -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/gost/bibdata.rb +8 -0
- data/lib/relaton/gost/bibitem.rb +8 -0
- data/lib/relaton/gost/bibliography.rb +107 -0
- data/lib/relaton/gost/docidentifier.rb +80 -0
- data/lib/relaton/gost/doctype.rb +16 -0
- data/lib/relaton/gost/ext.rb +46 -0
- data/lib/relaton/gost/item.rb +15 -0
- data/lib/relaton/gost/item_base.rb +18 -0
- data/lib/relaton/gost/item_data.rb +6 -0
- data/lib/relaton/gost/processor.rb +49 -0
- data/lib/relaton/gost/util.rb +8 -0
- data/lib/relaton/gost.rb +36 -0
- data/lib/relaton/iala/bibdata.rb +8 -0
- data/lib/relaton/iala/bibitem.rb +8 -0
- data/lib/relaton/iala/bibliography.rb +146 -0
- data/lib/relaton/iala/docidentifier.rb +89 -0
- data/lib/relaton/iala/doctype.rb +18 -0
- data/lib/relaton/iala/ext.rb +32 -0
- data/lib/relaton/iala/item.rb +21 -0
- data/lib/relaton/iala/item_base.rb +18 -0
- data/lib/relaton/iala/item_data.rb +6 -0
- data/lib/relaton/iala/processor.rb +43 -0
- data/lib/relaton/iala/relation.rb +7 -0
- data/lib/relaton/iala/util.rb +8 -0
- data/lib/relaton/iala.rb +35 -0
- data/lib/relaton/iana/bibdata.rb +8 -0
- data/lib/relaton/iana/bibitem.rb +8 -0
- data/lib/relaton/iana/bibliography.rb +100 -0
- data/lib/relaton/iana/data_fetcher.rb +101 -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 +70 -0
- data/lib/relaton/iana/util.rb +8 -0
- data/lib/relaton/iana.rb +40 -0
- data/lib/relaton/iec/bibliography.rb +283 -0
- data/lib/relaton/iec/data_fetcher.rb +222 -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 +135 -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 +74 -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 +73 -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 +771 -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 +330 -0
- data/lib/relaton/ieee/item.rb +11 -0
- data/lib/relaton/ieee/item_data.rb +7 -0
- data/lib/relaton/ieee/processor.rb +71 -0
- data/lib/relaton/ieee/rawbib_id_parser.rb +753 -0
- data/lib/relaton/ieee/util.rb +8 -0
- data/lib/relaton/ieee.rb +30 -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 +561 -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 +72 -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 +446 -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 +101 -0
- data/lib/relaton/ietf/util.rb +8 -0
- data/lib/relaton/ietf/wg_name_resolver.rb +42 -0
- data/lib/relaton/ietf.rb +30 -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 +66 -0
- data/lib/relaton/index/pool.rb +46 -0
- data/lib/relaton/index/shard_source.rb +201 -0
- data/lib/relaton/index/type.rb +210 -0
- data/lib/relaton/index/util.rb +18 -0
- data/lib/relaton/index.rb +61 -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 +412 -0
- data/lib/relaton/iso/data_fetcher.rb +338 -0
- data/lib/relaton/iso/data_parser.rb +458 -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 +196 -0
- data/lib/relaton/iso/item_data.rb +50 -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 +146 -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 +85 -0
- data/lib/relaton/iso/scraper.rb +635 -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 +95 -0
- data/lib/relaton/itu/data_crawler_r.rb +664 -0
- data/lib/relaton/itu/data_fetcher.rb +550 -0
- data/lib/relaton/itu/data_merge_r.rb +149 -0
- data/lib/relaton/itu/data_parser_r.rb +214 -0
- data/lib/relaton/itu/data_parser_t.rb +228 -0
- data/lib/relaton/itu/family_cache.rb +177 -0
- data/lib/relaton/itu/governor.rb +56 -0
- data/lib/relaton/itu/hit.rb +28 -0
- data/lib/relaton/itu/hit_collection.rb +299 -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 +75 -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 +38 -0
- data/lib/relaton/itu/processor.rb +72 -0
- data/lib/relaton/itu/pubid.rb +199 -0
- data/lib/relaton/itu/radio_regulations_parser.rb +70 -0
- data/lib/relaton/itu/recommendation_fields.rb +334 -0
- data/lib/relaton/itu/recommendation_parser.rb +30 -0
- data/lib/relaton/itu/scraper.rb +203 -0
- data/lib/relaton/itu/util.rb +8 -0
- data/lib/relaton/itu.rb +34 -0
- data/lib/relaton/jcgm/bibdata.rb +8 -0
- data/lib/relaton/jcgm/bibitem.rb +8 -0
- data/lib/relaton/jcgm/bibliography.rb +97 -0
- data/lib/relaton/jcgm/data_fetcher.rb +81 -0
- data/lib/relaton/jcgm/docidentifier.rb +102 -0
- data/lib/relaton/jcgm/doctype.rb +12 -0
- data/lib/relaton/jcgm/ext.rb +23 -0
- data/lib/relaton/jcgm/item.rb +20 -0
- data/lib/relaton/jcgm/item_base.rb +18 -0
- data/lib/relaton/jcgm/item_data.rb +6 -0
- data/lib/relaton/jcgm/meetings_parser.rb +175 -0
- data/lib/relaton/jcgm/processor.rb +71 -0
- data/lib/relaton/jcgm/relation.rb +9 -0
- data/lib/relaton/jcgm/structured_identifier.rb +40 -0
- data/lib/relaton/jcgm/util.rb +8 -0
- data/lib/relaton/jcgm.rb +24 -0
- data/lib/relaton/jis/bibdata.rb +8 -0
- data/lib/relaton/jis/bibitem.rb +8 -0
- data/lib/relaton/jis/bibliography.rb +73 -0
- data/lib/relaton/jis/data_fetcher.rb +183 -0
- data/lib/relaton/jis/docidentifier.rb +120 -0
- data/lib/relaton/jis/doctype.rb +9 -0
- data/lib/relaton/jis/ext.rb +13 -0
- data/lib/relaton/jis/hit.rb +88 -0
- data/lib/relaton/jis/hit_collection.rb +128 -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 +32 -0
- data/lib/relaton/logger/channels/gh_issue.rb +143 -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 +134 -0
- data/lib/relaton/nist/date.rb +7 -0
- data/lib/relaton/nist/docidentifier.rb +165 -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 +19 -0
- data/lib/relaton/nist/item_base.rb +16 -0
- data/lib/relaton/nist/item_data.rb +6 -0
- data/lib/relaton/nist/mods_parser.rb +302 -0
- data/lib/relaton/nist/processor.rb +69 -0
- data/lib/relaton/nist/pubs_export.rb +69 -0
- data/lib/relaton/nist/relation.rb +10 -0
- data/lib/relaton/nist/scraper.rb +293 -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 +201 -0
- data/lib/relaton/oasis/browser_agent.rb +71 -0
- data/lib/relaton/oasis/data_fetcher.rb +130 -0
- data/lib/relaton/oasis/data_parser.rb +305 -0
- data/lib/relaton/oasis/data_parser_utils.rb +330 -0
- data/lib/relaton/oasis/data_part_parser.rb +239 -0
- data/lib/relaton/oasis/docidentifier.rb +54 -0
- data/lib/relaton/oasis/doctype.rb +7 -0
- data/lib/relaton/oasis/ext.rb +19 -0
- data/lib/relaton/oasis/item.rb +14 -0
- data/lib/relaton/oasis/item_data.rb +6 -0
- data/lib/relaton/oasis/processor.rb +74 -0
- data/lib/relaton/oasis/util.rb +8 -0
- data/lib/relaton/oasis.rb +41 -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 +131 -0
- data/lib/relaton/ogc/docidentifier.rb +111 -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 +111 -0
- data/lib/relaton/ogc/item.rb +13 -0
- data/lib/relaton/ogc/item_data.rb +6 -0
- data/lib/relaton/ogc/processor.rb +59 -0
- data/lib/relaton/ogc/scraper.rb +225 -0
- data/lib/relaton/ogc/util.rb +8 -0
- data/lib/relaton/ogc.rb +30 -0
- data/lib/relaton/oiml/bibdata.rb +8 -0
- data/lib/relaton/oiml/bibitem.rb +8 -0
- data/lib/relaton/oiml/bibliography.rb +169 -0
- data/lib/relaton/oiml/docidentifier.rb +48 -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/docidentifier.rb +67 -0
- data/lib/relaton/omg/ext.rb +7 -0
- data/lib/relaton/omg/item.rb +9 -0
- data/lib/relaton/omg/item_data.rb +6 -0
- data/lib/relaton/omg/processor.rb +35 -0
- data/lib/relaton/omg/scraper.rb +186 -0
- data/lib/relaton/omg/util.rb +8 -0
- data/lib/relaton/omg.rb +25 -0
- data/lib/relaton/plateau/bibdata.rb +8 -0
- data/lib/relaton/plateau/bibitem.rb +8 -0
- data/lib/relaton/plateau/bibliography.rb +31 -0
- data/lib/relaton/plateau/data_fetcher.rb +176 -0
- data/lib/relaton/plateau/doctype.rb +7 -0
- data/lib/relaton/plateau/ext.rb +23 -0
- data/lib/relaton/plateau/handbook_parser.rb +102 -0
- data/lib/relaton/plateau/hit.rb +21 -0
- data/lib/relaton/plateau/hit_collection.rb +79 -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 +51 -0
- data/lib/relaton/plateau/technical_report_parser.rb +98 -0
- data/lib/relaton/plateau/util.rb +8 -0
- data/lib/relaton/plateau.rb +29 -0
- data/lib/relaton/sdo/config.rb +34 -0
- data/lib/relaton/sdo/fetcher.rb +52 -0
- data/lib/relaton/sdo/logo.rb +95 -0
- data/lib/relaton/sdo/name.rb +26 -0
- data/lib/relaton/sdo/organization.rb +71 -0
- data/lib/relaton/sdo/store.rb +49 -0
- data/lib/relaton/sdo.rb +29 -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 +174 -0
- data/lib/relaton/w3c/data_fetcher.rb +487 -0
- data/lib/relaton/w3c/data_parser.rb +379 -0
- data/lib/relaton/w3c/docidentifier.rb +48 -0
- data/lib/relaton/w3c/doctype.rb +7 -0
- data/lib/relaton/w3c/ext.rb +11 -0
- data/lib/relaton/w3c/governor.rb +32 -0
- data/lib/relaton/w3c/item.rb +15 -0
- data/lib/relaton/w3c/item_data.rb +6 -0
- data/lib/relaton/w3c/processor.rb +49 -0
- data/lib/relaton/w3c/pubid.rb +85 -0
- data/lib/relaton/w3c/safe_realize.rb +148 -0
- data/lib/relaton/w3c/util.rb +8 -0
- data/lib/relaton/w3c.rb +36 -0
- data/lib/relaton/xsf/bibdata.rb +8 -0
- data/lib/relaton/xsf/bibitem.rb +8 -0
- data/lib/relaton/xsf/bibliography.rb +84 -0
- data/lib/relaton/xsf/data_fetcher.rb +106 -0
- data/lib/relaton/xsf/docidentifier.rb +46 -0
- data/lib/relaton/xsf/hit.rb +17 -0
- data/lib/relaton/xsf/hit_collection.rb +52 -0
- data/lib/relaton/xsf/item.rb +13 -0
- data/lib/relaton/xsf/item_data.rb +6 -0
- data/lib/relaton/xsf/processor.rb +51 -0
- data/lib/relaton/xsf/util.rb +9 -0
- data/lib/relaton/xsf.rb +34 -0
- data/lib/relaton-core.rb +1 -0
- data/lib/relaton.rb +85 -0
- metadata +775 -161
- 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,30 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Etsi
|
|
3
|
+
class Doctype < Bib::Doctype
|
|
4
|
+
DOCTYPES = {
|
|
5
|
+
"EN" => "European Standard",
|
|
6
|
+
"ES" => "ETSI Standard",
|
|
7
|
+
"EG" => "ETSI Guide",
|
|
8
|
+
"TS" => "Technical Specification",
|
|
9
|
+
"GS" => "Group Specification",
|
|
10
|
+
"GR" => "Group Report",
|
|
11
|
+
"TR" => "Technical Report",
|
|
12
|
+
"ETR" => "ETSI Technical Report",
|
|
13
|
+
"GTS" => "GSM Technical Specification",
|
|
14
|
+
"SR" => "Special Report",
|
|
15
|
+
"TCRTR" => "Technical Committee Reference Technical Report",
|
|
16
|
+
"TBR" => "Technical Basis for Regulation",
|
|
17
|
+
"ETS" => "European Telecommunication Standard",
|
|
18
|
+
"I-ETS" => "Interim European Telecommunication Standard",
|
|
19
|
+
"NET" => "Norme Européenne de Télécommunication",
|
|
20
|
+
}.freeze
|
|
21
|
+
|
|
22
|
+
attribute :abbreviation, :string, values: DOCTYPES.keys
|
|
23
|
+
attribute :content, :string, values: DOCTYPES.values
|
|
24
|
+
|
|
25
|
+
def self.create_from_abbreviation(abbreviation)
|
|
26
|
+
new(content: DOCTYPES[abbreviation], abbreviation: abbreviation)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require_relative "doctype"
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Etsi
|
|
5
|
+
class Ext < Bib::Ext
|
|
6
|
+
attribute :doctype, Doctype
|
|
7
|
+
attribute :marker, :string, values: %w[Current Superseded]
|
|
8
|
+
attribute :frequency, :string, collection: true
|
|
9
|
+
attribute :mandate, :string, collection: true
|
|
10
|
+
attribute :custom_collection, :string, values: %W[
|
|
11
|
+
HSs\scited\sin\sOJ HSs\snot\syet\scited\sin\sOJ HSs\sRED\scited\sin\sOJ HSs\sEMC\scited\sin\sOJ
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
xml do
|
|
15
|
+
map_element "marker", to: :marker
|
|
16
|
+
map_element "frequency", to: :frequency
|
|
17
|
+
map_element "mandate", to: :mandate
|
|
18
|
+
map_element "custom-collection", to: :custom_collection
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
key_value do
|
|
22
|
+
map_element "marker", to: :marker
|
|
23
|
+
map_element "frequency", to: :frequency
|
|
24
|
+
map_element "mandate", to: :mandate
|
|
25
|
+
map_element "custom_collection", to: :custom_collection
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def get_schema_version = Relaton.schema_versions["relaton-model-etsi"]
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require "relaton/bib"
|
|
2
|
+
require_relative "item_data"
|
|
3
|
+
require_relative "ext"
|
|
4
|
+
require_relative "status"
|
|
5
|
+
|
|
6
|
+
module Relaton
|
|
7
|
+
module Etsi
|
|
8
|
+
class Item < Bib::Item
|
|
9
|
+
model ItemData
|
|
10
|
+
|
|
11
|
+
attribute :ext, Ext
|
|
12
|
+
attribute :status, Status
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require "relaton/core/processor"
|
|
2
|
+
|
|
3
|
+
module Relaton
|
|
4
|
+
module Etsi
|
|
5
|
+
class Processor < Relaton::Core::Processor
|
|
6
|
+
attr_reader :idtype
|
|
7
|
+
|
|
8
|
+
def initialize # rubocop:disable Lint/MissingSuper
|
|
9
|
+
@short = :relaton_etsi
|
|
10
|
+
@prefix = "ETSI"
|
|
11
|
+
@defaultprefix = %r{^ETSI\s}
|
|
12
|
+
@idtype = "ETSI"
|
|
13
|
+
@datasets = %w[etsi-csv]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @param code [String]
|
|
17
|
+
# @param date [String, nil] year
|
|
18
|
+
# @param opts [Hash]
|
|
19
|
+
# @return [Relaton::Etsi::Item]
|
|
20
|
+
def get(code, date, opts)
|
|
21
|
+
require_relative "../etsi"
|
|
22
|
+
Bibliography.get(code, date, opts)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
#
|
|
26
|
+
# Fetch all the documents from https://www.etsi.org
|
|
27
|
+
#
|
|
28
|
+
# @param [String] _source source name
|
|
29
|
+
# @param [Hash] opts
|
|
30
|
+
# @option opts [String] :output directory to output documents
|
|
31
|
+
# @option opts [String] :format output format (xml, yaml, bibxml)
|
|
32
|
+
#
|
|
33
|
+
def fetch_data(_source, opts)
|
|
34
|
+
require_relative "data_fetcher"
|
|
35
|
+
DataFetcher.fetch(**opts)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# @param xml [String]
|
|
39
|
+
# @return [Relaton::Etsi::Item]
|
|
40
|
+
def from_xml(xml)
|
|
41
|
+
require_relative "../etsi"
|
|
42
|
+
Item.from_xml xml
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @param yaml [String]
|
|
46
|
+
# @return [Relaton::Etsi::Item]
|
|
47
|
+
def from_yaml(yaml)
|
|
48
|
+
require_relative "../etsi"
|
|
49
|
+
Item.from_yaml yaml
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Returns hash of XML grammar
|
|
53
|
+
# @return [String]
|
|
54
|
+
def grammar_hash
|
|
55
|
+
require "digest/md5" # not loaded by etsi.rb; needed on the cold path
|
|
56
|
+
require "relaton/version"
|
|
57
|
+
Digest::MD5.hexdigest Relaton::VERSION
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
#
|
|
61
|
+
# Remove index file
|
|
62
|
+
#
|
|
63
|
+
def remove_index_file
|
|
64
|
+
require_relative "../etsi"
|
|
65
|
+
Relaton::Index.find_or_create(
|
|
66
|
+
:etsi, url: true, file: "#{INDEXFILE}.yaml"
|
|
67
|
+
).remove_file
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Etsi
|
|
3
|
+
class PubId
|
|
4
|
+
class Parser
|
|
5
|
+
def initialize(id)
|
|
6
|
+
@strscan = StringScanner.new id
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def parse
|
|
10
|
+
@strscan.scan(/^ETSI\s+/)
|
|
11
|
+
type = @strscan.scan(/\S+/)
|
|
12
|
+
@strscan.scan(/\s+/)
|
|
13
|
+
docnumber = @strscan.scan_until(/(?=\s(V\d+\.\d+\.\d+)|ed\.\d+)/)
|
|
14
|
+
version = @strscan.scan(/\d+\.\d+\.\d+/) if @strscan.scan(/\sV(?=\d+\.\d+\.\d+)/)
|
|
15
|
+
edition = @strscan.scan(/\d+/) if @strscan.scan(/\sed\.(?=\d+)/)
|
|
16
|
+
date = @strscan.scan(/\d{4}-\d{2}/) if @strscan.scan(/\s\(/)
|
|
17
|
+
|
|
18
|
+
{ type: type, docnumber: docnumber, version: version, edition: edition, date: date }
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
attr_accessor :type, :docnumber, :version, :edition, :date
|
|
23
|
+
|
|
24
|
+
def initialize(type:, docnumber:, version:, edition:, date:)
|
|
25
|
+
@type = type
|
|
26
|
+
@docnumber = docnumber
|
|
27
|
+
@version = version
|
|
28
|
+
@edition = edition
|
|
29
|
+
@date = date
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.parse(id)
|
|
33
|
+
new(**Parser.new(id).parse)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Etsi
|
|
3
|
+
class Status < Lutaml::Model::Serializable
|
|
4
|
+
attribute :stage, :string, values: %W[
|
|
5
|
+
EN\sapproval SG\sapproval ES\sapproval Published Withdrawn Historical
|
|
6
|
+
]
|
|
7
|
+
|
|
8
|
+
xml do
|
|
9
|
+
map_element "stage", to: :stage
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
data/lib/relaton/etsi.rb
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "net/http"
|
|
4
|
+
require "mechanize"
|
|
5
|
+
require "pubid"
|
|
6
|
+
require "relaton/index"
|
|
7
|
+
require_relative "version"
|
|
8
|
+
# require_relative "relaton_etsi/pubid"
|
|
9
|
+
require_relative "etsi/bibitem"
|
|
10
|
+
require_relative "etsi/bibdata"
|
|
11
|
+
require_relative "etsi/util"
|
|
12
|
+
require_relative "etsi/bibliography"
|
|
13
|
+
|
|
14
|
+
module Relaton
|
|
15
|
+
module Etsi
|
|
16
|
+
INDEXFILE = "index-v2".freeze
|
|
17
|
+
|
|
18
|
+
# Returns hash of gem versions used to generate data model.
|
|
19
|
+
# @return [String]
|
|
20
|
+
def grammar_hash
|
|
21
|
+
Digest::MD5.hexdigest Relaton::VERSION
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
extend self
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative "hit_collection"
|
|
4
|
+
|
|
5
|
+
# GB bib module.
|
|
6
|
+
module Relaton
|
|
7
|
+
module Gb
|
|
8
|
+
# GB entry point class.
|
|
9
|
+
class Bibliography
|
|
10
|
+
class << self
|
|
11
|
+
# rubocop:disable Metrics/MethodLength
|
|
12
|
+
# @param text [Strin] code of standard for search
|
|
13
|
+
# @return [RelatonGb::HitCollection]
|
|
14
|
+
def search(text)
|
|
15
|
+
case text
|
|
16
|
+
when /^(GB|GJ|GS)/
|
|
17
|
+
# Scrape national standards.
|
|
18
|
+
Util.info "Fetching from openstd.samr.gov.cn ...", key: text
|
|
19
|
+
require_relative "gb_scraper"
|
|
20
|
+
GbScraper.scrape_page text
|
|
21
|
+
# when /^ZB/
|
|
22
|
+
# Scrape proffesional.
|
|
23
|
+
# when /^DB/
|
|
24
|
+
# Scrape local standard.
|
|
25
|
+
# when %r{^Q/}
|
|
26
|
+
# Enterprise standard
|
|
27
|
+
when %r{^T/[^\s]{2,6}\s}
|
|
28
|
+
# Scrape social standard.
|
|
29
|
+
Util.info "Fetching from www.ttbz.org.cn ...", key: text
|
|
30
|
+
require_relative "t_scraper"
|
|
31
|
+
TScraper.scrape_page text
|
|
32
|
+
else
|
|
33
|
+
# Scrape sector standard.
|
|
34
|
+
require "relaton/gb/sec_scraper"
|
|
35
|
+
SecScraper.scrape_page text
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
# rubocop:enable Metrics/MethodLength
|
|
39
|
+
|
|
40
|
+
# @param code [String] the GB standard Code to look up (e..g "GB/T 20223")
|
|
41
|
+
# @param year [String] the year the standard was published (optional)
|
|
42
|
+
# @param opts [Hash] options; restricted to :all_parts if all-parts reference is required
|
|
43
|
+
# @return [Relaton::Gb::ItemData, nil]
|
|
44
|
+
# @raise [Pubid::Errors::ParseError] when the code is not a GB
|
|
45
|
+
# identifier
|
|
46
|
+
def get(code, year = nil, opts = {})
|
|
47
|
+
require "pubid"
|
|
48
|
+
pubid = ::Pubid::Gb::Identifier.parse(code)
|
|
49
|
+
year = (year || pubid.year)&.to_s
|
|
50
|
+
pubid = pubid.exclude(:year)
|
|
51
|
+
pubid.part = "1" if opts[:all_parts]
|
|
52
|
+
ret = get1(pubid, year, opts)
|
|
53
|
+
return nil if ret.nil?
|
|
54
|
+
|
|
55
|
+
ret = ret.to_most_recent_reference unless year
|
|
56
|
+
ret = ret.to_all_parts if opts[:all_parts]
|
|
57
|
+
ret
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
private
|
|
61
|
+
|
|
62
|
+
# @param pubid [Pubid::Gb::Identifier] the reference without a year
|
|
63
|
+
def fetch_ref_err(pubid, year, missed_years) # rubocop:disable Metrics/MethodLength
|
|
64
|
+
unless missed_years.empty?
|
|
65
|
+
Util.info "(There was no match for `#{year}`, though there " \
|
|
66
|
+
"were matches found for `#{missed_years.join('`, `')}`.)"
|
|
67
|
+
end
|
|
68
|
+
if pubid.part
|
|
69
|
+
Util.info "The provided document part may not exist, or " \
|
|
70
|
+
"the document may no longer be published in parts."
|
|
71
|
+
else
|
|
72
|
+
Util.info "If you wanted to cite all document parts for the " \
|
|
73
|
+
"reference, use `#{pubid} (all parts)`.\nIf the document " \
|
|
74
|
+
"is not a standard, use its document type abbreviation " \
|
|
75
|
+
"(TS, TR, PAS, Guide)."
|
|
76
|
+
end
|
|
77
|
+
nil
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# @param pubid [Pubid::Gb::Identifier] the reference without a year
|
|
81
|
+
# @param year [String, nil]
|
|
82
|
+
def get1(pubid, year, _opts)
|
|
83
|
+
# search must include year whenever available
|
|
84
|
+
query = with_year(pubid, year)
|
|
85
|
+
searchcode = query.to_s
|
|
86
|
+
result = search_filter(query) || return
|
|
87
|
+
ret = results_filter(result, year)
|
|
88
|
+
if ret[:ret]
|
|
89
|
+
Util.info "Found: `#{ret[:ret].docidentifier.first.content}`", key: searchcode
|
|
90
|
+
ret[:ret]
|
|
91
|
+
else
|
|
92
|
+
Util.info "Not found.", key: searchcode
|
|
93
|
+
fetch_ref_err(pubid, year, ret[:years])
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
# @param pubid [Pubid::Gb::Identifier]
|
|
98
|
+
# @param year [String, nil]
|
|
99
|
+
# @return [Pubid::Gb::Identifier] a copy of pubid that carries the year
|
|
100
|
+
def with_year(pubid, year)
|
|
101
|
+
return pubid unless year
|
|
102
|
+
|
|
103
|
+
dated = pubid.exclude
|
|
104
|
+
dated.date = ::Pubid::Components::Date.new(year: year)
|
|
105
|
+
dated
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Keeps the hits that name the queried document. A query with no year
|
|
109
|
+
# matches every year. A query with no part matches only the part-less
|
|
110
|
+
# document: in GB, `GB/T 20223` and `GB/T 20223.1` are two documents.
|
|
111
|
+
#
|
|
112
|
+
# @param query [Pubid::Gb::Identifier]
|
|
113
|
+
# @return [Relaton::Gb::HitCollection, nil]
|
|
114
|
+
def search_filter(query)
|
|
115
|
+
ignore = query.year ? [] : %i[year]
|
|
116
|
+
result = search(query.to_s)
|
|
117
|
+
result&.select! do |hit|
|
|
118
|
+
hit_pubid = parse_docref(hit.docref)
|
|
119
|
+
hit_pubid && query.matches?(hit_pubid, ignore: ignore)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
# A portal docref is data, so a value pubid cannot read is nil and
|
|
124
|
+
# drops the hit.
|
|
125
|
+
#
|
|
126
|
+
# @param docref [String, nil]
|
|
127
|
+
# @return [Pubid::Gb::Identifier, nil]
|
|
128
|
+
def parse_docref(docref)
|
|
129
|
+
::Pubid::Gb::Identifier.parse(docref) if docref
|
|
130
|
+
rescue StandardError
|
|
131
|
+
nil
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# Sort through the results from Isobib, fetching them three at a time,
|
|
135
|
+
# and return the first result that matches the code,
|
|
136
|
+
# matches the year (if provided), and which # has a title (amendments do
|
|
137
|
+
# not).
|
|
138
|
+
# Only expects the first page of results to be populated.
|
|
139
|
+
# Does not match corrigenda etc (e.g. ISO 3166-1:2006/Cor 1:2007)
|
|
140
|
+
# If no match, returns any years which caused mismatch, for error
|
|
141
|
+
# reporting
|
|
142
|
+
def results_filter(result, year) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength
|
|
143
|
+
missed_years = []
|
|
144
|
+
result.each_slice(3) do |s| # ISO website only allows 3 connections
|
|
145
|
+
fetch_pages(s, 3).each do |r|
|
|
146
|
+
return { ret: r } if !year
|
|
147
|
+
|
|
148
|
+
r.date.select { |d| d.type == "published" }.each do |d|
|
|
149
|
+
return { ret: r } if year.to_i == d.at.to_date.year
|
|
150
|
+
|
|
151
|
+
missed_years << d.on(:year)
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
{ years: missed_years }
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
# @param hits [RelatonBib::HitCollection<RelatonBib::Hit>]
|
|
159
|
+
# @param threads [Integer]
|
|
160
|
+
# @return [Array<RelatonBib::GbBibliographicItem>]
|
|
161
|
+
def fetch_pages(hits, threads)
|
|
162
|
+
workers = Core::WorkersPool.new threads
|
|
163
|
+
workers.worker { |w| { i: w[:i], hit: w[:hit].item } }
|
|
164
|
+
hits.each_with_index { |hit, i| workers << { i: i, hit: hit } }
|
|
165
|
+
workers.end
|
|
166
|
+
workers.result.sort_by { |x| x[:i] }.map { |x| x[:hit] }
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Gb
|
|
3
|
+
class Committee < Lutaml::Model::Serializable
|
|
4
|
+
attribute :type, :string, values: %w[technical provisional drafting]
|
|
5
|
+
attribute :content, :string
|
|
6
|
+
|
|
7
|
+
xml do
|
|
8
|
+
map_attribute "type", to: :type
|
|
9
|
+
map_content to: :content
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Gb
|
|
3
|
+
# A Chinese Standard identifier backed by `Pubid::Gb`.
|
|
4
|
+
#
|
|
5
|
+
# `content` stays a plain string, so serialization is unchanged; the parsed
|
|
6
|
+
# identifier lives beside it in `@pubid` and drives the three mutators.
|
|
7
|
+
# Follows the IALA, CEN and OMG shape (`lib/relaton/iala/docidentifier.rb`,
|
|
8
|
+
# `lib/relaton/cen/model/docidentifier.rb`).
|
|
9
|
+
class Docidentifier < Bib::Docidentifier
|
|
10
|
+
# @return [Pubid::Gb::Identifier, nil] nil when the content is not a GB
|
|
11
|
+
# identifier, or the grammar cannot read it
|
|
12
|
+
attr_reader :pubid
|
|
13
|
+
|
|
14
|
+
# Capture the inherited (LocalizedMarkedUpString) content setter before
|
|
15
|
+
# overriding #content=, so #replace_pubid writes the re-rendered string
|
|
16
|
+
# back WITHOUT re-parsing it and discarding the mutation.
|
|
17
|
+
alias_method :store_content, :content=
|
|
18
|
+
|
|
19
|
+
def content=(value)
|
|
20
|
+
super
|
|
21
|
+
return unless value
|
|
22
|
+
|
|
23
|
+
@pubid = begin
|
|
24
|
+
# `pubid` is required lazily because deserialization reaches this
|
|
25
|
+
# class without the flavor entry file having been loaded. LoadError
|
|
26
|
+
# degrades to a plain string; StandardError covers a value that is
|
|
27
|
+
# not a GB identifier. Both are DATA and must not raise. A malformed
|
|
28
|
+
# *query* raises — see Bibliography.get.
|
|
29
|
+
require "pubid"
|
|
30
|
+
::Pubid::Gb::Identifier.parse(value)
|
|
31
|
+
rescue LoadError, StandardError
|
|
32
|
+
nil
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def remove_part!
|
|
37
|
+
return unless @pubid
|
|
38
|
+
|
|
39
|
+
replace_pubid @pubid.exclude(:part)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def remove_date!
|
|
43
|
+
return unless @pubid
|
|
44
|
+
|
|
45
|
+
replace_pubid @pubid.exclude(:year)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Strips the part and the date, then wraps the identifier in pubid's
|
|
49
|
+
# `AllParts`. `Pubid::Gb::Identifiers::AllParts` renders the
|
|
50
|
+
# ` (all parts)` marker itself and parses the form back, so — unlike CEN
|
|
51
|
+
# and BSI, whose renderers have no marker — `content` is the wrapper's
|
|
52
|
+
# own string (`GB/T 5606 (all parts)`, which
|
|
53
|
+
# `spec/gb/fixtures/gbt_5606_2004_all_parts.xml` asserts).
|
|
54
|
+
#
|
|
55
|
+
# The guard keeps a second call from doubling the marker.
|
|
56
|
+
def to_all_parts!
|
|
57
|
+
return if !@pubid || @pubid.all_parts?
|
|
58
|
+
|
|
59
|
+
replace_pubid @pubid.exclude(:part, :year).to_all_parts
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
private
|
|
63
|
+
|
|
64
|
+
# `Pubid#exclude` returns a COPY, so the new identifier replaces the old
|
|
65
|
+
# one.
|
|
66
|
+
def replace_pubid(new_pubid)
|
|
67
|
+
@pubid = new_pubid
|
|
68
|
+
store_content @pubid.to_s
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require_relative "doctype"
|
|
2
|
+
require_relative "committee"
|
|
3
|
+
require_relative "structured_identifier"
|
|
4
|
+
require_relative "stage_name"
|
|
5
|
+
require_relative "gb_type"
|
|
6
|
+
require_relative "ccs"
|
|
7
|
+
|
|
8
|
+
module Relaton
|
|
9
|
+
module Gb
|
|
10
|
+
class Ext < Bib::Ext
|
|
11
|
+
attribute :doctype, Doctype
|
|
12
|
+
attribute :subdoctype, :string, values: %w[specification method-of-test vocabulary code-of-practice]
|
|
13
|
+
attribute :structuredidentifier, StructuredIdentifier
|
|
14
|
+
attribute :stagename, StageName
|
|
15
|
+
attribute :gbtype, GbType
|
|
16
|
+
attribute :ccs, CCS, collection: true
|
|
17
|
+
attribute :plannumber, :string
|
|
18
|
+
|
|
19
|
+
xml do
|
|
20
|
+
map_element "stagename", to: :stagename
|
|
21
|
+
map_element "gbtype", to: :gbtype
|
|
22
|
+
map_element "ccs", to: :ccs
|
|
23
|
+
map_element "plannumber", to: :plannumber
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
key_value do
|
|
27
|
+
map_element "stagename", to: :stagename
|
|
28
|
+
map_element "gbtype", to: :gbtype
|
|
29
|
+
map_element "ccs", to: :ccs
|
|
30
|
+
map_element "plannumber", to: :plannumber
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def get_schema_version = Relaton.schema_versions["relaton-model-gb"]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
require "nokogiri"
|
|
5
|
+
require_relative "scraper"
|
|
6
|
+
|
|
7
|
+
module Relaton
|
|
8
|
+
module Gb
|
|
9
|
+
# National standard scraper.
|
|
10
|
+
module GbScraper
|
|
11
|
+
extend Scraper
|
|
12
|
+
SEARCH_URL = "https://openstd.samr.gov.cn/bzgk/gb/std_list"
|
|
13
|
+
DOC_URL = "http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno="
|
|
14
|
+
|
|
15
|
+
class << self
|
|
16
|
+
# @param text [Strin] code of standard for serarch
|
|
17
|
+
# @return [RelatonGb::HitCollection]
|
|
18
|
+
def scrape_page(text) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
|
19
|
+
doc = agent.get("#{SEARCH_URL}?p.p2=#{CGI.escape(text)}")
|
|
20
|
+
hits = doc.xpath(
|
|
21
|
+
"//table[contains(@class, 'result_list')]/tbody[2]/tr",
|
|
22
|
+
).map do |h|
|
|
23
|
+
ref = h.at "./td[2]/a"
|
|
24
|
+
pid = ref[:onclick].match(/[0-9A-F]+/).to_s
|
|
25
|
+
status = h.at("./td[7]").text.strip
|
|
26
|
+
rdate = h.at("./td[8]").text.strip
|
|
27
|
+
Hit.new pid: pid, docref: ref.text, scraper: self,
|
|
28
|
+
release_date: rdate, status: status
|
|
29
|
+
end
|
|
30
|
+
HitCollection.new hits.sort_by(&:release_date).reverse
|
|
31
|
+
rescue Mechanize::Error => e
|
|
32
|
+
raise Relaton::RequestError, e.message
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def agent
|
|
36
|
+
@agent ||= Mechanize.new
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# @param hit [RelatonGb::Hit] standard's page id
|
|
40
|
+
# @return [RelatonGb::GbBibliographicItem]
|
|
41
|
+
def scrape_doc(hit)
|
|
42
|
+
src = DOC_URL + hit.pid
|
|
43
|
+
doc = agent.get src
|
|
44
|
+
ItemData.new(**scrapped_data(doc, src, hit))
|
|
45
|
+
rescue Mechanize::Error => e
|
|
46
|
+
raise Relaton::RequestError, e.message
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# @param doc [Nokogiri::HTML]
|
|
50
|
+
# @param _ref [String]
|
|
51
|
+
# @return [Hash]
|
|
52
|
+
# * :type [String]
|
|
53
|
+
# * :name [String]
|
|
54
|
+
# def get_committee(doc, _ref)
|
|
55
|
+
# name = doc.at("//div[contains(., '归口单位') or contains(., '归口部门')]/following-sibling::div")
|
|
56
|
+
# Committee.new(type: "technical", content: name.text.delete("\r\n\t\t"))
|
|
57
|
+
# end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Relaton
|
|
2
|
+
module Gb
|
|
3
|
+
class GbType < Lutaml::Model::Serializable
|
|
4
|
+
attribute :scope, :string, values: %w[national sector professional local enterprise social-group]
|
|
5
|
+
attribute :prefix, :string
|
|
6
|
+
attribute :mandate, :string, values: %w[mandatory recommended guidelines]
|
|
7
|
+
attribute :topic, :string, values: %w[
|
|
8
|
+
basic health-and-safety environment-protection engineering-and-construction
|
|
9
|
+
product method management-techniques other
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
xml do
|
|
13
|
+
map_element "gbscope", to: :scope
|
|
14
|
+
map_element "gbprefix", to: :prefix
|
|
15
|
+
map_element "gbmandate", to: :mandate
|
|
16
|
+
map_element "gbtopic", to: :topic
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|