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.
Files changed (610) hide show
  1. checksums.yaml +4 -4
  2. data/{docs/README.adoc → README.adoc} +109 -38
  3. data/lib/relaton/3gpp/bibdata.rb +9 -0
  4. data/lib/relaton/3gpp/bibitem.rb +9 -0
  5. data/lib/relaton/3gpp/bibliography.rb +48 -0
  6. data/lib/relaton/3gpp/data_fetcher.rb +255 -0
  7. data/lib/relaton/3gpp/doctype.rb +9 -0
  8. data/lib/relaton/3gpp/ext.rb +31 -0
  9. data/lib/relaton/3gpp/item.rb +12 -0
  10. data/lib/relaton/3gpp/item_data.rb +15 -0
  11. data/lib/relaton/3gpp/parser.rb +400 -0
  12. data/lib/relaton/3gpp/processor.rb +68 -0
  13. data/lib/relaton/3gpp/release.rb +34 -0
  14. data/lib/relaton/3gpp/util.rb +8 -0
  15. data/lib/relaton/3gpp.rb +25 -0
  16. data/lib/relaton/bib/converter/asciibib/to_asciibib.rb +663 -0
  17. data/lib/relaton/bib/converter/asciibib.rb +13 -0
  18. data/lib/relaton/bib/converter/bibtex/from_bibtex.rb +245 -0
  19. data/lib/relaton/bib/converter/bibtex/to_bibtex.rb +341 -0
  20. data/lib/relaton/bib/converter/bibtex.rb +23 -0
  21. data/lib/relaton/bib/converter/bibxml/from_rfcxml.rb +386 -0
  22. data/lib/relaton/bib/converter/bibxml/from_rfcxml_referencegroup.rb +71 -0
  23. data/lib/relaton/bib/converter/bibxml/to_rfcxml.rb +308 -0
  24. data/lib/relaton/bib/converter/bibxml/to_rfcxml_referencegroup.rb +52 -0
  25. data/lib/relaton/bib/converter/bibxml.rb +51 -0
  26. data/lib/relaton/bib/hash_parser_v1.rb +767 -0
  27. data/lib/relaton/bib/item_data.rb +229 -0
  28. data/lib/relaton/bib/model/abstract.rb +16 -0
  29. data/lib/relaton/bib/model/address.rb +22 -0
  30. data/lib/relaton/bib/model/affiliation.rb +16 -0
  31. data/lib/relaton/bib/model/bibdata.rb +11 -0
  32. data/lib/relaton/bib/model/bibdata_shared.rb +12 -0
  33. data/lib/relaton/bib/model/bibitem.rb +11 -0
  34. data/lib/relaton/bib/model/bibitem_shared.rb +12 -0
  35. data/lib/relaton/bib/model/contact.rb +18 -0
  36. data/lib/relaton/bib/model/contribution_info.rb +15 -0
  37. data/lib/relaton/bib/model/contributor.rb +29 -0
  38. data/lib/relaton/bib/model/copyright.rb +27 -0
  39. data/lib/relaton/bib/model/date.rb +31 -0
  40. data/lib/relaton/bib/model/depiction.rb +16 -0
  41. data/lib/relaton/bib/model/docidentifier.rb +34 -0
  42. data/lib/relaton/bib/model/doctype.rb +14 -0
  43. data/lib/relaton/bib/model/edition.rb +14 -0
  44. data/lib/relaton/bib/model/ext.rb +39 -0
  45. data/lib/relaton/bib/model/extent.rb +16 -0
  46. data/lib/relaton/bib/model/formattedref.rb +43 -0
  47. data/lib/relaton/bib/model/full_name_type.rb +64 -0
  48. data/lib/relaton/bib/model/fullname.rb +11 -0
  49. data/lib/relaton/bib/model/ics.rb +49 -0
  50. data/lib/relaton/bib/model/image.rb +28 -0
  51. data/lib/relaton/bib/model/item.rb +96 -0
  52. data/lib/relaton/bib/model/item_base.rb +20 -0
  53. data/lib/relaton/bib/model/item_shared.rb +88 -0
  54. data/lib/relaton/bib/model/keyword.rb +30 -0
  55. data/lib/relaton/bib/model/locality.rb +18 -0
  56. data/lib/relaton/bib/model/locality_stack.rb +14 -0
  57. data/lib/relaton/bib/model/localized_string.rb +48 -0
  58. data/lib/relaton/bib/model/localized_string_attrs.rb +24 -0
  59. data/lib/relaton/bib/model/logo.rb +14 -0
  60. data/lib/relaton/bib/model/medium.rb +22 -0
  61. data/lib/relaton/bib/model/note.rb +16 -0
  62. data/lib/relaton/bib/model/organization.rb +13 -0
  63. data/lib/relaton/bib/model/organization_type.rb +42 -0
  64. data/lib/relaton/bib/model/person.rb +36 -0
  65. data/lib/relaton/bib/model/phone.rb +14 -0
  66. data/lib/relaton/bib/model/place.rb +33 -0
  67. data/lib/relaton/bib/model/price.rb +14 -0
  68. data/lib/relaton/bib/model/relation.rb +43 -0
  69. data/lib/relaton/bib/model/series.rb +34 -0
  70. data/lib/relaton/bib/model/size.rb +23 -0
  71. data/lib/relaton/bib/model/source_locality_stack.rb +14 -0
  72. data/lib/relaton/bib/model/status.rb +27 -0
  73. data/lib/relaton/bib/model/structured_identifier.rb +48 -0
  74. data/lib/relaton/bib/model/subdivision.rb +16 -0
  75. data/lib/relaton/bib/model/title.rb +56 -0
  76. data/lib/relaton/bib/model/type/plain_date.rb +16 -0
  77. data/lib/relaton/bib/model/type/string_date.rb +48 -0
  78. data/lib/relaton/bib/model/uri.rb +18 -0
  79. data/lib/relaton/bib/model/validity.rb +16 -0
  80. data/lib/relaton/bib/model/version.rb +43 -0
  81. data/lib/relaton/bib/namespace_helper.rb +21 -0
  82. data/lib/relaton/bib/sanitizer.rb +68 -0
  83. data/lib/relaton/bib/util.rb +18 -0
  84. data/lib/relaton/bib/versions.json +35 -0
  85. data/lib/relaton/bib.rb +48 -0
  86. data/lib/relaton/bipm/bibliography.rb +82 -0
  87. data/lib/relaton/bipm/converter/asciibib.rb +64 -0
  88. data/lib/relaton/bipm/data_fetcher.rb +57 -0
  89. data/lib/relaton/bipm/data_outcomes_parser.rb +657 -0
  90. data/lib/relaton/bipm/id_parser.rb +277 -0
  91. data/lib/relaton/bipm/item_data.rb +47 -0
  92. data/lib/relaton/bipm/model/bibdata.rb +9 -0
  93. data/lib/relaton/bipm/model/bibitem.rb +9 -0
  94. data/lib/relaton/bipm/model/comment_period.rb +13 -0
  95. data/lib/relaton/bipm/model/doctype.rb +12 -0
  96. data/lib/relaton/bipm/model/ext.rb +38 -0
  97. data/lib/relaton/bipm/model/item.rb +11 -0
  98. data/lib/relaton/bipm/model/structured_identifier.rb +15 -0
  99. data/lib/relaton/bipm/processor.rb +69 -0
  100. data/lib/relaton/bipm/rawdata_bipm_metrologia/affiliations.rb +111 -0
  101. data/lib/relaton/bipm/rawdata_bipm_metrologia/fetcher.rb +174 -0
  102. data/lib/relaton/bipm/rawdata_bipm_metrologia/niso_jats_parser.rb +353 -0
  103. data/lib/relaton/bipm/si_brochure_parser.rb +186 -0
  104. data/lib/relaton/bipm/util.rb +8 -0
  105. data/lib/relaton/bipm.rb +32 -0
  106. data/lib/relaton/bsi/bibliography.rb +124 -0
  107. data/lib/relaton/bsi/hit.rb +14 -0
  108. data/lib/relaton/bsi/hit_collection.rb +114 -0
  109. data/lib/relaton/bsi/item_data.rb +13 -0
  110. data/lib/relaton/bsi/model/bibdata.rb +8 -0
  111. data/lib/relaton/bsi/model/bibitem.rb +8 -0
  112. data/lib/relaton/bsi/model/docidentifier.rb +9 -0
  113. data/lib/relaton/bsi/model/doctype.rb +14 -0
  114. data/lib/relaton/bsi/model/ext.rb +17 -0
  115. data/lib/relaton/bsi/model/item.rb +17 -0
  116. data/lib/relaton/bsi/model/item_base.rb +22 -0
  117. data/lib/relaton/bsi/model/relation.rb +9 -0
  118. data/lib/relaton/bsi/processor.rb +42 -0
  119. data/lib/relaton/bsi/schema.json +24882 -0
  120. data/lib/relaton/bsi/scraper.rb +288 -0
  121. data/lib/relaton/bsi/util.rb +8 -0
  122. data/lib/relaton/bsi.rb +25 -0
  123. data/lib/relaton/calconnect/bibliography.rb +95 -0
  124. data/lib/relaton/calconnect/data_fetcher.rb +106 -0
  125. data/lib/relaton/calconnect/hit.rb +14 -0
  126. data/lib/relaton/calconnect/hit_collection.rb +84 -0
  127. data/lib/relaton/calconnect/item_data.rb +12 -0
  128. data/lib/relaton/calconnect/model/bibdata.rb +8 -0
  129. data/lib/relaton/calconnect/model/bibitem.rb +8 -0
  130. data/lib/relaton/calconnect/model/doctype.rb +11 -0
  131. data/lib/relaton/calconnect/model/ext.rb +11 -0
  132. data/lib/relaton/calconnect/model/item.rb +13 -0
  133. data/lib/relaton/calconnect/processor.rb +66 -0
  134. data/lib/relaton/calconnect/scraper.rb +87 -0
  135. data/lib/relaton/calconnect/util.rb +8 -0
  136. data/lib/relaton/calconnect.rb +26 -0
  137. data/lib/relaton/ccsds/bibliography.rb +63 -0
  138. data/lib/relaton/ccsds/data/fetcher.rb +247 -0
  139. data/lib/relaton/ccsds/data/iso_references.rb +30 -0
  140. data/lib/relaton/ccsds/data/parser.rb +194 -0
  141. data/lib/relaton/ccsds/hit.rb +24 -0
  142. data/lib/relaton/ccsds/hit_collection.rb +42 -0
  143. data/lib/relaton/ccsds/item_data.rb +9 -0
  144. data/lib/relaton/ccsds/model/bibdata.rb +8 -0
  145. data/lib/relaton/ccsds/model/bibitem.rb +8 -0
  146. data/lib/relaton/ccsds/model/doctype.rb +9 -0
  147. data/lib/relaton/ccsds/model/ext.rb +19 -0
  148. data/lib/relaton/ccsds/model/item.rb +13 -0
  149. data/lib/relaton/ccsds/processor.rb +68 -0
  150. data/lib/relaton/ccsds/util.rb +10 -0
  151. data/lib/relaton/ccsds.rb +33 -0
  152. data/lib/relaton/cen/bibliography.rb +121 -0
  153. data/lib/relaton/cen/committees.yaml +66 -0
  154. data/lib/relaton/cen/hit.rb +16 -0
  155. data/lib/relaton/cen/hit_collection.rb +68 -0
  156. data/lib/relaton/cen/item_data.rb +7 -0
  157. data/lib/relaton/cen/model/bibdata.rb +8 -0
  158. data/lib/relaton/cen/model/bibitem.rb +8 -0
  159. data/lib/relaton/cen/model/docidentifier.rb +9 -0
  160. data/lib/relaton/cen/model/ext.rb +11 -0
  161. data/lib/relaton/cen/model/item.rb +14 -0
  162. data/lib/relaton/cen/model/structured_identifier.rb +9 -0
  163. data/lib/relaton/cen/processor.rb +40 -0
  164. data/lib/relaton/cen/scraper.rb +210 -0
  165. data/lib/relaton/cen/util.rb +8 -0
  166. data/lib/relaton/cen.rb +29 -0
  167. data/lib/relaton/cie/bibdata.rb +8 -0
  168. data/lib/relaton/cie/bibitem.rb +8 -0
  169. data/lib/relaton/cie/bibliography.rb +31 -0
  170. data/lib/relaton/cie/data_fetcher.rb +355 -0
  171. data/lib/relaton/cie/ext.rb +7 -0
  172. data/lib/relaton/cie/item.rb +11 -0
  173. data/lib/relaton/cie/item_data.rb +6 -0
  174. data/lib/relaton/cie/processor.rb +66 -0
  175. data/lib/relaton/cie/scrapper.rb +39 -0
  176. data/lib/relaton/cie/util.rb +8 -0
  177. data/lib/relaton/cie.rb +28 -0
  178. data/lib/relaton/core/array_wrapper.rb +20 -0
  179. data/lib/relaton/core/data_fetcher.rb +97 -0
  180. data/lib/relaton/core/date_parser.rb +42 -0
  181. data/lib/relaton/core/hash_keys_sybolizer.rb +19 -0
  182. data/lib/relaton/core/hit.rb +49 -0
  183. data/lib/relaton/core/hit_collection.rb +118 -0
  184. data/lib/relaton/core/processor.rb +48 -0
  185. data/lib/relaton/core/workers_pool.rb +45 -0
  186. data/lib/relaton/core.rb +9 -0
  187. data/lib/relaton/db/registry.rb +4 -4
  188. data/lib/relaton/db.rb +0 -1
  189. data/lib/relaton/doi/crossref.rb +72 -0
  190. data/lib/relaton/doi/parser.rb +827 -0
  191. data/lib/relaton/doi/processor.rb +65 -0
  192. data/lib/relaton/doi/util.rb +8 -0
  193. data/lib/relaton/doi.rb +20 -0
  194. data/lib/relaton/ecma/bibdata.rb +8 -0
  195. data/lib/relaton/ecma/bibitem.rb +8 -0
  196. data/lib/relaton/ecma/bibliography.rb +81 -0
  197. data/lib/relaton/ecma/data_fetcher.rb +103 -0
  198. data/lib/relaton/ecma/data_parser.rb +49 -0
  199. data/lib/relaton/ecma/edition_parser.rb +80 -0
  200. data/lib/relaton/ecma/ext.rb +7 -0
  201. data/lib/relaton/ecma/item.rb +11 -0
  202. data/lib/relaton/ecma/item_data.rb +6 -0
  203. data/lib/relaton/ecma/memento_parser.rb +60 -0
  204. data/lib/relaton/ecma/page_fetcher.rb +27 -0
  205. data/lib/relaton/ecma/parser_common.rb +33 -0
  206. data/lib/relaton/ecma/processor.rb +66 -0
  207. data/lib/relaton/ecma/standard_parser.rb +134 -0
  208. data/lib/relaton/ecma/util.rb +8 -0
  209. data/lib/relaton/ecma.rb +24 -0
  210. data/lib/relaton/etsi/bibdata.rb +10 -0
  211. data/lib/relaton/etsi/bibitem.rb +10 -0
  212. data/lib/relaton/etsi/bibliography.rb +46 -0
  213. data/lib/relaton/etsi/data_fetcher.rb +128 -0
  214. data/lib/relaton/etsi/data_parser.rb +208 -0
  215. data/lib/relaton/etsi/doctype.rb +30 -0
  216. data/lib/relaton/etsi/ext.rb +31 -0
  217. data/lib/relaton/etsi/item.rb +15 -0
  218. data/lib/relaton/etsi/item_data.rb +6 -0
  219. data/lib/relaton/etsi/processor.rb +69 -0
  220. data/lib/relaton/etsi/pubid.rb +37 -0
  221. data/lib/relaton/etsi/status.rb +13 -0
  222. data/lib/relaton/etsi/util.rb +8 -0
  223. data/lib/relaton/etsi.rb +25 -0
  224. data/lib/relaton/gb/bibdata.rb +8 -0
  225. data/lib/relaton/gb/bibitem.rb +8 -0
  226. data/lib/relaton/gb/bibliography.rb +145 -0
  227. data/lib/relaton/gb/ccs.rb +14 -0
  228. data/lib/relaton/gb/committee.rb +13 -0
  229. data/lib/relaton/gb/docidentifier.rb +23 -0
  230. data/lib/relaton/gb/doctype.rb +9 -0
  231. data/lib/relaton/gb/ext.rb +36 -0
  232. data/lib/relaton/gb/gb_scraper.rb +61 -0
  233. data/lib/relaton/gb/gb_type.rb +20 -0
  234. data/lib/relaton/gb/hit.rb +48 -0
  235. data/lib/relaton/gb/hit_collection.rb +19 -0
  236. data/lib/relaton/gb/item.rb +13 -0
  237. data/lib/relaton/gb/item_data.rb +6 -0
  238. data/lib/relaton/gb/processor.rb +46 -0
  239. data/lib/relaton/gb/project_number.rb +38 -0
  240. data/lib/relaton/gb/scraper.rb +204 -0
  241. data/lib/relaton/gb/sec_scraper.rb +92 -0
  242. data/lib/relaton/gb/stage_name.rb +13 -0
  243. data/lib/relaton/gb/structured_identifier.rb +26 -0
  244. data/lib/relaton/gb/t_scraper.rb +126 -0
  245. data/lib/relaton/gb/util.rb +8 -0
  246. data/lib/relaton/gb/yaml/prefixes.yaml +200 -0
  247. data/lib/relaton/gb.rb +33 -0
  248. data/lib/relaton/iana/bibdata.rb +8 -0
  249. data/lib/relaton/iana/bibitem.rb +8 -0
  250. data/lib/relaton/iana/bibliography.rb +47 -0
  251. data/lib/relaton/iana/data_fetcher.rb +71 -0
  252. data/lib/relaton/iana/item.rb +7 -0
  253. data/lib/relaton/iana/item_data.rb +6 -0
  254. data/lib/relaton/iana/parser.rb +146 -0
  255. data/lib/relaton/iana/processor.rb +68 -0
  256. data/lib/relaton/iana/util.rb +8 -0
  257. data/lib/relaton/iana.rb +29 -0
  258. data/lib/relaton/iec/bibliography.rb +283 -0
  259. data/lib/relaton/iec/data_fetcher.rb +216 -0
  260. data/lib/relaton/iec/data_parser.rb +391 -0
  261. data/lib/relaton/iec/hit.rb +26 -0
  262. data/lib/relaton/iec/hit_collection.rb +138 -0
  263. data/lib/relaton/iec/item_data.rb +7 -0
  264. data/lib/relaton/iec/model/bibdata.rb +8 -0
  265. data/lib/relaton/iec/model/bibitem.rb +8 -0
  266. data/lib/relaton/iec/model/docidentifier.rb +131 -0
  267. data/lib/relaton/iec/model/doctype.rb +12 -0
  268. data/lib/relaton/iec/model/ext.rb +53 -0
  269. data/lib/relaton/iec/model/item.rb +20 -0
  270. data/lib/relaton/iec/model/item_base.rb +12 -0
  271. data/lib/relaton/iec/model/relation.rb +7 -0
  272. data/lib/relaton/iec/model/stage_name.rb +13 -0
  273. data/lib/relaton/iec/processor.rb +73 -0
  274. data/lib/relaton/iec/statuses.yml +199 -0
  275. data/lib/relaton/iec/util.rb +8 -0
  276. data/lib/relaton/iec.rb +98 -0
  277. data/lib/relaton/ieee/balloting_group.rb +13 -0
  278. data/lib/relaton/ieee/bibdata.rb +8 -0
  279. data/lib/relaton/ieee/bibitem.rb +8 -0
  280. data/lib/relaton/ieee/bibliography.rb +51 -0
  281. data/lib/relaton/ieee/converter/bibxml/from_rfcxml.rb +10 -0
  282. data/lib/relaton/ieee/converter/bibxml/from_rfcxml_referencegroup.rb +10 -0
  283. data/lib/relaton/ieee/converter/bibxml.rb +20 -0
  284. data/lib/relaton/ieee/data_fetcher.rb +630 -0
  285. data/lib/relaton/ieee/doctype.rb +9 -0
  286. data/lib/relaton/ieee/editorial_group.rb +19 -0
  287. data/lib/relaton/ieee/ext.rb +36 -0
  288. data/lib/relaton/ieee/idams_parser.rb +323 -0
  289. data/lib/relaton/ieee/item.rb +11 -0
  290. data/lib/relaton/ieee/item_data.rb +7 -0
  291. data/lib/relaton/ieee/processor.rb +68 -0
  292. data/lib/relaton/ieee/pub_id.rb +161 -0
  293. data/lib/relaton/ieee/rawbib_id_parser.rb +548 -0
  294. data/lib/relaton/ieee/util.rb +8 -0
  295. data/lib/relaton/ieee.rb +29 -0
  296. data/lib/relaton/ietf/bibdata.rb +8 -0
  297. data/lib/relaton/ietf/bibitem.rb +8 -0
  298. data/lib/relaton/ietf/bibliography.rb +35 -0
  299. data/lib/relaton/ietf/bibxml_parser.rb +232 -0
  300. data/lib/relaton/ietf/data_fetcher.rb +278 -0
  301. data/lib/relaton/ietf/doctype.rb +9 -0
  302. data/lib/relaton/ietf/ext.rb +63 -0
  303. data/lib/relaton/ietf/item.rb +16 -0
  304. data/lib/relaton/ietf/item_base.rb +18 -0
  305. data/lib/relaton/ietf/item_data.rb +6 -0
  306. data/lib/relaton/ietf/processing_instructions.rb +79 -0
  307. data/lib/relaton/ietf/processor.rb +68 -0
  308. data/lib/relaton/ietf/relation.rb +9 -0
  309. data/lib/relaton/ietf/rfc/abstract.rb +19 -0
  310. data/lib/relaton/ietf/rfc/author.rb +21 -0
  311. data/lib/relaton/ietf/rfc/entry.rb +410 -0
  312. data/lib/relaton/ietf/rfc/entry_date.rb +21 -0
  313. data/lib/relaton/ietf/rfc/format.rb +19 -0
  314. data/lib/relaton/ietf/rfc/index.rb +46 -0
  315. data/lib/relaton/ietf/rfc/is_also.rb +21 -0
  316. data/lib/relaton/ietf/rfc/keywords.rb +19 -0
  317. data/lib/relaton/ietf/rfc/rfc_index_namespace.rb +11 -0
  318. data/lib/relaton/ietf/scraper.rb +68 -0
  319. data/lib/relaton/ietf/util.rb +8 -0
  320. data/lib/relaton/ietf/wg_name_resolver.rb +42 -0
  321. data/lib/relaton/ietf.rb +27 -0
  322. data/lib/relaton/iho/bibdata.rb +8 -0
  323. data/lib/relaton/iho/bibitem.rb +8 -0
  324. data/lib/relaton/iho/bibliography.rb +114 -0
  325. data/lib/relaton/iho/comment_period.rb +13 -0
  326. data/lib/relaton/iho/docidentifier.rb +31 -0
  327. data/lib/relaton/iho/doctype.rb +10 -0
  328. data/lib/relaton/iho/ext.rb +20 -0
  329. data/lib/relaton/iho/hash_parser_v1.rb +144 -0
  330. data/lib/relaton/iho/item.rb +20 -0
  331. data/lib/relaton/iho/item_base.rb +18 -0
  332. data/lib/relaton/iho/item_data.rb +6 -0
  333. data/lib/relaton/iho/processor.rb +54 -0
  334. data/lib/relaton/iho/relation.rb +9 -0
  335. data/lib/relaton/iho/structured_identifier.rb +20 -0
  336. data/lib/relaton/iho/util.rb +8 -0
  337. data/lib/relaton/iho.rb +27 -0
  338. data/lib/relaton/index/config.rb +52 -0
  339. data/lib/relaton/index/file_io.rb +305 -0
  340. data/lib/relaton/index/file_storage.rb +61 -0
  341. data/lib/relaton/index/id_number.rb +30 -0
  342. data/lib/relaton/index/pool.rb +41 -0
  343. data/lib/relaton/index/type.rb +159 -0
  344. data/lib/relaton/index/util.rb +18 -0
  345. data/lib/relaton/index.rb +60 -0
  346. data/lib/relaton/isbn/isbn.rb +61 -0
  347. data/lib/relaton/isbn/open_library.rb +43 -0
  348. data/lib/relaton/isbn/parser.rb +88 -0
  349. data/lib/relaton/isbn/processor.rb +48 -0
  350. data/lib/relaton/isbn/util.rb +8 -0
  351. data/lib/relaton/isbn.rb +19 -0
  352. data/lib/relaton/iso/bibliography.rb +407 -0
  353. data/lib/relaton/iso/data_fetcher.rb +338 -0
  354. data/lib/relaton/iso/data_parser.rb +444 -0
  355. data/lib/relaton/iso/hash_parser_v1.rb +177 -0
  356. data/lib/relaton/iso/hit.rb +57 -0
  357. data/lib/relaton/iso/hit_collection.rb +184 -0
  358. data/lib/relaton/iso/item_data.rb +28 -0
  359. data/lib/relaton/iso/model/bibdata.rb +10 -0
  360. data/lib/relaton/iso/model/bibitem.rb +8 -0
  361. data/lib/relaton/iso/model/contributor.rb +6 -0
  362. data/lib/relaton/iso/model/contributor_info.rb +9 -0
  363. data/lib/relaton/iso/model/docidentifier.rb +134 -0
  364. data/lib/relaton/iso/model/doctype.rb +13 -0
  365. data/lib/relaton/iso/model/ext.rb +35 -0
  366. data/lib/relaton/iso/model/item.rb +17 -0
  367. data/lib/relaton/iso/model/item_base.rb +22 -0
  368. data/lib/relaton/iso/model/organization.rb +9 -0
  369. data/lib/relaton/iso/model/project_number.rb +22 -0
  370. data/lib/relaton/iso/model/relation.rb +9 -0
  371. data/lib/relaton/iso/model/stagename.rb +14 -0
  372. data/lib/relaton/iso/model/structured_identifier.rb +31 -0
  373. data/lib/relaton/iso/processor.rb +84 -0
  374. data/lib/relaton/iso/scraper.rb +619 -0
  375. data/lib/relaton/iso/type/pubid.rb +50 -0
  376. data/lib/relaton/iso/util.rb +8 -0
  377. data/lib/relaton/iso.rb +30 -0
  378. data/lib/relaton/itu/bibliography.rb +90 -0
  379. data/lib/relaton/itu/data_fetcher.rb +104 -0
  380. data/lib/relaton/itu/data_parser_r.rb +140 -0
  381. data/lib/relaton/itu/hit.rb +22 -0
  382. data/lib/relaton/itu/hit_collection.rb +127 -0
  383. data/lib/relaton/itu/item_data.rb +6 -0
  384. data/lib/relaton/itu/model/approval_stage.rb +13 -0
  385. data/lib/relaton/itu/model/bibdata.rb +8 -0
  386. data/lib/relaton/itu/model/bibitem.rb +8 -0
  387. data/lib/relaton/itu/model/docidentifier.rb +9 -0
  388. data/lib/relaton/itu/model/doctype.rb +13 -0
  389. data/lib/relaton/itu/model/ext.rb +47 -0
  390. data/lib/relaton/itu/model/item.rb +13 -0
  391. data/lib/relaton/itu/model/meeting.rb +13 -0
  392. data/lib/relaton/itu/model/meeting_date.rb +15 -0
  393. data/lib/relaton/itu/model/question.rb +13 -0
  394. data/lib/relaton/itu/model/recommendation_status.rb +11 -0
  395. data/lib/relaton/itu/model/structured_identifier.rb +19 -0
  396. data/lib/relaton/itu/processor.rb +66 -0
  397. data/lib/relaton/itu/pubid.rb +177 -0
  398. data/lib/relaton/itu/radio_regulations_parser.rb +70 -0
  399. data/lib/relaton/itu/recommendation_parser.rb +161 -0
  400. data/lib/relaton/itu/scraper.rb +193 -0
  401. data/lib/relaton/itu/util.rb +8 -0
  402. data/lib/relaton/itu.rb +33 -0
  403. data/lib/relaton/jis/bibdata.rb +8 -0
  404. data/lib/relaton/jis/bibitem.rb +8 -0
  405. data/lib/relaton/jis/bibliography.rb +75 -0
  406. data/lib/relaton/jis/data_fetcher.rb +181 -0
  407. data/lib/relaton/jis/docidentifier.rb +21 -0
  408. data/lib/relaton/jis/doctype.rb +9 -0
  409. data/lib/relaton/jis/ext.rb +13 -0
  410. data/lib/relaton/jis/hit.rb +93 -0
  411. data/lib/relaton/jis/hit_collection.rb +127 -0
  412. data/lib/relaton/jis/item.rb +22 -0
  413. data/lib/relaton/jis/item_base.rb +26 -0
  414. data/lib/relaton/jis/item_data.rb +8 -0
  415. data/lib/relaton/jis/processor.rb +55 -0
  416. data/lib/relaton/jis/relation.rb +11 -0
  417. data/lib/relaton/jis/scraper.rb +232 -0
  418. data/lib/relaton/jis/structured_identifier.rb +13 -0
  419. data/lib/relaton/jis/util.rb +8 -0
  420. data/lib/relaton/jis.rb +33 -0
  421. data/lib/relaton/logger/channels/gh_issue.rb +78 -0
  422. data/lib/relaton/logger/config.rb +34 -0
  423. data/lib/relaton/logger/formatter_json.rb +8 -0
  424. data/lib/relaton/logger/formatter_string.rb +12 -0
  425. data/lib/relaton/logger/log.rb +64 -0
  426. data/lib/relaton/logger/log_device.rb +27 -0
  427. data/lib/relaton/logger/pool.rb +24 -0
  428. data/lib/relaton/logger.rb +18 -0
  429. data/lib/relaton/nist/bibdata.rb +8 -0
  430. data/lib/relaton/nist/bibitem.rb +8 -0
  431. data/lib/relaton/nist/bibliography.rb +191 -0
  432. data/lib/relaton/nist/comment_period.rb +15 -0
  433. data/lib/relaton/nist/data_fetcher.rb +84 -0
  434. data/lib/relaton/nist/date.rb +7 -0
  435. data/lib/relaton/nist/doctype.rb +7 -0
  436. data/lib/relaton/nist/ext.rb +16 -0
  437. data/lib/relaton/nist/hit.rb +18 -0
  438. data/lib/relaton/nist/hit_collection.rb +362 -0
  439. data/lib/relaton/nist/item.rb +17 -0
  440. data/lib/relaton/nist/item_data.rb +6 -0
  441. data/lib/relaton/nist/mods_parser.rb +276 -0
  442. data/lib/relaton/nist/processor.rb +68 -0
  443. data/lib/relaton/nist/pubs_export.rb +69 -0
  444. data/lib/relaton/nist/relation.rb +7 -0
  445. data/lib/relaton/nist/scraper.rb +290 -0
  446. data/lib/relaton/nist/series.yaml +49 -0
  447. data/lib/relaton/nist/util.rb +8 -0
  448. data/lib/relaton/nist.rb +34 -0
  449. data/lib/relaton/oasis/bibdata.rb +8 -0
  450. data/lib/relaton/oasis/bibitem.rb +8 -0
  451. data/lib/relaton/oasis/bibliography.rb +60 -0
  452. data/lib/relaton/oasis/browser_agent.rb +71 -0
  453. data/lib/relaton/oasis/data_fetcher.rb +94 -0
  454. data/lib/relaton/oasis/data_parser.rb +305 -0
  455. data/lib/relaton/oasis/data_parser_utils.rb +296 -0
  456. data/lib/relaton/oasis/data_part_parser.rb +239 -0
  457. data/lib/relaton/oasis/doctype.rb +7 -0
  458. data/lib/relaton/oasis/ext.rb +19 -0
  459. data/lib/relaton/oasis/item.rb +11 -0
  460. data/lib/relaton/oasis/item_data.rb +6 -0
  461. data/lib/relaton/oasis/processor.rb +68 -0
  462. data/lib/relaton/oasis/util.rb +8 -0
  463. data/lib/relaton/oasis.rb +28 -0
  464. data/lib/relaton/ogc/bibdata.rb +8 -0
  465. data/lib/relaton/ogc/bibitem.rb +8 -0
  466. data/lib/relaton/ogc/bibliography.rb +64 -0
  467. data/lib/relaton/ogc/data_fetcher.rb +110 -0
  468. data/lib/relaton/ogc/docidentifier.rb +6 -0
  469. data/lib/relaton/ogc/doctype.rb +12 -0
  470. data/lib/relaton/ogc/ext.rb +15 -0
  471. data/lib/relaton/ogc/hit.rb +18 -0
  472. data/lib/relaton/ogc/hit_collection.rb +36 -0
  473. data/lib/relaton/ogc/item.rb +13 -0
  474. data/lib/relaton/ogc/item_data.rb +6 -0
  475. data/lib/relaton/ogc/processor.rb +58 -0
  476. data/lib/relaton/ogc/scraper.rb +225 -0
  477. data/lib/relaton/ogc/util.rb +8 -0
  478. data/lib/relaton/ogc.rb +26 -0
  479. data/lib/relaton/oiml/bibdata.rb +8 -0
  480. data/lib/relaton/oiml/bibitem.rb +8 -0
  481. data/lib/relaton/oiml/bibliography.rb +94 -0
  482. data/lib/relaton/oiml/docidentifier.rb +33 -0
  483. data/lib/relaton/oiml/doctype.rb +13 -0
  484. data/lib/relaton/oiml/ext.rb +42 -0
  485. data/lib/relaton/oiml/item.rb +20 -0
  486. data/lib/relaton/oiml/item_base.rb +18 -0
  487. data/lib/relaton/oiml/item_data.rb +6 -0
  488. data/lib/relaton/oiml/processor.rb +54 -0
  489. data/lib/relaton/oiml/relation.rb +9 -0
  490. data/lib/relaton/oiml/util.rb +8 -0
  491. data/lib/relaton/oiml.rb +24 -0
  492. data/lib/relaton/omg/bibdata.rb +8 -0
  493. data/lib/relaton/omg/bibitem.rb +8 -0
  494. data/lib/relaton/omg/bibliography.rb +31 -0
  495. data/lib/relaton/omg/ext.rb +7 -0
  496. data/lib/relaton/omg/item.rb +8 -0
  497. data/lib/relaton/omg/item_data.rb +6 -0
  498. data/lib/relaton/omg/processor.rb +34 -0
  499. data/lib/relaton/omg/scraper.rb +141 -0
  500. data/lib/relaton/omg/util.rb +8 -0
  501. data/lib/relaton/omg.rb +24 -0
  502. data/lib/relaton/plateau/bibdata.rb +8 -0
  503. data/lib/relaton/plateau/bibitem.rb +8 -0
  504. data/lib/relaton/plateau/bibliography.rb +24 -0
  505. data/lib/relaton/plateau/data_fetcher.rb +153 -0
  506. data/lib/relaton/plateau/doctype.rb +7 -0
  507. data/lib/relaton/plateau/ext.rb +23 -0
  508. data/lib/relaton/plateau/handbook_parser.rb +95 -0
  509. data/lib/relaton/plateau/hit.rb +13 -0
  510. data/lib/relaton/plateau/hit_collection.rb +59 -0
  511. data/lib/relaton/plateau/item.rb +12 -0
  512. data/lib/relaton/plateau/item_data.rb +6 -0
  513. data/lib/relaton/plateau/parser.rb +101 -0
  514. data/lib/relaton/plateau/processor.rb +49 -0
  515. data/lib/relaton/plateau/technical_report_parser.rb +91 -0
  516. data/lib/relaton/plateau/util.rb +8 -0
  517. data/lib/relaton/plateau.rb +28 -0
  518. data/lib/relaton/un/bibdata.rb +8 -0
  519. data/lib/relaton/un/bibitem.rb +8 -0
  520. data/lib/relaton/un/bibliography.rb +48 -0
  521. data/lib/relaton/un/doctype.rb +10 -0
  522. data/lib/relaton/un/ext.rb +30 -0
  523. data/lib/relaton/un/hit.rb +56 -0
  524. data/lib/relaton/un/hit_collection.rb +61 -0
  525. data/lib/relaton/un/item.rb +11 -0
  526. data/lib/relaton/un/item_data.rb +6 -0
  527. data/lib/relaton/un/parser.rb +108 -0
  528. data/lib/relaton/un/processor.rb +38 -0
  529. data/lib/relaton/un/session.rb +25 -0
  530. data/lib/relaton/un/token_generator.rb +105 -0
  531. data/lib/relaton/un/util.rb +8 -0
  532. data/lib/relaton/un/wasm/decoder.rb +434 -0
  533. data/lib/relaton/un/wasm/instance.rb +101 -0
  534. data/lib/relaton/un/wasm/interpreter.rb +613 -0
  535. data/lib/relaton/un/wasm/memory.rb +112 -0
  536. data/lib/relaton/un/wasm/module.rb +47 -0
  537. data/lib/relaton/un/wasm.rb +17 -0
  538. data/lib/relaton/un/wasm_v_bg.wasm +0 -0
  539. data/lib/relaton/un.rb +28 -0
  540. data/lib/relaton/version.rb +1 -1
  541. data/lib/relaton/w3c/bibdata.rb +8 -0
  542. data/lib/relaton/w3c/bibitem.rb +8 -0
  543. data/lib/relaton/w3c/bibliography.rb +54 -0
  544. data/lib/relaton/w3c/data_fetcher.rb +309 -0
  545. data/lib/relaton/w3c/data_parser.rb +379 -0
  546. data/lib/relaton/w3c/doctype.rb +7 -0
  547. data/lib/relaton/w3c/ext.rb +11 -0
  548. data/lib/relaton/w3c/item.rb +12 -0
  549. data/lib/relaton/w3c/item_data.rb +6 -0
  550. data/lib/relaton/w3c/processor.rb +49 -0
  551. data/lib/relaton/w3c/pubid.rb +73 -0
  552. data/lib/relaton/w3c/safe_realize.rb +59 -0
  553. data/lib/relaton/w3c/util.rb +8 -0
  554. data/lib/relaton/w3c.rb +25 -0
  555. data/lib/relaton/xsf/bibdata.rb +8 -0
  556. data/lib/relaton/xsf/bibitem.rb +8 -0
  557. data/lib/relaton/xsf/bibliography.rb +24 -0
  558. data/lib/relaton/xsf/data_fetcher.rb +56 -0
  559. data/lib/relaton/xsf/hit.rb +17 -0
  560. data/lib/relaton/xsf/hit_collection.rb +24 -0
  561. data/lib/relaton/xsf/item.rb +7 -0
  562. data/lib/relaton/xsf/item_data.rb +6 -0
  563. data/lib/relaton/xsf/processor.rb +50 -0
  564. data/lib/relaton/xsf/util.rb +9 -0
  565. data/lib/relaton/xsf.rb +30 -0
  566. data/lib/relaton-core.rb +1 -0
  567. data/lib/relaton.rb +43 -0
  568. metadata +673 -170
  569. data/.github/workflows/rake.yml +0 -14
  570. data/.github/workflows/release.yml +0 -24
  571. data/.github/workflows/rubocop.yml +0 -48
  572. data/.gitignore +0 -12
  573. data/.rspec +0 -3
  574. data/CLAUDE.md +0 -78
  575. data/Gemfile +0 -29
  576. data/Rakefile +0 -6
  577. data/docs/CHANGELOG.adoc +0 -16
  578. data/docs/VERSIONING_POLICY.adoc +0 -38
  579. data/docs/navigation.adoc +0 -6
  580. data/lib/relaton/db/version.rb +0 -5
  581. data/relaton.gemspec +0 -72
  582. data/spec/relaton/config_spec.rb +0 -10
  583. data/spec/relaton/db_cache_spec.rb +0 -51
  584. data/spec/relaton/db_spec.rb +0 -567
  585. data/spec/relaton/registry_spec.rb +0 -178
  586. data/spec/relaton/util_spec.rb +0 -3
  587. data/spec/relaton_meta_spec.rb +0 -25
  588. data/spec/relaton_spec.rb +0 -800
  589. data/spec/spec_helper.rb +0 -45
  590. data/spec/support/gb_t_20223_2006.xml +0 -33
  591. data/spec/support/iso_111111119115_1.xml +0 -0
  592. data/spec/support/iso_19115_1.xml +0 -115
  593. data/spec/support/iso_19115_2.xml +0 -95
  594. data/spec/support/rfc_8341.xml +0 -46
  595. data/spec/vcr_cassetes/api_relaton_org.yml +0 -121
  596. data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +0 -140
  597. data/spec/vcr_cassetes/cc_dir_10005_2019.yml +0 -202
  598. data/spec/vcr_cassetes/cipm_meeting_43.yml +0 -1505
  599. data/spec/vcr_cassetes/gb_t_20223_2006.yml +0 -729
  600. data/spec/vcr_cassetes/iso_111111119115_1.yml +0 -12951
  601. data/spec/vcr_cassetes/iso_19115_1.yml +0 -17334
  602. data/spec/vcr_cassetes/iso_19115_1_2.yml +0 -322
  603. data/spec/vcr_cassetes/iso_19115_1_std.yml +0 -17334
  604. data/spec/vcr_cassetes/iso_19115_all_parts.yml +0 -185
  605. data/spec/vcr_cassetes/iso_19133_2005.yml +0 -144
  606. data/spec/vcr_cassetes/iso_combined_applied.yml +0 -318
  607. data/spec/vcr_cassetes/iso_combined_included.yml +0 -318
  608. data/spec/vcr_cassetes/ogc_19_025r1.yml +0 -374
  609. data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +0 -317
  610. data/spec/vcr_cassetes/rfc_8341.yml +0 -1278
