countries 4.2.3 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (520) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql-analysis.yml +70 -0
  3. data/.github/workflows/tests.yml +3 -7
  4. data/.rubocop.yml +40 -1
  5. data/.rubocop_todo.yml +8 -41
  6. data/CHANGELOG.md +35 -2
  7. data/Gemfile +5 -3
  8. data/README.markdown +56 -62
  9. data/Rakefile +21 -45
  10. data/UPGRADE.md +39 -0
  11. data/bin/console +1 -0
  12. data/countries.gemspec +7 -6
  13. data/lib/countries/cache/countries.json +1 -1
  14. data/lib/countries/cache/locales/ab.json +1 -1
  15. data/lib/countries/cache/locales/af.json +1 -1
  16. data/lib/countries/cache/locales/ak.json +1 -1
  17. data/lib/countries/cache/locales/am.json +1 -1
  18. data/lib/countries/cache/locales/an.json +1 -1
  19. data/lib/countries/cache/locales/ar.json +1 -1
  20. data/lib/countries/cache/locales/as.json +1 -1
  21. data/lib/countries/cache/locales/ay.json +1 -1
  22. data/lib/countries/cache/locales/az.json +1 -1
  23. data/lib/countries/cache/locales/ba.json +1 -1
  24. data/lib/countries/cache/locales/be.json +1 -1
  25. data/lib/countries/cache/locales/bg.json +1 -1
  26. data/lib/countries/cache/locales/bi.json +1 -1
  27. data/lib/countries/cache/locales/bn-in.json +1 -1
  28. data/lib/countries/cache/locales/bn.json +1 -1
  29. data/lib/countries/cache/locales/br.json +1 -1
  30. data/lib/countries/cache/locales/bs.json +1 -1
  31. data/lib/countries/cache/locales/ca.json +1 -1
  32. data/lib/countries/cache/locales/ce.json +1 -1
  33. data/lib/countries/cache/locales/ch.json +1 -1
  34. data/lib/countries/cache/locales/cs.json +1 -1
  35. data/lib/countries/cache/locales/cv.json +1 -1
  36. data/lib/countries/cache/locales/cy.json +1 -1
  37. data/lib/countries/cache/locales/da.json +1 -1
  38. data/lib/countries/cache/locales/de.json +1 -1
  39. data/lib/countries/cache/locales/dv.json +1 -1
  40. data/lib/countries/cache/locales/dz.json +1 -1
  41. data/lib/countries/cache/locales/ee.json +1 -1
  42. data/lib/countries/cache/locales/el.json +1 -1
  43. data/lib/countries/cache/locales/en.json +1 -1
  44. data/lib/countries/cache/locales/eo.json +1 -1
  45. data/lib/countries/cache/locales/es.json +1 -1
  46. data/lib/countries/cache/locales/et.json +1 -1
  47. data/lib/countries/cache/locales/eu.json +1 -1
  48. data/lib/countries/cache/locales/fa.json +1 -1
  49. data/lib/countries/cache/locales/ff.json +1 -1
  50. data/lib/countries/cache/locales/fi.json +1 -1
  51. data/lib/countries/cache/locales/fo.json +1 -1
  52. data/lib/countries/cache/locales/fr.json +1 -1
  53. data/lib/countries/cache/locales/fy.json +1 -1
  54. data/lib/countries/cache/locales/ga.json +1 -1
  55. data/lib/countries/cache/locales/gl.json +1 -1
  56. data/lib/countries/cache/locales/gn.json +1 -1
  57. data/lib/countries/cache/locales/gu.json +1 -1
  58. data/lib/countries/cache/locales/gv.json +1 -1
  59. data/lib/countries/cache/locales/ha.json +1 -1
  60. data/lib/countries/cache/locales/he.json +1 -1
  61. data/lib/countries/cache/locales/hi.json +1 -1
  62. data/lib/countries/cache/locales/hr.json +1 -1
  63. data/lib/countries/cache/locales/ht.json +1 -1
  64. data/lib/countries/cache/locales/hu.json +1 -1
  65. data/lib/countries/cache/locales/hy.json +1 -1
  66. data/lib/countries/cache/locales/ia.json +1 -1
  67. data/lib/countries/cache/locales/id.json +1 -1
  68. data/lib/countries/cache/locales/io.json +1 -1
  69. data/lib/countries/cache/locales/is.json +1 -1
  70. data/lib/countries/cache/locales/it.json +1 -1
  71. data/lib/countries/cache/locales/iu.json +1 -1
  72. data/lib/countries/cache/locales/ja.json +1 -1
  73. data/lib/countries/cache/locales/ka.json +1 -1
  74. data/lib/countries/cache/locales/ki.json +1 -1
  75. data/lib/countries/cache/locales/kk.json +1 -1
  76. data/lib/countries/cache/locales/kl.json +1 -1
  77. data/lib/countries/cache/locales/km.json +1 -1
  78. data/lib/countries/cache/locales/kn.json +1 -1
  79. data/lib/countries/cache/locales/ko.json +1 -1
  80. data/lib/countries/cache/locales/kv.json +1 -1
  81. data/lib/countries/cache/locales/kw.json +1 -1
  82. data/lib/countries/cache/locales/ky.json +1 -1
  83. data/lib/countries/cache/locales/lo.json +1 -1
  84. data/lib/countries/cache/locales/lt.json +1 -1
  85. data/lib/countries/cache/locales/lv.json +1 -1
  86. data/lib/countries/cache/locales/mi.json +1 -1
  87. data/lib/countries/cache/locales/mk.json +1 -1
  88. data/lib/countries/cache/locales/ml.json +1 -1
  89. data/lib/countries/cache/locales/mn.json +1 -1
  90. data/lib/countries/cache/locales/mr.json +1 -1
  91. data/lib/countries/cache/locales/ms.json +1 -1
  92. data/lib/countries/cache/locales/mt.json +1 -1
  93. data/lib/countries/cache/locales/my.json +1 -1
  94. data/lib/countries/cache/locales/na.json +1 -1
  95. data/lib/countries/cache/locales/nb.json +1 -1
  96. data/lib/countries/cache/locales/ne.json +1 -1
  97. data/lib/countries/cache/locales/nl.json +1 -1
  98. data/lib/countries/cache/locales/nn.json +1 -1
  99. data/lib/countries/cache/locales/nv.json +1 -1
  100. data/lib/countries/cache/locales/oc.json +1 -1
  101. data/lib/countries/cache/locales/or.json +1 -1
  102. data/lib/countries/cache/locales/pa.json +1 -1
  103. data/lib/countries/cache/locales/pi.json +1 -1
  104. data/lib/countries/cache/locales/pl.json +1 -1
  105. data/lib/countries/cache/locales/ps.json +1 -1
  106. data/lib/countries/cache/locales/pt-br.json +1 -1
  107. data/lib/countries/cache/locales/pt.json +1 -1
  108. data/lib/countries/cache/locales/ro.json +1 -1
  109. data/lib/countries/cache/locales/ru.json +1 -1
  110. data/lib/countries/cache/locales/rw.json +1 -1
  111. data/lib/countries/cache/locales/sc.json +1 -1
  112. data/lib/countries/cache/locales/sd.json +1 -1
  113. data/lib/countries/cache/locales/si.json +1 -1
  114. data/lib/countries/cache/locales/sk.json +1 -1
  115. data/lib/countries/cache/locales/sl.json +1 -1
  116. data/lib/countries/cache/locales/so.json +1 -1
  117. data/lib/countries/cache/locales/sq.json +1 -1
  118. data/lib/countries/cache/locales/sr.json +1 -1
  119. data/lib/countries/cache/locales/sv.json +1 -1
  120. data/lib/countries/cache/locales/sw.json +1 -1
  121. data/lib/countries/cache/locales/ta.json +1 -1
  122. data/lib/countries/cache/locales/te.json +1 -1
  123. data/lib/countries/cache/locales/tg.json +1 -1
  124. data/lib/countries/cache/locales/th.json +1 -1
  125. data/lib/countries/cache/locales/ti.json +1 -1
  126. data/lib/countries/cache/locales/tk.json +1 -1
  127. data/lib/countries/cache/locales/tl.json +1 -1
  128. data/lib/countries/cache/locales/tr.json +1 -1
  129. data/lib/countries/cache/locales/tt.json +1 -1
  130. data/lib/countries/cache/locales/ug.json +1 -1
  131. data/lib/countries/cache/locales/uk.json +1 -1
  132. data/lib/countries/cache/locales/ur.json +1 -1
  133. data/lib/countries/cache/locales/uz.json +1 -1
  134. data/lib/countries/cache/locales/ve.json +1 -1
  135. data/lib/countries/cache/locales/vi.json +1 -1
  136. data/lib/countries/cache/locales/wa.json +1 -1
  137. data/lib/countries/cache/locales/wo.json +1 -1
  138. data/lib/countries/cache/locales/xh.json +1 -1
  139. data/lib/countries/cache/locales/yo.json +1 -1
  140. data/lib/countries/cache/locales/zh-cn.json +1 -1
  141. data/lib/countries/cache/locales/zh-hk.json +1 -1
  142. data/lib/countries/cache/locales/zh-tw.json +1 -1
  143. data/lib/countries/cache/locales/zu.json +1 -1
  144. data/lib/countries/configuration.rb +2 -0
  145. data/lib/countries/country/class_methods.rb +20 -103
  146. data/lib/countries/country/currency_methods.rb +2 -0
  147. data/lib/countries/country/emoji.rb +2 -3
  148. data/lib/countries/country/finder_methods.rb +81 -0
  149. data/lib/countries/country.rb +32 -43
  150. data/lib/countries/data/countries/KN.yaml +0 -1
  151. data/lib/countries/data/subdivisions/AD.yaml +14 -7
  152. data/lib/countries/data/subdivisions/AE.yaml +14 -7
  153. data/lib/countries/data/subdivisions/AF.yaml +196 -201
  154. data/lib/countries/data/subdivisions/AG.yaml +16 -22
  155. data/lib/countries/data/subdivisions/AL.yaml +24 -12
  156. data/lib/countries/data/subdivisions/AM.yaml +22 -11
  157. data/lib/countries/data/subdivisions/AO.yaml +36 -18
  158. data/lib/countries/data/subdivisions/AR.yaml +48 -24
  159. data/lib/countries/data/subdivisions/AT.yaml +18 -9
  160. data/lib/countries/data/subdivisions/AU.yaml +16 -8
  161. data/lib/countries/data/subdivisions/AZ.yaml +434 -412
  162. data/lib/countries/data/subdivisions/BA.yaml +75 -223
  163. data/lib/countries/data/subdivisions/BB.yaml +22 -11
  164. data/lib/countries/data/subdivisions/BD.yaml +188 -116
  165. data/lib/countries/data/subdivisions/BE.yaml +174 -161
  166. data/lib/countries/data/subdivisions/BF.yaml +2918 -2860
  167. data/lib/countries/data/subdivisions/BG.yaml +56 -28
  168. data/lib/countries/data/subdivisions/BH.yaml +8 -21
  169. data/lib/countries/data/subdivisions/BI.yaml +176 -157
  170. data/lib/countries/data/subdivisions/BJ.yaml +24 -12
  171. data/lib/countries/data/subdivisions/BN.yaml +8 -4
  172. data/lib/countries/data/subdivisions/BO.yaml +18 -9
  173. data/lib/countries/data/subdivisions/BQ.yaml +6 -3
  174. data/lib/countries/data/subdivisions/BR.yaml +54 -27
  175. data/lib/countries/data/subdivisions/BS.yaml +575 -697
  176. data/lib/countries/data/subdivisions/BT.yaml +40 -20
  177. data/lib/countries/data/subdivisions/BW.yaml +337 -321
  178. data/lib/countries/data/subdivisions/BY.yaml +106 -116
  179. data/lib/countries/data/subdivisions/BZ.yaml +12 -6
  180. data/lib/countries/data/subdivisions/CA.yaml +26 -13
  181. data/lib/countries/data/subdivisions/CD.yaml +488 -525
  182. data/lib/countries/data/subdivisions/CF.yaml +34 -17
  183. data/lib/countries/data/subdivisions/CG.yaml +40 -28
  184. data/lib/countries/data/subdivisions/CH.yaml +52 -26
  185. data/lib/countries/data/subdivisions/CI.yaml +244 -516
  186. data/lib/countries/data/subdivisions/CL.yaml +81 -65
  187. data/lib/countries/data/subdivisions/CM.yaml +20 -10
  188. data/lib/countries/data/subdivisions/CN.yaml +2152 -2084
  189. data/lib/countries/data/subdivisions/CO.yaml +66 -33
  190. data/lib/countries/data/subdivisions/CR.yaml +14 -7
  191. data/lib/countries/data/subdivisions/CU.yaml +32 -16
  192. data/lib/countries/data/subdivisions/CV.yaml +427 -401
  193. data/lib/countries/data/subdivisions/CY.yaml +12 -6
  194. data/lib/countries/data/subdivisions/CZ.yaml +1116 -85
  195. data/lib/countries/data/subdivisions/DE.yaml +32 -16
  196. data/lib/countries/data/subdivisions/DJ.yaml +12 -6
  197. data/lib/countries/data/subdivisions/DK.yaml +25 -17
  198. data/lib/countries/data/subdivisions/DM.yaml +20 -10
  199. data/lib/countries/data/subdivisions/DO.yaml +84 -42
  200. data/lib/countries/data/subdivisions/DZ.yaml +96 -48
  201. data/lib/countries/data/subdivisions/EC.yaml +158 -134
  202. data/lib/countries/data/subdivisions/EE.yaml +501 -334
  203. data/lib/countries/data/subdivisions/EG.yaml +54 -27
  204. data/lib/countries/data/subdivisions/ER.yaml +12 -6
  205. data/lib/countries/data/subdivisions/ES.yaml +1459 -1390
  206. data/lib/countries/data/subdivisions/ET.yaml +22 -11
  207. data/lib/countries/data/subdivisions/FI.yaml +185 -1
  208. data/lib/countries/data/subdivisions/FJ.yaml +443 -424
  209. data/lib/countries/data/subdivisions/FM.yaml +8 -4
  210. data/lib/countries/data/subdivisions/FR.yaml +438 -275
  211. data/lib/countries/data/subdivisions/GA.yaml +18 -9
  212. data/lib/countries/data/subdivisions/GB.yaml +1185 -1708
  213. data/lib/countries/data/subdivisions/GD.yaml +14 -7
  214. data/lib/countries/data/subdivisions/GE.yaml +24 -12
  215. data/lib/countries/data/subdivisions/GH.yaml +114 -155
  216. data/lib/countries/data/subdivisions/GL.yaml +24 -79
  217. data/lib/countries/data/subdivisions/GM.yaml +12 -6
  218. data/lib/countries/data/subdivisions/GN.yaml +444 -403
  219. data/lib/countries/data/subdivisions/GQ.yaml +24 -13
  220. data/lib/countries/data/subdivisions/GR.yaml +114 -73
  221. data/lib/countries/data/subdivisions/GT.yaml +44 -22
  222. data/lib/countries/data/subdivisions/GW.yaml +69 -57
  223. data/lib/countries/data/subdivisions/GY.yaml +20 -10
  224. data/lib/countries/data/subdivisions/HN.yaml +36 -18
  225. data/lib/countries/data/subdivisions/HR.yaml +42 -21
  226. data/lib/countries/data/subdivisions/HT.yaml +73 -63
  227. data/lib/countries/data/subdivisions/HU.yaml +106 -63
  228. data/lib/countries/data/subdivisions/ID.yaml +229 -188
  229. data/lib/countries/data/subdivisions/IE.yaml +128 -97
  230. data/lib/countries/data/subdivisions/IL.yaml +12 -6
  231. data/lib/countries/data/subdivisions/IN.yaml +245 -396
  232. data/lib/countries/data/subdivisions/IQ.yaml +111 -91
  233. data/lib/countries/data/subdivisions/IR.yaml +1463 -1451
  234. data/lib/countries/data/subdivisions/IS.yaml +160 -25
  235. data/lib/countries/data/subdivisions/IT.yaml +8740 -8292
  236. data/lib/countries/data/subdivisions/JM.yaml +28 -14
  237. data/lib/countries/data/subdivisions/JO.yaml +24 -12
  238. data/lib/countries/data/subdivisions/JP.yaml +94 -47
  239. data/lib/countries/data/subdivisions/KE.yaml +95 -48
  240. data/lib/countries/data/subdivisions/KG.yaml +95 -86
  241. data/lib/countries/data/subdivisions/KH.yaml +64 -39
  242. data/lib/countries/data/subdivisions/KI.yaml +6 -3
  243. data/lib/countries/data/subdivisions/KM.yaml +6 -3
  244. data/lib/countries/data/subdivisions/KN.yaml +32 -16
  245. data/lib/countries/data/subdivisions/KP.yaml +24 -227
  246. data/lib/countries/data/subdivisions/KR.yaml +34 -17
  247. data/lib/countries/data/subdivisions/KW.yaml +12 -6
  248. data/lib/countries/data/subdivisions/KZ.yaml +47 -102
  249. data/lib/countries/data/subdivisions/LA.yaml +36 -34
  250. data/lib/countries/data/subdivisions/LB.yaml +71 -63
  251. data/lib/countries/data/subdivisions/LC.yaml +116 -106
  252. data/lib/countries/data/subdivisions/LI.yaml +22 -11
  253. data/lib/countries/data/subdivisions/LK.yaml +445 -411
  254. data/lib/countries/data/subdivisions/LR.yaml +146 -129
  255. data/lib/countries/data/subdivisions/LS.yaml +20 -10
  256. data/lib/countries/data/subdivisions/LT.yaml +1706 -1636
  257. data/lib/countries/data/subdivisions/LU.yaml +24 -12
  258. data/lib/countries/data/subdivisions/LV.yaml +1623 -1577
  259. data/lib/countries/data/subdivisions/LY.yaml +44 -22
  260. data/lib/countries/data/subdivisions/MA.yaml +810 -1589
  261. data/lib/countries/data/subdivisions/MC.yaml +261 -244
  262. data/lib/countries/data/subdivisions/MD.yaml +74 -79
  263. data/lib/countries/data/subdivisions/ME.yaml +217 -195
  264. data/lib/countries/data/subdivisions/MG.yaml +12 -6
  265. data/lib/countries/data/subdivisions/MH.yaml +167 -140
  266. data/lib/countries/data/subdivisions/MK.yaml +160 -80
  267. data/lib/countries/data/subdivisions/ML.yaml +48 -37
  268. data/lib/countries/data/subdivisions/MM.yaml +30 -15
  269. data/lib/countries/data/subdivisions/MN.yaml +44 -22
  270. data/lib/countries/data/subdivisions/MR.yaml +30 -34
  271. data/lib/countries/data/subdivisions/MT.yaml +136 -68
  272. data/lib/countries/data/subdivisions/MU.yaml +24 -262
  273. data/lib/countries/data/subdivisions/MV.yaml +161 -254
  274. data/lib/countries/data/subdivisions/MW.yaml +250 -219
  275. data/lib/countries/data/subdivisions/MX.yaml +67 -47
  276. data/lib/countries/data/subdivisions/MY.yaml +32 -16
  277. data/lib/countries/data/subdivisions/MZ.yaml +22 -11
  278. data/lib/countries/data/subdivisions/NA.yaml +58 -44
  279. data/lib/countries/data/subdivisions/NE.yaml +16 -8
  280. data/lib/countries/data/subdivisions/NG.yaml +74 -37
  281. data/lib/countries/data/subdivisions/NI.yaml +34 -17
  282. data/lib/countries/data/subdivisions/NL.yaml +303 -285
  283. data/lib/countries/data/subdivisions/NO.yaml +39 -17
  284. data/lib/countries/data/subdivisions/NP.yaml +302 -276
  285. data/lib/countries/data/subdivisions/NR.yaml +28 -14
  286. data/lib/countries/data/subdivisions/NZ.yaml +34 -17
  287. data/lib/countries/data/subdivisions/OM.yaml +260 -311
  288. data/lib/countries/data/subdivisions/PA.yaml +57 -44
  289. data/lib/countries/data/subdivisions/PE.yaml +107 -81
  290. data/lib/countries/data/subdivisions/PG.yaml +163 -158
  291. data/lib/countries/data/subdivisions/PH.yaml +5062 -4992
  292. data/lib/countries/data/subdivisions/PK.yaml +145 -235
  293. data/lib/countries/data/subdivisions/PL.yaml +51 -3
  294. data/lib/countries/data/subdivisions/PS.yaml +32 -16
  295. data/lib/countries/data/subdivisions/PT.yaml +53 -33
  296. data/lib/countries/data/subdivisions/PW.yaml +32 -16
  297. data/lib/countries/data/subdivisions/PY.yaml +36 -18
  298. data/lib/countries/data/subdivisions/QA.yaml +27 -78
  299. data/lib/countries/data/subdivisions/RO.yaml +84 -42
  300. data/lib/countries/data/subdivisions/RS.yaml +104 -72
  301. data/lib/countries/data/subdivisions/RU.yaml +166 -83
  302. data/lib/countries/data/subdivisions/RW.yaml +10 -5
  303. data/lib/countries/data/subdivisions/SA.yaml +26 -13
  304. data/lib/countries/data/subdivisions/SB.yaml +20 -10
  305. data/lib/countries/data/subdivisions/SC.yaml +54 -25
  306. data/lib/countries/data/subdivisions/SD.yaml +798 -780
  307. data/lib/countries/data/subdivisions/SE.yaml +42 -21
  308. data/lib/countries/data/subdivisions/SG.yaml +15 -10
  309. data/lib/countries/data/subdivisions/SH.yaml +21 -32
  310. data/lib/countries/data/subdivisions/SI.yaml +475 -263
  311. data/lib/countries/data/subdivisions/SK.yaml +16 -8
  312. data/lib/countries/data/subdivisions/SL.yaml +23 -18
  313. data/lib/countries/data/subdivisions/SM.yaml +18 -9
  314. data/lib/countries/data/subdivisions/SN.yaml +188 -174
  315. data/lib/countries/data/subdivisions/SO.yaml +36 -18
  316. data/lib/countries/data/subdivisions/SR.yaml +20 -10
  317. data/lib/countries/data/subdivisions/SS.yaml +20 -10
  318. data/lib/countries/data/subdivisions/ST.yaml +38 -52
  319. data/lib/countries/data/subdivisions/SV.yaml +28 -14
  320. data/lib/countries/data/subdivisions/SY.yaml +28 -14
  321. data/lib/countries/data/subdivisions/SZ.yaml +8 -4
  322. data/lib/countries/data/subdivisions/TD.yaml +312 -303
  323. data/lib/countries/data/subdivisions/TG.yaml +10 -5
  324. data/lib/countries/data/subdivisions/TH.yaml +211 -133
  325. data/lib/countries/data/subdivisions/TJ.yaml +161 -156
  326. data/lib/countries/data/subdivisions/TL.yaml +26 -13
  327. data/lib/countries/data/subdivisions/TM.yaml +12 -6
  328. data/lib/countries/data/subdivisions/TN.yaml +48 -24
  329. data/lib/countries/data/subdivisions/TO.yaml +10 -5
  330. data/lib/countries/data/subdivisions/TR.yaml +162 -81
  331. data/lib/countries/data/subdivisions/TT.yaml +128 -160
  332. data/lib/countries/data/subdivisions/TV.yaml +57 -63
  333. data/lib/countries/data/subdivisions/TW.yaml +143 -183
  334. data/lib/countries/data/subdivisions/TZ.yaml +62 -31
  335. data/lib/countries/data/subdivisions/UA.yaml +55 -28
  336. data/lib/countries/data/subdivisions/UG.yaml +4806 -4660
  337. data/lib/countries/data/subdivisions/UM.yaml +18 -9
  338. data/lib/countries/data/subdivisions/US.yaml +114 -57
  339. data/lib/countries/data/subdivisions/UY.yaml +99 -80
  340. data/lib/countries/data/subdivisions/UZ.yaml +28 -14
  341. data/lib/countries/data/subdivisions/VC.yaml +12 -6
  342. data/lib/countries/data/subdivisions/VE.yaml +50 -25
  343. data/lib/countries/data/subdivisions/VN.yaml +3576 -3513
  344. data/lib/countries/data/subdivisions/VU.yaml +12 -6
  345. data/lib/countries/data/subdivisions/WF.yaml +6 -3
  346. data/lib/countries/data/subdivisions/WS.yaml +22 -11
  347. data/lib/countries/data/subdivisions/YE.yaml +222 -200
  348. data/lib/countries/data/subdivisions/ZA.yaml +86 -100
  349. data/lib/countries/data/subdivisions/ZM.yaml +20 -10
  350. data/lib/countries/data/subdivisions/ZW.yaml +20 -10
  351. data/lib/countries/data/translations/countries-ab.yaml +254 -0
  352. data/lib/countries/data/translations/countries-af.yaml +254 -0
  353. data/lib/countries/data/translations/countries-ak.yaml +254 -0
  354. data/lib/countries/data/translations/countries-am.yaml +254 -0
  355. data/lib/countries/data/translations/countries-an.yaml +254 -0
  356. data/lib/countries/data/translations/countries-ar.yaml +254 -0
  357. data/lib/countries/data/translations/countries-as.yaml +254 -0
  358. data/lib/countries/data/translations/countries-ay.yaml +254 -0
  359. data/lib/countries/data/translations/countries-az.yaml +254 -0
  360. data/lib/countries/data/translations/countries-ba.yaml +254 -0
  361. data/lib/countries/data/translations/countries-be.yaml +254 -0
  362. data/lib/countries/data/translations/countries-bg.yaml +254 -0
  363. data/lib/countries/data/translations/countries-bi.yaml +254 -0
  364. data/lib/countries/data/translations/countries-bn.yaml +254 -0
  365. data/lib/countries/data/translations/countries-bn_IN.yaml +254 -0
  366. data/lib/countries/data/translations/countries-br.yaml +254 -0
  367. data/lib/countries/data/translations/countries-bs.yaml +254 -0
  368. data/lib/countries/data/translations/countries-ca.yaml +254 -0
  369. data/lib/countries/data/translations/countries-ce.yaml +254 -0
  370. data/lib/countries/data/translations/countries-ch.yaml +254 -0
  371. data/lib/countries/data/translations/countries-cs.yaml +254 -0
  372. data/lib/countries/data/translations/countries-cv.yaml +254 -0
  373. data/lib/countries/data/translations/countries-cy.yaml +254 -0
  374. data/lib/countries/data/translations/countries-da.yaml +254 -0
  375. data/lib/countries/data/translations/countries-de.yaml +254 -0
  376. data/lib/countries/data/translations/countries-dv.yaml +254 -0
  377. data/lib/countries/data/translations/countries-dz.yaml +254 -0
  378. data/lib/countries/data/translations/countries-ee.yaml +254 -0
  379. data/lib/countries/data/translations/countries-el.yaml +254 -0
  380. data/lib/countries/data/translations/countries-en.yaml +254 -0
  381. data/lib/countries/data/translations/countries-eo.yaml +254 -0
  382. data/lib/countries/data/translations/countries-es.yaml +254 -0
  383. data/lib/countries/data/translations/countries-et.yaml +254 -0
  384. data/lib/countries/data/translations/countries-eu.yaml +254 -0
  385. data/lib/countries/data/translations/countries-fa.yaml +254 -0
  386. data/lib/countries/data/translations/countries-ff.yaml +254 -0
  387. data/lib/countries/data/translations/countries-fi.yaml +254 -0
  388. data/lib/countries/data/translations/countries-fo.yaml +254 -0
  389. data/lib/countries/data/translations/countries-fr.yaml +254 -0
  390. data/lib/countries/data/translations/countries-fy.yaml +254 -0
  391. data/lib/countries/data/translations/countries-ga.yaml +254 -0
  392. data/lib/countries/data/translations/countries-gl.yaml +254 -0
  393. data/lib/countries/data/translations/countries-gn.yaml +254 -0
  394. data/lib/countries/data/translations/countries-gu.yaml +254 -0
  395. data/lib/countries/data/translations/countries-gv.yaml +254 -0
  396. data/lib/countries/data/translations/countries-ha.yaml +254 -0
  397. data/lib/countries/data/translations/countries-he.yaml +254 -0
  398. data/lib/countries/data/translations/countries-hi.yaml +254 -0
  399. data/lib/countries/data/translations/countries-hr.yaml +254 -0
  400. data/lib/countries/data/translations/countries-ht.yaml +254 -0
  401. data/lib/countries/data/translations/countries-hu.yaml +254 -0
  402. data/lib/countries/data/translations/countries-hy.yaml +254 -0
  403. data/lib/countries/data/translations/countries-ia.yaml +254 -0
  404. data/lib/countries/data/translations/countries-id.yaml +254 -0
  405. data/lib/countries/data/translations/countries-io.yaml +254 -0
  406. data/lib/countries/data/translations/countries-is.yaml +254 -0
  407. data/lib/countries/data/translations/countries-it.yaml +254 -0
  408. data/lib/countries/data/translations/countries-iu.yaml +254 -0
  409. data/lib/countries/data/translations/countries-ja.yaml +254 -0
  410. data/lib/countries/data/translations/countries-ka.yaml +254 -0
  411. data/lib/countries/data/translations/countries-ki.yaml +254 -0
  412. data/lib/countries/data/translations/countries-kk.yaml +254 -0
  413. data/lib/countries/data/translations/countries-kl.yaml +254 -0
  414. data/lib/countries/data/translations/countries-km.yaml +254 -0
  415. data/lib/countries/data/translations/countries-kn.yaml +254 -0
  416. data/lib/countries/data/translations/countries-ko.yaml +254 -0
  417. data/lib/countries/data/translations/countries-ku.yaml +254 -0
  418. data/lib/countries/data/translations/countries-kv.yaml +254 -0
  419. data/lib/countries/data/translations/countries-kw.yaml +254 -0
  420. data/lib/countries/data/translations/countries-ky.yaml +254 -0
  421. data/lib/countries/data/translations/countries-lo.yaml +254 -0
  422. data/lib/countries/data/translations/countries-lt.yaml +254 -0
  423. data/lib/countries/data/translations/countries-lv.yaml +254 -0
  424. data/lib/countries/data/translations/countries-mi.yaml +254 -0
  425. data/lib/countries/data/translations/countries-mk.yaml +254 -0
  426. data/lib/countries/data/translations/countries-ml.yaml +254 -0
  427. data/lib/countries/data/translations/countries-mn.yaml +254 -0
  428. data/lib/countries/data/translations/countries-mr.yaml +254 -0
  429. data/lib/countries/data/translations/countries-ms.yaml +254 -0
  430. data/lib/countries/data/translations/countries-mt.yaml +254 -0
  431. data/lib/countries/data/translations/countries-my.yaml +254 -0
  432. data/lib/countries/data/translations/countries-na.yaml +254 -0
  433. data/lib/countries/data/translations/countries-nb.yaml +254 -0
  434. data/lib/countries/data/translations/countries-ne.yaml +254 -0
  435. data/lib/countries/data/translations/countries-nl.yaml +254 -0
  436. data/lib/countries/data/translations/countries-nn.yaml +254 -0
  437. data/lib/countries/data/translations/countries-nv.yaml +254 -0
  438. data/lib/countries/data/translations/countries-oc.yaml +254 -0
  439. data/lib/countries/data/translations/countries-or.yaml +254 -0
  440. data/lib/countries/data/translations/countries-pa.yaml +254 -0
  441. data/lib/countries/data/translations/countries-pi.yaml +254 -0
  442. data/lib/countries/data/translations/countries-pl.yaml +254 -0
  443. data/lib/countries/data/translations/countries-ps.yaml +254 -0
  444. data/lib/countries/data/translations/countries-pt.yaml +254 -0
  445. data/lib/countries/data/translations/countries-pt_BR.yaml +254 -0
  446. data/lib/countries/data/translations/countries-ro.yaml +254 -0
  447. data/lib/countries/data/translations/countries-ru.yaml +254 -0
  448. data/lib/countries/data/translations/countries-rw.yaml +254 -0
  449. data/lib/countries/data/translations/countries-sc.yaml +254 -0
  450. data/lib/countries/data/translations/countries-sd.yaml +254 -0
  451. data/lib/countries/data/translations/countries-si.yaml +254 -0
  452. data/lib/countries/data/translations/countries-sk.yaml +254 -0
  453. data/lib/countries/data/translations/countries-sl.yaml +254 -0
  454. data/lib/countries/data/translations/countries-so.yaml +254 -0
  455. data/lib/countries/data/translations/countries-sq.yaml +254 -0
  456. data/lib/countries/data/translations/countries-sr.yaml +254 -0
  457. data/lib/countries/data/translations/countries-sv.yaml +254 -0
  458. data/lib/countries/data/translations/countries-sw.yaml +254 -0
  459. data/lib/countries/data/translations/countries-ta.yaml +254 -0
  460. data/lib/countries/data/translations/countries-te.yaml +254 -0
  461. data/lib/countries/data/translations/countries-tg.yaml +254 -0
  462. data/lib/countries/data/translations/countries-th.yaml +254 -0
  463. data/lib/countries/data/translations/countries-ti.yaml +254 -0
  464. data/lib/countries/data/translations/countries-tk.yaml +254 -0
  465. data/lib/countries/data/translations/countries-tl.yaml +254 -0
  466. data/lib/countries/data/translations/countries-tr.yaml +254 -0
  467. data/lib/countries/data/translations/countries-tt.yaml +254 -0
  468. data/lib/countries/data/translations/countries-ug.yaml +254 -0
  469. data/lib/countries/data/translations/countries-uk.yaml +254 -0
  470. data/lib/countries/data/translations/countries-ur.yaml +254 -0
  471. data/lib/countries/data/translations/countries-uz.yaml +254 -0
  472. data/lib/countries/data/translations/countries-ve.yaml +254 -0
  473. data/lib/countries/data/translations/countries-vi.yaml +254 -0
  474. data/lib/countries/data/translations/countries-wa.yaml +254 -0
  475. data/lib/countries/data/translations/countries-wo.yaml +254 -0
  476. data/lib/countries/data/translations/countries-xh.yaml +254 -0
  477. data/lib/countries/data/translations/countries-yo.yaml +254 -0
  478. data/lib/countries/data/translations/countries-zh_CN.yaml +254 -0
  479. data/lib/countries/data/translations/countries-zh_HK.yaml +254 -0
  480. data/lib/countries/data/translations/countries-zh_TW.yaml +254 -0
  481. data/lib/countries/data/translations/countries-zu.yaml +254 -0
  482. data/lib/countries/data.rb +45 -42
  483. data/lib/countries/global.rb +2 -0
  484. data/lib/countries/iso3166.rb +3 -1
  485. data/lib/countries/kwarg_struct.rb +2 -0
  486. data/lib/countries/mongoid.rb +2 -0
  487. data/lib/countries/sources/cldr/downloader.rb +8 -8
  488. data/lib/countries/sources/cldr/subdivision.rb +3 -0
  489. data/lib/countries/sources/cldr/subdivision_updater.rb +23 -17
  490. data/lib/countries/sources/local/cached_loader.rb +3 -0
  491. data/lib/countries/sources/local/subdivision.rb +5 -2
  492. data/lib/countries/sources.rb +2 -0
  493. data/lib/countries/structure.rb +1 -1
  494. data/lib/countries/subdivision.rb +21 -8
  495. data/lib/countries/tasks/geocoding.rake +15 -6
  496. data/lib/countries/tasks/postal_codes.rake +5 -3
  497. data/lib/countries/timezones.rb +5 -2
  498. data/lib/countries/translations.rb +2 -0
  499. data/lib/countries/version.rb +3 -1
  500. data/lib/countries.rb +2 -0
  501. data/spec/00_global_spec.rb +2 -0
  502. data/spec/configuration_spec.rb +11 -5
  503. data/spec/country_spec.rb +131 -38
  504. data/spec/data_spec.rb +85 -21
  505. data/spec/mongoid_spec.rb +2 -2
  506. data/spec/perf_spec.rb +16 -16
  507. data/spec/spec_helper.rb +2 -0
  508. data/spec/subdivision_spec.rb +6 -4
  509. data/spec/thread_safety_spec.rb +4 -3
  510. data/spec/timezone_spec.rb +2 -0
  511. metadata +146 -34
  512. data/lib/countries/cache/locales/zh.json +0 -1
  513. data/lib/countries/data/subdivisions/AI.yaml +0 -197
  514. data/lib/countries/data/subdivisions/BM.yaml +0 -155
  515. data/lib/countries/data/subdivisions/CK.yaml +0 -155
  516. data/lib/countries/data/subdivisions/EH.yaml +0 -80
  517. data/lib/countries/data/subdivisions/SJ.yaml +0 -29
  518. data/lib/countries/data/subdivisions/TK.yaml +0 -43
  519. data/lib/countries/data/translation_corrections.yaml +0 -51
  520. data/lib/countries/setup.rb +0 -18
