countries 5.1.0 → 6.0.0

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 (544) hide show
  1. checksums.yaml +4 -4
  2. data/lib/countries/cache/countries.json +1 -1
  3. data/lib/countries/cache/locales/ab.json +1 -1
  4. data/lib/countries/cache/locales/ak.json +1 -1
  5. data/lib/countries/cache/locales/an.json +1 -1
  6. data/lib/countries/cache/locales/ar.json +1 -1
  7. data/lib/countries/cache/locales/ay.json +1 -1
  8. data/lib/countries/cache/locales/ba.json +1 -1
  9. data/lib/countries/cache/locales/bi.json +1 -1
  10. data/lib/countries/cache/locales/ch.json +1 -1
  11. data/lib/countries/cache/locales/de.json +1 -1
  12. data/lib/countries/cache/locales/ee.json +1 -1
  13. data/lib/countries/cache/locales/en.json +1 -1
  14. data/lib/countries/cache/locales/fr.json +1 -1
  15. data/lib/countries/cache/locales/gn.json +1 -1
  16. data/lib/countries/cache/locales/ja.json +1 -1
  17. data/lib/countries/cache/locales/ki.json +1 -1
  18. data/lib/countries/cache/locales/kl.json +1 -1
  19. data/lib/countries/cache/locales/lt.json +1 -1
  20. data/lib/countries/cache/locales/pt-br.json +1 -1
  21. data/lib/countries/cache/locales/sd.json +1 -1
  22. data/lib/countries/cache/locales/sw.json +1 -1
  23. data/lib/countries/cache/locales/th.json +1 -1
  24. data/lib/countries/cache/locales/tk.json +1 -1
  25. data/lib/countries/cache/locales/tl.json +1 -1
  26. data/lib/countries/cache/locales/ve.json +1 -1
  27. data/lib/countries/cache/locales/xh.json +1 -1
  28. data/lib/countries/configuration.rb +1 -1
  29. data/lib/countries/country/class_methods.rb +22 -23
  30. data/lib/countries/country/country_subdivision_methods.rb +82 -0
  31. data/lib/countries/country/currency_methods.rb +0 -1
  32. data/lib/countries/country/emoji.rb +1 -1
  33. data/lib/countries/country/finder_methods.rb +5 -7
  34. data/lib/countries/country.rb +27 -51
  35. data/lib/countries/data/countries/AD.yaml +1 -0
  36. data/lib/countries/data/countries/AE.yaml +1 -0
  37. data/lib/countries/data/countries/AF.yaml +1 -0
  38. data/lib/countries/data/countries/AG.yaml +1 -0
  39. data/lib/countries/data/countries/AI.yaml +1 -0
  40. data/lib/countries/data/countries/AL.yaml +1 -0
  41. data/lib/countries/data/countries/AM.yaml +1 -0
  42. data/lib/countries/data/countries/AO.yaml +1 -0
  43. data/lib/countries/data/countries/AQ.yaml +1 -0
  44. data/lib/countries/data/countries/AR.yaml +2 -0
  45. data/lib/countries/data/countries/AS.yaml +1 -0
  46. data/lib/countries/data/countries/AT.yaml +1 -0
  47. data/lib/countries/data/countries/AU.yaml +3 -0
  48. data/lib/countries/data/countries/AW.yaml +1 -0
  49. data/lib/countries/data/countries/AX.yaml +3 -0
  50. data/lib/countries/data/countries/AZ.yaml +1 -0
  51. data/lib/countries/data/countries/BA.yaml +1 -0
  52. data/lib/countries/data/countries/BB.yaml +1 -0
  53. data/lib/countries/data/countries/BD.yaml +1 -0
  54. data/lib/countries/data/countries/BE.yaml +1 -0
  55. data/lib/countries/data/countries/BF.yaml +1 -0
  56. data/lib/countries/data/countries/BG.yaml +1 -0
  57. data/lib/countries/data/countries/BH.yaml +1 -0
  58. data/lib/countries/data/countries/BI.yaml +1 -0
  59. data/lib/countries/data/countries/BJ.yaml +1 -0
  60. data/lib/countries/data/countries/BL.yaml +1 -0
  61. data/lib/countries/data/countries/BM.yaml +1 -0
  62. data/lib/countries/data/countries/BN.yaml +1 -0
  63. data/lib/countries/data/countries/BO.yaml +1 -0
  64. data/lib/countries/data/countries/BQ.yaml +1 -0
  65. data/lib/countries/data/countries/BR.yaml +2 -0
  66. data/lib/countries/data/countries/BS.yaml +2 -2
  67. data/lib/countries/data/countries/BT.yaml +1 -0
  68. data/lib/countries/data/countries/BV.yaml +1 -0
  69. data/lib/countries/data/countries/BW.yaml +1 -0
  70. data/lib/countries/data/countries/BY.yaml +1 -0
  71. data/lib/countries/data/countries/BZ.yaml +1 -0
  72. data/lib/countries/data/countries/CA.yaml +3 -0
  73. data/lib/countries/data/countries/CC.yaml +1 -0
  74. data/lib/countries/data/countries/CD.yaml +1 -0
  75. data/lib/countries/data/countries/CF.yaml +1 -0
  76. data/lib/countries/data/countries/CG.yaml +1 -0
  77. data/lib/countries/data/countries/CH.yaml +1 -0
  78. data/lib/countries/data/countries/CI.yaml +1 -0
  79. data/lib/countries/data/countries/CK.yaml +1 -0
  80. data/lib/countries/data/countries/CL.yaml +1 -0
  81. data/lib/countries/data/countries/CM.yaml +1 -0
  82. data/lib/countries/data/countries/CN.yaml +2 -0
  83. data/lib/countries/data/countries/CO.yaml +1 -0
  84. data/lib/countries/data/countries/CR.yaml +1 -0
  85. data/lib/countries/data/countries/CU.yaml +1 -0
  86. data/lib/countries/data/countries/CV.yaml +1 -0
  87. data/lib/countries/data/countries/CW.yaml +1 -0
  88. data/lib/countries/data/countries/CX.yaml +1 -0
  89. data/lib/countries/data/countries/CY.yaml +1 -0
  90. data/lib/countries/data/countries/CZ.yaml +3 -3
  91. data/lib/countries/data/countries/DE.yaml +3 -0
  92. data/lib/countries/data/countries/DJ.yaml +1 -0
  93. data/lib/countries/data/countries/DK.yaml +1 -0
  94. data/lib/countries/data/countries/DM.yaml +1 -0
  95. data/lib/countries/data/countries/DO.yaml +1 -0
  96. data/lib/countries/data/countries/DZ.yaml +1 -0
  97. data/lib/countries/data/countries/EC.yaml +1 -0
  98. data/lib/countries/data/countries/EE.yaml +1 -0
  99. data/lib/countries/data/countries/EG.yaml +1 -0
  100. data/lib/countries/data/countries/EH.yaml +1 -0
  101. data/lib/countries/data/countries/ER.yaml +1 -0
  102. data/lib/countries/data/countries/ES.yaml +1 -0
  103. data/lib/countries/data/countries/ET.yaml +1 -0
  104. data/lib/countries/data/countries/FI.yaml +1 -0
  105. data/lib/countries/data/countries/FJ.yaml +1 -0
  106. data/lib/countries/data/countries/FK.yaml +1 -0
  107. data/lib/countries/data/countries/FM.yaml +1 -0
  108. data/lib/countries/data/countries/FO.yaml +1 -0
  109. data/lib/countries/data/countries/FR.yaml +3 -0
  110. data/lib/countries/data/countries/GA.yaml +1 -0
  111. data/lib/countries/data/countries/GB.yaml +6 -0
  112. data/lib/countries/data/countries/GD.yaml +1 -0
  113. data/lib/countries/data/countries/GE.yaml +1 -0
  114. data/lib/countries/data/countries/GF.yaml +3 -0
  115. data/lib/countries/data/countries/GG.yaml +1 -0
  116. data/lib/countries/data/countries/GH.yaml +1 -0
  117. data/lib/countries/data/countries/GI.yaml +1 -0
  118. data/lib/countries/data/countries/GL.yaml +1 -0
  119. data/lib/countries/data/countries/GM.yaml +2 -1
  120. data/lib/countries/data/countries/GN.yaml +1 -0
  121. data/lib/countries/data/countries/GP.yaml +4 -1
  122. data/lib/countries/data/countries/GQ.yaml +1 -0
  123. data/lib/countries/data/countries/GR.yaml +1 -0
  124. data/lib/countries/data/countries/GS.yaml +1 -0
  125. data/lib/countries/data/countries/GT.yaml +1 -0
  126. data/lib/countries/data/countries/GU.yaml +1 -0
  127. data/lib/countries/data/countries/GW.yaml +1 -0
  128. data/lib/countries/data/countries/GY.yaml +1 -0
  129. data/lib/countries/data/countries/HK.yaml +1 -0
  130. data/lib/countries/data/countries/HM.yaml +1 -0
  131. data/lib/countries/data/countries/HN.yaml +1 -0
  132. data/lib/countries/data/countries/HR.yaml +2 -1
  133. data/lib/countries/data/countries/HT.yaml +1 -0
  134. data/lib/countries/data/countries/HU.yaml +1 -0
  135. data/lib/countries/data/countries/ID.yaml +2 -0
  136. data/lib/countries/data/countries/IE.yaml +1 -0
  137. data/lib/countries/data/countries/IL.yaml +1 -0
  138. data/lib/countries/data/countries/IM.yaml +1 -0
  139. data/lib/countries/data/countries/IN.yaml +2 -0
  140. data/lib/countries/data/countries/IO.yaml +1 -0
  141. data/lib/countries/data/countries/IQ.yaml +1 -0
  142. data/lib/countries/data/countries/IR.yaml +1 -0
  143. data/lib/countries/data/countries/IS.yaml +1 -0
  144. data/lib/countries/data/countries/IT.yaml +3 -0
  145. data/lib/countries/data/countries/JE.yaml +1 -0
  146. data/lib/countries/data/countries/JM.yaml +1 -0
  147. data/lib/countries/data/countries/JO.yaml +1 -0
  148. data/lib/countries/data/countries/JP.yaml +3 -0
  149. data/lib/countries/data/countries/KE.yaml +1 -0
  150. data/lib/countries/data/countries/KG.yaml +1 -0
  151. data/lib/countries/data/countries/KH.yaml +1 -0
  152. data/lib/countries/data/countries/KI.yaml +1 -0
  153. data/lib/countries/data/countries/KM.yaml +1 -0
  154. data/lib/countries/data/countries/KN.yaml +1 -0
  155. data/lib/countries/data/countries/KP.yaml +1 -0
  156. data/lib/countries/data/countries/KR.yaml +2 -0
  157. data/lib/countries/data/countries/KW.yaml +1 -0
  158. data/lib/countries/data/countries/KY.yaml +1 -0
  159. data/lib/countries/data/countries/KZ.yaml +1 -0
  160. data/lib/countries/data/countries/LA.yaml +1 -0
  161. data/lib/countries/data/countries/LB.yaml +2 -1
  162. data/lib/countries/data/countries/LC.yaml +1 -0
  163. data/lib/countries/data/countries/LI.yaml +3 -0
  164. data/lib/countries/data/countries/LK.yaml +1 -0
  165. data/lib/countries/data/countries/LR.yaml +1 -0
  166. data/lib/countries/data/countries/LS.yaml +1 -0
  167. data/lib/countries/data/countries/LT.yaml +1 -0
  168. data/lib/countries/data/countries/LU.yaml +1 -0
  169. data/lib/countries/data/countries/LV.yaml +1 -0
  170. data/lib/countries/data/countries/LY.yaml +1 -0
  171. data/lib/countries/data/countries/MA.yaml +1 -0
  172. data/lib/countries/data/countries/MC.yaml +3 -0
  173. data/lib/countries/data/countries/MD.yaml +1 -0
  174. data/lib/countries/data/countries/ME.yaml +1 -0
  175. data/lib/countries/data/countries/MF.yaml +4 -1
  176. data/lib/countries/data/countries/MG.yaml +1 -0
  177. data/lib/countries/data/countries/MH.yaml +1 -0
  178. data/lib/countries/data/countries/MK.yaml +2 -0
  179. data/lib/countries/data/countries/ML.yaml +1 -0
  180. data/lib/countries/data/countries/MM.yaml +2 -1
  181. data/lib/countries/data/countries/MN.yaml +1 -0
  182. data/lib/countries/data/countries/MO.yaml +1 -0
  183. data/lib/countries/data/countries/MP.yaml +1 -0
  184. data/lib/countries/data/countries/MQ.yaml +3 -0
  185. data/lib/countries/data/countries/MR.yaml +1 -0
  186. data/lib/countries/data/countries/MS.yaml +1 -0
  187. data/lib/countries/data/countries/MT.yaml +1 -0
  188. data/lib/countries/data/countries/MU.yaml +1 -0
  189. data/lib/countries/data/countries/MV.yaml +1 -0
  190. data/lib/countries/data/countries/MW.yaml +1 -0
  191. data/lib/countries/data/countries/MX.yaml +2 -0
  192. data/lib/countries/data/countries/MY.yaml +1 -0
  193. data/lib/countries/data/countries/MZ.yaml +1 -0
  194. data/lib/countries/data/countries/NA.yaml +1 -0
  195. data/lib/countries/data/countries/NC.yaml +1 -0
  196. data/lib/countries/data/countries/NE.yaml +1 -0
  197. data/lib/countries/data/countries/NF.yaml +1 -0
  198. data/lib/countries/data/countries/NG.yaml +1 -0
  199. data/lib/countries/data/countries/NI.yaml +1 -0
  200. data/lib/countries/data/countries/NL.yaml +2 -0
  201. data/lib/countries/data/countries/NO.yaml +1 -0
  202. data/lib/countries/data/countries/NP.yaml +1 -0
  203. data/lib/countries/data/countries/NR.yaml +1 -0
  204. data/lib/countries/data/countries/NU.yaml +1 -0
  205. data/lib/countries/data/countries/NZ.yaml +1 -0
  206. data/lib/countries/data/countries/OM.yaml +1 -0
  207. data/lib/countries/data/countries/PA.yaml +1 -0
  208. data/lib/countries/data/countries/PE.yaml +1 -0
  209. data/lib/countries/data/countries/PF.yaml +1 -0
  210. data/lib/countries/data/countries/PG.yaml +1 -0
  211. data/lib/countries/data/countries/PH.yaml +1 -0
  212. data/lib/countries/data/countries/PK.yaml +1 -0
  213. data/lib/countries/data/countries/PL.yaml +1 -0
  214. data/lib/countries/data/countries/PM.yaml +1 -0
  215. data/lib/countries/data/countries/PN.yaml +1 -0
  216. data/lib/countries/data/countries/PR.yaml +1 -0
  217. data/lib/countries/data/countries/PS.yaml +3 -0
  218. data/lib/countries/data/countries/PT.yaml +1 -0
  219. data/lib/countries/data/countries/PW.yaml +1 -0
  220. data/lib/countries/data/countries/PY.yaml +1 -0
  221. data/lib/countries/data/countries/QA.yaml +1 -0
  222. data/lib/countries/data/countries/RE.yaml +3 -0
  223. data/lib/countries/data/countries/RO.yaml +1 -0
  224. data/lib/countries/data/countries/RS.yaml +1 -0
  225. data/lib/countries/data/countries/RU.yaml +2 -0
  226. data/lib/countries/data/countries/RW.yaml +1 -0
  227. data/lib/countries/data/countries/SA.yaml +2 -0
  228. data/lib/countries/data/countries/SB.yaml +1 -0
  229. data/lib/countries/data/countries/SC.yaml +1 -0
  230. data/lib/countries/data/countries/SD.yaml +1 -0
  231. data/lib/countries/data/countries/SE.yaml +1 -0
  232. data/lib/countries/data/countries/SG.yaml +1 -0
  233. data/lib/countries/data/countries/SH.yaml +1 -0
  234. data/lib/countries/data/countries/SI.yaml +1 -0
  235. data/lib/countries/data/countries/SJ.yaml +1 -0
  236. data/lib/countries/data/countries/SK.yaml +1 -0
  237. data/lib/countries/data/countries/SL.yaml +1 -0
  238. data/lib/countries/data/countries/SM.yaml +1 -0
  239. data/lib/countries/data/countries/SN.yaml +1 -0
  240. data/lib/countries/data/countries/SO.yaml +1 -0
  241. data/lib/countries/data/countries/SR.yaml +1 -0
  242. data/lib/countries/data/countries/SS.yaml +1 -0
  243. data/lib/countries/data/countries/ST.yaml +1 -0
  244. data/lib/countries/data/countries/SV.yaml +1 -0
  245. data/lib/countries/data/countries/SX.yaml +1 -0
  246. data/lib/countries/data/countries/SY.yaml +1 -0
  247. data/lib/countries/data/countries/SZ.yaml +1 -0
  248. data/lib/countries/data/countries/TC.yaml +1 -0
  249. data/lib/countries/data/countries/TD.yaml +1 -0
  250. data/lib/countries/data/countries/TF.yaml +1 -0
  251. data/lib/countries/data/countries/TG.yaml +1 -0
  252. data/lib/countries/data/countries/TH.yaml +2 -0
  253. data/lib/countries/data/countries/TJ.yaml +1 -0
  254. data/lib/countries/data/countries/TK.yaml +1 -0
  255. data/lib/countries/data/countries/TL.yaml +1 -0
  256. data/lib/countries/data/countries/TM.yaml +2 -1
  257. data/lib/countries/data/countries/TN.yaml +1 -0
  258. data/lib/countries/data/countries/TO.yaml +1 -0
  259. data/lib/countries/data/countries/TR.yaml +4 -2
  260. data/lib/countries/data/countries/TT.yaml +1 -0
  261. data/lib/countries/data/countries/TV.yaml +1 -0
  262. data/lib/countries/data/countries/TW.yaml +16 -13
  263. data/lib/countries/data/countries/TZ.yaml +1 -0
  264. data/lib/countries/data/countries/UA.yaml +1 -0
  265. data/lib/countries/data/countries/UG.yaml +1 -0
  266. data/lib/countries/data/countries/UM.yaml +1 -0
  267. data/lib/countries/data/countries/US.yaml +4 -1
  268. data/lib/countries/data/countries/UY.yaml +1 -0
  269. data/lib/countries/data/countries/UZ.yaml +1 -0
  270. data/lib/countries/data/countries/VA.yaml +1 -0
  271. data/lib/countries/data/countries/VC.yaml +1 -0
  272. data/lib/countries/data/countries/VE.yaml +1 -0
  273. data/lib/countries/data/countries/VG.yaml +1 -0
  274. data/lib/countries/data/countries/VI.yaml +2 -0
  275. data/lib/countries/data/countries/VN.yaml +1 -0
  276. data/lib/countries/data/countries/VU.yaml +1 -0
  277. data/lib/countries/data/countries/WF.yaml +1 -0
  278. data/lib/countries/data/countries/WS.yaml +1 -0
  279. data/lib/countries/data/countries/YE.yaml +1 -0
  280. data/lib/countries/data/countries/YT.yaml +3 -0
  281. data/lib/countries/data/countries/ZA.yaml +2 -0
  282. data/lib/countries/data/countries/ZM.yaml +1 -0
  283. data/lib/countries/data/countries/ZW.yaml +1 -0
  284. data/lib/countries/data/locales_methods.rb +23 -0
  285. data/lib/countries/data/subdivision_methods.rb +30 -0
  286. data/lib/countries/data/subdivisions/AD.yaml +7 -0
  287. data/lib/countries/data/subdivisions/AE.yaml +24 -0
  288. data/lib/countries/data/subdivisions/AF.yaml +200 -1
  289. data/lib/countries/data/subdivisions/AG.yaml +17 -0
  290. data/lib/countries/data/subdivisions/AL.yaml +69 -0
  291. data/lib/countries/data/subdivisions/AM.yaml +44 -0
  292. data/lib/countries/data/subdivisions/AO.yaml +54 -0
  293. data/lib/countries/data/subdivisions/AR.yaml +69 -0
  294. data/lib/countries/data/subdivisions/AT.yaml +35 -0
  295. data/lib/countries/data/subdivisions/AU.yaml +37 -0
  296. data/lib/countries/data/subdivisions/AZ.yaml +316 -2
  297. data/lib/countries/data/subdivisions/BA.yaml +8 -0
  298. data/lib/countries/data/subdivisions/BB.yaml +15 -0
  299. data/lib/countries/data/subdivisions/BD.yaml +211 -0
  300. data/lib/countries/data/subdivisions/BE.yaml +34 -0
  301. data/lib/countries/data/subdivisions/BF.yaml +56 -0
  302. data/lib/countries/data/subdivisions/BG.yaml +30 -0
  303. data/lib/countries/data/subdivisions/BH.yaml +13 -0
  304. data/lib/countries/data/subdivisions/BI.yaml +54 -0
  305. data/lib/countries/data/subdivisions/BJ.yaml +22 -0
  306. data/lib/countries/data/subdivisions/BN.yaml +9 -0
  307. data/lib/countries/data/subdivisions/BO.yaml +35 -0
  308. data/lib/countries/data/subdivisions/BQ.yaml +4 -0
  309. data/lib/countries/data/subdivisions/BR.yaml +14 -0
  310. data/lib/countries/data/subdivisions/BS.yaml +24 -0
  311. data/lib/countries/data/subdivisions/BT.yaml +24 -0
  312. data/lib/countries/data/subdivisions/BW.yaml +24 -0
  313. data/lib/countries/data/subdivisions/BY.yaml +5 -0
  314. data/lib/countries/data/subdivisions/BZ.yaml +3 -0
  315. data/lib/countries/data/subdivisions/CA.yaml +24 -0
  316. data/lib/countries/data/subdivisions/CD.yaml +77 -0
  317. data/lib/countries/data/subdivisions/CF.yaml +15 -0
  318. data/lib/countries/data/subdivisions/CG.yaml +18 -0
  319. data/lib/countries/data/subdivisions/CH.yaml +92 -0
  320. data/lib/countries/data/subdivisions/CI.yaml +65 -0
  321. data/lib/countries/data/subdivisions/CL.yaml +45 -2
  322. data/lib/countries/data/subdivisions/CM.yaml +22 -0
  323. data/lib/countries/data/subdivisions/CN.yaml +98 -0
  324. data/lib/countries/data/subdivisions/CO.yaml +68 -0
  325. data/lib/countries/data/subdivisions/CR.yaml +14 -0
  326. data/lib/countries/data/subdivisions/CU.yaml +42 -0
  327. data/lib/countries/data/subdivisions/CV.yaml +32 -0
  328. data/lib/countries/data/subdivisions/CY.yaml +18 -0
  329. data/lib/countries/data/subdivisions/CZ.yaml +227 -0
  330. data/lib/countries/data/subdivisions/DE.yaml +31 -0
  331. data/lib/countries/data/subdivisions/DJ.yaml +16 -0
  332. data/lib/countries/data/subdivisions/DK.yaml +13 -0
  333. data/lib/countries/data/subdivisions/DM.yaml +1 -0
  334. data/lib/countries/data/subdivisions/DO.yaml +102 -0
  335. data/lib/countries/data/subdivisions/DZ.yaml +104 -0
  336. data/lib/countries/data/subdivisions/EC.yaml +72 -0
  337. data/lib/countries/data/subdivisions/EE.yaml +6 -0
  338. data/lib/countries/data/subdivisions/EG.yaml +54 -0
  339. data/lib/countries/data/subdivisions/ER.yaml +2 -0
  340. data/lib/countries/data/subdivisions/ES.yaml +252 -0
  341. data/lib/countries/data/subdivisions/ET.yaml +27 -0
  342. data/lib/countries/data/subdivisions/FI.yaml +78 -0
  343. data/lib/countries/data/subdivisions/FJ.yaml +30 -0
  344. data/lib/countries/data/subdivisions/FM.yaml +11 -0
  345. data/lib/countries/data/subdivisions/FR.yaml +332 -1
  346. data/lib/countries/data/subdivisions/GA.yaml +24 -0
  347. data/lib/countries/data/subdivisions/GB.yaml +488 -0
  348. data/lib/countries/data/subdivisions/GD.yaml +10 -0
  349. data/lib/countries/data/subdivisions/GE.yaml +34 -0
  350. data/lib/countries/data/subdivisions/GH.yaml +79 -0
  351. data/lib/countries/data/subdivisions/GL.yaml +58 -0
  352. data/lib/countries/data/subdivisions/GM.yaml +10 -0
  353. data/lib/countries/data/subdivisions/GN.yaml +65 -0
  354. data/lib/countries/data/subdivisions/GQ.yaml +36 -0
  355. data/lib/countries/data/subdivisions/GR.yaml +41 -0
  356. data/lib/countries/data/subdivisions/GW.yaml +24 -0
  357. data/lib/countries/data/subdivisions/GY.yaml +31 -0
  358. data/lib/countries/data/subdivisions/HN.yaml +21 -0
  359. data/lib/countries/data/subdivisions/HR.yaml +82 -0
  360. data/lib/countries/data/subdivisions/HT.yaml +14 -0
  361. data/lib/countries/data/subdivisions/HU.yaml +94 -0
  362. data/lib/countries/data/subdivisions/ID.yaml +99 -0
  363. data/lib/countries/data/subdivisions/IE.yaml +39 -0
  364. data/lib/countries/data/subdivisions/IL.yaml +15 -0
  365. data/lib/countries/data/subdivisions/IN.yaml +219 -9
  366. data/lib/countries/data/subdivisions/IQ.yaml +59 -0
  367. data/lib/countries/data/subdivisions/IR.yaml +34 -2
  368. data/lib/countries/data/subdivisions/IS.yaml +560 -0
  369. data/lib/countries/data/subdivisions/IT.yaml +321 -0
  370. data/lib/countries/data/subdivisions/JM.yaml +22 -0
  371. data/lib/countries/data/subdivisions/JO.yaml +16 -0
  372. data/lib/countries/data/subdivisions/JP.yaml +42 -0
  373. data/lib/countries/data/subdivisions/KE.yaml +298 -0
  374. data/lib/countries/data/subdivisions/KG.yaml +28 -0
  375. data/lib/countries/data/subdivisions/KH.yaml +108 -0
  376. data/lib/countries/data/subdivisions/KI.yaml +6 -0
  377. data/lib/countries/data/subdivisions/KM.yaml +4 -0
  378. data/lib/countries/data/subdivisions/KN.yaml +6 -0
  379. data/lib/countries/data/subdivisions/KP.yaml +42 -0
  380. data/lib/countries/data/subdivisions/KR.yaml +36 -0
  381. data/lib/countries/data/subdivisions/KW.yaml +5 -0
  382. data/lib/countries/data/subdivisions/KZ.yaml +127 -0
  383. data/lib/countries/data/subdivisions/LA.yaml +49 -0
  384. data/lib/countries/data/subdivisions/LB.yaml +28 -0
  385. data/lib/countries/data/subdivisions/LC.yaml +6 -0
  386. data/lib/countries/data/subdivisions/LI.yaml +37 -0
  387. data/lib/countries/data/subdivisions/LK.yaml +67 -0
  388. data/lib/countries/data/subdivisions/LR.yaml +16 -0
  389. data/lib/countries/data/subdivisions/LS.yaml +23 -0
  390. data/lib/countries/data/subdivisions/LT.yaml +315 -0
  391. data/lib/countries/data/subdivisions/LU.yaml +31 -0
  392. data/lib/countries/data/subdivisions/LV.yaml +83 -0
  393. data/lib/countries/data/subdivisions/LY.yaml +16 -0
  394. data/lib/countries/data/subdivisions/MA.yaml +827 -12
  395. data/lib/countries/data/subdivisions/MC.yaml +47 -0
  396. data/lib/countries/data/subdivisions/MD.yaml +41 -0
  397. data/lib/countries/data/subdivisions/ME.yaml +83 -0
  398. data/lib/countries/data/subdivisions/MG.yaml +21 -0
  399. data/lib/countries/data/subdivisions/MH.yaml +70 -0
  400. data/lib/countries/data/subdivisions/MK.yaml +505 -0
  401. data/lib/countries/data/subdivisions/ML.yaml +33 -0
  402. data/lib/countries/data/subdivisions/MM.yaml +51 -0
  403. data/lib/countries/data/subdivisions/MN.yaml +94 -0
  404. data/lib/countries/data/subdivisions/MR.yaml +32 -0
  405. data/lib/countries/data/subdivisions/MT.yaml +126 -0
  406. data/lib/countries/data/subdivisions/MU.yaml +21 -0
  407. data/lib/countries/data/subdivisions/MV.yaml +20 -0
  408. data/lib/countries/data/subdivisions/MW.yaml +52 -0
  409. data/lib/countries/data/subdivisions/MX.yaml +23 -0
  410. data/lib/countries/data/subdivisions/MY.yaml +24 -0
  411. data/lib/countries/data/subdivisions/MZ.yaml +20 -0
  412. data/lib/countries/data/subdivisions/NA.yaml +28 -0
  413. data/lib/countries/data/subdivisions/NE.yaml +9 -0
  414. data/lib/countries/data/subdivisions/NG.yaml +89 -0
  415. data/lib/countries/data/subdivisions/NI.yaml +25 -0
  416. data/lib/countries/data/subdivisions/NL.yaml +24 -0
  417. data/lib/countries/data/subdivisions/NO.yaml +138 -1
  418. data/lib/countries/data/subdivisions/NP.yaml +9 -0
  419. data/lib/countries/data/subdivisions/NR.yaml +19 -0
  420. data/lib/countries/data/subdivisions/NZ.yaml +34 -0
  421. data/lib/countries/data/subdivisions/OM.yaml +10 -0
  422. data/lib/countries/data/subdivisions/PA.yaml +27 -0
  423. data/lib/countries/data/subdivisions/PE.yaml +24 -0
  424. data/lib/countries/data/subdivisions/PG.yaml +46 -0
  425. data/lib/countries/data/subdivisions/PH.yaml +293 -0
  426. data/lib/countries/data/subdivisions/PK.yaml +22 -0
  427. data/lib/countries/data/subdivisions/PL.yaml +141 -0
  428. data/lib/countries/data/subdivisions/PS.yaml +41 -0
  429. data/lib/countries/data/subdivisions/PT.yaml +36 -0
  430. data/lib/countries/data/subdivisions/PW.yaml +24 -0
  431. data/lib/countries/data/subdivisions/PY.yaml +22 -1
  432. data/lib/countries/data/subdivisions/QA.yaml +26 -0
  433. data/lib/countries/data/subdivisions/RO.yaml +189 -0
  434. data/lib/countries/data/subdivisions/RS.yaml +112 -0
  435. data/lib/countries/data/subdivisions/RU.yaml +123 -0
  436. data/lib/countries/data/subdivisions/RW.yaml +7 -0
  437. data/lib/countries/data/subdivisions/SA.yaml +38 -0
  438. data/lib/countries/data/subdivisions/SB.yaml +11 -0
  439. data/lib/countries/data/subdivisions/SC.yaml +45 -0
  440. data/lib/countries/data/subdivisions/SD.yaml +15 -0
  441. data/lib/countries/data/subdivisions/SE.yaml +42 -0
  442. data/lib/countries/data/subdivisions/SG.yaml +8 -0
  443. data/lib/countries/data/subdivisions/SH.yaml +6 -0
  444. data/lib/countries/data/subdivisions/SI.yaml +735 -0
  445. data/lib/countries/data/subdivisions/SK.yaml +22 -0
  446. data/lib/countries/data/subdivisions/SL.yaml +7 -0
  447. data/lib/countries/data/subdivisions/SM.yaml +19 -0
  448. data/lib/countries/data/subdivisions/SN.yaml +43 -0
  449. data/lib/countries/data/subdivisions/SO.yaml +71 -0
  450. data/lib/countries/data/subdivisions/SR.yaml +17 -0
  451. data/lib/countries/data/subdivisions/SS.yaml +4 -0
  452. data/lib/countries/data/subdivisions/ST.yaml +127 -0
  453. data/lib/countries/data/subdivisions/SV.yaml +20 -0
  454. data/lib/countries/data/subdivisions/SY.yaml +53 -0
  455. data/lib/countries/data/subdivisions/SZ.yaml +18 -0
  456. data/lib/countries/data/subdivisions/TD.yaml +51 -0
  457. data/lib/countries/data/subdivisions/TG.yaml +13 -0
  458. data/lib/countries/data/subdivisions/TH.yaml +231 -0
  459. data/lib/countries/data/subdivisions/TJ.yaml +16 -1
  460. data/lib/countries/data/subdivisions/TL.yaml +38 -0
  461. data/lib/countries/data/subdivisions/TM.yaml +16 -1
  462. data/lib/countries/data/subdivisions/TN.yaml +25 -0
  463. data/lib/countries/data/subdivisions/TO.yaml +1 -0
  464. data/lib/countries/data/subdivisions/TR.yaml +93 -0
  465. data/lib/countries/data/subdivisions/TT.yaml +25 -0
  466. data/lib/countries/data/subdivisions/TV.yaml +25 -0
  467. data/lib/countries/data/subdivisions/TW.yaml +106 -0
  468. data/lib/countries/data/subdivisions/TZ.yaml +38 -0
  469. data/lib/countries/data/subdivisions/UA.yaml +108 -1
  470. data/lib/countries/data/subdivisions/UG.yaml +262 -0
  471. data/lib/countries/data/subdivisions/UM.yaml +4 -0
  472. data/lib/countries/data/subdivisions/US.yaml +166 -4
  473. data/lib/countries/data/subdivisions/UY.yaml +27 -0
  474. data/lib/countries/data/subdivisions/UZ.yaml +78 -1
  475. data/lib/countries/data/subdivisions/VC.yaml +6 -0
  476. data/lib/countries/data/subdivisions/VE.yaml +33 -0
  477. data/lib/countries/data/subdivisions/VN.yaml +131 -0
  478. data/lib/countries/data/subdivisions/VU.yaml +8 -0
  479. data/lib/countries/data/subdivisions/WS.yaml +18 -0
  480. data/lib/countries/data/subdivisions/YE.yaml +16 -0
  481. data/lib/countries/data/subdivisions/ZA.yaml +5 -0
  482. data/lib/countries/data/subdivisions/ZM.yaml +24 -0
  483. data/lib/countries/data/subdivisions/ZW.yaml +21 -0
  484. data/lib/countries/data/translations/countries-ab.yaml +1 -1
  485. data/lib/countries/data/translations/countries-ak.yaml +1 -1
  486. data/lib/countries/data/translations/countries-an.yaml +1 -1
  487. data/lib/countries/data/translations/countries-ar.yaml +1 -1
  488. data/lib/countries/data/translations/countries-ay.yaml +1 -1
  489. data/lib/countries/data/translations/countries-ba.yaml +1 -1
  490. data/lib/countries/data/translations/countries-bi.yaml +1 -1
  491. data/lib/countries/data/translations/countries-ch.yaml +1 -1
  492. data/lib/countries/data/translations/countries-de.yaml +2 -2
  493. data/lib/countries/data/translations/countries-ee.yaml +1 -1
  494. data/lib/countries/data/translations/countries-en.yaml +1 -1
  495. data/lib/countries/data/translations/countries-fr.yaml +7 -7
  496. data/lib/countries/data/translations/countries-gn.yaml +2 -2
  497. data/lib/countries/data/translations/countries-ja.yaml +4 -4
  498. data/lib/countries/data/translations/countries-ki.yaml +1 -1
  499. data/lib/countries/data/translations/countries-kl.yaml +1 -1
  500. data/lib/countries/data/translations/countries-lt.yaml +2 -2
  501. data/lib/countries/data/translations/countries-pt_BR.yaml +1 -1
  502. data/lib/countries/data/translations/countries-sd.yaml +1 -1
  503. data/lib/countries/data/translations/countries-sw.yaml +1 -1
  504. data/lib/countries/data/translations/countries-th.yaml +2 -2
  505. data/lib/countries/data/translations/countries-tk.yaml +88 -88
  506. data/lib/countries/data/translations/countries-tl.yaml +1 -1
  507. data/lib/countries/data/translations/countries-ve.yaml +1 -1
  508. data/lib/countries/data/translations/countries-xh.yaml +1 -1
  509. data/lib/countries/data.rb +31 -43
  510. data/lib/countries/global.rb +0 -1
  511. data/lib/countries/iso3166.rb +3 -1
  512. data/lib/countries/sources/cldr/subdivision.rb +1 -1
  513. data/lib/countries/structure.rb +1 -0
  514. data/lib/countries/subdivision.rb +5 -0
  515. data/lib/countries/tasks/postal_codes.rake +6 -2
  516. data/lib/countries/version.rb +1 -1
  517. data/lib/countries.rb +0 -2
  518. metadata +25 -44
  519. data/.github/workflows/codeql-analysis.yml +0 -70
  520. data/.github/workflows/tests.yml +0 -35
  521. data/.gitignore +0 -26
  522. data/.rspec +0 -2
  523. data/.rubocop.yml +0 -40
  524. data/.rubocop_todo.yml +0 -19
  525. data/CHANGELOG.md +0 -663
  526. data/Gemfile +0 -16
  527. data/LICENSE +0 -24
  528. data/README.markdown +0 -346
  529. data/Rakefile +0 -63
  530. data/UPGRADE.md +0 -39
  531. data/bin/console +0 -15
  532. data/countries.gemspec +0 -30
  533. data/lib/countries/kwarg_struct.rb +0 -14
  534. data/lib/countries/tasks/geocoding.rake +0 -106
  535. data/spec/00_global_spec.rb +0 -58
  536. data/spec/configuration_spec.rb +0 -60
  537. data/spec/country_spec.rb +0 -1131
  538. data/spec/data_spec.rb +0 -245
  539. data/spec/mongoid_spec.rb +0 -61
  540. data/spec/perf_spec.rb +0 -74
  541. data/spec/spec_helper.rb +0 -15
  542. data/spec/subdivision_spec.rb +0 -34
  543. data/spec/thread_safety_spec.rb +0 -47
  544. data/spec/timezone_spec.rb +0 -34
