relaton 2.1.0 → 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 (625) 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/cache.rb +232 -0
  188. data/lib/relaton/db/config.rb +24 -0
  189. data/lib/relaton/db/registry.rb +119 -0
  190. data/lib/relaton/db/util.rb +9 -0
  191. data/lib/relaton/db/workers_pool.rb +22 -0
  192. data/lib/relaton/db.rb +20 -206
  193. data/lib/relaton/doi/crossref.rb +72 -0
  194. data/lib/relaton/doi/parser.rb +827 -0
  195. data/lib/relaton/doi/processor.rb +65 -0
  196. data/lib/relaton/doi/util.rb +8 -0
  197. data/lib/relaton/doi.rb +20 -0
  198. data/lib/relaton/ecma/bibdata.rb +8 -0
  199. data/lib/relaton/ecma/bibitem.rb +8 -0
  200. data/lib/relaton/ecma/bibliography.rb +81 -0
  201. data/lib/relaton/ecma/data_fetcher.rb +103 -0
  202. data/lib/relaton/ecma/data_parser.rb +49 -0
  203. data/lib/relaton/ecma/edition_parser.rb +80 -0
  204. data/lib/relaton/ecma/ext.rb +7 -0
  205. data/lib/relaton/ecma/item.rb +11 -0
  206. data/lib/relaton/ecma/item_data.rb +6 -0
  207. data/lib/relaton/ecma/memento_parser.rb +60 -0
  208. data/lib/relaton/ecma/page_fetcher.rb +27 -0
  209. data/lib/relaton/ecma/parser_common.rb +33 -0
  210. data/lib/relaton/ecma/processor.rb +66 -0
  211. data/lib/relaton/ecma/standard_parser.rb +134 -0
  212. data/lib/relaton/ecma/util.rb +8 -0
  213. data/lib/relaton/ecma.rb +24 -0
  214. data/lib/relaton/etsi/bibdata.rb +10 -0
  215. data/lib/relaton/etsi/bibitem.rb +10 -0
  216. data/lib/relaton/etsi/bibliography.rb +46 -0
  217. data/lib/relaton/etsi/data_fetcher.rb +128 -0
  218. data/lib/relaton/etsi/data_parser.rb +208 -0
  219. data/lib/relaton/etsi/doctype.rb +30 -0
  220. data/lib/relaton/etsi/ext.rb +31 -0
  221. data/lib/relaton/etsi/item.rb +15 -0
  222. data/lib/relaton/etsi/item_data.rb +6 -0
  223. data/lib/relaton/etsi/processor.rb +69 -0
  224. data/lib/relaton/etsi/pubid.rb +37 -0
  225. data/lib/relaton/etsi/status.rb +13 -0
  226. data/lib/relaton/etsi/util.rb +8 -0
  227. data/lib/relaton/etsi.rb +25 -0
  228. data/lib/relaton/gb/bibdata.rb +8 -0
  229. data/lib/relaton/gb/bibitem.rb +8 -0
  230. data/lib/relaton/gb/bibliography.rb +145 -0
  231. data/lib/relaton/gb/ccs.rb +14 -0
  232. data/lib/relaton/gb/committee.rb +13 -0
  233. data/lib/relaton/gb/docidentifier.rb +23 -0
  234. data/lib/relaton/gb/doctype.rb +9 -0
  235. data/lib/relaton/gb/ext.rb +36 -0
  236. data/lib/relaton/gb/gb_scraper.rb +61 -0
  237. data/lib/relaton/gb/gb_type.rb +20 -0
  238. data/lib/relaton/gb/hit.rb +48 -0
  239. data/lib/relaton/gb/hit_collection.rb +19 -0
  240. data/lib/relaton/gb/item.rb +13 -0
  241. data/lib/relaton/gb/item_data.rb +6 -0
  242. data/lib/relaton/gb/processor.rb +46 -0
  243. data/lib/relaton/gb/project_number.rb +38 -0
  244. data/lib/relaton/gb/scraper.rb +204 -0
  245. data/lib/relaton/gb/sec_scraper.rb +92 -0
  246. data/lib/relaton/gb/stage_name.rb +13 -0
  247. data/lib/relaton/gb/structured_identifier.rb +26 -0
  248. data/lib/relaton/gb/t_scraper.rb +126 -0
  249. data/lib/relaton/gb/util.rb +8 -0
  250. data/lib/relaton/gb/yaml/prefixes.yaml +200 -0
  251. data/lib/relaton/gb.rb +33 -0
  252. data/lib/relaton/iana/bibdata.rb +8 -0
  253. data/lib/relaton/iana/bibitem.rb +8 -0
  254. data/lib/relaton/iana/bibliography.rb +47 -0
  255. data/lib/relaton/iana/data_fetcher.rb +71 -0
  256. data/lib/relaton/iana/item.rb +7 -0
  257. data/lib/relaton/iana/item_data.rb +6 -0
  258. data/lib/relaton/iana/parser.rb +146 -0
  259. data/lib/relaton/iana/processor.rb +68 -0
  260. data/lib/relaton/iana/util.rb +8 -0
  261. data/lib/relaton/iana.rb +29 -0
  262. data/lib/relaton/iec/bibliography.rb +283 -0
  263. data/lib/relaton/iec/data_fetcher.rb +216 -0
  264. data/lib/relaton/iec/data_parser.rb +391 -0
  265. data/lib/relaton/iec/hit.rb +26 -0
  266. data/lib/relaton/iec/hit_collection.rb +138 -0
  267. data/lib/relaton/iec/item_data.rb +7 -0
  268. data/lib/relaton/iec/model/bibdata.rb +8 -0
  269. data/lib/relaton/iec/model/bibitem.rb +8 -0
  270. data/lib/relaton/iec/model/docidentifier.rb +131 -0
  271. data/lib/relaton/iec/model/doctype.rb +12 -0
  272. data/lib/relaton/iec/model/ext.rb +53 -0
  273. data/lib/relaton/iec/model/item.rb +20 -0
  274. data/lib/relaton/iec/model/item_base.rb +12 -0
  275. data/lib/relaton/iec/model/relation.rb +7 -0
  276. data/lib/relaton/iec/model/stage_name.rb +13 -0
  277. data/lib/relaton/iec/processor.rb +73 -0
  278. data/lib/relaton/iec/statuses.yml +199 -0
  279. data/lib/relaton/iec/util.rb +8 -0
  280. data/lib/relaton/iec.rb +98 -0
  281. data/lib/relaton/ieee/balloting_group.rb +13 -0
  282. data/lib/relaton/ieee/bibdata.rb +8 -0
  283. data/lib/relaton/ieee/bibitem.rb +8 -0
  284. data/lib/relaton/ieee/bibliography.rb +51 -0
  285. data/lib/relaton/ieee/converter/bibxml/from_rfcxml.rb +10 -0
  286. data/lib/relaton/ieee/converter/bibxml/from_rfcxml_referencegroup.rb +10 -0
  287. data/lib/relaton/ieee/converter/bibxml.rb +20 -0
  288. data/lib/relaton/ieee/data_fetcher.rb +630 -0
  289. data/lib/relaton/ieee/doctype.rb +9 -0
  290. data/lib/relaton/ieee/editorial_group.rb +19 -0
  291. data/lib/relaton/ieee/ext.rb +36 -0
  292. data/lib/relaton/ieee/idams_parser.rb +323 -0
  293. data/lib/relaton/ieee/item.rb +11 -0
  294. data/lib/relaton/ieee/item_data.rb +7 -0
  295. data/lib/relaton/ieee/processor.rb +68 -0
  296. data/lib/relaton/ieee/pub_id.rb +161 -0
  297. data/lib/relaton/ieee/rawbib_id_parser.rb +548 -0
  298. data/lib/relaton/ieee/util.rb +8 -0
  299. data/lib/relaton/ieee.rb +29 -0
  300. data/lib/relaton/ietf/bibdata.rb +8 -0
  301. data/lib/relaton/ietf/bibitem.rb +8 -0
  302. data/lib/relaton/ietf/bibliography.rb +35 -0
  303. data/lib/relaton/ietf/bibxml_parser.rb +232 -0
  304. data/lib/relaton/ietf/data_fetcher.rb +278 -0
  305. data/lib/relaton/ietf/doctype.rb +9 -0
  306. data/lib/relaton/ietf/ext.rb +63 -0
  307. data/lib/relaton/ietf/item.rb +16 -0
  308. data/lib/relaton/ietf/item_base.rb +18 -0
  309. data/lib/relaton/ietf/item_data.rb +6 -0
  310. data/lib/relaton/ietf/processing_instructions.rb +79 -0
  311. data/lib/relaton/ietf/processor.rb +68 -0
  312. data/lib/relaton/ietf/relation.rb +9 -0
  313. data/lib/relaton/ietf/rfc/abstract.rb +19 -0
  314. data/lib/relaton/ietf/rfc/author.rb +21 -0
  315. data/lib/relaton/ietf/rfc/entry.rb +410 -0
  316. data/lib/relaton/ietf/rfc/entry_date.rb +21 -0
  317. data/lib/relaton/ietf/rfc/format.rb +19 -0
  318. data/lib/relaton/ietf/rfc/index.rb +46 -0
  319. data/lib/relaton/ietf/rfc/is_also.rb +21 -0
  320. data/lib/relaton/ietf/rfc/keywords.rb +19 -0
  321. data/lib/relaton/ietf/rfc/rfc_index_namespace.rb +11 -0
  322. data/lib/relaton/ietf/scraper.rb +68 -0
  323. data/lib/relaton/ietf/util.rb +8 -0
  324. data/lib/relaton/ietf/wg_name_resolver.rb +42 -0
  325. data/lib/relaton/ietf.rb +27 -0
  326. data/lib/relaton/iho/bibdata.rb +8 -0
  327. data/lib/relaton/iho/bibitem.rb +8 -0
  328. data/lib/relaton/iho/bibliography.rb +114 -0
  329. data/lib/relaton/iho/comment_period.rb +13 -0
  330. data/lib/relaton/iho/docidentifier.rb +31 -0
  331. data/lib/relaton/iho/doctype.rb +10 -0
  332. data/lib/relaton/iho/ext.rb +20 -0
  333. data/lib/relaton/iho/hash_parser_v1.rb +144 -0
  334. data/lib/relaton/iho/item.rb +20 -0
  335. data/lib/relaton/iho/item_base.rb +18 -0
  336. data/lib/relaton/iho/item_data.rb +6 -0
  337. data/lib/relaton/iho/processor.rb +54 -0
  338. data/lib/relaton/iho/relation.rb +9 -0
  339. data/lib/relaton/iho/structured_identifier.rb +20 -0
  340. data/lib/relaton/iho/util.rb +8 -0
  341. data/lib/relaton/iho.rb +27 -0
  342. data/lib/relaton/index/config.rb +52 -0
  343. data/lib/relaton/index/file_io.rb +305 -0
  344. data/lib/relaton/index/file_storage.rb +61 -0
  345. data/lib/relaton/index/id_number.rb +30 -0
  346. data/lib/relaton/index/pool.rb +41 -0
  347. data/lib/relaton/index/type.rb +159 -0
  348. data/lib/relaton/index/util.rb +18 -0
  349. data/lib/relaton/index.rb +60 -0
  350. data/lib/relaton/isbn/isbn.rb +61 -0
  351. data/lib/relaton/isbn/open_library.rb +43 -0
  352. data/lib/relaton/isbn/parser.rb +88 -0
  353. data/lib/relaton/isbn/processor.rb +48 -0
  354. data/lib/relaton/isbn/util.rb +8 -0
  355. data/lib/relaton/isbn.rb +19 -0
  356. data/lib/relaton/iso/bibliography.rb +407 -0
  357. data/lib/relaton/iso/data_fetcher.rb +338 -0
  358. data/lib/relaton/iso/data_parser.rb +444 -0
  359. data/lib/relaton/iso/hash_parser_v1.rb +177 -0
  360. data/lib/relaton/iso/hit.rb +57 -0
  361. data/lib/relaton/iso/hit_collection.rb +184 -0
  362. data/lib/relaton/iso/item_data.rb +28 -0
  363. data/lib/relaton/iso/model/bibdata.rb +10 -0
  364. data/lib/relaton/iso/model/bibitem.rb +8 -0
  365. data/lib/relaton/iso/model/contributor.rb +6 -0
  366. data/lib/relaton/iso/model/contributor_info.rb +9 -0
  367. data/lib/relaton/iso/model/docidentifier.rb +134 -0
  368. data/lib/relaton/iso/model/doctype.rb +13 -0
  369. data/lib/relaton/iso/model/ext.rb +35 -0
  370. data/lib/relaton/iso/model/item.rb +17 -0
  371. data/lib/relaton/iso/model/item_base.rb +22 -0
  372. data/lib/relaton/iso/model/organization.rb +9 -0
  373. data/lib/relaton/iso/model/project_number.rb +22 -0
  374. data/lib/relaton/iso/model/relation.rb +9 -0
  375. data/lib/relaton/iso/model/stagename.rb +14 -0
  376. data/lib/relaton/iso/model/structured_identifier.rb +31 -0
  377. data/lib/relaton/iso/processor.rb +84 -0
  378. data/lib/relaton/iso/scraper.rb +619 -0
  379. data/lib/relaton/iso/type/pubid.rb +50 -0
  380. data/lib/relaton/iso/util.rb +8 -0
  381. data/lib/relaton/iso.rb +30 -0
  382. data/lib/relaton/itu/bibliography.rb +90 -0
  383. data/lib/relaton/itu/data_fetcher.rb +104 -0
  384. data/lib/relaton/itu/data_parser_r.rb +140 -0
  385. data/lib/relaton/itu/hit.rb +22 -0
  386. data/lib/relaton/itu/hit_collection.rb +127 -0
  387. data/lib/relaton/itu/item_data.rb +6 -0
  388. data/lib/relaton/itu/model/approval_stage.rb +13 -0
  389. data/lib/relaton/itu/model/bibdata.rb +8 -0
  390. data/lib/relaton/itu/model/bibitem.rb +8 -0
  391. data/lib/relaton/itu/model/docidentifier.rb +9 -0
  392. data/lib/relaton/itu/model/doctype.rb +13 -0
  393. data/lib/relaton/itu/model/ext.rb +47 -0
  394. data/lib/relaton/itu/model/item.rb +13 -0
  395. data/lib/relaton/itu/model/meeting.rb +13 -0
  396. data/lib/relaton/itu/model/meeting_date.rb +15 -0
  397. data/lib/relaton/itu/model/question.rb +13 -0
  398. data/lib/relaton/itu/model/recommendation_status.rb +11 -0
  399. data/lib/relaton/itu/model/structured_identifier.rb +19 -0
  400. data/lib/relaton/itu/processor.rb +66 -0
  401. data/lib/relaton/itu/pubid.rb +177 -0
  402. data/lib/relaton/itu/radio_regulations_parser.rb +70 -0
  403. data/lib/relaton/itu/recommendation_parser.rb +161 -0
  404. data/lib/relaton/itu/scraper.rb +193 -0
  405. data/lib/relaton/itu/util.rb +8 -0
  406. data/lib/relaton/itu.rb +33 -0
  407. data/lib/relaton/jis/bibdata.rb +8 -0
  408. data/lib/relaton/jis/bibitem.rb +8 -0
  409. data/lib/relaton/jis/bibliography.rb +75 -0
  410. data/lib/relaton/jis/data_fetcher.rb +181 -0
  411. data/lib/relaton/jis/docidentifier.rb +21 -0
  412. data/lib/relaton/jis/doctype.rb +9 -0
  413. data/lib/relaton/jis/ext.rb +13 -0
  414. data/lib/relaton/jis/hit.rb +93 -0
  415. data/lib/relaton/jis/hit_collection.rb +127 -0
  416. data/lib/relaton/jis/item.rb +22 -0
  417. data/lib/relaton/jis/item_base.rb +26 -0
  418. data/lib/relaton/jis/item_data.rb +8 -0
  419. data/lib/relaton/jis/processor.rb +55 -0
  420. data/lib/relaton/jis/relation.rb +11 -0
  421. data/lib/relaton/jis/scraper.rb +232 -0
  422. data/lib/relaton/jis/structured_identifier.rb +13 -0
  423. data/lib/relaton/jis/util.rb +8 -0
  424. data/lib/relaton/jis.rb +33 -0
  425. data/lib/relaton/logger/channels/gh_issue.rb +78 -0
  426. data/lib/relaton/logger/config.rb +34 -0
  427. data/lib/relaton/logger/formatter_json.rb +8 -0
  428. data/lib/relaton/logger/formatter_string.rb +12 -0
  429. data/lib/relaton/logger/log.rb +64 -0
  430. data/lib/relaton/logger/log_device.rb +27 -0
  431. data/lib/relaton/logger/pool.rb +24 -0
  432. data/lib/relaton/logger.rb +18 -0
  433. data/lib/relaton/nist/bibdata.rb +8 -0
  434. data/lib/relaton/nist/bibitem.rb +8 -0
  435. data/lib/relaton/nist/bibliography.rb +191 -0
  436. data/lib/relaton/nist/comment_period.rb +15 -0
  437. data/lib/relaton/nist/data_fetcher.rb +84 -0
  438. data/lib/relaton/nist/date.rb +7 -0
  439. data/lib/relaton/nist/doctype.rb +7 -0
  440. data/lib/relaton/nist/ext.rb +16 -0
  441. data/lib/relaton/nist/hit.rb +18 -0
  442. data/lib/relaton/nist/hit_collection.rb +362 -0
  443. data/lib/relaton/nist/item.rb +17 -0
  444. data/lib/relaton/nist/item_data.rb +6 -0
  445. data/lib/relaton/nist/mods_parser.rb +276 -0
  446. data/lib/relaton/nist/processor.rb +68 -0
  447. data/lib/relaton/nist/pubs_export.rb +69 -0
  448. data/lib/relaton/nist/relation.rb +7 -0
  449. data/lib/relaton/nist/scraper.rb +290 -0
  450. data/lib/relaton/nist/series.yaml +49 -0
  451. data/lib/relaton/nist/util.rb +8 -0
  452. data/lib/relaton/nist.rb +34 -0
  453. data/lib/relaton/oasis/bibdata.rb +8 -0
  454. data/lib/relaton/oasis/bibitem.rb +8 -0
  455. data/lib/relaton/oasis/bibliography.rb +60 -0
  456. data/lib/relaton/oasis/browser_agent.rb +71 -0
  457. data/lib/relaton/oasis/data_fetcher.rb +94 -0
  458. data/lib/relaton/oasis/data_parser.rb +305 -0
  459. data/lib/relaton/oasis/data_parser_utils.rb +296 -0
  460. data/lib/relaton/oasis/data_part_parser.rb +239 -0
  461. data/lib/relaton/oasis/doctype.rb +7 -0
  462. data/lib/relaton/oasis/ext.rb +19 -0
  463. data/lib/relaton/oasis/item.rb +11 -0
  464. data/lib/relaton/oasis/item_data.rb +6 -0
  465. data/lib/relaton/oasis/processor.rb +68 -0
  466. data/lib/relaton/oasis/util.rb +8 -0
  467. data/lib/relaton/oasis.rb +28 -0
  468. data/lib/relaton/ogc/bibdata.rb +8 -0
  469. data/lib/relaton/ogc/bibitem.rb +8 -0
  470. data/lib/relaton/ogc/bibliography.rb +64 -0
  471. data/lib/relaton/ogc/data_fetcher.rb +110 -0
  472. data/lib/relaton/ogc/docidentifier.rb +6 -0
  473. data/lib/relaton/ogc/doctype.rb +12 -0
  474. data/lib/relaton/ogc/ext.rb +15 -0
  475. data/lib/relaton/ogc/hit.rb +18 -0
  476. data/lib/relaton/ogc/hit_collection.rb +36 -0
  477. data/lib/relaton/ogc/item.rb +13 -0
  478. data/lib/relaton/ogc/item_data.rb +6 -0
  479. data/lib/relaton/ogc/processor.rb +58 -0
  480. data/lib/relaton/ogc/scraper.rb +225 -0
  481. data/lib/relaton/ogc/util.rb +8 -0
  482. data/lib/relaton/ogc.rb +26 -0
  483. data/lib/relaton/oiml/bibdata.rb +8 -0
  484. data/lib/relaton/oiml/bibitem.rb +8 -0
  485. data/lib/relaton/oiml/bibliography.rb +94 -0
  486. data/lib/relaton/oiml/docidentifier.rb +33 -0
  487. data/lib/relaton/oiml/doctype.rb +13 -0
  488. data/lib/relaton/oiml/ext.rb +42 -0
  489. data/lib/relaton/oiml/item.rb +20 -0
  490. data/lib/relaton/oiml/item_base.rb +18 -0
  491. data/lib/relaton/oiml/item_data.rb +6 -0
  492. data/lib/relaton/oiml/processor.rb +54 -0
  493. data/lib/relaton/oiml/relation.rb +9 -0
  494. data/lib/relaton/oiml/util.rb +8 -0
  495. data/lib/relaton/oiml.rb +24 -0
  496. data/lib/relaton/omg/bibdata.rb +8 -0
  497. data/lib/relaton/omg/bibitem.rb +8 -0
  498. data/lib/relaton/omg/bibliography.rb +31 -0
  499. data/lib/relaton/omg/ext.rb +7 -0
  500. data/lib/relaton/omg/item.rb +8 -0
  501. data/lib/relaton/omg/item_data.rb +6 -0
  502. data/lib/relaton/omg/processor.rb +34 -0
  503. data/lib/relaton/omg/scraper.rb +141 -0
  504. data/lib/relaton/omg/util.rb +8 -0
  505. data/lib/relaton/omg.rb +24 -0
  506. data/lib/relaton/plateau/bibdata.rb +8 -0
  507. data/lib/relaton/plateau/bibitem.rb +8 -0
  508. data/lib/relaton/plateau/bibliography.rb +24 -0
  509. data/lib/relaton/plateau/data_fetcher.rb +153 -0
  510. data/lib/relaton/plateau/doctype.rb +7 -0
  511. data/lib/relaton/plateau/ext.rb +23 -0
  512. data/lib/relaton/plateau/handbook_parser.rb +95 -0
  513. data/lib/relaton/plateau/hit.rb +13 -0
  514. data/lib/relaton/plateau/hit_collection.rb +59 -0
  515. data/lib/relaton/plateau/item.rb +12 -0
  516. data/lib/relaton/plateau/item_data.rb +6 -0
  517. data/lib/relaton/plateau/parser.rb +101 -0
  518. data/lib/relaton/plateau/processor.rb +49 -0
  519. data/lib/relaton/plateau/technical_report_parser.rb +91 -0
  520. data/lib/relaton/plateau/util.rb +8 -0
  521. data/lib/relaton/plateau.rb +28 -0
  522. data/lib/relaton/un/bibdata.rb +8 -0
  523. data/lib/relaton/un/bibitem.rb +8 -0
  524. data/lib/relaton/un/bibliography.rb +48 -0
  525. data/lib/relaton/un/doctype.rb +10 -0
  526. data/lib/relaton/un/ext.rb +30 -0
  527. data/lib/relaton/un/hit.rb +56 -0
  528. data/lib/relaton/un/hit_collection.rb +61 -0
  529. data/lib/relaton/un/item.rb +11 -0
  530. data/lib/relaton/un/item_data.rb +6 -0
  531. data/lib/relaton/un/parser.rb +108 -0
  532. data/lib/relaton/un/processor.rb +38 -0
  533. data/lib/relaton/un/session.rb +25 -0
  534. data/lib/relaton/un/token_generator.rb +105 -0
  535. data/lib/relaton/un/util.rb +8 -0
  536. data/lib/relaton/un/wasm/decoder.rb +434 -0
  537. data/lib/relaton/un/wasm/instance.rb +101 -0
  538. data/lib/relaton/un/wasm/interpreter.rb +613 -0
  539. data/lib/relaton/un/wasm/memory.rb +112 -0
  540. data/lib/relaton/un/wasm/module.rb +47 -0
  541. data/lib/relaton/un/wasm.rb +17 -0
  542. data/lib/relaton/un/wasm_v_bg.wasm +0 -0
  543. data/lib/relaton/un.rb +28 -0
  544. data/lib/relaton/version.rb +1 -1
  545. data/lib/relaton/w3c/bibdata.rb +8 -0
  546. data/lib/relaton/w3c/bibitem.rb +8 -0
  547. data/lib/relaton/w3c/bibliography.rb +54 -0
  548. data/lib/relaton/w3c/data_fetcher.rb +309 -0
  549. data/lib/relaton/w3c/data_parser.rb +379 -0
  550. data/lib/relaton/w3c/doctype.rb +7 -0
  551. data/lib/relaton/w3c/ext.rb +11 -0
  552. data/lib/relaton/w3c/item.rb +12 -0
  553. data/lib/relaton/w3c/item_data.rb +6 -0
  554. data/lib/relaton/w3c/processor.rb +49 -0
  555. data/lib/relaton/w3c/pubid.rb +73 -0
  556. data/lib/relaton/w3c/safe_realize.rb +59 -0
  557. data/lib/relaton/w3c/util.rb +8 -0
  558. data/lib/relaton/w3c.rb +25 -0
  559. data/lib/relaton/xsf/bibdata.rb +8 -0
  560. data/lib/relaton/xsf/bibitem.rb +8 -0
  561. data/lib/relaton/xsf/bibliography.rb +24 -0
  562. data/lib/relaton/xsf/data_fetcher.rb +56 -0
  563. data/lib/relaton/xsf/hit.rb +17 -0
  564. data/lib/relaton/xsf/hit_collection.rb +24 -0
  565. data/lib/relaton/xsf/item.rb +7 -0
  566. data/lib/relaton/xsf/item_data.rb +6 -0
  567. data/lib/relaton/xsf/processor.rb +50 -0
  568. data/lib/relaton/xsf/util.rb +9 -0
  569. data/lib/relaton/xsf.rb +30 -0
  570. data/lib/relaton-core.rb +1 -0
  571. data/lib/relaton.rb +44 -9
  572. metadata +708 -150
  573. data/.github/workflows/rake.yml +0 -14
  574. data/.github/workflows/release.yml +0 -24
  575. data/.github/workflows/rubocop.yml +0 -48
  576. data/.gitignore +0 -12
  577. data/.rspec +0 -3
  578. data/.rubocop.yml +0 -12
  579. data/CLAUDE.md +0 -70
  580. data/Gemfile +0 -21
  581. data/Rakefile +0 -6
  582. data/docs/CHANGELOG.adoc +0 -16
  583. data/docs/VERSIONING_POLICY.adoc +0 -38
  584. data/docs/navigation.adoc +0 -6
  585. data/lib/relaton/config.rb +0 -24
  586. data/lib/relaton/db_cache.rb +0 -230
  587. data/lib/relaton/registry.rb +0 -118
  588. data/lib/relaton/util.rb +0 -7
  589. data/lib/relaton/workers_pool.rb +0 -21
  590. data/relaton.gemspec +0 -61
  591. data/spec/relaton/config_spec.rb +0 -10
  592. data/spec/relaton/db_cache_spec.rb +0 -51
  593. data/spec/relaton/db_spec.rb +0 -556
  594. data/spec/relaton/registry_spec.rb +0 -178
  595. data/spec/relaton/util_spec.rb +0 -3
  596. data/spec/relaton_spec.rb +0 -725
  597. data/spec/spec_helper.rb +0 -45
  598. data/spec/support/gb_t_20223_2006.xml +0 -33
  599. data/spec/support/iso_111111119115_1.xml +0 -0
  600. data/spec/support/iso_19115_1.xml +0 -115
  601. data/spec/support/iso_19115_2.xml +0 -95
  602. data/spec/support/rfc_8341.xml +0 -46
  603. data/spec/vcr_cassetes/3gpp_tr_00_01u_umts_3_0_0.yml +0 -12720
  604. data/spec/vcr_cassetes/api_relaton_org.yml +0 -121
  605. data/spec/vcr_cassetes/api_relaton_org_unavailable.yml +0 -143
  606. data/spec/vcr_cassetes/cc_dir_10005_2019.yml +0 -199
  607. data/spec/vcr_cassetes/cie_001_1980.yml +0 -401
  608. data/spec/vcr_cassetes/cipm_meeting_43.yml +0 -1513
  609. data/spec/vcr_cassetes/doi_10_6028_nist_ir_8245.yml +0 -86
  610. data/spec/vcr_cassetes/ecma_6.yml +0 -112
  611. data/spec/vcr_cassetes/en_10160_1999.yml +0 -13624
  612. data/spec/vcr_cassetes/gb_t_20223_2006.yml +0 -733
  613. data/spec/vcr_cassetes/ieee_528_2019.yml +0 -2786
  614. data/spec/vcr_cassetes/iso_111111119115_1.yml +0 -12951
  615. data/spec/vcr_cassetes/iso_19115_1.yml +0 -13177
  616. data/spec/vcr_cassetes/iso_19115_1_2.yml +0 -369
  617. data/spec/vcr_cassetes/iso_19115_1_std.yml +0 -13177
  618. data/spec/vcr_cassetes/iso_19115_all_parts.yml +0 -229
  619. data/spec/vcr_cassetes/iso_19133_2005.yml +0 -148
  620. data/spec/vcr_cassetes/iso_combined_applied.yml +0 -364
  621. data/spec/vcr_cassetes/iso_combined_included.yml +0 -364
  622. data/spec/vcr_cassetes/iso_dis.yml +0 -157
  623. data/spec/vcr_cassetes/ogc_19_025r1.yml +0 -371
  624. data/spec/vcr_cassetes/omg_ami4ccm_1_0.yml +0 -317
  625. data/spec/vcr_cassetes/rfc_8341.yml +0 -1272