data/spec/data_spec.rb CHANGED
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require 'spec_helper'
3
4
  require 'benchmark'
4
5
 
@@ -10,13 +11,13 @@ describe ISO3166::Data do
10
11
 
11
12
  it 'can load selective locales' do
12
13
  # ISO3166::Data.update_cache
13
- ISO3166.configuration.locales = [:es, :de, :en]
14
+ ISO3166.configuration.locales = %i[es de en]
14
15
  data = ISO3166::Data.new('US').call
15
16
  expect(data['translated_names'].size).to eq 3
16
17
  end
17
18
 
18
19
  it 'can load selective locales and reload efficiently' do
19
- ISO3166.configuration.locales = [:es, :de, :en]
20
+ ISO3166.configuration.locales = %i[es de en]
20
21
  data = ISO3166::Data.new('US').call
21
22
  expect(data['translations']).to eq('de' => 'Vereinigte Staaten', 'es' => 'Estados Unidos', 'en' => 'United States')
22
23
  expect(data['translated_names'].sort).to eq ['Vereinigte Staaten', 'Estados Unidos', 'United States'].sort
@@ -35,7 +36,7 @@ describe ISO3166::Data do
35
36
 
36
37
  it 'locales will load prior to return results' do
37
38
  # require 'memory_profiler'