data/spec/data_spec.rb DELETED
@@ -1,245 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'benchmark'
5
-
6
- describe ISO3166::Data do
7
- it 'responds to call' do
8
- data = ISO3166::Data.new('US').call
9
- expect(data['translated_names']).to be_a Array
10
- end
11
-
12
- it 'can load selective locales' do
13
- # ISO3166::Data.update_cache
14
- ISO3166.configuration.locales = %i[es de en]
15
- data = ISO3166::Data.new('US').call
16
- expect(data['translated_names'].size).to eq 3
17
- end
18
-
19
- it 'can load selective locales and reload efficiently' do
20
- ISO3166.configuration.locales = %i[es de en]
21
- data = ISO3166::Data.new('US').call
22
- expect(data['translations']).to eq('de' => 'Vereinigte Staaten', 'es' => 'Estados Unidos', 'en' => 'United States')
23
- expect(data['translated_names'].sort).to eq ['Vereinigte Staaten', 'Estados Unidos', 'United States'].sort
24
- ISO3166.configuration.locales = [:en]
25
- data = ISO3166::Data.new('US').call
26
- expect(data['translated_names'].size).to eq 1
27
- end
28
-
29
- describe '#codes' do
30
- it 'returns an array' do
31
- data = ISO3166::Data.codes
32
- expect(data).to be_a Array
33
- expect(data.size).to eq 249
34
- end
35
- end
36
-
37
- it 'locales will load prior to return results' do
38
- # require 'memory_profiler'
39
- ISO3166.configuration.locales = %i[es de en]
40
- # report = MemoryProfiler.report do
41
- ISO3166::Data.update_cache
42
- # end
43
-
44
- # report.pretty_print(to_file: 'tmp/memory/3_locales')
45
- ISO3166::Data.update_cache
46
-
47
- ISO3166.configure do |config|
48
- config.locales = %i[af am ar as az be bg bn br bs ca cs cy da de dz el en
49
- eo es et eu fa fi fo fr ga gl gu he hi hr hu hy ia id
50
- is it ja ka kk km kn ko ku lt lv mi mk ml mn mr ms mt
51
- nb ne nl nn oc or pa pl ps pt ro ru rw si sk sl so sq
52
- sr sv sw ta te th ti tk tl tr tt ug uk ve vi wa wo xh
53
- zh zu]
54
- end
55
- # puts Benchmark.measure {ISO3166::Data.update_cache}
56
-
57
- # report = MemoryProfiler.report do
58
- ISO3166::Data.update_cache
59
- # end
60
-
61
- # report.pretty_print(to_file: 'tmp/memory/all_locales')
62
-
63
- expect(ISO3166::Country.new('DE').translations.size).to eq 92
64
-
65
- expect(ISO3166.configuration.loaded_locales.size).to eq 92
66
- end
67
-
68
- it 'locales will load prior and be cached' do
69
- ISO3166.reset
70
- ISO3166.configuration.locales = %i[es de en]
71
- expect(ISO3166::Data.send(:locales_to_load)).to eql(%w[es de en])
72
- ISO3166::Data.update_cache
73
- ISO3166.configuration.locales = %i[es de en]
74
- expect(ISO3166::Data.send(:locales_to_load)).to eql([])
75
- end
76
-
77
- it 'locales will load prior and be cached' do
78
- ISO3166.reset
79
- ISO3166.configuration.locales = %i[es de en]
80
- expect(ISO3166::Data.send(:locales_to_remove)).to eql([])
81
- expect(ISO3166::Country.new('DE').translation('de')).to eq 'Deutschland'
82
- ISO3166::Data.update_cache
83
- ISO3166.configuration.locales = %i[es en]
84
- expect(ISO3166::Data.send(:locales_to_remove)).to eql(['de'])
85
- expect(ISO3166::Country.new('DE').translation('de')).to eq nil
86
- end
87
-
88
- describe '#load_cache' do
89
- it 'will return an empty hash for an unsupported locale' do
90
- file_array = %w[locales unsupported.json]
91
- expect(ISO3166::Data.send(:load_cache, file_array)).to eql({})
92
- end
93
-
94
- it 'will return json for a supported locale' do
95
- file_array = %w[locales en.json]
96
- expect(ISO3166::Data.send(:load_cache, file_array)).not_to be_empty
97
- end
98
- end
99
-
100
- describe 'hotloading existing data' do
101
- before do
102
- ISO3166::Data.register(
103
- alpha2: 'TW',
104
- iso_short_name: 'NEW Taiwan',
105
- subdivisions: {
106
- CHA: { name: 'New Changhua' },
107
- CYI: { name: 'New Municipality' }
108
- },
109
- translations: {
110
- 'en' => 'NEW Taiwan',
111
- 'de' => 'NEW Taiwan'
112
- }
113
- )
114
- end
115
-
116
- subject { ISO3166::Country.new('TW') }
117
-
118
- it 'can be done' do
119
- data = ISO3166::Data.new('TW').call
120
- ISO3166.configuration.locales = [:es, :de, :de]
121
- expect(data['iso_short_name']).to eq 'NEW Taiwan'
122
- expect(subject.iso_short_name).to eq 'NEW Taiwan'
123
- expect(subject.translations).to eq('en' => 'NEW Taiwan',
124
- 'de' => 'NEW Taiwan')
125
- expect(subject.subdivisions.keys).to eq(%w[CHA CYI])
126
- expect(subject.subdivisions.values.map(&:name)).to eq(['New Changhua', 'New Municipality'])
127
- end
128
-
129
- after do
130
- ISO3166.reset
131
- end
132
- end
133
-
134
- describe 'hotloading data' do
135
- before do
136
- ISO3166::Data.register(
137
- alpha2: 'LOL',
138
- iso_short_name: 'Happy Country',
139
- subdivisions: {
140
- LOL1: { name: 'Happy sub1' },
141
- LOL2: { name: 'Happy sub2' }
142
- },
143
- translations: {
144
- 'en' => 'Happy Country',
145
- 'de' => 'glückliches Land'
146
- }
147
- )
148
- end
149
-
150
- subject { ISO3166::Country.new('LOL') }
151
-
152
- it 'can be done' do
153
- data = ISO3166::Data.new('LOL').call
154
- expect(data['iso_short_name']).to eq 'Happy Country'
155
- expect(subject.iso_short_name).to eq 'Happy Country'
156
- expect(subject.subdivisions.keys).to eq(%w[LOL1 LOL2])
157
- expect(subject.subdivisions.values.map(&:name)).to eq(['Happy sub1', 'Happy sub2'])
158
- end
159
-
160
- it 'detect a stale cache' do
161
- ISO3166::Data.register(alpha2: 'SAD', iso_short_name: 'Sad Country')
162
- data = ISO3166::Data.new('SAD').call
163
- expect(data['iso_short_name']).to eq 'Sad Country'
164
- expect(ISO3166::Country.new('SAD').iso_short_name).to eq 'Sad Country'
165
- ISO3166::Data.unregister('SAD')
166
- end
167
-
168
- it 'will not override custom translations' do
169
- data = ISO3166::Data.new('LOL').call
170
- expect(data['translations']).to eq('en' => 'Happy Country',
171
- 'de' => 'glückliches Land')
172
- expect(subject.translations).to eq('en' => 'Happy Country',
173
- 'de' => 'glückliches Land')
174
- end
175
-
176
- it 'leaves remain countries intact after a hotload' do
177
- data = ISO3166::Data.new('US').call
178
- expect(data).to include('subregion')
179
- end
180
-
181
- it 'can be undone' do
182
- ISO3166::Data.unregister('lol')
183
- data = ISO3166::Data.new('LOL').call
184
- expect(data).to eq nil
185
- end
186
-
187
- after do
188
- ISO3166.reset
189
- end
190
- end
191
-
192
- describe 'data checks' do
193
- context 'subdivision YAML files' do
194
- it 'has a non-blank code for all subdivisions' do
195
- Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
196
- data = YAML.load_file(file)
197
- expect(data.values.none?{|s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{file}"
198
- end
199
- end
200
-
201
- it 'has a non-blank, lowercase and snake_case type for all subdivisions' do
202
- Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
203
- data = YAML.load_file(file)
204
- no_type = data.select{|k,v| v['type'].nil? }
205
- expect(no_type).to be_empty, "empty subdivision type in #{file} - #{no_type.keys}"
206
- uppercase = data.select{|k,v| v['type'] =~ /[A-Z]/ }
207
- expect(uppercase).to be_empty, "uppercase characters in subdivision type in #{file} - #{uppercase.keys}"
208
- spaces = data.select{|k,v| v['type'] =~ /\s/ }
209
- expect(spaces).to be_empty, "whitespace characters in subdivision type in #{file} - #{spaces.keys}"
210
- end
211
- end
212
-
213
- it 'has a non-blank name for all subdivisions' do
214
- Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
215
- data = YAML.load_file(file)
216
- expect(data.values.none?{|s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{file}"
217
- end
218
- end
219
- end
220
-
221
- context 'cached country subdivision data' do
222
- it 'has a non-blank code for all subdivisions' do
223
- ISO3166::Country.all.each do |country|
224
- expect(country.subdivisions.values.none?{|s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{country}"
225
- end
226
- end
227
-
228
- it 'has a non-blank name for all subdivisions' do
229
- ISO3166::Country.all.each do |country|
230
- expect(country.subdivisions.values.none?{|s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{country}"
231
- end
232
- end
233
- end
234
-
235
- context 'names in Data' do
236
- it 'should be unique (to allow .find_by_any_name work properly)' do
237
- names = ISO3166::Data.cache.map do |_k, v|
238
- [v['iso_short_name'], v['unofficial_names']].flatten.uniq
239
- end.flatten
240
-
241
- expect(names.size).to eq(names.uniq.size)
242
- end
243
- end
244
- end
245
- end
data/spec/mongoid_spec.rb DELETED
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require File.expand_path('../lib/countries/mongoid', __dir__)
5
-
6
- describe 'Mongoid support' do
7
- let(:britain) { ISO3166::Country.new('GB') }
8
- context 'instance methods' do
9
- describe 'mongoize' do
10
- it 'should delegate mongoization to the class method' do
11
- expect(britain.mongoize).to eql ISO3166::Country.mongoize(britain)
12
- end
13
- end
14
- end
15
-
16
- context 'class methods' do
17
- describe 'mongoize' do
18
- it 'should store the alpha2 given a country object' do
19
- expect(ISO3166::Country.mongoize(britain)).to eql britain.alpha2
20
- end
21
-
22
- it 'should store the alpha2 given a valid alpha2' do
23
- expect(ISO3166::Country.mongoize('GB')).to eql britain.alpha2
24
- end
25
-
26
- it 'should store nil given an invalid object' do
27
- bad_types = [[], Time.now.utc, {}, Date.new(2029, 10, 1)]
28
- bad_types.each do |type|
29
- expect(ISO3166::Country.mongoize(type)).to eql nil
30
- end
31
- end
32
-
33
- it 'should store nil given an empty country object' do
34
- expect(ISO3166::Country.mongoize(ISO3166::Country.new(''))).to eql nil
35
- end
36
-
37
- it 'should store nil given a bad alpha2' do
38
- expect(ISO3166::Country.mongoize('bad_alpha_2')).to eql nil
39
- end
40
- end
41
-
42
- describe 'demongoize' do
43
- it 'should instantiate an equivalent object from stored alpha2 code' do
44
- expect(ISO3166::Country.demongoize(britain.mongoize).data)
45
- .to eql britain.data
46
- end
47
-
48
- it 'should be indifferent to storage by alpha2' do
49
- expect(ISO3166::Country.demongoize(ISO3166::Country.mongoize('GB'))
50
- .data).to eql britain.data
51
- end
52
- end
53
-
54
- describe 'evolve' do
55
- it 'should delegate to self.mongoize and return the mongoized object' do
56
- expect(ISO3166::Country).to receive(:mongoize).with(britain)
57
- ISO3166::Country.evolve(britain)
58
- end
59
- end
60
- end
61
- end
data/spec/perf_spec.rb DELETED
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- ALL_LOCALES = %i[
6
- af am ar as az be bg bn br bs ca cs cy da de
7
- dz el en eo es et eu fa fi fo fr ga gl gu he
8
- hi hr hu hy ia id is it ja ka kk km kn ko ku
9
- lt lv mi mk ml mn mr ms mt nb ne nl nn oc or
10
- pa pl ps pt ro ru rw si sk sl so sq sr sv sw
11
- ta te th ti tk tl tr tt ug uk ve vi wa wo xh
12
- zh zu
13
- ].freeze
14
-
15
- describe ISO3166::Data, perf: true, order: :defined do
16
- def perf_report(_name)
17
- require 'benchmark'
18
- require 'memory_profiler'
19
- require 'ruby-prof'
20
- # profile the code
21
- RubyProf.start
22
-
23
- 100.times do
24
- yield if block_given?
25
- end
26
-
27
- result = RubyProf.stop
28
-
29
- # print a flat profile to text
30
- printer = RubyProf::FlatPrinter.new(result)
31
- printer.print($stdout)
32
- end
33
-
34
- it 'responds to call' do
35
- perf_report('translations') do
36
- ISO3166.reset
37
- data = ISO3166::Data.new('US').call
38
- expect(data['translated_names']).to be_a Array
39
- end
40
- end
41
-
42
- it 'locales will load prior to return results' do
43
- ISO3166.configuration.locales = %i[es de en]
44
- report = MemoryProfiler.report do
45
- ISO3166::Data.update_cache
46
- end
47
-
48
- report.pretty_print(to_file: 'tmp/3_locales.txt')
49
- puts Benchmark.measure { ISO3166::Data.update_cache }
50
-
51
- ISO3166.configure do |config|
52
- config.locales = ALL_LOCALES
53
- end
54
- puts Benchmark.measure { ISO3166::Data.update_cache }
55
-
56
- report = MemoryProfiler.report do
57
- ISO3166::Data.update_cache
58
- end
59
-
60
- report.pretty_print(to_file: 'tmp/all_locales.txt')
61
- end
62
-
63
- it 'loades a specfic country quickly' do
64
- codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
65
- Benchmark.bmbm do |bm|
66
- bm.report('find_by_alpha2') do
67
- codes.map { |cc| ISO3166::Country.find_country_by_alpha2 cc }
68
- end
69
- bm.report('new') do
70
- codes.map { |cc| ISO3166::Country.new cc }
71
- end
72
- end
73
- end
74
- end
data/spec/spec_helper.rb DELETED
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'countries'
4
- RSpec.configure do |config|
5
- config.filter_run :focus
6
- config.run_all_when_everything_filtered = true
7
- config.filter_run_excluding perf: true
8
- config.example_status_persistence_file_path = 'spec/examples.txt'
9
-
10
- config.warnings = true
11
-
12
- config.default_formatter = 'doc' if config.files_to_run.one?
13
- # config.order = :random
14
- # Kernel.srand config.seed
15
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe ISO3166::Subdivision do
6
- before do
7
- ISO3166::Data.reset
8
- end
9
-
10
- let(:countries) { ISO3166::Country.all }
11
- let(:available_types) { [Hash, NilClass] }
12
-
13
- describe 'translations' do
14
- it 'should be hash or nil' do
15
- countries.each do |country|
16
- country.subdivisions.each do |_, region|
17
- expect(available_types).to include(region.translations.class)
18
- end
19
- end
20
- end
21
- end
22
-
23
- describe 'state codes' do
24
- it 'should all be strings' do
25
- countries.each do |country|
26
- expect(country.subdivisions.keys).to(
27
- all(be_a(String)),
28
- "Expected #{country.alpha2.inspect} to have string subdivision \
29
- codes but had #{country.subdivisions.keys.inspect}"
30
- )
31
- end
32
- end
33
- end
34
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe 'Accessing ISO3166::Country instances data in multiple threads' do
4
- before do
5
- if Thread.respond_to?(:report_on_exception)
6
- @report_on_exception_value = Thread.report_on_exception
7
- Thread.report_on_exception = false
8
- end
9
-
10
- ISO3166::Data.reset
11
- end
12
-
13
- def create_countries_threaded
14
- nthreads = 100
15
- threads = []
16
-
17
- alpha2_codes = %w[us es nl ca de fr mx ru ch jp]
18
-
19
- nthreads.times do
20
- threads << Thread.new do
21
- alpha2_codes.each do |a2|
22
- country = ISO3166::Country[a2]
23
- # This will fail if data['translations'] has been
24
- # left nil due to a race condition
25
- country.translation
26
- end
27
- end
28
- end
29
- threads.map(&:join)
30
- end
31
-
32
- it "doesn't raise any exceptions when using a mutex" do
33
- expect { create_countries_threaded }.to_not raise_error
34
- end
35
-
36
- it 'raises NoMethodError when not using a mutex' do
37
- allow(ISO3166::Data).to receive(:use_mutex?).and_return(false)
38
-
39
- expect { create_countries_threaded }.to raise_error(NoMethodError)
40
- end
41
-
42
- after do
43
- if Thread.respond_to?(:report_on_exception)
44
- Thread.report_on_exception = @report_on_exception_value
45
- end
46
- end
47
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- describe 'timezone Country class' do
4
- context "when loaded via 'timezone'" do
5
- require 'tzinfo'
6
- describe 'existence' do
7
- subject { defined?(TZInfo) }
8
-
9
- it { is_expected.to be_truthy }
10
- end
11
-
12
- describe 'GB' do
13
- subject { ISO3166::Country.new('GB') }
14
- it 'should return the tzinfo country object' do
15
- expect(subject.timezones).to be_a(TZInfo::Country)
16
- end
17
-
18
- it 'should return the tzinfo country object' do
19
- expect(subject.timezones.zone_info).to be_a(Array)
20
- end
21
-
22
- it 'should return the tzinfo country object' do
23
- expect(subject.timezones.zone_identifiers).to eq ['Europe/London']
24
- end
25
- end
26
-
27
- describe 'US' do
28
- subject { ISO3166::Country.new('US') }
29
- it 'should return the tzinfo country object' do
30
- expect(subject.timezones.zone_identifiers.size).to eq 29
31
- end
32
- end
33
- end
34
- end