@@ -1,567 +0,0 @@
1
- RSpec.describe Relaton::Db do
2
- before(:each) do |example|
3
- # Relaton::Db.instance_variable_set :@configuration, nil
4
- FileUtils.rm_rf %w[testcache testcache2]
5
-
6
- if example.metadata[:vcr]
7
- # Force to download index file
8
- require "relaton/index"
9
- allow_any_instance_of(Relaton::Index::Type)
10
- .to receive(:actual?).and_return(false)
11
- allow_any_instance_of(Relaton::Index::FileIO)
12
- .to receive(:check_file).and_return(nil)
13
- end
14
- end
15
-
16
- subject { Relaton::Db.new nil, nil }
17
-
18
- context "instance methods" do
19
- context "#search_edition_year" do
20
- it "create bibitem from YAML content" do
21
- h = { "docid" => [{ "id" => "ISO 123", type: "ISO",
22
- "primary" => true }] }
23
- item = subject.send :search_edition_year, "iso/item.yaml", h.to_yaml,
24
- nil, nil
25
- expect(item).to be_instance_of Relaton::Iso::ItemData
26
- end
27
- end
28
-
29
- context "#new_bib_entry" do
30
- let(:db) { double "db" }
31
- before do
32
- expect(db).to receive(:[]).with("ISO(ISO 123)").and_return "not_found"
33
- end
34
-
35
- it "warn if cached entry is not_found" do
36
- expect do
37
- expect(subject).to_not receive(:fetch_entry)
38
- entry = subject.send :new_bib_entry, "ISO 123", nil, {},
39
- :relaton_iso, db: db, id: "ISO(ISO 123)"
40
- expect(entry).to be_nil
41
- end.to output(
42
- "[relaton-db] INFO: (ISO 123) not found in cache, " \
43
- "if you wish to ignore cache please use " \
44
- "`no-cache` option.\n",
45
- ).to_stderr_from_any_process
46
- end
47
-
48
- it "ignore cache" do
49
- expect(subject).to receive(:fetch_entry).with(
50
- "ISO 123", nil, { no_cache: true }, :relaton_iso,
51
- db: db, id: "ISO(ISO 123)"
52
- ).and_return :entry
53
- entry = subject.send(
54
- :new_bib_entry, "ISO 123", nil, { no_cache: true },
55
- :relaton_iso, db: db, id: "ISO(ISO 123)"
56
- )
57
- expect(entry).to be :entry
58
- end
59
- end
60
-
61
- context "#combine_doc" do
62
- it "retrun nil for BIPM documents" do
63
- code = double "code"
64
- expect(code).not_to receive(:split)
65
- expect(subject.send(:combine_doc, code, nil, {},
66
- :relaton_bipm)).to be_nil
67
- end
68
- end
69
-
70
- context "#fetch_entry" do
71
- let(:db_cache) { double "db_cache" }
72
-
73
- before do
74
- expect(subject).to receive(:net_retry).with(
75
- "ISO 123", nil, {},
76
- kind_of(Relaton::Iso::Processor), 1
77
- ).and_return :bib
78
- end
79
-
80
- it "using cache" do
81
- expect(db_cache).to receive(:[]).with("ISO(ISO 123)")
82
- .and_return nil
83
- expect(db_cache).to receive(:[]=)
84
- .with("ISO(ISO 123)", :entry)
85
- expect(subject).to receive(:check_entry).with(
86
- :bib, :relaton_iso,
87
- db: db_cache, id: "ISO(ISO 123)"
88
- ).and_return :entry
89
- entry = subject.send :fetch_entry, "ISO 123", nil, {}, :relaton_iso,
90
- db: db_cache, id: "ISO(ISO 123)"
91
- expect(entry).to be :entry
92
- end
93
-
94
- it "DbCache is undefined" do
95
- expect(subject).to receive(:check_entry).with(:bib, :relaton_iso,
96
- **{}).and_return :entry
97
- entry = subject.send :fetch_entry, "ISO 123", nil, {}, :relaton_iso
98
- expect(entry).to be :entry
99
- end
100
-
101
- it "not using cache" do
102
- expect(subject).to receive(:bib_entry).with(:bib).and_return :entry
103
- expect(subject).to receive(:check_entry).with(
104
- :bib, :relaton_iso, db: db_cache, id: "ISO(ISO 123)", no_cache: true
105
- ).and_return :entry
106
- expect(db_cache).to receive(:[]).with("ISO(ISO 123)").and_return :entry
107
- entry = subject.send :fetch_entry, "ISO 123", nil, {}, :relaton_iso,
108
- db: db_cache, id: "ISO(ISO 123)", no_cache: true
109
- expect(entry).to be :entry
110
- end
111
- end
112
- end
113
-
114
- context "#pub_date_in_range?" do
115
- let(:xml_with_date) do
116
- <<~XML
117
- <bibitem id="ISO123">
118
- <title>Test</title>
119
- <date type="published"><on>2019-06-15</on></date>
120
- </bibitem>
121
- XML
122
- end
123
-
124
- let(:xml_year_only) do
125
- <<~XML
126
- <bibitem id="ISO123">
127
- <title>Test</title>
128
- <date type="published"><on>2019</on></date>
129
- </bibitem>
130
- XML
131
- end
132
-
133
- let(:xml_year_month) do
134
- <<~XML
135
- <bibitem id="ISO123">
136
- <title>Test</title>
137
- <date type="published"><on>2019-06</on></date>
138
- </bibitem>
139
- XML
140
- end
141
-
142
- let(:xml_no_date) do
143
- <<~XML
144
- <bibitem id="ISO123">
145
- <title>Test</title>
146
- </bibitem>
147
- XML
148
- end
149
-
150
- it "returns true when date is within range" do
151
- result = subject.send(
152
- :pub_date_in_range?, xml_with_date,
153
- publication_date_after: "2019-01-01",
154
- publication_date_before: "2020-01-01"
155
- )
156
- expect(result).to be true
157
- end
158
-
159
- it "returns false when date is before :publication_date_after" do
160
- result = subject.send(
161
- :pub_date_in_range?, xml_with_date,
162
- publication_date_after: "2020-01-01"
163
- )
164
- expect(result).to be false
165
- end
166
-
167
- it "returns false when date is on or after " \
168
- ":publication_date_before (exclusive)" do
169
- result = subject.send(
170
- :pub_date_in_range?, xml_with_date,
171
- publication_date_before: "2019-06-15"
172
- )
173
- expect(result).to be false
174
- end
175
-
176
- it "returns true when date equals :publication_date_after (inclusive)" do
177
- result = subject.send(
178
- :pub_date_in_range?, xml_with_date,
179
- publication_date_after: "2019-06-15"
180
- )
181
- expect(result).to be true
182
- end
183
-
184
- it "handles year-only dates" do
185
- result = subject.send(
186
- :pub_date_in_range?, xml_year_only,
187
- publication_date_after: "2018-01-01",
188
- publication_date_before: "2020-01-01"
189
- )
190
- expect(result).to be true
191
- end
192
-
193
- it "handles year-month dates" do
194
- result = subject.send(
195
- :pub_date_in_range?, xml_year_month,
196
- publication_date_after: "2019-05-01",
197
- publication_date_before: "2019-07-01"
198
- )
199
- expect(result).to be true
200
- end
201
-
202
- it "returns false when no published date exists" do
203
- result = subject.send(:pub_date_in_range?, xml_no_date,
204
- publication_date_after: "2019-01-01")
205
- expect(result).to be false
206
- end
207
-
208
- it "returns true with only :publication_date_after when date matches" do
209
- result = subject.send(:pub_date_in_range?, xml_with_date,
210
- publication_date_after: "2019-01-01")
211
- expect(result).to be true
212
- end
213
-
214
- it "returns true with only :publication_date_before when date matches" do
215
- result = subject.send(:pub_date_in_range?, xml_with_date,
216
- publication_date_before: "2020-01-01")
217
- expect(result).to be true
218
- end
219
- end
220
-
221
- context "#std_id with date options" do
222
- it "includes after suffix" do
223
- id, code = subject.send(
224
- :std_id, "ISO 19115-1", nil,
225
- { publication_date_after: "2018-01-01" }, :relaton_iso
226
- )
227
- expect(id).to eq "ISO(ISO 19115-1 after-2018-01-01)"
228
- expect(code).to eq "ISO 19115-1"
229
- end
230
-
231
- it "includes before suffix" do
232
- id, code = subject.send(
233
- :std_id, "ISO 19115-1", nil,
234
- { publication_date_before: "2020-12-31" }, :relaton_iso
235
- )
236
- expect(id).to eq "ISO(ISO 19115-1 before-2020-12-31)"
237
- expect(code).to eq "ISO 19115-1"
238
- end
239
-
240
- it "includes both after and before suffixes" do
241
- id, code = subject.send(
242
- :std_id, "ISO 19115-1", nil,
243
- { publication_date_after: "2018-01-01",
244
- publication_date_before: "2020-12-31" },
245
- :relaton_iso
246
- )
247
- expect(id).to eq(
248
- "ISO(ISO 19115-1 after-2018-01-01 before-2020-12-31)",
249
- )
250
- expect(code).to eq "ISO 19115-1"
251
- end
252
-
253
- it "does not change key without date options" do
254
- id, code = subject.send(:std_id, "ISO 19115-1", nil, {}, :relaton_iso)
255
- expect(id).to eq "ISO(ISO 19115-1)"
256
- expect(code).to eq "ISO 19115-1"
257
- end
258
-
259
- it "combines with year and all_parts" do
260
- id, = subject.send(
261
- :std_id, "ISO 19115-1", "2014",
262
- { all_parts: true,
263
- publication_date_after: "2014-01-01" },
264
- :relaton_iso
265
- )
266
- expect(id).to eq(
267
- "ISO(ISO 19115-1:2014 (all parts) after-2014-01-01)",
268
- )
269
- end
270
- end
271
-
272
- context "#check_bibliocache with date options" do
273
- let(:db) { Relaton::Db.new "testcache", nil }
274
-
275
- before(:each) do
276
- db.save_entry "ISO(ISO 123)", <<~XML
277
- <bibitem id="ISO123">
278
- <fetched>#{Date.today}</fetched>
279
- <title>Test</title>
280
- <date type="published"><on>2019-06-15</on></date>
281
- </bibitem>
282
- XML
283
- end
284
-
285
- after(:each) { db.clear }
286
-
287
- it "returns base cached entry when date matches" do
288
- item = db.send(
289
- :check_bibliocache, "ISO 123", nil,
290
- { publication_date_after: "2019-01-01",
291
- fetch_db: true }, :relaton_iso
292
- )
293
- expect(item).to be_instance_of(Relaton::Iso::ItemData)
294
- end
295
-
296
- it "does not return base cached entry when date does not match" do
297
- item = db.send(
298
- :check_bibliocache, "ISO 123", nil,
299
- { publication_date_after: "2020-01-01",
300
- fetch_db: true }, :relaton_iso
301
- )
302
- expect(item).to be_nil
303
- end
304
- end
305
-
306
- context "class methods" do
307
- it "::init_bib_caches" do
308
- expect(FileUtils).to receive(:rm_rf).with(/\/\.relaton\/cache$/)
309
- expect(FileUtils).to receive(:rm_rf).with(/testcache\/cache$/)
310
- expect(Relaton::Db).to receive(:new).with(/\/\.relaton\/cache$/,
311
- /testcache\/cache$/)
312
- Relaton::Db.init_bib_caches(global_cache: true, local_cache: "testcache",
313
- flush_caches: true)
314
- end
315
- end
316
-
317
- context "modifing database" do
318
- let(:db) { Relaton::Db.new "testcache", "testcache2" }
319
-
320
- before(:each) do
321
- db.save_entry "ISO(ISO 123)", "<bibitem id='ISO123></bibitem>"
322
- end
323
-
324
- context "move to new dir" do
325
- let(:db) { Relaton::Db.new "global_cache", "local_cache" }
326
-
327
- after(:each) do
328
- FileUtils.rm_rf "global_cache"
329
- FileUtils.rm_rf "local_cache"
330
- end
331
-
332
- it "global cache" do
333
- expect(File.exist?("global_cache")).to be true
334
- expect(db.mv("testcache")).to eq "testcache"
335
- expect(File.exist?("testcache")).to be true
336
- expect(File.exist?("global_cache")).to be false
337
- end
338
-
339
- it "local cache" do
340
- expect(File.exist?("local_cache")).to be true
341
- expect(db.mv("testcache2", type: :local)).to eq "testcache2"
342
- expect(File.exist?("testcache2")).to be true
343
- expect(File.exist?("local_cache")).to be false
344
- end
345
- end
346
-
347
- it "warn if moving in existed dir" do
348
- expect(File).to receive(:exist?).with("new_cache_dir").and_return true
349
- allow(File).to receive(:exist?).and_call_original
350
- expect do
351
- expect(db.mv("new_cache_dir")).to be_nil
352
- end.to output(
353
- /\[relaton-db\] INFO: target directory exists/,
354
- ).to_stderr_from_any_process
355
- end
356
-
357
- it "clear" do
358
- expect(File.exist?("testcache/iso")).to be true
359
- expect(File.exist?("testcache2/iso")).to be true
360
- db.clear
361
- expect(File.exist?("testcache/iso")).to be false
362
- expect(File.exist?("testcache2/iso")).to be false
363
- end
364
- end
365
-
366
- context "query in local DB" do
367
- let(:db) { Relaton::Db.new "testcache", "testcache2" }
368
-
369
- before(:each) do
370
- db.save_entry "ISO(ISO 123)", <<~DOC
371
- <bibitem id='ISO123'>
372
- <title>The first test</title><edition>2</edition><date type="published"><on>2011-10-12</on></date>
373
- </bibitem>
374
- DOC
375
- db.save_entry "IEC(IEC 123)", <<~DOC
376
- <bibitem id="IEC123">
377
- <title>The second test</title><edition>1</edition><date type="published"><on>2015-12</on></date>
378
- </bibitem>
379
- DOC
380
- end
381
-
382
- after(:each) { db.clear }
383
-
384
- it "one document" do
385
- item = db.fetch_db "ISO((ISO 124)"
386
- expect(item).to be_nil
387
- item = db.fetch_db "ISO(ISO 123)"
388
- expect(item).to be_instance_of Relaton::Iso::ItemData
389
- end
390
-
391
- it "all documents" do
392
- items = db.fetch_all
393
- expect(items.size).to be 2
394
- expect(items[0]).to be_instance_of Relaton::Iec::ItemData
395
- expect(items[1]).to be_instance_of Relaton::Iso::ItemData
396
- end
397
-
398
- context "search for text" do
399
- it do
400
- items = db.fetch_all "test"
401
- expect(items.size).to eq 2
402
- items = db.fetch_all "first"
403
- expect(items.size).to eq 1
404
- expect(items[0].id).to eq "ISO123"
405
- end
406
-
407
- it "with spaces in text" do
408
- items = db.fetch_all "first test"
409
- expect(items.size).to eq 1
410
- expect(items[0].id).to eq "ISO123"
411
- end
412
-
413
- it "in attributes" do
414
- items = db.fetch_all "123"
415
- expect(items.size).to eq 2
416
- items = db.fetch_all "ISO"
417
- expect(items.size).to eq 1
418
- expect(items[0].id).to eq "ISO123"
419
- end
420
-
421
- it "and fail" do
422
- items = db.fetch_all "bibitem"
423
- expect(items.size).to eq 0
424
- end
425
-
426
- it "and edition" do
427
- items = db.fetch_all "123", edition: "2"
428
- expect(items.size).to eq 1
429
- expect(items[0].id).to eq "ISO123"
430
- end
431
-
432
- it "and year" do
433
- items = db.fetch_all "123", year: 2015
434
- expect(items.size).to eq 1
435
- expect(items[0].id).to eq "IEC123"
436
- end
437
- end
438
- end
439
-
440
- it "returns docid type" do
441
- db = Relaton::Db.new "testcache", "testcache2"
442
- expect(db.docid_type("CN(GB/T 1.1)")).to eq ["Chinese Standard", "GB/T 1.1"]
443
- end
444
-
445
- context "#fetch" do
446
- it "doesn't use cache" do
447
- docid = Relaton::Bib::Docidentifier.new content: "ISO 19115-1",
448
- type: "ISO"
449
- item = Relaton::Iso::ItemData.new docid: [docid]
450
- expect(Relaton::Iso::Bibliography).to receive(:get)
451
- .with("ISO 19115-1", nil, {}).and_return item
452
- bib = subject.fetch("ISO 19115-1", nil, {})
453
- expect(bib).to be_instance_of Relaton::Iso::ItemData
454
- end
455
-
456
- it "when no local db" do
457
- docid = Relaton::Bib::Docidentifier.new(content: "ISO 19115-1",
458
- type: "ISO")
459
- item = Relaton::Iso::ItemData.new(docidentifier: [docid],
460
- fetched: Date.today.to_s)
461
- expect(Relaton::Iso::Bibliography).to receive(:get)
462
- .with("ISO 19115-1", nil, {}).and_return item
463
- db = Relaton::Db.new "testcache", nil
464
- bib = db.fetch("ISO 19115-1", nil, {})
465
- expect(bib).to be_instance_of Relaton::Iso::ItemData
466
- end
467
-
468
- it "document with net retries" do
469
- registry = subject.instance_variable_get(:@registry)
470
- expect(registry.processors[:relaton_ietf]).to receive(:get)
471
- .and_raise(Relaton::RequestError).exactly(3).times
472
- expect do
473
- subject.fetch "RFC 8341", nil, retries: 3
474
- end.to raise_error Relaton::RequestError
475
- end
476
-
477
- it "strip reference" do
478
- expect(subject).to receive(:combine_doc)
479
- .with("ISO 19115-1", nil, {}, :relaton_iso)
480
- .and_return :doc
481
- expect(subject.fetch(" ISO 19115-1 ", nil, {})).to be :doc
482
- end
483
-
484
- it "BIPM Meeting", vcr: "cipm_meeting_43" do
485
- bib = subject.fetch("CIPM Meeting 43")
486
- expect(bib).to be_instance_of Relaton::Bipm::ItemData
487
- end
488
- end
489
-
490
- it "fetch std" do
491
- docid = Relaton::Bib::Docidentifier.new(content: "ISO 19115-1", type: "ISO")
492
- item = Relaton::Iso::ItemData.new(docidentifier: [docid],
493
- fetched: Date.today.to_s)
494
- expect(Relaton::Iso::Bibliography).to receive(:get)
495
- .with("ISO 19115-1", nil, {}).and_return item
496
- db = Relaton::Db.new "testcache", nil
497
- bib = db.fetch_std("ISO 19115-1", nil, :relaton_iso, {})
498
- expect(bib).to be_instance_of Relaton::Iso::ItemData
499
- end
500
-
501
- context "async fetch" do
502
- let(:queue) { Queue.new }
503
-
504
- it "success" do
505
- refs = ["ITU-T G.993.5", "ITU-T G.994.1", "ITU-T H.264.1", "ITU-T H.740",
506
- "ITU-T Y.1911", "ITU-T Y.2012", "ITU-T Y.2206", "ITU-T O.172",
507
- "ITU-T G.780/Y.1351", "ITU-T G.711", "ITU-T G.1011"]
508
- results = []
509
- refs.each do |ref|
510
- expect(subject).to receive(:fetch).with(ref, nil, {}).and_return :result
511
- subject.fetch_async(ref) { |r| queue << [r, ref] }
512
- end
513
- Timeout.timeout(60) { refs.size.times { results << queue.pop } }
514
- results.each do |result|
515
- expect(result[0]).to be :result
516
- end
517
- end
518
-
519
- it "BIPM i18n" do
520
- refs = ["CGPM -- Resolution (1889)", "CGPM -- Résolution (1889)",
521
- "CGPM -- Réunion 9 (1948)", "CGPM -- Meeting 9 (1948)"]
522
- results = []
523
- refs.each do |ref|
524
- expect(subject).to receive(:fetch).with(ref, nil, {}).and_return :result
525
- subject.fetch_async(ref) { |r| queue << [r, ref] }
526
- end
527
- Timeout.timeout(60) { refs.size.times { results << queue.pop } }
528
- results.each do |result|
529
- expect(result[0]).to be :result
530
- end
531
- end
532
-
533
- it "prefix not found", vcr: "rfc_unsuccess" do
534
- result = ""
535
- subject.fetch_async("ABC 123456") { |r| queue << r }
536
- Timeout.timeout(5) { result = queue.pop }
537
- expect(result).to be_nil
538
- end
539
-
540
- it "handle HTTP request error" do
541
- expect(subject).to receive(:fetch).and_raise Relaton::RequestError
542
- subject.fetch_async("ISO REF") { |r| queue << r }
543
- result = Timeout.timeout(5) { queue.pop }
544
- expect(result).to be_instance_of Relaton::RequestError
545
- end
546
-
547
- it "handle other errors" do
548
- expect(subject).to receive(:fetch).and_raise Errno::EACCES
549
- log_io = Relaton.logger_pool[:default].instance_variable_get(:@logdev)
550
- expect(log_io).to receive(:write).with(
551
- "[relaton-db] ERROR: `ISO REF` -- Permission denied\n",
552
- )
553
- subject.fetch_async("ISO REF") { |r| queue << r }
554
- result = Timeout.timeout(5) { queue.pop }
555
- expect(result).to be_nil
556
- end
557
-
558
- it "use threads number from RELATON_FETCH_PARALLEL" do
559
- expect(ENV).to receive(:[]).with("RELATON_FETCH_PARALLEL").and_return(1)
560
- allow(ENV).to receive(:[]).and_call_original
561
- expect(Relaton::Db::WorkersPool).to receive(:new).with(1).and_call_original
562
- expect(subject).to receive(:fetch).with("ITU-T G.993.5", nil, {})
563
- subject.fetch_async("ITU-T G.993.5") { |r| queue << r }
564
- Timeout.timeout(50) { queue.pop }
565
- end
566
- end
567
- end