data/spec/relaton_spec.rb DELETED
@@ -1,725 +0,0 @@
1
- RSpec.describe Relaton::Db do
2
- before :each do |example|
3
- FileUtils.rm_rf %w(testcache testcache2)
4
- @db = Relaton::Db.new "testcache", "testcache2"
5
- Relaton.instance_variable_set :@configuration, nil
6
-
7
- if example.metadata[:vcr]
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
- it "rejects an illegal reference prefix" do
17
- expect { @db.fetch("XYZ XYZ", nil, {}) }.to output(
18
- /\[relaton\] INFO: \(XYZ XYZ\) `XYZ XYZ` does not/,
19
- ).to_stderr_from_any_process
20
- end
21
-
22
- context "gets an ISO reference" do
23
- it "and caches it" do
24
- docid = Relaton::Bib::Docidentifier.new(content: "ISO 19115-1",
25
- type: "ISO")
26
- item = Relaton::Iso::ItemData.new(
27
- docid: [docid], fetched: Date.today.to_s,
28
- )
29
- expect(Relaton::Iso::Bibliography).to receive(:get)
30
- .with("ISO 19115-1", nil, {}).and_return item
31
- bib = @db.fetch("ISO 19115-1", nil, {})
32
- expect(bib).to be_instance_of Relaton::Iso::ItemData
33
- bib = @db.fetch("ISO 19115-1", nil, {})
34
- expect(bib).to be_instance_of Relaton::Iso::ItemData
35
- end
36
-
37
- it "with year in code" do
38
- VCR.use_cassette "iso_19133_2005" do
39
- bib = @db.fetch("ISO 19133:2005")
40
- expect(bib).to be_instance_of Relaton::Iso::ItemData
41
- xml = bib.to_xml
42
- expect(xml).to include 'id="ISO191332005"'
43
- expect(xml).to include 'type="standard"'
44
- testcache = Relaton::DbCache.new "testcache"
45
- expect(
46
- testcache.valid_entry?("ISO(ISO 19133:2005)", Date.today.year.to_s),
47
- ).to eq Date.today.year.to_s
48
- end
49
- end
50
-
51
- context "all parts" do
52
- it "implicity" do
53
- VCR.use_cassette "iso_19115_all_parts" do
54
- bib = @db.fetch("ISO 19115", nil, all_parts: true)
55
- expect(bib.docidentifier[0].content).to eq "ISO 19115 (all parts)"
56
- end
57
- end
58
-
59
- it "explicity" do
60
- VCR.use_cassette "iso_19115_all_parts" do
61
- bib = @db.fetch("ISO 19115 (all parts)")
62
- expect(bib.docidentifier[0].content).to eq "ISO 19115 (all parts)"
63
- end
64
- end
65
- end
66
-
67
- it "gets sn ISO/DIS reference" do
68
- VCR.use_cassette "iso_dis" do
69
- bib = @db.fetch "ISO/DIS 14460"
70
- expect(bib.docidentifier[0].content).to eq "ISO/DIS 14460"
71
- end
72
- end
73
- end
74
-
75
- context "IEC" do
76
- before do
77
- require "relaton/iec"
78
- docid = Relaton::Iec::Docidentifier.new(
79
- content: "IEC 60050-102:2007", type: "IEC",
80
- )
81
- item = Relaton::Iec::ItemData.new docidentifier: [docid]
82
- expect(Relaton::Iec::Bibliography).to receive(:get).with(
83
- "IEC 60050-102:2007", nil, {}
84
- ).and_return item
85
- end
86
-
87
- it "get by reference" do
88
- bib = @db.fetch "IEC 60050-102:2007"
89
- expect(bib.docidentifier[0].content).to eq "IEC 60050-102:2007"
90
- end
91
-
92
- it "get by URN" do
93
- bib = @db.fetch "urn:iec:std:iec:60050-102:2007:::"
94
- expect(bib.docidentifier[0].content).to eq "IEC 60050-102:2007"
95
- end
96
- end
97
-
98
- context "NIST references" do
99
- it "gets FISP" do
100
- require "relaton/nist"
101
- docid = Relaton::Bib::Docidentifier.new(content: "NIST FIPS 140",
102
- type: "NIST")
103
- item = Relaton::Nist::ItemData.new docidentifier: [docid]
104
- expect(Relaton::Nist::Bibliography).to receive(:get).with(
105
- "NIST FIPS 140", nil, {}
106
- ).and_return item
107
- bib = @db.fetch "NIST FIPS 140"
108
- expect(bib).to be_instance_of Relaton::Nist::ItemData
109
- expect(bib.docidentifier[0].content).to eq "NIST FIPS 140"
110
- end
111
-
112
- it "gets SP" do
113
- require "relaton/nist"
114
- docid = Relaton::Bib::Docidentifier.new(content: "NIST SP 800-38B",
115
- type: "NIST")
116
- item = Relaton::Nist::ItemData.new docidentifier: [docid]
117
- expect(Relaton::Nist::Bibliography).to receive(:get).with(
118
- "NIST SP 800-38B", nil, {}
119
- ).and_return item
120
- bib = @db.fetch "NIST SP 800-38B"
121
- expect(bib).to be_instance_of Relaton::Nist::ItemData
122
- expect(bib.docidentifier[0].content).to eq "NIST SP 800-38B"
123
- end
124
- end
125
-
126
- it "deals with a non-existant ISO reference" do
127
- VCR.use_cassette "iso_111111119115_1" do
128
- bib = @db.fetch("ISO 111111119115-1", nil, {})
129
- expect(bib).to be_nil
130
- expect(File.exist?("testcache")).to be true
131
- expect(File.exist?("testcache2")).to be true
132
- testcache = Relaton::DbCache.new "testcache"
133
- expect(testcache.fetched("ISO(ISO 111111119115-1)")).to eq Date.today.to_s
134
- expect(testcache["ISO(ISO 111111119115-1)"]).to include "not_found"
135
- testcache = Relaton::DbCache.new "testcache2"
136
- expect(testcache.fetched("ISO(ISO 111111119115-1)")).to eq Date.today.to_s
137
- expect(testcache["ISO(ISO 111111119115-1)"]).to include "not_found"
138
- end
139
- end
140
-
141
- it "list all elements as a serialization" do
142
- VCR.use_cassette "iso_19115_1_2", match_requests_on: [:path] do
143
- @db.fetch "ISO 19115-1", nil, {}
144
- @db.fetch "ISO 19115-2", nil, {}
145
- end
146
- # file = "spec/support/list_entries.xml"
147
- # File.write file, @db.to_xml unless File.exist? file
148
- docs = Nokogiri::XML @db.to_xml
149
- expect(docs.xpath("/documents/bibdata").size).to eq 2
150
- end
151
-
152
- it "save/load/delete entry" do
153
- @db.save_entry "test key", "test value"
154
- expect(@db.load_entry("test key")).to eq "test value"
155
- expect(@db.load_entry("not existed key")).to be_nil
156
- @db.save_entry "test key", nil
157
- expect(@db.load_entry("test key")).to be_nil
158
- testcache = Relaton::DbCache.new "testcache"
159
- testcache.delete("test_key")
160
- testcache2 = Relaton::DbCache.new "testcache2"
161
- testcache2.delete("test_key")
162
- expect(@db.load_entry("test key")).to be_nil
163
- end
164
-
165
- context "get GB reference" do
166
- it "and cache it" do
167
- VCR.use_cassette "gb_t_20223_2006" do
168
- bib = @db.fetch "CN(GB/T 20223)", "2006", {}
169
- expect(bib).to be_instance_of Relaton::Gb::ItemData
170
- expect(bib.to_xml(bibdata: true)).to include <<~XML
171
- <project-number origyr="2006">GB/T 20223-2006</project-number>
172
- XML
173
- expect(File.exist?("testcache")).to be true
174
- expect(File.exist?("testcache2")).to be true
175
- testcache = Relaton::DbCache.new "testcache"
176
- expect(testcache["CN(GB/T 20223-2006)"]).to include <<~XML
177
- <project-number origyr="2006">GB/T 20223-2006</project-number>
178
- XML
179
- testcache = Relaton::DbCache.new "testcache2"
180
- expect(testcache["CN(GB/T 20223-2006)"]).to include <<~XML
181
- <project-number origyr="2006">GB/T 20223-2006</project-number>
182
- XML
183
- end
184
- end
185
-
186
- it "with year" do
187
- VCR.use_cassette "gb_t_20223_2006" do
188
- bib = @db.fetch "CN(GB/T 20223-2006)", nil, {}
189
- expect(bib).to be_instance_of Relaton::Gb::ItemData
190
- expect(bib.to_xml(bibdata: true)).to include <<~XML
191
- <project-number origyr="2006">GB/T 20223-2006</project-number>
192
- XML
193
- expect(File.exist?("testcache")).to be true
194
- expect(File.exist?("testcache2")).to be true
195
- testcache = Relaton::DbCache.new "testcache"
196
- expect(testcache["CN(GB/T 20223-2006)"]).to include <<~XML
197
- <project-number origyr="2006">GB/T 20223-2006</project-number>
198
- XML
199
- testcache = Relaton::DbCache.new "testcache2"
200
- expect(testcache["CN(GB/T 20223-2006)"]).to include <<~XML
201
- <project-number origyr="2006">GB/T 20223-2006</project-number>
202
- XML
203
- end
204
- end
205
- end
206
-
207
- it "get RFC reference and cache it" do
208
- VCR.use_cassette "rfc_8341" do
209
- bib = @db.fetch "RFC 8341", nil, {}
210
- expect(bib).to be_instance_of Relaton::Ietf::ItemData
211
- expect(bib.to_xml).to match(
212
- /<bibitem id="RFC8341" type="standard" schema-version="v[\d.]+">/,
213
- )
214
- expect(File.exist?("testcache")).to be true
215
- expect(File.exist?("testcache2")).to be true
216
- testcache = Relaton::DbCache.new "testcache"
217
- expect(testcache["IETF(RFC 8341)"]).to include(
218
- '<docidentifier type="IETF" primary="true">RFC 8341</docidentifier>',
219
- )
220
- testcache = Relaton::DbCache.new "testcache2"
221
- expect(testcache["IETF(RFC 8341)"]).to include(
222
- '<docidentifier type="IETF" primary="true">RFC 8341</docidentifier>',
223
- )
224
- end
225
- end
226
-
227
- it "get OGC refrence and cache it" do
228
- cc_fr = /\.relaton\/ogc\/bibliography\.json/
229
- allow(File).to receive(:exist?).with(cc_fr).and_return false
230
- allow(File).to receive(:exist?).with(/etag\.txt/).and_return false
231
- expect(File).to receive(:exist?).and_call_original.at_least :once
232
- expect(File).to receive(:write).with(cc_fr, kind_of(String), kind_of(Hash))
233
- .at_most :once
234
- allow(File).to receive(:write).and_call_original
235
- VCR.use_cassette "ogc_19_025r1" do
236
- ogc_bib = "/Users/andrej/.relaton/ogc/bibliography.json"
237
- expect(File).to receive(:exist?).with(ogc_bib)
238
- .and_return(false).at_most :once
239
- ogc_etag = "/Users/andrej/.relaton/ogc/etag.txt"
240
- expect(File).to receive(:exist?).with(ogc_etag)
241
- .and_return(false).at_most :once
242
- allow(File).to receive(:exist?).and_call_original
243
- bib = @db.fetch "OGC 19-025r1", nil, {}
244
- expect(bib).to be_instance_of Relaton::Ogc::ItemData
245
- end
246
- end
247
-
248
- it "get Calconnect refrence and cache it" do
249
- VCR.use_cassette "cc_dir_10005_2019", match_requests_on: [:path] do
250
- bib = @db.fetch "CC/DIR 10005:2019", nil, {}
251
- expect(bib).to be_instance_of Relaton::Calconnect::ItemData
252
- end
253
- end
254
-
255
- it "get OMG reference" do
256
- VCR.use_cassette "omg_ami4ccm_1_0" do
257
- bib = @db.fetch "OMG AMI4CCM 1.0", nil, {}
258
- expect(bib).to be_instance_of Relaton::Omg::ItemData
259
- end
260
- end
261
-
262
- # it "get UN reference" do
263
- # docid = RelatonBib::DocumentIdentifier.new(
264
- # id: "UN TRADE/CEFACT/2004/32", type: "UN",
265
- # )
266
- # item = RelatonUn::UnBibliographicItem.new(
267
- # docid: [docid],
268
- # session: RelatonUn::Session.new(session_number: "1"),
269
- # )
270
- # expect(RelatonUn::UnBibliography).to receive(:get)
271
- # .with("UN TRADE/CEFACT/2004/32", nil, {})
272
- # .and_return item
273
- # bib = @db.fetch "UN TRADE/CEFACT/2004/32", nil, {}
274
- # expect(bib).to be_instance_of(
275
- # RelatonUn::UnBibliographicItem,
276
- # )
277
- # expect(bib.docidentifier.first.id)
278
- # .to eq "UN TRADE/CEFACT/2004/32"
279
- # end
280
-
281
- it "get W3C reference" do
282
- require "relaton/w3c"
283
- docid = Relaton::Bib::Docidentifier.new(
284
- content: "W3C REC-json-ld11-20200716", type: "W3C",
285
- )
286
- item = Relaton::W3c::ItemData.new docidentifier: [docid]
287
- expect(Relaton::W3c::Bibliography).to receive(:get).with(
288
- "W3C REC-json-ld11-20200716", nil, {}
289
- ).and_return item
290
- bib = @db.fetch "W3C REC-json-ld11-20200716", nil, {}
291
- expect(bib).to be_instance_of Relaton::W3c::ItemData
292
- expect(bib.docidentifier.first.content).to eq "W3C REC-json-ld11-20200716"
293
- end
294
-
295
- it "get CCSDS reference" do
296
- require "relaton/ccsds"
297
- docid = Relaton::Bib::Docidentifier.new content: "CCSDS 230.2-G-1",
298
- type: "CCSDS"
299
- item = Relaton::Ccsds::ItemData.new docidentifier: [docid]
300
- expect(Relaton::Ccsds::Bibliography).to receive(:get).with(
301
- "CCSDS 230.2-G-1", nil, {}
302
- ).and_return item
303
- bib = @db.fetch "CCSDS 230.2-G-1", nil, {}
304
- expect(bib).to be_instance_of Relaton::Ccsds::ItemData
305
- expect(bib.docidentifier.first.content).to eq "CCSDS 230.2-G-1"
306
- end
307
-
308
- it "get IEEE reference", vcr: "ieee_528_2019" do
309
- bib = @db.fetch "IEEE Std 528-2019"
310
- expect(bib).to be_instance_of Relaton::Ieee::ItemData
311
- end
312
-
313
- it "get IHO reference" do
314
- require "relaton/iho"
315
- docid = Relaton::Bib::Docidentifier.new(content: "IHO B-11", type: "IHO")
316
- item = Relaton::Iho::ItemData.new docidentifier: [docid]
317
- expect(Relaton::Iho::Bibliography).to receive(:get).with("IHO B-11", nil,
318
- {}).and_return item
319
- bib = @db.fetch "IHO B-11"
320
- expect(bib).to be_instance_of Relaton::Iho::ItemData
321
- expect(bib.docidentifier.first.content).to eq "IHO B-11"
322
- end
323
-
324
- it "get ECMA reference" do
325
- VCR.use_cassette "ecma_6" do
326
- bib = @db.fetch "ECMA-6"
327
- expect(bib).to be_instance_of Relaton::Ecma::ItemData
328
- end
329
- end
330
-
331
- it "get CIE reference" do
332
- VCR.use_cassette "cie_001_1980" do
333
- bib = @db.fetch "CIE 001-1980"
334
- expect(bib).to be_instance_of Relaton::Cie::ItemData
335
- end
336
- end
337
-
338
- it "get BSI reference" do
339
- require "relaton/bsi"
340
- docid = Relaton::Bib::Docidentifier.new(content: "BSI BS EN ISO 8848",
341
- type: "BSI")
342
- item = Relaton::Bsi::ItemData.new docidentifier: [docid]
343
- expect(Relaton::Bsi::Bibliography).to receive(:get).with(
344
- "BSI BS EN ISO 8848", nil, {}
345
- ).and_return item
346
- bib = @db.fetch "BSI BS EN ISO 8848"
347
- expect(bib).to be_instance_of Relaton::Bsi::ItemData
348
- end
349
-
350
- it "get CEN reference" do
351
- VCR.use_cassette "en_10160_1999" do
352
- bib = @db.fetch "EN 10160:1999"
353
- expect(bib).to be_instance_of Relaton::Cen::ItemData
354
- end
355
- end
356
-
357
- it "get IANA reference" do
358
- require "relaton/iana"
359
- docid = Relaton::Bib::Docidentifier.new(
360
- content: "IANA service-names-port-numbers", type: "IANA",
361
- )
362
- item = Relaton::Iana::ItemData.new docidentifier: [docid]
363
- expect(Relaton::Iana::Bibliography).to receive(:get).with(
364
- "IANA service-names-port-numbers", nil, {}
365
- ).and_return item
366
- bib = @db.fetch "IANA service-names-port-numbers"
367
- expect(bib).to be_instance_of Relaton::Iana::ItemData
368
- end
369
-
370
- it "get 3GPP reference" do
371
- VCR.use_cassette "3gpp_tr_00_01u_umts_3_0_0" do
372
- bib = @db.fetch "3GPP TR 00.01U:UMTS/3.0.0"
373
- expect(bib).to be_instance_of Relaton::ThreeGpp::ItemData
374
- end
375
- end
376
-
377
- it "get OASIS reference" do
378
- require "relaton/oasis"
379
- docid = Relaton::Bib::Docidentifier.new(
380
- content: "OASIS amqp-core-types-v1.0-Pt1", type: "OASIS",
381
- )
382
- item = Relaton::Oasis::ItemData.new docidentifier: [docid]
383
- expect(Relaton::Oasis::Bibliography).to receive(:get).with(
384
- "OASIS amqp-core-types-v1.0-Pt1", nil, {}
385
- ).and_return item
386
- bib = @db.fetch "OASIS amqp-core-types-v1.0-Pt1"
387
- expect(bib).to be_instance_of Relaton::Oasis::ItemData
388
- end
389
-
390
- it "get BIPM reference" do
391
- require "relaton/bipm"
392
- docid = Relaton::Bib::Docidentifier.new(
393
- content: "BIPM Metrologia 29 6 373", type: "BIPM",
394
- )
395
- item = Relaton::Bipm::ItemData.new docidentifier: [docid]
396
- expect(Relaton::Bipm::Bibliography).to receive(:get).with(
397
- "BIPM Metrologia 29 6 373", nil, {}
398
- ).and_return item
399
- bib = @db.fetch "BIPM Metrologia 29 6 373"
400
- expect(bib).to be_instance_of Relaton::Bipm::ItemData
401
- expect(bib.docidentifier.first.content).to eq "BIPM Metrologia 29 6 373"
402
- end
403
-
404
- it "get DOI reference", vcr: "doi_10_6028_nist_ir_8245" do
405
- bib = @db.fetch "doi:10.6028/nist.ir.8245"
406
- expect(bib).to be_instance_of Relaton::Bib::ItemData
407
- end
408
-
409
- it "get JIS reference" do
410
- require "relaton/jis"
411
- docid = Relaton::Bib::Docidentifier.new(content: "JIS X 0001", type: "JIS")
412
- item = Relaton::Jis::ItemData.new docidentifier: [docid]
413
- expect(Relaton::Jis::Bibliography).to receive(:get).with("JIS X 0001", nil,
414
- {}).and_return item
415
- bib = @db.fetch "JIS X 0001"
416
- expect(bib).to be_instance_of Relaton::Jis::ItemData
417
- expect(bib.docidentifier.first.content).to eq "JIS X 0001"
418
- end
419
-
420
- it "get XSF reference" do
421
- require "relaton/xsf"
422
- docid = Relaton::Bib::Docidentifier.new(content: "XEP 0001", type: "XSF")
423
- item = Relaton::Bib::ItemData.new docidentifier: [docid]
424
- expect(Relaton::Xsf::Bibliography).to receive(:get).with("XEP 0001", nil,
425
- {}).and_return item
426
- bib = @db.fetch "XEP 0001"
427
- expect(bib).to be_instance_of Relaton::Xsf::ItemData
428
- expect(bib.docidentifier.first.content).to eq "XEP 0001"
429
- end
430
-
431
- it "get ETSI reference" do
432
- require "relaton/etsi"
433
- docid = Relaton::Bib::Docidentifier.new(content: "ETSI EN 300 175-8",
434
- type: "ETSI")
435
- item = Relaton::Etsi::ItemData.new docidentifier: [docid]
436
- expect(Relaton::Etsi::Bibliography).to receive(:get).with(
437
- "ETSI EN 300 175-8", nil, {}
438
- ).and_return item
439
- bib = @db.fetch "ETSI EN 300 175-8"
440
- expect(bib).to be_instance_of Relaton::Etsi::ItemData
441
- expect(bib.docidentifier.first.content).to eq "ETSI EN 300 175-8"
442
- end
443
-
444
- it "get ISBN reference" do
445
- require "relaton/isbn"
446
- docid = Relaton::Bib::Docidentifier.new(content: "ISBN 978-0-580-50101-4",
447
- type: "ISBN")
448
- item = Relaton::Bib::ItemData.new docidentifier: [docid]
449
- expect(Relaton::Isbn::OpenLibrary).to receive(:get).with(
450
- "ISBN 978-0-580-50101-4", nil, {}
451
- ).and_return item
452
- bib = @db.fetch "ISBN 978-0-580-50101-4"
453
- expect(bib).to be_instance_of Relaton::Bib::ItemData
454
- expect(bib.docidentifier.first.content).to eq "ISBN 978-0-580-50101-4"
455
- end
456
-
457
- it "get PLATEAU reference" do
458
- require "relaton/plateau"
459
- docid = Relaton::Bib::Docidentifier.new(content: "PLATEAU Hanbook #01",
460
- type: "PLATEAU")
461
- item = Relaton::Plateau::ItemData.new docidentifier: [docid]
462
- expect(Relaton::Plateau::Bibliography).to receive(:get).with(
463
- "PLATEAU Hanbook #01", nil, {}
464
- ).and_return item
465
- bib = @db.fetch "PLATEAU Hanbook #01"
466
- expect(bib).to be_instance_of Relaton::Plateau::ItemData
467
- expect(bib.docidentifier.first.content).to eq "PLATEAU Hanbook #01"
468
- end
469
-
470
- context "get combined documents" do
471
- context "ISO" do
472
- it "included" do
473
- VCR.use_cassette "iso_combined_included" do
474
- bib = @db.fetch "ISO 19115-1:2014 + Amd 1"
475
- expect(bib.docidentifier[0].content)
476
- .to eq "ISO 19115-1:2014 + Amd 1"
477
- expect(bib.relation[0].type).to eq "updates"
478
- rel0 = bib.relation[0].bibitem
479
- expect(rel0.docidentifier[0].content)
480
- .to eq "ISO 19115-1:2014"
481
- expect(bib.relation[1].type).to eq "derivedFrom"
482
- expect(bib.relation[1].description).to be_nil
483
- rel1 = bib.relation[1].bibitem
484
- expect(rel1.docidentifier[0].content)
485
- .to eq "ISO 19115-1:2014/Amd 1:2018"
486
- end
487
- end
488
-
489
- it "applied" do
490
- VCR.use_cassette "iso_combined_applied" do
491
- bib = @db.fetch "ISO 19115-1:2014, Amd 1"
492
- expect(bib.docidentifier[0].content)
493
- .to eq "ISO 19115-1:2014, Amd 1"
494
- expect(bib.relation[0].type).to eq "updates"
495
- rel0 = bib.relation[0].bibitem
496
- expect(rel0.docidentifier[0].content)
497
- .to eq "ISO 19115-1:2014"
498
- expect(bib.relation[1].type).to eq "complements"
499
- expect(bib.relation[1].description.content)
500
- .to eq "amendment"
501
- rel1 = bib.relation[1].bibitem
502
- expect(rel1.docidentifier[0].content)
503
- .to eq "ISO 19115-1:2014/Amd 1:2018"
504
- end
505
- end
506
- end
507
-
508
- context "IEC" do
509
- it "included" do
510
- require "relaton/iec"
511
- docid = Relaton::Iec::Docidentifier.new(
512
- content: "IEC 60027-1", type: "IEC",
513
- )
514
- item = Relaton::Iec::ItemData.new(
515
- docidentifier: [docid],
516
- )
517
- expect(Relaton::Iec::Bibliography).to receive(:get)
518
- .with("IEC 60027-1", nil, {}).and_return item
519
- docid1 = Relaton::Iec::Docidentifier.new(
520
- content: "IEC 60027-1/AMD1:1997", type: "IEC",
521
- )
522
- item1 = Relaton::Iec::ItemData.new(
523
- docidentifier: [docid1],
524
- )
525
- expect(Relaton::Iec::Bibliography).to receive(:get)
526
- .with("IEC 60027-1/Amd 1", nil, {})
527
- .and_return item1
528
- docid2 = Relaton::Iec::Docidentifier.new(
529
- content: "IEC 60027-1/AMD2:2005", type: "IEC",
530
- )
531
- item2 = Relaton::Iec::ItemData.new(
532
- docidentifier: [docid2],
533
- )
534
- expect(Relaton::Iec::Bibliography).to receive(:get)
535
- .with("IEC 60027-1/Amd 2", nil, {})
536
- .and_return item2
537
- bib = @db.fetch "IEC 60027-1, Amd 1, Amd 2"
538
- expect(bib.docidentifier[0].content)
539
- .to eq "IEC 60027-1, Amd 1, Amd 2"
540
- expect(bib.relation[0].type).to eq "updates"
541
- rel0 = bib.relation[0].bibitem
542
- expect(rel0.docidentifier[0].content)
543
- .to eq "IEC 60027-1"
544
- expect(bib.relation[1].type).to eq "complements"
545
- expect(bib.relation[1].description.content)
546
- .to eq "amendment"
547
- rel1 = bib.relation[1].bibitem
548
- expect(rel1.docidentifier[0].content)
549
- .to eq "IEC 60027-1/AMD1:1997"
550
- expect(bib.relation[2].type).to eq "complements"
551
- expect(bib.relation[2].description.content)
552
- .to eq "amendment"
553
- rel2 = bib.relation[2].bibitem
554
- expect(rel2.docidentifier[0].content)
555
- .to eq "IEC 60027-1/AMD2:2005"
556
- end
557
- end
558
-
559
- context "ITU" do
560
- it "included" do
561
- require "relaton/itu"
562
- docid = Relaton::Bib::Docidentifier.new(content: "ITU-T G.989.2",
563
- type: "ITU")
564
- org = Relaton::Bib::Organization.new(
565
- name: [Relaton::Bib::TypedLocalizedString.new(
566
- content: "International Telecommunication Union",
567
- )],
568
- abbreviation: Relaton::Bib::LocalizedString.new(content: "ITU-T"),
569
- subdivision: [Relaton::Bib::Subdivision.new(
570
- type: "technical-committee",
571
- subtype: "study-group",
572
- name: [Relaton::Bib::TypedLocalizedString.new(content: "Group")],
573
- )],
574
- )
575
- role = Relaton::Bib::Contributor::Role.new(
576
- type: "author",
577
- description: [Relaton::Bib::LocalizedMarkedUpString.new(
578
- content: "committee",
579
- )],
580
- )
581
- contrib = Relaton::Bib::Contributor.new(organization: org, role: [role])
582
- item = Relaton::Itu::ItemData.new(
583
- docidentifier: [docid], contributor: [contrib],
584
- )
585
- expect(Relaton::Itu::Bibliography).to receive(:get).with(
586
- "ITU-T G.989.2", nil, {}
587
- ).and_return item
588
- docid1 = Relaton::Bib::Docidentifier.new(
589
- content: "ITU-T G.989.2 Amd 1", type: "ITU",
590
- )
591
- item1 = Relaton::Itu::ItemData.new(
592
- docidentifier: [docid1], contributor: [contrib],
593
- )
594
- expect(Relaton::Itu::Bibliography).to receive(:get).with(
595
- "ITU-T G.989.2 Amd 1", nil, {}
596
- ).and_return item1
597
- docid2 = Relaton::Bib::Docidentifier.new(
598
- content: "ITU-T G.989.2 Amd 2", type: "ITU",
599
- )
600
- item2 = Relaton::Itu::ItemData.new(
601
- docidentifier: [docid2], contributor: [contrib],
602
- )
603
- expect(Relaton::Itu::Bibliography).to receive(:get).with(
604
- "ITU-T G.989.2 Amd 2", nil, {}
605
- ).and_return item2
606
- bib = @db.fetch "ITU-T G.989.2, Amd 1, Amd 2"
607
- expect(bib.docidentifier[0].content)
608
- .to eq "ITU-T G.989.2, Amd 1, Amd 2"
609
- expect(bib.relation[0].type).to eq "updates"
610
- rel0 = bib.relation[0].bibitem
611
- expect(rel0.docidentifier[0].content)
612
- .to eq "ITU-T G.989.2"
613
- expect(bib.relation[1].type).to eq "complements"
614
- expect(bib.relation[1].description.content)
615
- .to eq "amendment"
616
- rel1 = bib.relation[1].bibitem
617
- expect(rel1.docidentifier[0].content)
618
- .to eq "ITU-T G.989.2 Amd 1"
619
- expect(bib.relation[2].type).to eq "complements"
620
- expect(bib.relation[2].description.content)
621
- .to eq "amendment"
622
- rel2 = bib.relation[2].bibitem
623
- expect(rel2.docidentifier[0].content)
624
- .to eq "ITU-T G.989.2 Amd 2"
625
- end
626
- end
627
-
628
- context "NIST" do
629
- it "included" do
630
- # VCR.use_cassette "nist_combined_included" do
631
- require "relaton/nist"
632
- doci = Relaton::Bib::Docidentifier.new(content: "SP 800-38A",
633
- type: "NIST")
634
- item = Relaton::Nist::ItemData.new docidentifier: [doci]
635
- expect(Relaton::Nist::Bibliography).to receive(:get).with(
636
- "NIST SP 800-38A", nil, {}
637
- ).and_return item
638
- docid1 = Relaton::Bib::Docidentifier.new(content: "SP 800-38A-Add",
639
- type: "NIST")
640
- item1 = Relaton::Nist::ItemData.new docidentifier: [docid1]
641
- expect(Relaton::Nist::Bibliography).to receive(:get).with(
642
- "NIST SP 800-38A/Add", nil, {}
643
- ).and_return item1
644
- bib = @db.fetch "NIST SP 800-38A, Add"
645
- expect(bib.docidentifier[0].content).to eq "NIST SP 800-38A, Add"
646
- expect(bib.relation[0].type).to eq "updates"
647
- rel0 = bib.relation[0].bibitem
648
- expect(rel0.docidentifier[0].content)
649
- .to eq "SP 800-38A"
650
- expect(bib.relation[1].type).to eq "complements"
651
- expect(bib.relation[1].description.content)
652
- .to eq "amendment"
653
- rel1 = bib.relation[1].bibitem
654
- expect(rel1.docidentifier[0].content)
655
- .to eq "SP 800-38A-Add"
656
- # end
657
- end
658
- end
659
- end
660
-
661
- context "version control" do
662
- before(:each) do
663
- @db.save_entry "iso(test_key)",
664
- "<bibitem><title>test_value</title></bibitem>"
665
- end
666
-
667
- it "shoudn't clear cache if version isn't changed" do
668
- testcache = @db.instance_variable_get :@db
669
- expect(testcache.all).to be_any
670
- testcache = @db.instance_variable_get :@local_db
671
- expect(testcache.all).to be_any
672
- end
673
-
674
- it "should clear cache if version is changed" do
675
- expect(File.read("testcache/iso/version",
676
- encoding: "UTF-8")).not_to eq "new_version"
677
- expect(File.read("testcache2/iso/version",
678
- encoding: "UTF-8")).not_to eq "new_version"
679
- processor = double "processor", short: :relaton_iso
680
- expect(processor).to receive(:grammar_hash)
681
- .and_return("new_version").exactly(2).times
682
- expect(Relaton::Registry.instance)
683
- .to receive(:by_type)
684
- .and_return(processor).exactly(2).times
685
- Relaton::Db.new "testcache", "testcache2"
686
- expect(File.exist?("testcache/iso/version")).to eq false
687
- expect(File.exist?("testcache2/iso/version")).to eq false
688
- end
689
- end
690
-
691
- context "api.relaton.org" do
692
- before(:each) do
693
- Relaton.configure do |config|
694
- config.use_api = true
695
- # config.api_host = "http://0.0.0.0:9292"
696
- end
697
- end
698
-
699
- after(:each) do
700
- Relaton.configure do |config|
701
- config.use_api = false
702
- end
703
- end
704
-
705
- it "get document" do
706
- VCR.use_cassette "api_relaton_org" do
707
- bib = @db.fetch "ISO 19115-2", "2019"
708
- expect(bib).to be_instance_of Relaton::Iso::ItemData
709
- end
710
- end
711
-
712
- it "if unavailable then get document directly" do
713
- expect(Net::HTTP).to receive(:get_response)
714
- .and_wrap_original do |m, *args|
715
- raise Errno::ECONNREFUSED if args[0].host == "api.relaton.org"
716
-
717
- m.call(*args)
718
- end.at_least :once
719
- VCR.use_cassette "api_relaton_org_unavailable" do
720
- bib = @db.fetch "ISO 19115-2", "2019"
721
- expect(bib).to be_instance_of Relaton::Iso::ItemData
722
- end
723
- end
724
- end
725
- end