38
- ISO3166.configuration.locales = [:es, :de, :en]
39
+ ISO3166.configuration.locales = %i[es de en]
39
40
  # report = MemoryProfiler.report do
40
41
  ISO3166::Data.update_cache
41
42
  # end
@@ -44,7 +45,12 @@ describe ISO3166::Data do
44
45
  ISO3166::Data.update_cache
45
46
 
46
47
  ISO3166.configure do |config|
47
- config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
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]
48
54
  end
49
55
  # puts Benchmark.measure {ISO3166::Data.update_cache}
50
56
 
@@ -61,32 +67,32 @@ describe ISO3166::Data do
61
67
 
62
68
  it 'locales will load prior and be cached' do
63
69
  ISO3166.reset
64
- ISO3166.configuration.locales = [:es, :de, :en]
65
- expect(ISO3166::Data.send(:locales_to_load)).to eql(%w(es de en))
70
+ ISO3166.configuration.locales = %i[es de en]
71
+ expect(ISO3166::Data.send(:locales_to_load)).to eql(%w[es de en])
66
72
  ISO3166::Data.update_cache
67
- ISO3166.configuration.locales = [:es, :de, :en]
73
+ ISO3166.configuration.locales = %i[es de en]
68
74
  expect(ISO3166::Data.send(:locales_to_load)).to eql([])
