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.
Files changed (702) hide show
  1. checksums.yaml +4 -4
  2. data/{docs/README.adoc → README.adoc} +165 -38
  3. data/bin/console +0 -1
  4. data/lib/relaton/3gpp/bibdata.rb +9 -0
  5. data/lib/relaton/3gpp/bibitem.rb +9 -0
  6. data/lib/relaton/3gpp/bibliography.rb +123 -0
  7. data/lib/relaton/3gpp/data_fetcher.rb +303 -0
  8. data/lib/relaton/3gpp/docidentifier.rb +114 -0
  9. data/lib/relaton/3gpp/doctype.rb +9 -0
  10. data/lib/relaton/3gpp/ext.rb +31 -0
  11. data/lib/relaton/3gpp/item.rb +18 -0
  12. data/lib/relaton/3gpp/item_data.rb +15 -0
  13. data/lib/relaton/3gpp/parser.rb +400 -0
  14. data/lib/relaton/3gpp/processor.rb +71 -0
  15. data/lib/relaton/3gpp/release.rb +34 -0
  16. data/lib/relaton/3gpp/util.rb +8 -0
  17. data/lib/relaton/3gpp.rb +29 -0
  18. data/lib/relaton/adobe/bibdata.rb +8 -0
  19. data/lib/relaton/adobe/bibitem.rb +8 -0
  20. data/lib/relaton/adobe/bibliography.rb +92 -0
  21. data/lib/relaton/adobe/docidentifier.rb +49 -0
  22. data/lib/relaton/adobe/doctype.rb +14 -0
  23. data/lib/relaton/adobe/ext.rb +32 -0
  24. data/lib/relaton/adobe/item.rb +15 -0
  25. data/lib/relaton/adobe/item_base.rb +18 -0
  26. data/lib/relaton/adobe/item_data.rb +6 -0
  27. data/lib/relaton/adobe/processor.rb +45 -0
  28. data/lib/relaton/adobe/util.rb +8 -0
  29. data/lib/relaton/adobe.rb +37 -0
  30. data/lib/relaton/bib/converter/asciibib/to_asciibib.rb +663 -0
  31. data/lib/relaton/bib/converter/asciibib.rb +13 -0
  32. data/lib/relaton/bib/converter/bibtex/from_bibtex.rb +245 -0
  33. data/lib/relaton/bib/converter/bibtex/to_bibtex.rb +341 -0
  34. data/lib/relaton/bib/converter/bibtex.rb +23 -0
  35. data/lib/relaton/bib/converter/bibxml/from_rfcxml.rb +386 -0
  36. data/lib/relaton/bib/converter/bibxml/from_rfcxml_referencegroup.rb +71 -0
  37. data/lib/relaton/bib/converter/bibxml/to_rfcxml.rb +308 -0
  38. data/lib/relaton/bib/converter/bibxml/to_rfcxml_referencegroup.rb +52 -0
  39. data/lib/relaton/bib/converter/bibxml.rb +51 -0
  40. data/lib/relaton/bib/hash_parser_v1.rb +767 -0
  41. data/lib/relaton/bib/item_data.rb +229 -0
  42. data/lib/relaton/bib/model/abstract.rb +16 -0
  43. data/lib/relaton/bib/model/address.rb +22 -0
  44. data/lib/relaton/bib/model/affiliation.rb +16 -0
  45. data/lib/relaton/bib/model/bibdata.rb +11 -0
  46. data/lib/relaton/bib/model/bibdata_shared.rb +12 -0
  47. data/lib/relaton/bib/model/bibitem.rb +11 -0
  48. data/lib/relaton/bib/model/bibitem_shared.rb +12 -0
  49. data/lib/relaton/bib/model/contact.rb +18 -0
  50. data/lib/relaton/bib/model/contribution_info.rb +15 -0
  51. data/lib/relaton/bib/model/contributor.rb +29 -0
  52. data/lib/relaton/bib/model/copyright.rb +27 -0
  53. data/lib/relaton/bib/model/date.rb +31 -0
  54. data/lib/relaton/bib/model/depiction.rb +16 -0
  55. data/lib/relaton/bib/model/docidentifier.rb +49 -0
  56. data/lib/relaton/bib/model/doctype.rb +14 -0
  57. data/lib/relaton/bib/model/edition.rb +14 -0
  58. data/lib/relaton/bib/model/ext.rb +39 -0
  59. data/lib/relaton/bib/model/extent.rb +16 -0
  60. data/lib/relaton/bib/model/formattedref.rb +43 -0
  61. data/lib/relaton/bib/model/full_name_type.rb +64 -0
  62. data/lib/relaton/bib/model/fullname.rb +11 -0
  63. data/lib/relaton/bib/model/ics.rb +49 -0
  64. data/lib/relaton/bib/model/image.rb +28 -0
  65. data/lib/relaton/bib/model/item.rb +96 -0
  66. data/lib/relaton/bib/model/item_base.rb +20 -0
  67. data/lib/relaton/bib/model/item_shared.rb +88 -0
  68. data/lib/relaton/bib/model/keyword.rb +30 -0
  69. data/lib/relaton/bib/model/locality.rb +18 -0
  70. data/lib/relaton/bib/model/locality_stack.rb +14 -0
  71. data/lib/relaton/bib/model/localized_string.rb +48 -0
  72. data/lib/relaton/bib/model/localized_string_attrs.rb +24 -0
  73. data/lib/relaton/bib/model/logo.rb +14 -0
  74. data/lib/relaton/bib/model/medium.rb +22 -0
  75. data/lib/relaton/bib/model/note.rb +16 -0
  76. data/lib/relaton/bib/model/organization.rb +13 -0
  77. data/lib/relaton/bib/model/organization_type.rb +42 -0
  78. data/lib/relaton/bib/model/person.rb +36 -0
  79. data/lib/relaton/bib/model/phone.rb +14 -0
  80. data/lib/relaton/bib/model/place.rb +33 -0
  81. data/lib/relaton/bib/model/price.rb +14 -0
  82. data/lib/relaton/bib/model/relation.rb +43 -0
  83. data/lib/relaton/bib/model/series.rb +34 -0
  84. data/lib/relaton/bib/model/size.rb +23 -0
  85. data/lib/relaton/bib/model/source_locality_stack.rb +14 -0
  86. data/lib/relaton/bib/model/status.rb +27 -0
  87. data/lib/relaton/bib/model/structured_identifier.rb +49 -0
  88. data/lib/relaton/bib/model/subdivision.rb +16 -0
  89. data/lib/relaton/bib/model/title.rb +56 -0
  90. data/lib/relaton/bib/model/type/plain_date.rb +16 -0
  91. data/lib/relaton/bib/model/type/string_date.rb +48 -0
  92. data/lib/relaton/bib/model/uri.rb +18 -0
  93. data/lib/relaton/bib/model/validity.rb +16 -0
  94. data/lib/relaton/bib/model/version.rb +43 -0
  95. data/lib/relaton/bib/namespace_helper.rb +21 -0
  96. data/lib/relaton/bib/sanitizer.rb +264 -0
  97. data/lib/relaton/bib/util.rb +18 -0
  98. data/lib/relaton/bib/versions.json +35 -0
  99. data/lib/relaton/bib.rb +46 -0
  100. data/lib/relaton/bipm/bibliography.rb +231 -0
  101. data/lib/relaton/bipm/converter/asciibib.rb +64 -0
  102. data/lib/relaton/bipm/data_fetcher.rb +81 -0
  103. data/lib/relaton/bipm/data_outcomes_parser.rb +656 -0
  104. data/lib/relaton/bipm/id_parser.rb +278 -0
  105. data/lib/relaton/bipm/item_data.rb +47 -0
  106. data/lib/relaton/bipm/model/bibdata.rb +9 -0
  107. data/lib/relaton/bipm/model/bibitem.rb +9 -0
  108. data/lib/relaton/bipm/model/comment_period.rb +13 -0
  109. data/lib/relaton/bipm/model/doctype.rb +12 -0
  110. data/lib/relaton/bipm/model/ext.rb +38 -0
  111. data/lib/relaton/bipm/model/item.rb +11 -0
  112. data/lib/relaton/bipm/model/structured_identifier.rb +36 -0
  113. data/lib/relaton/bipm/processor.rb +69 -0
  114. data/lib/relaton/bipm/rawdata_bipm_metrologia/affiliations.rb +111 -0
  115. data/lib/relaton/bipm/rawdata_bipm_metrologia/fetcher.rb +172 -0
  116. data/lib/relaton/bipm/rawdata_bipm_metrologia/niso_jats_parser.rb +353 -0
  117. data/lib/relaton/bipm/si_brochure_parser.rb +188 -0
  118. data/lib/relaton/bipm/util.rb +8 -0
  119. data/lib/relaton/bipm.rb +38 -0
  120. data/lib/relaton/bsi/bibliography.rb +196 -0
  121. data/lib/relaton/bsi/hit.rb +28 -0
  122. data/lib/relaton/bsi/hit_collection.rb +113 -0
  123. data/lib/relaton/bsi/item_data.rb +13 -0
  124. data/lib/relaton/bsi/model/bibdata.rb +8 -0
  125. data/lib/relaton/bsi/model/bibitem.rb +8 -0
  126. data/lib/relaton/bsi/model/docidentifier.rb +107 -0
  127. data/lib/relaton/bsi/model/doctype.rb +14 -0
  128. data/lib/relaton/bsi/model/ext.rb +17 -0
  129. data/lib/relaton/bsi/model/item.rb +17 -0
  130. data/lib/relaton/bsi/model/item_base.rb +22 -0
  131. data/lib/relaton/bsi/model/relation.rb +9 -0
  132. data/lib/relaton/bsi/processor.rb +43 -0
  133. data/lib/relaton/bsi/schema.json +24882 -0
  134. data/lib/relaton/bsi/scraper.rb +288 -0
  135. data/lib/relaton/bsi/util.rb +8 -0
  136. data/lib/relaton/bsi.rb +25 -0
  137. data/lib/relaton/calconnect/bibliography.rb +93 -0
  138. data/lib/relaton/calconnect/data_fetcher.rb +174 -0
  139. data/lib/relaton/calconnect/docidentifier.rb +80 -0
  140. data/lib/relaton/calconnect/hit.rb +14 -0
  141. data/lib/relaton/calconnect/hit_collection.rb +92 -0
  142. data/lib/relaton/calconnect/item_data.rb +12 -0
  143. data/lib/relaton/calconnect/model/bibdata.rb +8 -0
  144. data/lib/relaton/calconnect/model/bibitem.rb +8 -0
  145. data/lib/relaton/calconnect/model/doctype.rb +11 -0
  146. data/lib/relaton/calconnect/model/ext.rb +11 -0
  147. data/lib/relaton/calconnect/model/item.rb +20 -0
  148. data/lib/relaton/calconnect/processor.rb +72 -0
  149. data/lib/relaton/calconnect/scraper.rb +87 -0
  150. data/lib/relaton/calconnect/util.rb +8 -0
  151. data/lib/relaton/calconnect.rb +36 -0
  152. data/lib/relaton/ccsds/bibliography.rb +63 -0
  153. data/lib/relaton/ccsds/data/fetcher.rb +252 -0
  154. data/lib/relaton/ccsds/data/iso_references.rb +30 -0
  155. data/lib/relaton/ccsds/data/parser.rb +194 -0
  156. data/lib/relaton/ccsds/hit.rb +24 -0
  157. data/lib/relaton/ccsds/hit_collection.rb +47 -0
  158. data/lib/relaton/ccsds/item_data.rb +9 -0
  159. data/lib/relaton/ccsds/model/bibdata.rb +8 -0
  160. data/lib/relaton/ccsds/model/bibitem.rb +8 -0
  161. data/lib/relaton/ccsds/model/docidentifier.rb +121 -0
  162. data/lib/relaton/ccsds/model/doctype.rb +9 -0
  163. data/lib/relaton/ccsds/model/ext.rb +19 -0
  164. data/lib/relaton/ccsds/model/item.rb +15 -0
  165. data/lib/relaton/ccsds/processor.rb +68 -0
  166. data/lib/relaton/ccsds/util.rb +10 -0
  167. data/lib/relaton/ccsds.rb +33 -0
  168. data/lib/relaton/cen/bibliography.rb +149 -0
  169. data/lib/relaton/cen/committees.yaml +66 -0
  170. data/lib/relaton/cen/hit.rb +31 -0
  171. data/lib/relaton/cen/hit_collection.rb +116 -0
  172. data/lib/relaton/cen/item_data.rb +7 -0
  173. data/lib/relaton/cen/model/bibdata.rb +8 -0
  174. data/lib/relaton/cen/model/bibitem.rb +8 -0
  175. data/lib/relaton/cen/model/docidentifier.rb +100 -0
  176. data/lib/relaton/cen/model/ext.rb +11 -0
  177. data/lib/relaton/cen/model/item.rb +14 -0
  178. data/lib/relaton/cen/model/structured_identifier.rb +9 -0
  179. data/lib/relaton/cen/processor.rb +45 -0
  180. data/lib/relaton/cen/scraper.rb +218 -0
  181. data/lib/relaton/cen/util.rb +8 -0
  182. data/lib/relaton/cen.rb +30 -0
  183. data/lib/relaton/cie/bibdata.rb +8 -0
  184. data/lib/relaton/cie/bibitem.rb +8 -0
  185. data/lib/relaton/cie/bibliography.rb +31 -0
  186. data/lib/relaton/cie/data_fetcher.rb +540 -0
  187. data/lib/relaton/cie/ext.rb +7 -0
  188. data/lib/relaton/cie/item.rb +11 -0
  189. data/lib/relaton/cie/item_data.rb +6 -0
  190. data/lib/relaton/cie/processor.rb +68 -0
  191. data/lib/relaton/cie/scrapper.rb +52 -0
  192. data/lib/relaton/cie/util.rb +8 -0
  193. data/lib/relaton/cie.rb +29 -0
  194. data/lib/relaton/core/array_wrapper.rb +20 -0
  195. data/lib/relaton/core/data_fetcher.rb +244 -0
  196. data/lib/relaton/core/date_parser.rb +42 -0
  197. data/lib/relaton/core/governor.rb +320 -0
  198. data/lib/relaton/core/hash_keys_sybolizer.rb +19 -0
  199. data/lib/relaton/core/hit.rb +49 -0
  200. data/lib/relaton/core/hit_collection.rb +118 -0
  201. data/lib/relaton/core/pacer.rb +134 -0
  202. data/lib/relaton/core/processor.rb +67 -0
  203. data/lib/relaton/core/request_error.rb +14 -0
  204. data/lib/relaton/core/workers_pool.rb +45 -0
  205. data/lib/relaton/core.rb +12 -0
  206. data/lib/relaton/db/registry.rb +44 -4
  207. data/lib/relaton/db.rb +0 -1
  208. data/lib/relaton/doi/crossref.rb +89 -0
  209. data/lib/relaton/doi/parser.rb +921 -0
  210. data/lib/relaton/doi/processor.rb +65 -0
  211. data/lib/relaton/doi/util.rb +8 -0
  212. data/lib/relaton/doi.rb +20 -0
  213. data/lib/relaton/easc/bibdata.rb +8 -0
  214. data/lib/relaton/easc/bibitem.rb +8 -0
  215. data/lib/relaton/easc/bibliography.rb +95 -0
  216. data/lib/relaton/easc/docidentifier.rb +100 -0
  217. data/lib/relaton/easc/doctype.rb +14 -0
  218. data/lib/relaton/easc/ext.rb +44 -0
  219. data/lib/relaton/easc/item.rb +13 -0
  220. data/lib/relaton/easc/item_base.rb +18 -0
  221. data/lib/relaton/easc/item_data.rb +6 -0
  222. data/lib/relaton/easc/processor.rb +46 -0
  223. data/lib/relaton/easc/util.rb +8 -0
  224. data/lib/relaton/easc.rb +35 -0
  225. data/lib/relaton/ecma/bibdata.rb +8 -0
  226. data/lib/relaton/ecma/bibitem.rb +8 -0
  227. data/lib/relaton/ecma/bibliography.rb +149 -0
  228. data/lib/relaton/ecma/data_fetcher.rb +162 -0
  229. data/lib/relaton/ecma/data_parser.rb +49 -0
  230. data/lib/relaton/ecma/docidentifier.rb +124 -0
  231. data/lib/relaton/ecma/edition_parser.rb +80 -0
  232. data/lib/relaton/ecma/ext.rb +7 -0
  233. data/lib/relaton/ecma/item.rb +13 -0
  234. data/lib/relaton/ecma/item_data.rb +6 -0
  235. data/lib/relaton/ecma/memento_parser.rb +60 -0
  236. data/lib/relaton/ecma/page_fetcher.rb +39 -0
  237. data/lib/relaton/ecma/parser_common.rb +33 -0
  238. data/lib/relaton/ecma/processor.rb +69 -0
  239. data/lib/relaton/ecma/standard_parser.rb +134 -0
  240. data/lib/relaton/ecma/util.rb +8 -0
  241. data/lib/relaton/ecma.rb +33 -0
  242. data/lib/relaton/etsi/bibdata.rb +10 -0
  243. data/lib/relaton/etsi/bibitem.rb +10 -0
  244. data/lib/relaton/etsi/bibliography.rb +111 -0
  245. data/lib/relaton/etsi/data_fetcher.rb +167 -0
  246. data/lib/relaton/etsi/data_parser.rb +208 -0
  247. data/lib/relaton/etsi/doctype.rb +30 -0
  248. data/lib/relaton/etsi/ext.rb +31 -0
  249. data/lib/relaton/etsi/item.rb +15 -0
  250. data/lib/relaton/etsi/item_data.rb +6 -0
  251. data/lib/relaton/etsi/processor.rb +71 -0
  252. data/lib/relaton/etsi/pubid.rb +37 -0
  253. data/lib/relaton/etsi/status.rb +13 -0
  254. data/lib/relaton/etsi/util.rb +8 -0
  255. data/lib/relaton/etsi.rb +26 -0
  256. data/lib/relaton/gb/bibdata.rb +8 -0
  257. data/lib/relaton/gb/bibitem.rb +8 -0
  258. data/lib/relaton/gb/bibliography.rb +171 -0
  259. data/lib/relaton/gb/ccs.rb +14 -0
  260. data/lib/relaton/gb/committee.rb +13 -0
  261. data/lib/relaton/gb/docidentifier.rb +72 -0
  262. data/lib/relaton/gb/doctype.rb +9 -0
  263. data/lib/relaton/gb/ext.rb +36 -0
  264. data/lib/relaton/gb/gb_scraper.rb +61 -0
  265. data/lib/relaton/gb/gb_type.rb +20 -0
  266. data/lib/relaton/gb/hit.rb +48 -0
  267. data/lib/relaton/gb/hit_collection.rb +19 -0
  268. data/lib/relaton/gb/item.rb +13 -0
  269. data/lib/relaton/gb/item_data.rb +6 -0
  270. data/lib/relaton/gb/processor.rb +49 -0
  271. data/lib/relaton/gb/project_number.rb +38 -0
  272. data/lib/relaton/gb/scraper.rb +221 -0
  273. data/lib/relaton/gb/sec_scraper.rb +92 -0
  274. data/lib/relaton/gb/stage_name.rb +13 -0
  275. data/lib/relaton/gb/structured_identifier.rb +26 -0
  276. data/lib/relaton/gb/t_scraper.rb +126 -0
  277. data/lib/relaton/gb/util.rb +8 -0
  278. data/lib/relaton/gb/yaml/prefixes.yaml +200 -0
  279. data/lib/relaton/gb.rb +33 -0
  280. data/lib/relaton/gost/bibdata.rb +8 -0
  281. data/lib/relaton/gost/bibitem.rb +8 -0
  282. data/lib/relaton/gost/bibliography.rb +107 -0
  283. data/lib/relaton/gost/docidentifier.rb +80 -0
  284. data/lib/relaton/gost/doctype.rb +16 -0
  285. data/lib/relaton/gost/ext.rb +46 -0
  286. data/lib/relaton/gost/item.rb +15 -0
  287. data/lib/relaton/gost/item_base.rb +18 -0
  288. data/lib/relaton/gost/item_data.rb +6 -0
  289. data/lib/relaton/gost/processor.rb +49 -0
  290. data/lib/relaton/gost/util.rb +8 -0
  291. data/lib/relaton/gost.rb +36 -0
  292. data/lib/relaton/iala/bibdata.rb +8 -0
  293. data/lib/relaton/iala/bibitem.rb +8 -0
  294. data/lib/relaton/iala/bibliography.rb +146 -0
  295. data/lib/relaton/iala/docidentifier.rb +89 -0
  296. data/lib/relaton/iala/doctype.rb +18 -0
  297. data/lib/relaton/iala/ext.rb +32 -0
  298. data/lib/relaton/iala/item.rb +21 -0
  299. data/lib/relaton/iala/item_base.rb +18 -0
  300. data/lib/relaton/iala/item_data.rb +6 -0
  301. data/lib/relaton/iala/processor.rb +43 -0
  302. data/lib/relaton/iala/relation.rb +7 -0
  303. data/lib/relaton/iala/util.rb +8 -0
  304. data/lib/relaton/iala.rb +35 -0
  305. data/lib/relaton/iana/bibdata.rb +8 -0
  306. data/lib/relaton/iana/bibitem.rb +8 -0
  307. data/lib/relaton/iana/bibliography.rb +100 -0
  308. data/lib/relaton/iana/data_fetcher.rb +101 -0
  309. data/lib/relaton/iana/item.rb +7 -0
  310. data/lib/relaton/iana/item_data.rb +6 -0
  311. data/lib/relaton/iana/parser.rb +146 -0
  312. data/lib/relaton/iana/processor.rb +70 -0
  313. data/lib/relaton/iana/util.rb +8 -0
  314. data/lib/relaton/iana.rb +40 -0
  315. data/lib/relaton/iec/bibliography.rb +283 -0
  316. data/lib/relaton/iec/data_fetcher.rb +222 -0
  317. data/lib/relaton/iec/data_parser.rb +391 -0
  318. data/lib/relaton/iec/hit.rb +26 -0
  319. data/lib/relaton/iec/hit_collection.rb +138 -0
  320. data/lib/relaton/iec/item_data.rb +7 -0
  321. data/lib/relaton/iec/model/bibdata.rb +8 -0
  322. data/lib/relaton/iec/model/bibitem.rb +8 -0
  323. data/lib/relaton/iec/model/docidentifier.rb +135 -0
  324. data/lib/relaton/iec/model/doctype.rb +12 -0
  325. data/lib/relaton/iec/model/ext.rb +53 -0
  326. data/lib/relaton/iec/model/item.rb +20 -0
  327. data/lib/relaton/iec/model/item_base.rb +12 -0
  328. data/lib/relaton/iec/model/relation.rb +7 -0
  329. data/lib/relaton/iec/model/stage_name.rb +13 -0
  330. data/lib/relaton/iec/processor.rb +74 -0
  331. data/lib/relaton/iec/statuses.yml +199 -0
  332. data/lib/relaton/iec/util.rb +8 -0
  333. data/lib/relaton/iec.rb +98 -0
  334. data/lib/relaton/ieee/balloting_group.rb +13 -0
  335. data/lib/relaton/ieee/bibdata.rb +8 -0
  336. data/lib/relaton/ieee/bibitem.rb +8 -0
  337. data/lib/relaton/ieee/bibliography.rb +73 -0
  338. data/lib/relaton/ieee/converter/bibxml/from_rfcxml.rb +10 -0
  339. data/lib/relaton/ieee/converter/bibxml/from_rfcxml_referencegroup.rb +10 -0
  340. data/lib/relaton/ieee/converter/bibxml.rb +20 -0
  341. data/lib/relaton/ieee/data_fetcher.rb +771 -0
  342. data/lib/relaton/ieee/doctype.rb +9 -0
  343. data/lib/relaton/ieee/editorial_group.rb +19 -0
  344. data/lib/relaton/ieee/ext.rb +36 -0
  345. data/lib/relaton/ieee/idams_parser.rb +330 -0
  346. data/lib/relaton/ieee/item.rb +11 -0
  347. data/lib/relaton/ieee/item_data.rb +7 -0
  348. data/lib/relaton/ieee/processor.rb +71 -0
  349. data/lib/relaton/ieee/rawbib_id_parser.rb +753 -0
  350. data/lib/relaton/ieee/util.rb +8 -0
  351. data/lib/relaton/ieee.rb +30 -0
  352. data/lib/relaton/ietf/bibdata.rb +8 -0
  353. data/lib/relaton/ietf/bibitem.rb +8 -0
  354. data/lib/relaton/ietf/bibliography.rb +35 -0
  355. data/lib/relaton/ietf/bibxml_parser.rb +232 -0
  356. data/lib/relaton/ietf/data_fetcher.rb +561 -0
  357. data/lib/relaton/ietf/doctype.rb +9 -0
  358. data/lib/relaton/ietf/ext.rb +63 -0
  359. data/lib/relaton/ietf/item.rb +16 -0
  360. data/lib/relaton/ietf/item_base.rb +18 -0
  361. data/lib/relaton/ietf/item_data.rb +6 -0
  362. data/lib/relaton/ietf/processing_instructions.rb +79 -0
  363. data/lib/relaton/ietf/processor.rb +72 -0
  364. data/lib/relaton/ietf/relation.rb +9 -0
  365. data/lib/relaton/ietf/rfc/abstract.rb +19 -0
  366. data/lib/relaton/ietf/rfc/author.rb +21 -0
  367. data/lib/relaton/ietf/rfc/entry.rb +446 -0
  368. data/lib/relaton/ietf/rfc/entry_date.rb +21 -0
  369. data/lib/relaton/ietf/rfc/format.rb +19 -0
  370. data/lib/relaton/ietf/rfc/index.rb +46 -0
  371. data/lib/relaton/ietf/rfc/is_also.rb +21 -0
  372. data/lib/relaton/ietf/rfc/keywords.rb +19 -0
  373. data/lib/relaton/ietf/rfc/rfc_index_namespace.rb +11 -0
  374. data/lib/relaton/ietf/scraper.rb +101 -0
  375. data/lib/relaton/ietf/util.rb +8 -0
  376. data/lib/relaton/ietf/wg_name_resolver.rb +42 -0
  377. data/lib/relaton/ietf.rb +30 -0
  378. data/lib/relaton/iho/bibdata.rb +8 -0
  379. data/lib/relaton/iho/bibitem.rb +8 -0
  380. data/lib/relaton/iho/bibliography.rb +114 -0
  381. data/lib/relaton/iho/comment_period.rb +13 -0
  382. data/lib/relaton/iho/docidentifier.rb +31 -0
  383. data/lib/relaton/iho/doctype.rb +10 -0
  384. data/lib/relaton/iho/ext.rb +20 -0
  385. data/lib/relaton/iho/hash_parser_v1.rb +144 -0
  386. data/lib/relaton/iho/item.rb +20 -0
  387. data/lib/relaton/iho/item_base.rb +18 -0
  388. data/lib/relaton/iho/item_data.rb +6 -0
  389. data/lib/relaton/iho/processor.rb +54 -0
  390. data/lib/relaton/iho/relation.rb +9 -0
  391. data/lib/relaton/iho/structured_identifier.rb +20 -0
  392. data/lib/relaton/iho/util.rb +8 -0
  393. data/lib/relaton/iho.rb +27 -0
  394. data/lib/relaton/index/config.rb +52 -0
  395. data/lib/relaton/index/file_io.rb +305 -0
  396. data/lib/relaton/index/file_storage.rb +66 -0
  397. data/lib/relaton/index/pool.rb +46 -0
  398. data/lib/relaton/index/shard_source.rb +201 -0
  399. data/lib/relaton/index/type.rb +210 -0
  400. data/lib/relaton/index/util.rb +18 -0
  401. data/lib/relaton/index.rb +61 -0
  402. data/lib/relaton/isbn/isbn.rb +61 -0
  403. data/lib/relaton/isbn/open_library.rb +43 -0
  404. data/lib/relaton/isbn/parser.rb +88 -0
  405. data/lib/relaton/isbn/processor.rb +48 -0
  406. data/lib/relaton/isbn/util.rb +8 -0
  407. data/lib/relaton/isbn.rb +19 -0
  408. data/lib/relaton/iso/bibliography.rb +412 -0
  409. data/lib/relaton/iso/data_fetcher.rb +338 -0
  410. data/lib/relaton/iso/data_parser.rb +458 -0
  411. data/lib/relaton/iso/hash_parser_v1.rb +177 -0
  412. data/lib/relaton/iso/hit.rb +57 -0
  413. data/lib/relaton/iso/hit_collection.rb +196 -0
  414. data/lib/relaton/iso/item_data.rb +50 -0
  415. data/lib/relaton/iso/model/bibdata.rb +10 -0
  416. data/lib/relaton/iso/model/bibitem.rb +8 -0
  417. data/lib/relaton/iso/model/contributor.rb +6 -0
  418. data/lib/relaton/iso/model/contributor_info.rb +9 -0
  419. data/lib/relaton/iso/model/docidentifier.rb +146 -0
  420. data/lib/relaton/iso/model/doctype.rb +13 -0
  421. data/lib/relaton/iso/model/ext.rb +35 -0
  422. data/lib/relaton/iso/model/item.rb +17 -0
  423. data/lib/relaton/iso/model/item_base.rb +22 -0
  424. data/lib/relaton/iso/model/organization.rb +9 -0
  425. data/lib/relaton/iso/model/project_number.rb +22 -0
  426. data/lib/relaton/iso/model/relation.rb +9 -0
  427. data/lib/relaton/iso/model/stagename.rb +14 -0
  428. data/lib/relaton/iso/model/structured_identifier.rb +31 -0
  429. data/lib/relaton/iso/processor.rb +85 -0
  430. data/lib/relaton/iso/scraper.rb +635 -0
  431. data/lib/relaton/iso/type/pubid.rb +50 -0
  432. data/lib/relaton/iso/util.rb +8 -0
  433. data/lib/relaton/iso.rb +30 -0
  434. data/lib/relaton/itu/bibliography.rb +95 -0
  435. data/lib/relaton/itu/data_crawler_r.rb +664 -0
  436. data/lib/relaton/itu/data_fetcher.rb +550 -0
  437. data/lib/relaton/itu/data_merge_r.rb +149 -0
  438. data/lib/relaton/itu/data_parser_r.rb +214 -0
  439. data/lib/relaton/itu/data_parser_t.rb +228 -0
  440. data/lib/relaton/itu/family_cache.rb +177 -0
  441. data/lib/relaton/itu/governor.rb +56 -0
  442. data/lib/relaton/itu/hit.rb +28 -0
  443. data/lib/relaton/itu/hit_collection.rb +299 -0
  444. data/lib/relaton/itu/item_data.rb +6 -0
  445. data/lib/relaton/itu/model/approval_stage.rb +13 -0
  446. data/lib/relaton/itu/model/bibdata.rb +8 -0
  447. data/lib/relaton/itu/model/bibitem.rb +8 -0
  448. data/lib/relaton/itu/model/docidentifier.rb +75 -0
  449. data/lib/relaton/itu/model/doctype.rb +13 -0
  450. data/lib/relaton/itu/model/ext.rb +47 -0
  451. data/lib/relaton/itu/model/item.rb +13 -0
  452. data/lib/relaton/itu/model/meeting.rb +13 -0
  453. data/lib/relaton/itu/model/meeting_date.rb +15 -0
  454. data/lib/relaton/itu/model/question.rb +13 -0
  455. data/lib/relaton/itu/model/recommendation_status.rb +11 -0
  456. data/lib/relaton/itu/model/structured_identifier.rb +38 -0
  457. data/lib/relaton/itu/processor.rb +72 -0
  458. data/lib/relaton/itu/pubid.rb +199 -0
  459. data/lib/relaton/itu/radio_regulations_parser.rb +70 -0
  460. data/lib/relaton/itu/recommendation_fields.rb +334 -0
  461. data/lib/relaton/itu/recommendation_parser.rb +30 -0
  462. data/lib/relaton/itu/scraper.rb +203 -0
  463. data/lib/relaton/itu/util.rb +8 -0
  464. data/lib/relaton/itu.rb +34 -0
  465. data/lib/relaton/jcgm/bibdata.rb +8 -0
  466. data/lib/relaton/jcgm/bibitem.rb +8 -0
  467. data/lib/relaton/jcgm/bibliography.rb +97 -0
  468. data/lib/relaton/jcgm/data_fetcher.rb +81 -0
  469. data/lib/relaton/jcgm/docidentifier.rb +102 -0
  470. data/lib/relaton/jcgm/doctype.rb +12 -0
  471. data/lib/relaton/jcgm/ext.rb +23 -0
  472. data/lib/relaton/jcgm/item.rb +20 -0
  473. data/lib/relaton/jcgm/item_base.rb +18 -0
  474. data/lib/relaton/jcgm/item_data.rb +6 -0
  475. data/lib/relaton/jcgm/meetings_parser.rb +175 -0
  476. data/lib/relaton/jcgm/processor.rb +71 -0
  477. data/lib/relaton/jcgm/relation.rb +9 -0
  478. data/lib/relaton/jcgm/structured_identifier.rb +40 -0
  479. data/lib/relaton/jcgm/util.rb +8 -0
  480. data/lib/relaton/jcgm.rb +24 -0
  481. data/lib/relaton/jis/bibdata.rb +8 -0
  482. data/lib/relaton/jis/bibitem.rb +8 -0
  483. data/lib/relaton/jis/bibliography.rb +73 -0
  484. data/lib/relaton/jis/data_fetcher.rb +183 -0
  485. data/lib/relaton/jis/docidentifier.rb +120 -0
  486. data/lib/relaton/jis/doctype.rb +9 -0
  487. data/lib/relaton/jis/ext.rb +13 -0
  488. data/lib/relaton/jis/hit.rb +88 -0
  489. data/lib/relaton/jis/hit_collection.rb +128 -0
  490. data/lib/relaton/jis/item.rb +22 -0
  491. data/lib/relaton/jis/item_base.rb +26 -0
  492. data/lib/relaton/jis/item_data.rb +8 -0
  493. data/lib/relaton/jis/processor.rb +55 -0
  494. data/lib/relaton/jis/relation.rb +11 -0
  495. data/lib/relaton/jis/scraper.rb +232 -0
  496. data/lib/relaton/jis/structured_identifier.rb +13 -0
  497. data/lib/relaton/jis/util.rb +8 -0
  498. data/lib/relaton/jis.rb +32 -0
  499. data/lib/relaton/logger/channels/gh_issue.rb +143 -0
  500. data/lib/relaton/logger/config.rb +34 -0
  501. data/lib/relaton/logger/formatter_json.rb +8 -0
  502. data/lib/relaton/logger/formatter_string.rb +12 -0
  503. data/lib/relaton/logger/log.rb +64 -0
  504. data/lib/relaton/logger/log_device.rb +27 -0
  505. data/lib/relaton/logger/pool.rb +24 -0
  506. data/lib/relaton/logger.rb +18 -0
  507. data/lib/relaton/nist/bibdata.rb +8 -0
  508. data/lib/relaton/nist/bibitem.rb +8 -0
  509. data/lib/relaton/nist/bibliography.rb +191 -0
  510. data/lib/relaton/nist/comment_period.rb +15 -0
  511. data/lib/relaton/nist/data_fetcher.rb +134 -0
  512. data/lib/relaton/nist/date.rb +7 -0
  513. data/lib/relaton/nist/docidentifier.rb +165 -0
  514. data/lib/relaton/nist/doctype.rb +7 -0
  515. data/lib/relaton/nist/ext.rb +16 -0
  516. data/lib/relaton/nist/hit.rb +18 -0
  517. data/lib/relaton/nist/hit_collection.rb +362 -0
  518. data/lib/relaton/nist/item.rb +19 -0
  519. data/lib/relaton/nist/item_base.rb +16 -0
  520. data/lib/relaton/nist/item_data.rb +6 -0
  521. data/lib/relaton/nist/mods_parser.rb +302 -0
  522. data/lib/relaton/nist/processor.rb +69 -0
  523. data/lib/relaton/nist/pubs_export.rb +69 -0
  524. data/lib/relaton/nist/relation.rb +10 -0
  525. data/lib/relaton/nist/scraper.rb +293 -0
  526. data/lib/relaton/nist/series.yaml +49 -0
  527. data/lib/relaton/nist/util.rb +8 -0
  528. data/lib/relaton/nist.rb +34 -0
  529. data/lib/relaton/oasis/bibdata.rb +8 -0
  530. data/lib/relaton/oasis/bibitem.rb +8 -0
  531. data/lib/relaton/oasis/bibliography.rb +201 -0
  532. data/lib/relaton/oasis/browser_agent.rb +71 -0
  533. data/lib/relaton/oasis/data_fetcher.rb +130 -0
  534. data/lib/relaton/oasis/data_parser.rb +305 -0
  535. data/lib/relaton/oasis/data_parser_utils.rb +330 -0
  536. data/lib/relaton/oasis/data_part_parser.rb +239 -0
  537. data/lib/relaton/oasis/docidentifier.rb +54 -0
  538. data/lib/relaton/oasis/doctype.rb +7 -0
  539. data/lib/relaton/oasis/ext.rb +19 -0
  540. data/lib/relaton/oasis/item.rb +14 -0
  541. data/lib/relaton/oasis/item_data.rb +6 -0
  542. data/lib/relaton/oasis/processor.rb +74 -0
  543. data/lib/relaton/oasis/util.rb +8 -0
  544. data/lib/relaton/oasis.rb +41 -0
  545. data/lib/relaton/ogc/bibdata.rb +8 -0
  546. data/lib/relaton/ogc/bibitem.rb +8 -0
  547. data/lib/relaton/ogc/bibliography.rb +64 -0
  548. data/lib/relaton/ogc/data_fetcher.rb +131 -0
  549. data/lib/relaton/ogc/docidentifier.rb +111 -0
  550. data/lib/relaton/ogc/doctype.rb +12 -0
  551. data/lib/relaton/ogc/ext.rb +15 -0
  552. data/lib/relaton/ogc/hit.rb +18 -0
  553. data/lib/relaton/ogc/hit_collection.rb +111 -0
  554. data/lib/relaton/ogc/item.rb +13 -0
  555. data/lib/relaton/ogc/item_data.rb +6 -0
  556. data/lib/relaton/ogc/processor.rb +59 -0
  557. data/lib/relaton/ogc/scraper.rb +225 -0
  558. data/lib/relaton/ogc/util.rb +8 -0
  559. data/lib/relaton/ogc.rb +30 -0
  560. data/lib/relaton/oiml/bibdata.rb +8 -0
  561. data/lib/relaton/oiml/bibitem.rb +8 -0
  562. data/lib/relaton/oiml/bibliography.rb +169 -0
  563. data/lib/relaton/oiml/docidentifier.rb +48 -0
  564. data/lib/relaton/oiml/doctype.rb +13 -0
  565. data/lib/relaton/oiml/ext.rb +42 -0
  566. data/lib/relaton/oiml/item.rb +20 -0
  567. data/lib/relaton/oiml/item_base.rb +18 -0
  568. data/lib/relaton/oiml/item_data.rb +6 -0
  569. data/lib/relaton/oiml/processor.rb +54 -0
  570. data/lib/relaton/oiml/relation.rb +9 -0
  571. data/lib/relaton/oiml/util.rb +8 -0
  572. data/lib/relaton/oiml.rb +24 -0
  573. data/lib/relaton/omg/bibdata.rb +8 -0
  574. data/lib/relaton/omg/bibitem.rb +8 -0
  575. data/lib/relaton/omg/bibliography.rb +31 -0
  576. data/lib/relaton/omg/docidentifier.rb +67 -0
  577. data/lib/relaton/omg/ext.rb +7 -0
  578. data/lib/relaton/omg/item.rb +9 -0
  579. data/lib/relaton/omg/item_data.rb +6 -0
  580. data/lib/relaton/omg/processor.rb +35 -0
  581. data/lib/relaton/omg/scraper.rb +186 -0
  582. data/lib/relaton/omg/util.rb +8 -0
  583. data/lib/relaton/omg.rb +25 -0
  584. data/lib/relaton/plateau/bibdata.rb +8 -0
  585. data/lib/relaton/plateau/bibitem.rb +8 -0
  586. data/lib/relaton/plateau/bibliography.rb +31 -0
  587. data/lib/relaton/plateau/data_fetcher.rb +176 -0
  588. data/lib/relaton/plateau/doctype.rb +7 -0
  589. data/lib/relaton/plateau/ext.rb +23 -0
  590. data/lib/relaton/plateau/handbook_parser.rb +102 -0
  591. data/lib/relaton/plateau/hit.rb +21 -0
  592. data/lib/relaton/plateau/hit_collection.rb +79 -0
  593. data/lib/relaton/plateau/item.rb +12 -0
  594. data/lib/relaton/plateau/item_data.rb +6 -0
  595. data/lib/relaton/plateau/parser.rb +101 -0
  596. data/lib/relaton/plateau/processor.rb +51 -0
  597. data/lib/relaton/plateau/technical_report_parser.rb +98 -0
  598. data/lib/relaton/plateau/util.rb +8 -0
  599. data/lib/relaton/plateau.rb +29 -0
  600. data/lib/relaton/sdo/config.rb +34 -0
  601. data/lib/relaton/sdo/fetcher.rb +52 -0
  602. data/lib/relaton/sdo/logo.rb +95 -0
  603. data/lib/relaton/sdo/name.rb +26 -0
  604. data/lib/relaton/sdo/organization.rb +71 -0
  605. data/lib/relaton/sdo/store.rb +49 -0
  606. data/lib/relaton/sdo.rb +29 -0
  607. data/lib/relaton/un/bibdata.rb +8 -0
  608. data/lib/relaton/un/bibitem.rb +8 -0
  609. data/lib/relaton/un/bibliography.rb +48 -0
  610. data/lib/relaton/un/doctype.rb +10 -0
  611. data/lib/relaton/un/ext.rb +30 -0
  612. data/lib/relaton/un/hit.rb +56 -0
  613. data/lib/relaton/un/hit_collection.rb +61 -0
  614. data/lib/relaton/un/item.rb +11 -0
  615. data/lib/relaton/un/item_data.rb +6 -0
  616. data/lib/relaton/un/parser.rb +108 -0
  617. data/lib/relaton/un/processor.rb +38 -0
  618. data/lib/relaton/un/session.rb +25 -0
  619. data/lib/relaton/un/token_generator.rb +105 -0
  620. data/lib/relaton/un/util.rb +8 -0
  621. data/lib/relaton/un/wasm/decoder.rb +434 -0
  622. data/lib/relaton/un/wasm/instance.rb +101 -0
  623. data/lib/relaton/un/wasm/interpreter.rb +613 -0
  624. data/lib/relaton/un/wasm/memory.rb +112 -0
  625. data/lib/relaton/un/wasm/module.rb +47 -0
  626. data/lib/relaton/un/wasm.rb +17 -0
  627. data/lib/relaton/un/wasm_v_bg.wasm +0 -0
  628. data/lib/relaton/un.rb +28 -0
  629. data/lib/relaton/version.rb +1 -1
  630. data/lib/relaton/w3c/bibdata.rb +8 -0
  631. data/lib/relaton/w3c/bibitem.rb +8 -0
  632. data/lib/relaton/w3c/bibliography.rb +174 -0
  633. data/lib/relaton/w3c/data_fetcher.rb +487 -0
  634. data/lib/relaton/w3c/data_parser.rb +379 -0
  635. data/lib/relaton/w3c/docidentifier.rb +48 -0
  636. data/lib/relaton/w3c/doctype.rb +7 -0
  637. data/lib/relaton/w3c/ext.rb +11 -0
  638. data/lib/relaton/w3c/governor.rb +32 -0
  639. data/lib/relaton/w3c/item.rb +15 -0
  640. data/lib/relaton/w3c/item_data.rb +6 -0
  641. data/lib/relaton/w3c/processor.rb +49 -0
  642. data/lib/relaton/w3c/pubid.rb +85 -0
  643. data/lib/relaton/w3c/safe_realize.rb +148 -0
  644. data/lib/relaton/w3c/util.rb +8 -0
  645. data/lib/relaton/w3c.rb +36 -0
  646. data/lib/relaton/xsf/bibdata.rb +8 -0
  647. data/lib/relaton/xsf/bibitem.rb +8 -0
  648. data/lib/relaton/xsf/bibliography.rb +84 -0
  649. data/lib/relaton/xsf/data_fetcher.rb +106 -0
  650. data/lib/relaton/xsf/docidentifier.rb +46 -0
  651. data/lib/relaton/xsf/hit.rb +17 -0
  652. data/lib/relaton/xsf/hit_collection.rb +52 -0
  653. data/lib/relaton/xsf/item.rb +13 -0
  654. data/lib/relaton/xsf/item_data.rb +6 -0
  655. data/lib/relaton/xsf/processor.rb +51 -0
  656. data/lib/relaton/xsf/util.rb +9 -0
  657. data/lib/relaton/xsf.rb +34 -0
  658. data/lib/relaton-core.rb +1 -0
  659. data/lib/relaton.rb +85 -0
  660. metadata +775 -161
  661. data/.github/workflows/rake.yml +0 -14
  662. data/.github/workflows/release.yml +0 -24
  663. data/.github/workflows/rubocop.yml +0 -48
  664. data/.gitignore +0 -12
  665. data/.rspec +0 -3
  666. data/CLAUDE.md +0 -78
  667. data/Gemfile +0 -29
  668. data/Rakefile +0 -6
  669. data/docs/CHANGELOG.adoc +0 -16
  670. data/docs/VERSIONING_POLICY.adoc +0 -38
  671. data/docs/navigation.adoc +0 -6
  672. data/lib/relaton/db/version.rb +0 -5
  673. data/relaton.gemspec +0 -72
  674. data/spec/relaton/config_spec.rb +0 -10
  675. data/spec/relaton/db_cache_spec.rb +0 -51
  676. data/spec/relaton/db_spec.rb +0 -567
  677. data/spec/relaton/registry_spec.rb +0 -178
  678. data/spec/relaton/util_spec.rb +0 -3
  679. data/spec/relaton_meta_spec.rb +0 -25
  680. data/spec/relaton_spec.rb +0 -800
  681. data/spec/spec_helper.rb +0 -45
  682. data/spec/support/gb_t_20223_2006.xml +0 -33
  683. data/spec/support/iso_111111119115_1.xml +0 -0
  684. data/spec/support/iso_19115_1.xml +0 -115
  685. data/spec/support/iso_19115_2.xml +0 -95
  686. data/spec/support/rfc_8341.xml +0 -46
  687. data/spec/vcr_cassetes/api_relaton_org.yml +0 -121
  688. data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +0 -140
  689. data/spec/vcr_cassetes/cc_dir_10005_2019.yml +0 -202
  690. data/spec/vcr_cassetes/cipm_meeting_43.yml +0 -1505
  691. data/spec/vcr_cassetes/gb_t_20223_2006.yml +0 -729
  692. data/spec/vcr_cassetes/iso_111111119115_1.yml +0 -12951
  693. data/spec/vcr_cassetes/iso_19115_1.yml +0 -17334
  694. data/spec/vcr_cassetes/iso_19115_1_2.yml +0 -322
  695. data/spec/vcr_cassetes/iso_19115_1_std.yml +0 -17334
  696. data/spec/vcr_cassetes/iso_19115_all_parts.yml +0 -185
  697. data/spec/vcr_cassetes/iso_19133_2005.yml +0 -144
  698. data/spec/vcr_cassetes/iso_combined_applied.yml +0 -318
  699. data/spec/vcr_cassetes/iso_combined_included.yml +0 -318
  700. data/spec/vcr_cassetes/ogc_19_025r1.yml +0 -374
  701. data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +0 -317
  702. 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