69
75
  end
70
76
 
71
77
  it 'locales will load prior and be cached' do
72
78
  ISO3166.reset
73
- ISO3166.configuration.locales = [:es, :de, :en]
79
+ ISO3166.configuration.locales = %i[es de en]
74
80
  expect(ISO3166::Data.send(:locales_to_remove)).to eql([])
75
81
  expect(ISO3166::Country.new('DE').translation('de')).to eq 'Deutschland'
76
82
  ISO3166::Data.update_cache
77
- ISO3166.configuration.locales = [:es, :en]
83
+ ISO3166.configuration.locales = %i[es en]
78
84
  expect(ISO3166::Data.send(:locales_to_remove)).to eql(['de'])
79
85
  expect(ISO3166::Country.new('DE').translation('de')).to eq nil
80
86
  end
81
87
 
82
88
  describe '#load_cache' do
83
89
  it 'will return an empty hash for an unsupported locale' do
84
- file_array = %w(locales unsupported.json)
90
+ file_array = %w[locales unsupported.json]
85
91
  expect(ISO3166::Data.send(:load_cache, file_array)).to eql({})
86
92
  end
87
93
 
88
94
  it 'will return json for a supported locale' do
89
- file_array = %w(locales en.json)
95
+ file_array = %w[locales en.json]
90
96
  expect(ISO3166::Data.send(:load_cache, file_array)).not_to be_empty
91
97
  end
92
98
  end
@@ -97,8 +103,8 @@ describe ISO3166::Data do
97
103
  alpha2: 'TW',
98
104
  iso_short_name: 'NEW Taiwan',
99
105
  subdivisions: {
100
- CHA: {name: 'New Changhua'},
101
- CYI: {name: 'New Municipality'}
106
+ CHA: { name: 'New Changhua' },
107
+ CYI: { name: 'New Municipality' }
102
108
  },
103
109
  translations: {
104
110
  'en' => 'NEW Taiwan',
@@ -116,8 +122,12 @@ describe ISO3166::Data do
116
122
  expect(subject.iso_short_name).to eq 'NEW Taiwan'
117
123
  expect(subject.translations).to eq('en' => 'NEW Taiwan',
118
124
  'de' => 'NEW Taiwan')
119
- expect(subject.subdivisions).to eq('CHA' => ISO3166::Subdivision.new({name: 'New Changhua', code: 'CHA'}),
120
- 'CYI' => ISO3166::Subdivision.new({name: 'New Municipality', code: 'CYI'}))
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
121
131
  end
122
132
  end
123
133
 
@@ -127,8 +137,8 @@ describe ISO3166::Data do
127
137
  alpha2: 'LOL',
128
138
  iso_short_name: 'Happy Country',
129
139
  subdivisions: {
130
- LOL1: {name: 'Happy sub1'},
131
- LOL2: {name: 'Happy sub2'}
140
+ LOL1: { name: 'Happy sub1' },
141
+ LOL2: { name: 'Happy sub2' }
132
142
  },
133
143
  translations: {
134
144
  'en' => 'Happy Country',
@@ -143,8 +153,8 @@ describe ISO3166::Data do
143
153
  data = ISO3166::Data.new('LOL').call
144
154
  expect(data['iso_short_name']).to eq 'Happy Country'
145
155
  expect(subject.iso_short_name).to eq 'Happy Country'
146
- expect(subject.subdivisions).to eq('LOL1' => ISO3166::Subdivision.new({name: 'Happy sub1', code: 'LOL1'}),
147
- 'LOL2' => ISO3166::Subdivision.new({name: 'Happy sub2', code: 'LOL2'}))
156
+ expect(subject.subdivisions.keys).to eq(%w[LOL1 LOL2])
157
+ expect(subject.subdivisions.values.map(&:name)).to eq(['Happy sub1', 'Happy sub2'])
148
158
  end
149
159
 
150
160
  it 'detect a stale cache' do
@@ -175,7 +185,61 @@ describe ISO3166::Data do
175
185
  end
176
186
 
177
187
  after do
178
- ISO3166::Data.unregister('lol')
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
179
243
  end
180
244
  end
181
245
  end
data/spec/mongoid_spec.rb CHANGED
@@ -1,7 +1,7 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
- require File.expand_path('../../lib/countries/mongoid', __FILE__)
4
+ require File.expand_path('../lib/countries/mongoid', __dir__)
5
5
 
6
6
  describe 'Mongoid support' do
7
7
  let(:britain) { ISO3166::Country.new('GB') }
data/spec/perf_spec.rb CHANGED
@@ -1,18 +1,18 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
1
+ # frozen_string_literal: true
3
2
 
4
- describe ISO3166::Data, perf: true, order: :defined do
3
+ require 'spec_helper'
5
4
 
6
- ALL_LOCALES = [
7
- :af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de,
8
- :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he,
9
- :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku,
10
- :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or,
11
- :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw,
12
- :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh,
13
- :zh, :zu
14
- ].freeze
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
15
14
 
15
+ describe ISO3166::Data, perf: true, order: :defined do
16
16
  def perf_report(_name)
17
17
  require 'benchmark'
18
18
  require 'memory_profiler'
@@ -28,7 +28,7 @@ describe ISO3166::Data, perf: true, order: :defined do
28
28
 
29
29
  # print a flat profile to text
30
30
  printer = RubyProf::FlatPrinter.new(result)
31
- printer.print(STDOUT)
31
+ printer.print($stdout)
32
32
  end
33
33
 
34
34
  it 'responds to call' do
@@ -40,12 +40,12 @@ describe ISO3166::Data, perf: true, order: :defined do
40
40
  end
41
41
 
42
42
  it 'locales will load prior to return results' do
43
- ISO3166.configuration.locales = [:es, :de, :en]
43
+ ISO3166.configuration.locales = %i[es de en]
44
44
  report = MemoryProfiler.report do
45
45
  ISO3166::Data.update_cache
46
46
  end
47
47
 
48
- report.pretty_print(to_file: 'tmp/memory/3_locales')
48
+ report.pretty_print(to_file: 'tmp/3_locales.txt')
49
49
  puts Benchmark.measure { ISO3166::Data.update_cache }
50
50
 
51
51
  ISO3166.configure do |config|
@@ -57,7 +57,7 @@ describe ISO3166::Data, perf: true, order: :defined do
57
57
  ISO3166::Data.update_cache
58
58
  end
59
59
 
60
- report.pretty_print(to_file: 'tmp/memory/all_locales')
60
+ report.pretty_print(to_file: 'tmp/all_locales.txt')
61
61
  end
62
62
 
63
63
  it 'loades a specfic country quickly' do
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'countries'
2
4
  RSpec.configure do |config|
3
5
  config.filter_run :focus
@@ -1,4 +1,4 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
2
 
3
3
  require 'spec_helper'
4
4
 
@@ -23,9 +23,11 @@ describe ISO3166::Subdivision do
23
23
  describe 'state codes' do
24
24
  it 'should all be strings' do
25
25
  countries.each do |country|
26
- expect(country.subdivisions.keys).to all(be_a(String)), \
27
- "Expected #{country.alpha2.inspect} to have string subdivision" \
28
- "codes but had #{country.subdivisions.keys.inspect}"
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
+ )
29
31
  end
30
32
  end
31
33
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  describe 'Accessing ISO3166::Country instances data in multiple threads' do
2
4
  before do
3
5
  if Thread.respond_to?(:report_on_exception)
@@ -12,7 +14,7 @@ describe 'Accessing ISO3166::Country instances data in multiple threads' do
12
14
  nthreads = 100
13
15
  threads = []
14
16
 
15
- alpha2_codes = ['us', 'es', 'nl', 'ca', 'de', 'fr', 'mx', 'ru', 'ch', 'jp']
17
+ alpha2_codes = %w[us es nl ca de fr mx ru ch jp]
16
18
 
17
19
  nthreads.times do
18
20
  threads << Thread.new do
@@ -31,7 +33,7 @@ describe 'Accessing ISO3166::Country instances data in multiple threads' do
31
33
  expect { create_countries_threaded }.to_not raise_error
32
34
  end
33
35
 
34
- it "raises NoMethodError when not using a mutex" do
36
+ it 'raises NoMethodError when not using a mutex' do
35
37
  allow(ISO3166::Data).to receive(:use_mutex?).and_return(false)
36
38
 
37
39
  expect { create_countries_threaded }.to raise_error(NoMethodError)
@@ -43,4 +45,3 @@ describe 'Accessing ISO3166::Country instances data in multiple threads' do
43
45
  end
44
46
  end
45
47
  end
46
-
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  describe 'timezone Country class' do
2
4
  context "when loaded via 'timezone'" do
3
5
  require 'tzinfo'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: countries
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.3
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Robinson
@@ -11,22 +11,8 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2022-03-24 00:00:00.000000000 Z
14
+ date: 2022-06-27 00:00:00.000000000 Z
15
15
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: i18n_data
18
- requirement: !ruby/object:Gem::Requirement
19
- requirements:
20
- - - "~>"
21
- - !ruby/object:Gem::Version
22
- version: 0.16.0
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: 0.16.0
30
16
  - !ruby/object:Gem::Dependency
31
17
  name: sixarm_ruby_unaccent
32
18
  requirement: !ruby/object:Gem::Requirement
@@ -42,7 +28,7 @@ dependencies:
42
28
  - !ruby/object:Gem::Version
43
29
  version: '1.1'
44
30
  - !ruby/object:Gem::Dependency
45
- name: rspec
31
+ name: activesupport
46
32
  requirement: !ruby/object:Gem::Requirement
47
33
  requirements:
48
34
  - - ">="
@@ -56,33 +42,33 @@ dependencies:
56
42
  - !ruby/object:Gem::Version
57
43
  version: '3'
58
44
  - !ruby/object:Gem::Dependency
59
- name: activesupport
45
+ name: nokogiri
60
46
  requirement: !ruby/object:Gem::Requirement
61
47
  requirements:
62
48
  - - ">="
63
49
  - !ruby/object:Gem::Version
64
- version: '3'
50
+ version: '1.8'
65
51
  type: :development
66
52
  prerelease: false
67
53
  version_requirements: !ruby/object:Gem::Requirement
68
54
  requirements:
69
55
  - - ">="
70
56
  - !ruby/object:Gem::Version
71
- version: '3'
57
+ version: '1.8'
72
58
  - !ruby/object:Gem::Dependency
73
- name: nokogiri
59
+ name: rspec
74
60
  requirement: !ruby/object:Gem::Requirement
75
61
  requirements:
76
62
  - - ">="
77
63
  - !ruby/object:Gem::Version
78
- version: '1.8'
64
+ version: '3'
79
65
  type: :development
80
66
  prerelease: false
81
67
  version_requirements: !ruby/object:Gem::Requirement
82
68
  requirements:
83
69
  - - ">="
84
70
  - !ruby/object:Gem::Version
85
- version: '1.8'
71
+ version: '3'
86
72
  description: All sorts of useful information about every country packaged as pretty
87
73
  little country objects. It includes data from ISO 3166
88
74
  email:
@@ -93,6 +79,7 @@ executables: []
93
79
  extensions: []
94
80
  extra_rdoc_files: []
95
81
  files:
82
+ - ".github/workflows/codeql-analysis.yml"
96
83
  - ".github/workflows/tests.yml"
97
84
  - ".gitignore"
98
85
  - ".rspec"
@@ -103,6 +90,7 @@ files:
103
90
  - LICENSE
104
91
  - README.markdown
105
92
  - Rakefile
93
+ - UPGRADE.md
106
94
  - bin/console
107
95
  - countries.gemspec
108
96
  - lib/countries.rb
@@ -237,13 +225,13 @@ files:
237
225
  - lib/countries/cache/locales/zh-cn.json
238
226
  - lib/countries/cache/locales/zh-hk.json
239
227
  - lib/countries/cache/locales/zh-tw.json
240
- - lib/countries/cache/locales/zh.json
241
228
  - lib/countries/cache/locales/zu.json
242
229
  - lib/countries/configuration.rb
243
230
  - lib/countries/country.rb
244
231
  - lib/countries/country/class_methods.rb
245
232
  - lib/countries/country/currency_methods.rb
246
233
  - lib/countries/country/emoji.rb
234
+ - lib/countries/country/finder_methods.rb
247
235
  - lib/countries/data.rb
248
236
  - lib/countries/data/countries/AD.yaml
249
237
  - lib/countries/data/countries/AE.yaml
@@ -498,7 +486,6 @@ files:
498
486
  - lib/countries/data/subdivisions/AE.yaml
499
487
  - lib/countries/data/subdivisions/AF.yaml
500
488
  - lib/countries/data/subdivisions/AG.yaml
501
- - lib/countries/data/subdivisions/AI.yaml
502
489
  - lib/countries/data/subdivisions/AL.yaml
503
490
  - lib/countries/data/subdivisions/AM.yaml
504
491
  - lib/countries/data/subdivisions/AO.yaml
@@ -515,7 +502,6 @@ files:
515
502
  - lib/countries/data/subdivisions/BH.yaml
516
503
  - lib/countries/data/subdivisions/BI.yaml
517
504
  - lib/countries/data/subdivisions/BJ.yaml
518
- - lib/countries/data/subdivisions/BM.yaml
519
505
  - lib/countries/data/subdivisions/BN.yaml
520
506
  - lib/countries/data/subdivisions/BO.yaml
521
507
  - lib/countries/data/subdivisions/BQ.yaml
@@ -531,7 +517,6 @@ files:
531
517
  - lib/countries/data/subdivisions/CG.yaml
532
518
  - lib/countries/data/subdivisions/CH.yaml
533
519
  - lib/countries/data/subdivisions/CI.yaml
534
- - lib/countries/data/subdivisions/CK.yaml
535
520
  - lib/countries/data/subdivisions/CL.yaml
536
521
  - lib/countries/data/subdivisions/CM.yaml
537
522
  - lib/countries/data/subdivisions/CN.yaml
@@ -550,7 +535,6 @@ files:
550
535
  - lib/countries/data/subdivisions/EC.yaml
551
536
  - lib/countries/data/subdivisions/EE.yaml
552
537
  - lib/countries/data/subdivisions/EG.yaml
553
- - lib/countries/data/subdivisions/EH.yaml
554
538
  - lib/countries/data/subdivisions/ER.yaml
555
539
  - lib/countries/data/subdivisions/ES.yaml
556
540
  - lib/countries/data/subdivisions/ET.yaml
@@ -658,7 +642,6 @@ files:
658
642
  - lib/countries/data/subdivisions/SG.yaml
659
643
  - lib/countries/data/subdivisions/SH.yaml
660
644
  - lib/countries/data/subdivisions/SI.yaml
661
- - lib/countries/data/subdivisions/SJ.yaml
662
645
  - lib/countries/data/subdivisions/SK.yaml
663
646
  - lib/countries/data/subdivisions/SL.yaml
664
647
  - lib/countries/data/subdivisions/SM.yaml
@@ -674,7 +657,6 @@ files:
674
657
  - lib/countries/data/subdivisions/TG.yaml
675
658
  - lib/countries/data/subdivisions/TH.yaml
676
659
  - lib/countries/data/subdivisions/TJ.yaml
677
- - lib/countries/data/subdivisions/TK.yaml
678
660
  - lib/countries/data/subdivisions/TL.yaml
679
661
  - lib/countries/data/subdivisions/TM.yaml
680
662
  - lib/countries/data/subdivisions/TN.yaml
@@ -700,12 +682,141 @@ files:
700
682
  - lib/countries/data/subdivisions/ZA.yaml
701
683
  - lib/countries/data/subdivisions/ZM.yaml
702
684
  - lib/countries/data/subdivisions/ZW.yaml
703
- - lib/countries/data/translation_corrections.yaml
685
+ - lib/countries/data/translations/countries-ab.yaml
686
+ - lib/countries/data/translations/countries-af.yaml
687
+ - lib/countries/data/translations/countries-ak.yaml
688
+ - lib/countries/data/translations/countries-am.yaml
689
+ - lib/countries/data/translations/countries-an.yaml
690
+ - lib/countries/data/translations/countries-ar.yaml
691
+ - lib/countries/data/translations/countries-as.yaml
692
+ - lib/countries/data/translations/countries-ay.yaml
693
+ - lib/countries/data/translations/countries-az.yaml
694
+ - lib/countries/data/translations/countries-ba.yaml
695
+ - lib/countries/data/translations/countries-be.yaml
696
+ - lib/countries/data/translations/countries-bg.yaml
697
+ - lib/countries/data/translations/countries-bi.yaml
698
+ - lib/countries/data/translations/countries-bn.yaml
699
+ - lib/countries/data/translations/countries-bn_IN.yaml
700
+ - lib/countries/data/translations/countries-br.yaml
701
+ - lib/countries/data/translations/countries-bs.yaml
702
+ - lib/countries/data/translations/countries-ca.yaml
703
+ - lib/countries/data/translations/countries-ce.yaml
704
+ - lib/countries/data/translations/countries-ch.yaml
705
+ - lib/countries/data/translations/countries-cs.yaml
706
+ - lib/countries/data/translations/countries-cv.yaml
707
+ - lib/countries/data/translations/countries-cy.yaml
708
+ - lib/countries/data/translations/countries-da.yaml
709
+ - lib/countries/data/translations/countries-de.yaml
710
+ - lib/countries/data/translations/countries-dv.yaml
711
+ - lib/countries/data/translations/countries-dz.yaml
712
+ - lib/countries/data/translations/countries-ee.yaml
713
+ - lib/countries/data/translations/countries-el.yaml
714
+ - lib/countries/data/translations/countries-en.yaml
715
+ - lib/countries/data/translations/countries-eo.yaml
716
+ - lib/countries/data/translations/countries-es.yaml
717
+ - lib/countries/data/translations/countries-et.yaml
718
+ - lib/countries/data/translations/countries-eu.yaml
719
+ - lib/countries/data/translations/countries-fa.yaml
720
+ - lib/countries/data/translations/countries-ff.yaml
721
+ - lib/countries/data/translations/countries-fi.yaml
722
+ - lib/countries/data/translations/countries-fo.yaml
723
+ - lib/countries/data/translations/countries-fr.yaml
724
+ - lib/countries/data/translations/countries-fy.yaml
725
+ - lib/countries/data/translations/countries-ga.yaml
726
+ - lib/countries/data/translations/countries-gl.yaml
727
+ - lib/countries/data/translations/countries-gn.yaml
728
+ - lib/countries/data/translations/countries-gu.yaml
729
+ - lib/countries/data/translations/countries-gv.yaml
730
+ - lib/countries/data/translations/countries-ha.yaml
731
+ - lib/countries/data/translations/countries-he.yaml
732
+ - lib/countries/data/translations/countries-hi.yaml
733
+ - lib/countries/data/translations/countries-hr.yaml
734
+ - lib/countries/data/translations/countries-ht.yaml
735
+ - lib/countries/data/translations/countries-hu.yaml
736
+ - lib/countries/data/translations/countries-hy.yaml
737
+ - lib/countries/data/translations/countries-ia.yaml
738
+ - lib/countries/data/translations/countries-id.yaml
739
+ - lib/countries/data/translations/countries-io.yaml
740
+ - lib/countries/data/translations/countries-is.yaml
741
+ - lib/countries/data/translations/countries-it.yaml
742
+ - lib/countries/data/translations/countries-iu.yaml
743
+ - lib/countries/data/translations/countries-ja.yaml
744
+ - lib/countries/data/translations/countries-ka.yaml
745
+ - lib/countries/data/translations/countries-ki.yaml
746
+ - lib/countries/data/translations/countries-kk.yaml
747
+ - lib/countries/data/translations/countries-kl.yaml
748
+ - lib/countries/data/translations/countries-km.yaml
749
+ - lib/countries/data/translations/countries-kn.yaml
750
+ - lib/countries/data/translations/countries-ko.yaml
751
+ - lib/countries/data/translations/countries-ku.yaml
752
+ - lib/countries/data/translations/countries-kv.yaml
753
+ - lib/countries/data/translations/countries-kw.yaml
754
+ - lib/countries/data/translations/countries-ky.yaml
755
+ - lib/countries/data/translations/countries-lo.yaml
756
+ - lib/countries/data/translations/countries-lt.yaml
757
+ - lib/countries/data/translations/countries-lv.yaml
758
+ - lib/countries/data/translations/countries-mi.yaml
759
+ - lib/countries/data/translations/countries-mk.yaml
760
+ - lib/countries/data/translations/countries-ml.yaml
761
+ - lib/countries/data/translations/countries-mn.yaml
762
+ - lib/countries/data/translations/countries-mr.yaml
763
+ - lib/countries/data/translations/countries-ms.yaml
764
+ - lib/countries/data/translations/countries-mt.yaml
765
+ - lib/countries/data/translations/countries-my.yaml
766
+ - lib/countries/data/translations/countries-na.yaml
767
+ - lib/countries/data/translations/countries-nb.yaml
768
+ - lib/countries/data/translations/countries-ne.yaml
769
+ - lib/countries/data/translations/countries-nl.yaml
770
+ - lib/countries/data/translations/countries-nn.yaml
771
+ - lib/countries/data/translations/countries-nv.yaml
772
+ - lib/countries/data/translations/countries-oc.yaml
773
+ - lib/countries/data/translations/countries-or.yaml
774
+ - lib/countries/data/translations/countries-pa.yaml
775
+ - lib/countries/data/translations/countries-pi.yaml
776
+ - lib/countries/data/translations/countries-pl.yaml
777
+ - lib/countries/data/translations/countries-ps.yaml
778
+ - lib/countries/data/translations/countries-pt.yaml
779
+ - lib/countries/data/translations/countries-pt_BR.yaml
780
+ - lib/countries/data/translations/countries-ro.yaml
781
+ - lib/countries/data/translations/countries-ru.yaml
782
+ - lib/countries/data/translations/countries-rw.yaml
783
+ - lib/countries/data/translations/countries-sc.yaml
784
+ - lib/countries/data/translations/countries-sd.yaml
785
+ - lib/countries/data/translations/countries-si.yaml
786
+ - lib/countries/data/translations/countries-sk.yaml
787
+ - lib/countries/data/translations/countries-sl.yaml
788
+ - lib/countries/data/translations/countries-so.yaml
789
+ - lib/countries/data/translations/countries-sq.yaml
790
+ - lib/countries/data/translations/countries-sr.yaml
791
+ - lib/countries/data/translations/countries-sv.yaml
792
+ - lib/countries/data/translations/countries-sw.yaml
793
+ - lib/countries/data/translations/countries-ta.yaml
794
+ - lib/countries/data/translations/countries-te.yaml
795
+ - lib/countries/data/translations/countries-tg.yaml
796
+ - lib/countries/data/translations/countries-th.yaml
797
+ - lib/countries/data/translations/countries-ti.yaml
798
+ - lib/countries/data/translations/countries-tk.yaml
799
+ - lib/countries/data/translations/countries-tl.yaml
800
+ - lib/countries/data/translations/countries-tr.yaml
801
+ - lib/countries/data/translations/countries-tt.yaml
802
+ - lib/countries/data/translations/countries-ug.yaml
803
+ - lib/countries/data/translations/countries-uk.yaml
804
+ - lib/countries/data/translations/countries-ur.yaml
805
+ - lib/countries/data/translations/countries-uz.yaml
806
+ - lib/countries/data/translations/countries-ve.yaml
807
+ - lib/countries/data/translations/countries-vi.yaml
808
+ - lib/countries/data/translations/countries-wa.yaml
809
+ - lib/countries/data/translations/countries-wo.yaml
810
+ - lib/countries/data/translations/countries-xh.yaml
811
+ - lib/countries/data/translations/countries-yo.yaml
812
+ - lib/countries/data/translations/countries-zh_CN.yaml
813
+ - lib/countries/data/translations/countries-zh_HK.yaml
814
+ - lib/countries/data/translations/countries-zh_TW.yaml
815
+ - lib/countries/data/translations/countries-zu.yaml
704
816
  - lib/countries/global.rb
705
817
  - lib/countries/iso3166.rb
706
818
  - lib/countries/kwarg_struct.rb
707
819
  - lib/countries/mongoid.rb
708
- - lib/countries/setup.rb
709
820
  - lib/countries/sources.rb
710
821
  - lib/countries/sources/cldr/downloader.rb
711
822
  - lib/countries/sources/cldr/subdivision.rb
@@ -737,6 +848,7 @@ metadata:
737
848
  changelog_uri: https://github.com/countries/countries/blob/master/CHANGELOG.md
738
849
  source_code_uri: https://github.com/countries/countries
739
850
  wiki_uri: https://github.com/countries/countries/wiki
851
+ rubygems_mfa_required: 'true'
740
852
  post_install_message:
741
853
  rdoc_options: []
742
854
  require_paths:
@@ -745,14 +857,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
745
857
  requirements:
746
858
  - - ">="
747
859
  - !ruby/object:Gem::Version
748
- version: '2.5'
860
+ version: '2.7'
749
861
  required_rubygems_version: !ruby/object:Gem::Requirement
750
862
  requirements:
751
863
  - - ">="
752
864
  - !ruby/object:Gem::Version
753
865
  version: '0'
754
866
  requirements: []
755
- rubygems_version: 3.3.3
867
+ rubygems_version: 3.3.7
756
868
  signing_key:
757
869
  specification_version: 4
758
870
  summary: Gives you a country object full of all sorts of useful information.