countries 3.1.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (395) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +37 -0
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +28 -1
  5. data/Gemfile +5 -0
  6. data/README.markdown +30 -27
  7. data/Rakefile +5 -3
  8. data/countries.gemspec +8 -5
  9. data/lib/countries.rb +0 -1
  10. data/lib/countries/cache/countries.json +1 -1
  11. data/lib/countries/cache/locales/an.json +1 -1
  12. data/lib/countries/cache/locales/be.json +1 -1
  13. data/lib/countries/cache/locales/cv.json +1 -1
  14. data/lib/countries/cache/locales/he.json +1 -1
  15. data/lib/countries/cache/locales/hr.json +1 -1
  16. data/lib/countries/cache/locales/ru.json +1 -1
  17. data/lib/countries/cache/locales/sv.json +1 -1
  18. data/lib/countries/cache/locales/tr.json +1 -1
  19. data/lib/countries/country.rb +4 -0
  20. data/lib/countries/country/class_methods.rb +10 -3
  21. data/lib/countries/data.rb +48 -22
  22. data/lib/countries/data/countries/AL.yaml +2 -2
  23. data/lib/countries/data/countries/AM.yaml +2 -2
  24. data/lib/countries/data/countries/AO.yaml +10 -10
  25. data/lib/countries/data/countries/AQ.yaml +2 -2
  26. data/lib/countries/data/countries/AS.yaml +2 -2
  27. data/lib/countries/data/countries/AT.yaml +3 -3
  28. data/lib/countries/data/countries/BA.yaml +4 -4
  29. data/lib/countries/data/countries/BD.yaml +2 -2
  30. data/lib/countries/data/countries/BE.yaml +1 -1
  31. data/lib/countries/data/countries/BF.yaml +8 -8
  32. data/lib/countries/data/countries/BG.yaml +4 -4
  33. data/lib/countries/data/countries/BH.yaml +4 -4
  34. data/lib/countries/data/countries/BI.yaml +6 -6
  35. data/lib/countries/data/countries/BJ.yaml +2 -2
  36. data/lib/countries/data/countries/BR.yaml +4 -4
  37. data/lib/countries/data/countries/BT.yaml +6 -6
  38. data/lib/countries/data/countries/BV.yaml +10 -10
  39. data/lib/countries/data/countries/BW.yaml +4 -4
  40. data/lib/countries/data/countries/CC.yaml +2 -2
  41. data/lib/countries/data/countries/CF.yaml +2 -2
  42. data/lib/countries/data/countries/CG.yaml +2 -2
  43. data/lib/countries/data/countries/CH.yaml +3 -3
  44. data/lib/countries/data/countries/CI.yaml +2 -2
  45. data/lib/countries/data/countries/CL.yaml +2 -2
  46. data/lib/countries/data/countries/CN.yaml +4 -4
  47. data/lib/countries/data/countries/CO.yaml +4 -4
  48. data/lib/countries/data/countries/CR.yaml +2 -2
  49. data/lib/countries/data/countries/CV.yaml +2 -2
  50. data/lib/countries/data/countries/CY.yaml +2 -2
  51. data/lib/countries/data/countries/CZ.yaml +2 -2
  52. data/lib/countries/data/countries/DE.yaml +2 -2
  53. data/lib/countries/data/countries/DJ.yaml +6 -6
  54. data/lib/countries/data/countries/DK.yaml +2 -2
  55. data/lib/countries/data/countries/DZ.yaml +6 -6
  56. data/lib/countries/data/countries/EC.yaml +4 -4
  57. data/lib/countries/data/countries/EE.yaml +3 -3
  58. data/lib/countries/data/countries/ES.yaml +1 -1
  59. data/lib/countries/data/countries/FI.yaml +5 -5
  60. data/lib/countries/data/countries/FK.yaml +2 -2
  61. data/lib/countries/data/countries/FM.yaml +2 -2
  62. data/lib/countries/data/countries/FO.yaml +5 -5
  63. data/lib/countries/data/countries/FR.yaml +3 -3
  64. data/lib/countries/data/countries/GE.yaml +4 -4
  65. data/lib/countries/data/countries/GG.yaml +10 -10
  66. data/lib/countries/data/countries/GH.yaml +4 -4
  67. data/lib/countries/data/countries/GI.yaml +2 -2
  68. data/lib/countries/data/countries/GL.yaml +6 -6
  69. data/lib/countries/data/countries/GM.yaml +4 -4
  70. data/lib/countries/data/countries/GN.yaml +2 -2
  71. data/lib/countries/data/countries/GR.yaml +2 -2
  72. data/lib/countries/data/countries/GS.yaml +2 -2
  73. data/lib/countries/data/countries/GT.yaml +2 -2
  74. data/lib/countries/data/countries/HK.yaml +4 -4
  75. data/lib/countries/data/countries/HN.yaml +2 -2
  76. data/lib/countries/data/countries/HR.yaml +3 -3
  77. data/lib/countries/data/countries/HU.yaml +7 -7
  78. data/lib/countries/data/countries/IE.yaml +10 -10
  79. data/lib/countries/data/countries/IM.yaml +8 -8
  80. data/lib/countries/data/countries/IN.yaml +2 -2
  81. data/lib/countries/data/countries/IO.yaml +2 -2
  82. data/lib/countries/data/countries/IQ.yaml +2 -2
  83. data/lib/countries/data/countries/IS.yaml +4 -4
  84. data/lib/countries/data/countries/IT.yaml +1 -1
  85. data/lib/countries/data/countries/JO.yaml +2 -2
  86. data/lib/countries/data/countries/KE.yaml +2 -2
  87. data/lib/countries/data/countries/KG.yaml +2 -2
  88. data/lib/countries/data/countries/KI.yaml +6 -6
  89. data/lib/countries/data/countries/KP.yaml +3 -2
  90. data/lib/countries/data/countries/KZ.yaml +2 -2
  91. data/lib/countries/data/countries/LA.yaml +6 -6
  92. data/lib/countries/data/countries/LT.yaml +6 -6
  93. data/lib/countries/data/countries/LV.yaml +4 -4
  94. data/lib/countries/data/countries/MA.yaml +4 -4
  95. data/lib/countries/data/countries/MD.yaml +8 -8
  96. data/lib/countries/data/countries/ME.yaml +2 -2
  97. data/lib/countries/data/countries/MH.yaml +2 -2
  98. data/lib/countries/data/countries/MK.yaml +2 -2
  99. data/lib/countries/data/countries/ML.yaml +4 -4
  100. data/lib/countries/data/countries/MN.yaml +8 -8
  101. data/lib/countries/data/countries/MR.yaml +2 -2
  102. data/lib/countries/data/countries/MT.yaml +2 -2
  103. data/lib/countries/data/countries/MV.yaml +2 -2
  104. data/lib/countries/data/countries/MW.yaml +2 -2
  105. data/lib/countries/data/countries/MX.yaml +2 -2
  106. data/lib/countries/data/countries/MY.yaml +2 -2
  107. data/lib/countries/data/countries/NA.yaml +4 -4
  108. data/lib/countries/data/countries/NE.yaml +4 -4
  109. data/lib/countries/data/countries/NI.yaml +2 -2
  110. data/lib/countries/data/countries/NL.yaml +2 -2
  111. data/lib/countries/data/countries/NO.yaml +4 -4
  112. data/lib/countries/data/countries/NP.yaml +6 -6
  113. data/lib/countries/data/countries/OM.yaml +2 -2
  114. data/lib/countries/data/countries/PA.yaml +2 -2
  115. data/lib/countries/data/countries/PE.yaml +4 -4
  116. data/lib/countries/data/countries/PF.yaml +4 -4
  117. data/lib/countries/data/countries/PH.yaml +2 -2
  118. data/lib/countries/data/countries/PK.yaml +4 -4
  119. data/lib/countries/data/countries/PL.yaml +4 -4
  120. data/lib/countries/data/countries/PR.yaml +8 -8
  121. data/lib/countries/data/countries/PT.yaml +5 -5
  122. data/lib/countries/data/countries/PY.yaml +2 -2
  123. data/lib/countries/data/countries/QA.yaml +2 -2
  124. data/lib/countries/data/countries/RO.yaml +6 -6
  125. data/lib/countries/data/countries/RU.yaml +2 -2
  126. data/lib/countries/data/countries/RW.yaml +2 -2
  127. data/lib/countries/data/countries/SA.yaml +2 -2
  128. data/lib/countries/data/countries/SC.yaml +2 -2
  129. data/lib/countries/data/countries/SD.yaml +2 -2
  130. data/lib/countries/data/countries/SE.yaml +4 -4
  131. data/lib/countries/data/countries/SH.yaml +4 -4
  132. data/lib/countries/data/countries/SI.yaml +4 -4
  133. data/lib/countries/data/countries/SJ.yaml +5 -5
  134. data/lib/countries/data/countries/SK.yaml +6 -6
  135. data/lib/countries/data/countries/SL.yaml +2 -2
  136. data/lib/countries/data/countries/SN.yaml +4 -4
  137. data/lib/countries/data/countries/TF.yaml +5 -5
  138. data/lib/countries/data/countries/TG.yaml +6 -6
  139. data/lib/countries/data/countries/TV.yaml +2 -2
  140. data/lib/countries/data/countries/TZ.yaml +2 -2
  141. data/lib/countries/data/countries/UA.yaml +5 -5
  142. data/lib/countries/data/countries/UG.yaml +4 -4
  143. data/lib/countries/data/countries/UY.yaml +2 -2
  144. data/lib/countries/data/countries/VC.yaml +2 -2
  145. data/lib/countries/data/countries/VE.yaml +2 -2
  146. data/lib/countries/data/countries/VN.yaml +4 -4
  147. data/lib/countries/data/countries/WS.yaml +2 -2
  148. data/lib/countries/data/countries/ZA.yaml +2 -2
  149. data/lib/countries/data/countries/ZM.yaml +4 -4
  150. data/lib/countries/data/countries/ZW.yaml +4 -4
  151. data/lib/countries/data/subdivisions/AD.yaml +35 -28
  152. data/lib/countries/data/subdivisions/AE.yaml +142 -63
  153. data/lib/countries/data/subdivisions/AF.yaml +569 -298
  154. data/lib/countries/data/subdivisions/AG.yaml +141 -68
  155. data/lib/countries/data/subdivisions/AI.yaml +139 -125
  156. data/lib/countries/data/subdivisions/AL.yaml +472 -156
  157. data/lib/countries/data/subdivisions/AM.yaml +235 -99
  158. data/lib/countries/data/subdivisions/AO.yaml +344 -162
  159. data/lib/countries/data/subdivisions/AR.yaml +447 -210
  160. data/lib/countries/data/subdivisions/AS.yaml +64 -45
  161. data/lib/countries/data/subdivisions/AT.yaml +200 -81
  162. data/lib/countries/data/subdivisions/AU.yaml +211 -72
  163. data/lib/countries/data/subdivisions/AW.yaml +9 -0
  164. data/lib/countries/data/subdivisions/AX.yaml +38 -27
  165. data/lib/countries/data/subdivisions/AZ.yaml +1547 -666
  166. data/lib/countries/data/subdivisions/BA.yaml +198 -28
  167. data/lib/countries/data/subdivisions/BB.yaml +187 -99
  168. data/lib/countries/data/subdivisions/BD.yaml +1246 -585
  169. data/lib/countries/data/subdivisions/BE.yaml +276 -100
  170. data/lib/countries/data/subdivisions/BF.yaml +987 -418
  171. data/lib/countries/data/subdivisions/BG.yaml +599 -246
  172. data/lib/countries/data/subdivisions/BH.yaml +73 -40
  173. data/lib/countries/data/subdivisions/BI.yaml +299 -141
  174. data/lib/countries/data/subdivisions/BJ.yaml +214 -108
  175. data/lib/countries/data/subdivisions/BL.yaml +11 -0
  176. data/lib/countries/data/subdivisions/BM.yaml +110 -99
  177. data/lib/countries/data/subdivisions/BN.yaml +63 -36
  178. data/lib/countries/data/subdivisions/BO.yaml +157 -81
  179. data/lib/countries/data/subdivisions/BQ.yaml +61 -26
  180. data/lib/countries/data/subdivisions/BR.yaml +663 -243
  181. data/lib/countries/data/subdivisions/BS.yaml +637 -151
  182. data/lib/countries/data/subdivisions/BT.yaml +346 -180
  183. data/lib/countries/data/subdivisions/BW.yaml +291 -87
  184. data/lib/countries/data/subdivisions/BY.yaml +140 -59
  185. data/lib/countries/data/subdivisions/BZ.yaml +97 -54
  186. data/lib/countries/data/subdivisions/CA.yaml +356 -118
  187. data/lib/countries/data/subdivisions/CD.yaml +453 -97
  188. data/lib/countries/data/subdivisions/CF.yaml +289 -153
  189. data/lib/countries/data/subdivisions/CG.yaml +214 -98
  190. data/lib/countries/data/subdivisions/CH.yaml +593 -234
  191. data/lib/countries/data/subdivisions/CI.yaml +443 -90
  192. data/lib/countries/data/subdivisions/CK.yaml +110 -99
  193. data/lib/countries/data/subdivisions/CL.yaml +262 -148
  194. data/lib/countries/data/subdivisions/CM.yaml +186 -90
  195. data/lib/countries/data/subdivisions/CO.yaml +610 -297
  196. data/lib/countries/data/subdivisions/CP.yaml +4 -0
  197. data/lib/countries/data/subdivisions/CR.yaml +119 -63
  198. data/lib/countries/data/subdivisions/CU.yaml +269 -144
  199. data/lib/countries/data/subdivisions/CV.yaml +416 -151
  200. data/lib/countries/data/subdivisions/CW.yaml +9 -0
  201. data/lib/countries/data/subdivisions/CY.yaml +102 -54
  202. data/lib/countries/data/subdivisions/CZ.yaml +2543 -197
  203. data/lib/countries/data/subdivisions/DE.yaml +450 -144
  204. data/lib/countries/data/subdivisions/DJ.yaml +108 -54
  205. data/lib/countries/data/subdivisions/DK.yaml +194 -109
  206. data/lib/countries/data/subdivisions/DM.yaml +159 -90
  207. data/lib/countries/data/subdivisions/DO.yaml +671 -289
  208. data/lib/countries/data/subdivisions/DZ.yaml +812 -435
  209. data/lib/countries/data/subdivisions/EC.yaml +390 -215
  210. data/lib/countries/data/subdivisions/EE.yaml +273 -135
  211. data/lib/countries/data/subdivisions/EG.yaml +472 -243
  212. data/lib/countries/data/subdivisions/EH.yaml +24 -16
  213. data/lib/countries/data/subdivisions/ER.yaml +109 -54
  214. data/lib/countries/data/subdivisions/ES.yaml +1804 -620
  215. data/lib/countries/data/subdivisions/ET.yaml +204 -99
  216. data/lib/countries/data/subdivisions/FI.yaml +408 -43
  217. data/lib/countries/data/subdivisions/FJ.yaml +312 -58
  218. data/lib/countries/data/subdivisions/FM.yaml +64 -36
  219. data/lib/countries/data/subdivisions/FO.yaml +60 -54
  220. data/lib/countries/data/subdivisions/FR.yaml +2790 -982
  221. data/lib/countries/data/subdivisions/GA.yaml +159 -81
  222. data/lib/countries/data/subdivisions/GB.yaml +4958 -1973
  223. data/lib/countries/data/subdivisions/GD.yaml +114 -63
  224. data/lib/countries/data/subdivisions/GE.yaml +236 -108
  225. data/lib/countries/data/subdivisions/GF.yaml +11 -0
  226. data/lib/countries/data/subdivisions/GG.yaml +110 -99
  227. data/lib/countries/data/subdivisions/GH.yaml +254 -88
  228. data/lib/countries/data/subdivisions/GL.yaml +87 -4
  229. data/lib/countries/data/subdivisions/GM.yaml +122 -54
  230. data/lib/countries/data/subdivisions/GN.yaml +706 -312
  231. data/lib/countries/data/subdivisions/GP.yaml +11 -0
  232. data/lib/countries/data/subdivisions/GQ.yaml +141 -81
  233. data/lib/countries/data/subdivisions/GR.yaml +642 -226
  234. data/lib/countries/data/subdivisions/GT.yaml +351 -198
  235. data/lib/countries/data/subdivisions/GU.yaml +198 -171
  236. data/lib/countries/data/subdivisions/GW.yaml +189 -79
  237. data/lib/countries/data/subdivisions/GY.yaml +163 -90
  238. data/lib/countries/data/subdivisions/HK.yaml +194 -162
  239. data/lib/countries/data/subdivisions/HN.yaml +275 -162
  240. data/lib/countries/data/subdivisions/HR.yaml +428 -189
  241. data/lib/countries/data/subdivisions/HT.yaml +178 -81
  242. data/lib/countries/data/subdivisions/HU.yaml +792 -381
  243. data/lib/countries/data/subdivisions/IC.yaml +4 -0
  244. data/lib/countries/data/subdivisions/ID.yaml +2303 -1868
  245. data/lib/countries/data/subdivisions/IE.yaml +665 -304
  246. data/lib/countries/data/subdivisions/IL.yaml +114 -54
  247. data/lib/countries/data/subdivisions/IM.yaml +240 -216
  248. data/lib/countries/data/subdivisions/IN.yaml +972 -337
  249. data/lib/countries/data/subdivisions/IQ.yaml +316 -157
  250. data/lib/countries/data/subdivisions/IR.yaml +591 -268
  251. data/lib/countries/data/subdivisions/IS.yaml +158 -76
  252. data/lib/countries/data/subdivisions/IT.yaml +2686 -1009
  253. data/lib/countries/data/subdivisions/JE.yaml +120 -108
  254. data/lib/countries/data/subdivisions/JM.yaml +243 -126
  255. data/lib/countries/data/subdivisions/JO.yaml +182 -97
  256. data/lib/countries/data/subdivisions/JP.yaml +950 -425
  257. data/lib/countries/data/subdivisions/KE.yaml +800 -79
  258. data/lib/countries/data/subdivisions/KG.yaml +186 -72
  259. data/lib/countries/data/subdivisions/KH.yaml +436 -216
  260. data/lib/countries/data/subdivisions/KI.yaml +57 -27
  261. data/lib/countries/data/subdivisions/KM.yaml +49 -27
  262. data/lib/countries/data/subdivisions/KN.yaml +307 -127
  263. data/lib/countries/data/subdivisions/KP.yaml +361 -67
  264. data/lib/countries/data/subdivisions/KR.yaml +376 -134
  265. data/lib/countries/data/subdivisions/KW.yaml +88 -54
  266. data/lib/countries/data/subdivisions/KY.yaml +36 -24
  267. data/lib/countries/data/subdivisions/KZ.yaml +360 -151
  268. data/lib/countries/data/subdivisions/LA.yaml +296 -157
  269. data/lib/countries/data/subdivisions/LB.yaml +130 -49
  270. data/lib/countries/data/subdivisions/LC.yaml +167 -10
  271. data/lib/countries/data/subdivisions/LI.yaml +154 -68
  272. data/lib/countries/data/subdivisions/LK.yaml +556 -233
  273. data/lib/countries/data/subdivisions/LR.yaml +253 -126
  274. data/lib/countries/data/subdivisions/LS.yaml +149 -90
  275. data/lib/countries/data/subdivisions/LT.yaml +1090 -149
  276. data/lib/countries/data/subdivisions/LU.yaml +198 -27
  277. data/lib/countries/data/subdivisions/LV.yaml +2332 -277
  278. data/lib/countries/data/subdivisions/LY.yaml +341 -184
  279. data/lib/countries/data/subdivisions/MA.yaml +1487 -562
  280. data/lib/countries/data/subdivisions/MC.yaml +265 -17
  281. data/lib/countries/data/subdivisions/MD.yaml +633 -127
  282. data/lib/countries/data/subdivisions/ME.yaml +429 -190
  283. data/lib/countries/data/subdivisions/MF.yaml +9 -0
  284. data/lib/countries/data/subdivisions/MG.yaml +93 -54
  285. data/lib/countries/data/subdivisions/MH.yaml +429 -213
  286. data/lib/countries/data/subdivisions/MK.yaml +3083 -425
  287. data/lib/countries/data/subdivisions/ML.yaml +185 -80
  288. data/lib/countries/data/subdivisions/MM.yaml +274 -126
  289. data/lib/countries/data/subdivisions/MN.yaml +420 -198
  290. data/lib/countries/data/subdivisions/MO.yaml +9 -0
  291. data/lib/countries/data/subdivisions/MP.yaml +54 -36
  292. data/lib/countries/data/subdivisions/MQ.yaml +11 -0
  293. data/lib/countries/data/subdivisions/MR.yaml +249 -115
  294. data/lib/countries/data/subdivisions/MS.yaml +30 -27
  295. data/lib/countries/data/subdivisions/MT.yaml +1059 -612
  296. data/lib/countries/data/subdivisions/MU.yaml +314 -147
  297. data/lib/countries/data/subdivisions/MV.yaml +466 -192
  298. data/lib/countries/data/subdivisions/MW.yaml +536 -246
  299. data/lib/countries/data/subdivisions/MX.yaml +707 -288
  300. data/lib/countries/data/subdivisions/MY.yaml +334 -144
  301. data/lib/countries/data/subdivisions/MZ.yaml +188 -93
  302. data/lib/countries/data/subdivisions/NA.yaml +221 -120
  303. data/lib/countries/data/subdivisions/NC.yaml +44 -27
  304. data/lib/countries/data/subdivisions/NE.yaml +161 -72
  305. data/lib/countries/data/subdivisions/NG.yaml +833 -333
  306. data/lib/countries/data/subdivisions/NI.yaml +260 -153
  307. data/lib/countries/data/subdivisions/NL.yaml +382 -113
  308. data/lib/countries/data/subdivisions/NO.yaml +596 -102
  309. data/lib/countries/data/subdivisions/NP.yaml +389 -130
  310. data/lib/countries/data/subdivisions/NR.yaml +260 -126
  311. data/lib/countries/data/subdivisions/NZ.yaml +322 -151
  312. data/lib/countries/data/subdivisions/OM.yaml +205 -66
  313. data/lib/countries/data/subdivisions/PA.yaml +204 -113
  314. data/lib/countries/data/subdivisions/PE.yaml +418 -234
  315. data/lib/countries/data/subdivisions/PF.yaml +60 -45
  316. data/lib/countries/data/subdivisions/PG.yaml +383 -177
  317. data/lib/countries/data/subdivisions/PH.yaml +1867 -767
  318. data/lib/countries/data/subdivisions/PK.yaml +185 -63
  319. data/lib/countries/data/subdivisions/PL.yaml +1161 -143
  320. data/lib/countries/data/subdivisions/PM.yaml +30 -18
  321. data/lib/countries/data/subdivisions/PR.yaml +1107 -0
  322. data/lib/countries/data/subdivisions/PS.yaml +265 -16
  323. data/lib/countries/data/subdivisions/PT.yaml +341 -180
  324. data/lib/countries/data/subdivisions/PW.yaml +265 -144
  325. data/lib/countries/data/subdivisions/PY.yaml +321 -162
  326. data/lib/countries/data/subdivisions/QA.yaml +165 -71
  327. data/lib/countries/data/subdivisions/RE.yaml +11 -0
  328. data/lib/countries/data/subdivisions/RO.yaml +731 -381
  329. data/lib/countries/data/subdivisions/RS.yaml +582 -261
  330. data/lib/countries/data/subdivisions/RU.yaml +1873 -750
  331. data/lib/countries/data/subdivisions/RW.yaml +100 -45
  332. data/lib/countries/data/subdivisions/SA.yaml +234 -117
  333. data/lib/countries/data/subdivisions/SB.yaml +169 -90
  334. data/lib/countries/data/subdivisions/SC.yaml +457 -208
  335. data/lib/countries/data/subdivisions/SD.yaml +142 -18
  336. data/lib/countries/data/subdivisions/SE.yaml +435 -258
  337. data/lib/countries/data/subdivisions/SG.yaml +117 -25
  338. data/lib/countries/data/subdivisions/SH.yaml +68 -18
  339. data/lib/countries/data/subdivisions/SI.yaml +3605 -1760
  340. data/lib/countries/data/subdivisions/SJ.yaml +20 -18
  341. data/lib/countries/data/subdivisions/SK.yaml +129 -72
  342. data/lib/countries/data/subdivisions/SL.yaml +80 -35
  343. data/lib/countries/data/subdivisions/SM.yaml +158 -81
  344. data/lib/countries/data/subdivisions/SN.yaml +232 -101
  345. data/lib/countries/data/subdivisions/SO.yaml +313 -161
  346. data/lib/countries/data/subdivisions/SR.yaml +158 -90
  347. data/lib/countries/data/subdivisions/SS.yaml +196 -10
  348. data/lib/countries/data/subdivisions/ST.yaml +30 -18
  349. data/lib/countries/data/subdivisions/SV.yaml +233 -126
  350. data/lib/countries/data/subdivisions/SX.yaml +9 -0
  351. data/lib/countries/data/subdivisions/SY.yaml +219 -124
  352. data/lib/countries/data/subdivisions/SZ.yaml +64 -35
  353. data/lib/countries/data/subdivisions/TA.yaml +4 -0
  354. data/lib/countries/data/subdivisions/TD.yaml +408 -161
  355. data/lib/countries/data/subdivisions/TF.yaml +34 -16
  356. data/lib/countries/data/subdivisions/TG.yaml +75 -45
  357. data/lib/countries/data/subdivisions/TH.yaml +1449 -694
  358. data/lib/countries/data/subdivisions/TJ.yaml +98 -28
  359. data/lib/countries/data/subdivisions/TK.yaml +30 -27
  360. data/lib/countries/data/subdivisions/TL.yaml +209 -117
  361. data/lib/countries/data/subdivisions/TM.yaml +116 -45
  362. data/lib/countries/data/subdivisions/TN.yaml +412 -216
  363. data/lib/countries/data/subdivisions/TO.yaml +76 -45
  364. data/lib/countries/data/subdivisions/TR.yaml +1818 -730
  365. data/lib/countries/data/subdivisions/TT.yaml +296 -131
  366. data/lib/countries/data/subdivisions/TV.yaml +130 -64
  367. data/lib/countries/data/subdivisions/TW.yaml +481 -187
  368. data/lib/countries/data/subdivisions/TZ.yaml +635 -237
  369. data/lib/countries/data/subdivisions/UA.yaml +504 -243
  370. data/lib/countries/data/subdivisions/UG.yaml +2237 -752
  371. data/lib/countries/data/subdivisions/UM.yaml +216 -80
  372. data/lib/countries/data/subdivisions/US.yaml +1570 -495
  373. data/lib/countries/data/subdivisions/UY.yaml +364 -170
  374. data/lib/countries/data/subdivisions/UZ.yaml +288 -127
  375. data/lib/countries/data/subdivisions/VC.yaml +96 -53
  376. data/lib/countries/data/subdivisions/VE.yaml +456 -225
  377. data/lib/countries/data/subdivisions/VI.yaml +44 -27
  378. data/lib/countries/data/subdivisions/VN.yaml +3583 -2980
  379. data/lib/countries/data/subdivisions/VU.yaml +98 -54
  380. data/lib/countries/data/subdivisions/WF.yaml +73 -3
  381. data/lib/countries/data/subdivisions/WS.yaml +200 -99
  382. data/lib/countries/data/subdivisions/YE.yaml +376 -173
  383. data/lib/countries/data/subdivisions/YT.yaml +178 -153
  384. data/lib/countries/data/subdivisions/ZA.yaml +230 -81
  385. data/lib/countries/data/subdivisions/ZM.yaml +156 -81
  386. data/lib/countries/data/subdivisions/ZW.yaml +153 -83
  387. data/lib/countries/data/translation_corrections.yaml +4 -1
  388. data/lib/countries/sources/cldr/downloader.rb +12 -13
  389. data/lib/countries/tasks/geocoding.rake +9 -16
  390. data/lib/countries/version.rb +1 -1
  391. data/spec/country_spec.rb +37 -0
  392. data/spec/data_spec.rb +4 -4
  393. data/spec/thread_safety_spec.rb +46 -0
  394. metadata +33 -25
  395. data/.travis.yml +0 -15
@@ -1,6 +1,6 @@
1
1
  # Contains fixes for upstream pkg-iso-codes
2
2
  # Any change here should have an upstream bug report
3
- # https://alioth.debian.org/projects/pkg-iso-codes/
3
+ # https://salsa.debian.org/iso-codes-team/iso-codes
4
4
  #
5
5
  # These changes are applied during `rake update_cache`
6
6
  #
@@ -34,5 +34,8 @@ he:
34
34
  VI: "איי הבתולה (ארה)"
35
35
  sv:
36
36
  GB: "Storbritannien"
37
+ RU: "Ryssland"
37
38
  pt:
38
39
  CZ: 'República Checa'
40
+ da:
41
+ CZ: 'Tjekkiet'
@@ -2,6 +2,8 @@ require 'uri'
2
2
  require 'net/http'
3
3
  require 'nokogiri'
4
4
  require 'fileutils'
5
+ require 'json'
6
+
5
7
  module Sources
6
8
  module CLDR
7
9
  module Downloader
@@ -14,22 +16,19 @@ module Sources
14
16
  def download_folder(type)
15
17
  folder = File.join(ISO3166_ROOT_PATH, 'tmp', 'cldr', 'trunk', 'common', type)
16
18
  FileUtils.mkdir_p(folder)
17
- doc = Nokogiri::HTML get(type + '/')
18
- doc.css('a[href]').map { |e| e.attributes['href'].value }.each do |href|
19
- next if href == '../'
20
- File.write(File.join(folder, href), get([type, href].join('/')))
19
+ url = URI.parse("https://api.github.com/repos/unicode-org/cldr/contents/common/" + type)
20
+ path_listing = JSON.parse(Net::HTTP.get_response(url).body)
21
+ path_listing.each do |path|
22
+ if path['name'] =~ /\.xml$/
23
+ File.open(File.join(folder, path['name']), 'w') do |f|
24
+ raw_url = URI.parse(path['download_url'])
25
+ f.write(Net::HTTP.get_response(raw_url).body)
26
+ end
27
+ end
21
28
  end
22
29
  end
23
30
 
24
- def get(path)
25
- url = URI("http://www.unicode.org/repos/cldr/trunk/common/#{path}")
26
-
27
- http = Net::HTTP.new(url.host, url.port)
28
-
29
- request = Net::HTTP::Get.new(url)
30
- response = http.request(request)
31
- response.read_body
32
- end
33
31
  end
34
32
  end
35
33
  end
34
+
@@ -2,7 +2,9 @@ require 'geocoder'
2
2
  require 'retryable'
3
3
 
4
4
  Geocoder.configure(
5
- timeout: 10
5
+ lookup: :google,
6
+ timeout: 10,
7
+ api_key: GOOGLE_API_KEY
6
8
  )
7
9
 
8
10
  # raise on geocoding errors such as query limit exceeded
@@ -10,9 +12,9 @@ Geocoder.configure(always_raise: :all)
10
12
  # Try to geocode a given query, on exceptions it retries up to 3 times then gives up.
11
13
  # @param [String] query string to geocode
12
14
  # @return [Hash] first valid result or nil
13
- def geocode(query)
15
+ def geocode(query, params)
14
16
  Retryable.retryable(tries: 3, sleep: ->(n) { 2**n }) do
15
- Geocoder.search(query).first
17
+ Geocoder.search(query, params: params).first
16
18
  end
17
19
  rescue => e
18
20
  warn "Attempts exceeded for query #{query}, last error was #{e.message}"
@@ -41,12 +43,8 @@ namespace :geocode do
41
43
  # Load unmutated yaml file.
42
44
  data = load_country_yaml(country.alpha2)
43
45
 
44
- lookup = "#{country.alpha2} country"
45
- # LU country lookup appears to match to Los Angeles
46
- lookup = country.name if country.alpha2 == 'LU'
47
-
48
- next unless (result = geocode(lookup))
49
- puts 'WARNING:: Geocoder returned something that was not a country' unless result.types.include?('country')
46
+ next unless (result = geocode(country.name, {region: country.alpha2}))
47
+ puts "WARNING:: Geocoder returned something that was not a country for #{country.alpha2}" unless result.types.include?('country')
50
48
  geometry = result.geometry
51
49
 
52
50
  # Extract center point data
@@ -76,15 +74,10 @@ namespace :geocode do
76
74
  # Iterate subdivisions
77
75
  state_data = c.subdivisions.dup
78
76
  state_data.reject { |_, data| data['geo'] }.each do |code, data|
79
- location = "#{data['name']}, #{c.name}"
77
+ location = "#{c.alpha2}-#{code}"
80
78
 
81
- # Handle special geocoding cases where Google defaults to well known
82
- # cities, instead of the states.
83
- if c.alpha2 == 'US' && %w(NY WA OK).include?(code)
84
- location = "#{data['name']} State, United States"
85
- end
79
+ next unless (result = geocode(location, {region: c.alpha2}))
86
80
 
87
- next unless (result = geocode(location))
88
81
  geometry = result.geometry
89
82
  if geometry['location']
90
83
  state_data[code]['geo'] ||= {}
@@ -1,3 +1,3 @@
1
1
  module Countries
2
- VERSION = '3.1.0'.freeze
2
+ VERSION = '4.0.0'.freeze
3
3
  end
data/spec/country_spec.rb CHANGED
@@ -345,6 +345,26 @@ describe ISO3166::Country do
345
345
  expect(countries.first).to eq('Aruba')
346
346
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
347
347
  end
348
+
349
+ context 'with custom countries' do
350
+ before do
351
+ ISO3166::Data.register(
352
+ alpha2: 'XX',
353
+ name: 'Custom Country',
354
+ translations: { 'en' => 'Custom Country' }
355
+ )
356
+ end
357
+
358
+ it 'should include custom registered countries' do
359
+ custom_country = ISO3166::Country.find_by_alpha2('XX')[1]
360
+ countries = ISO3166::Country.all_translated
361
+ expect(countries).to include(custom_country['name'])
362
+ end
363
+
364
+ after do
365
+ ISO3166::Data.unregister('XX')
366
+ end
367
+ end
348
368
  end
349
369
 
350
370
  describe 'all_names_with_codes' do
@@ -838,6 +858,23 @@ describe ISO3166::Country do
838
858
  end
839
859
  end
840
860
 
861
+ describe 'in_esm?' do
862
+ let(:netherlands) { ISO3166::Country.search('NL') }
863
+ let(:switzerland) { ISO3166::Country.search('CH') }
864
+
865
+ it 'should return false for countries without esm_member or eea_member flag' do
866
+ expect(country.in_esm?).to be_falsey
867
+ end
868
+
869
+ it 'should return true for countries with eea_member flag set to true' do
870
+ expect(netherlands.in_esm?).to be_truthy
871
+ end
872
+
873
+ it 'should return true for countries with esm_member flag set to true' do
874
+ expect(switzerland.in_esm?).to be_truthy
875
+ end
876
+ end
877
+
841
878
  describe 'gec' do
842
879
  it 'should return the country\'s GEC code' do
843
880
  expect(ISO3166::Country.new('NA').gec).to eql 'WA'
data/spec/data_spec.rb CHANGED
@@ -116,8 +116,8 @@ describe ISO3166::Data do
116
116
  expect(subject.name).to eq 'NEW Taiwan'
117
117
  expect(subject.translations).to eq('en' => 'NEW Taiwan',
118
118
  'de' => 'NEW Taiwan')
119
- expect(subject.subdivisions).to eq(CHA: ISO3166::Subdivision.new({name: 'New Changhua'}),
120
- CYI: ISO3166::Subdivision.new({name: 'New Municipality'}))
119
+ expect(subject.subdivisions).to eq('CHA' => ISO3166::Subdivision.new({name: 'New Changhua'}),
120
+ 'CYI' => ISO3166::Subdivision.new({name: 'New Municipality'}))
121
121
  end
122
122
  end
123
123
 
@@ -143,8 +143,8 @@ describe ISO3166::Data do
143
143
  data = ISO3166::Data.new('LOL').call
144
144
  expect(data['name']).to eq 'Happy Country'
145
145
  expect(subject.name).to eq 'Happy Country'
146
- expect(subject.subdivisions).to eq(LOL1: ISO3166::Subdivision.new({name: 'Happy sub1'}),
147
- LOL2: ISO3166::Subdivision.new({name: 'Happy sub2'}))
146
+ expect(subject.subdivisions).to eq('LOL1' => ISO3166::Subdivision.new({name: 'Happy sub1'}),
147
+ 'LOL2' => ISO3166::Subdivision.new({name: 'Happy sub2'}))
148
148
  end
149
149
 
150
150
  it 'detect a stale cache' do
@@ -0,0 +1,46 @@
1
+ describe 'Accessing ISO3166::Country instances data in multiple threads' do
2
+ before do
3
+ if Thread.respond_to?(:report_on_exception)
4
+ @report_on_exception_value = Thread.report_on_exception
5
+ Thread.report_on_exception = false
6
+ end
7
+
8
+ ISO3166::Data.reset
9
+ end
10
+
11
+ def create_countries_threaded
12
+ nthreads = 100
13
+ threads = []
14
+
15
+ alpha2_codes = ['us', 'es', 'nl', 'ca', 'de', 'fr', 'mx', 'ru', 'ch', 'jp']
16
+
17
+ nthreads.times do
18
+ threads << Thread.new do
19
+ alpha2_codes.each do |a2|
20
+ country = ISO3166::Country[a2]
21
+ # This will fail if data['translations'] has been
22
+ # left nil due to a race condition
23
+ country.translation
24
+ end
25
+ end
26
+ end
27
+ threads.map(&:join)
28
+ end
29
+
30
+ it "doesn't raise any exceptions when using a mutex" do
31
+ expect { create_countries_threaded }.to_not raise_error
32
+ end
33
+
34
+ it "raises NoMethodError when not using a mutex" do
35
+ allow(ISO3166::Data).to receive(:use_mutex?).and_return(false)
36
+
37
+ expect { create_countries_threaded }.to raise_error(NoMethodError)
38
+ end
39
+
40
+ after do
41
+ if Thread.respond_to?(:report_on_exception)
42
+ Thread.report_on_exception = @report_on_exception_value
43
+ end
44
+ end
45
+ end
46
+
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: countries
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Robinson
8
8
  - Joe Corcoran
9
9
  - Russell Osborne
10
- autorequire:
10
+ - Pedro Moreira
11
+ autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2021-03-24 00:00:00.000000000 Z
14
+ date: 2021-06-11 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: i18n_data
@@ -18,28 +19,14 @@ dependencies:
18
19
  requirements:
19
20
  - - "~>"
20
21
  - !ruby/object:Gem::Version
21
- version: 0.11.0
22
+ version: 0.13.0
22
23
  type: :runtime
23
24
  prerelease: false
24
25
  version_requirements: !ruby/object:Gem::Requirement
25
26
  requirements:
26
27
  - - "~>"
27
28
  - !ruby/object:Gem::Version
28
- version: 0.11.0
29
- - !ruby/object:Gem::Dependency
30
- name: unicode_utils
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - "~>"
34
- - !ruby/object:Gem::Version
35
- version: '1.4'
36
- type: :runtime
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '1.4'
29
+ version: 0.13.0
43
30
  - !ruby/object:Gem::Dependency
44
31
  name: sixarm_ruby_unaccent
45
32
  requirement: !ruby/object:Gem::Requirement
@@ -101,15 +88,16 @@ description: All sorts of useful information about every country packaged as pre
101
88
  email:
102
89
  - hexorx@gmail.com
103
90
  - russell@burningpony.com
91
+ - pedro@codecreations.tech
104
92
  executables: []
105
93
  extensions: []
106
94
  extra_rdoc_files: []
107
95
  files:
96
+ - ".github/workflows/tests.yml"
108
97
  - ".gitignore"
109
98
  - ".rspec"
110
99
  - ".rubocop.yml"
111
100
  - ".rubocop_todo.yml"
112
- - ".travis.yml"
113
101
  - CHANGELOG.md
114
102
  - Gemfile
115
103
  - LICENSE
@@ -518,6 +506,7 @@ files:
518
506
  - lib/countries/data/subdivisions/AS.yaml
519
507
  - lib/countries/data/subdivisions/AT.yaml
520
508
  - lib/countries/data/subdivisions/AU.yaml
509
+ - lib/countries/data/subdivisions/AW.yaml
521
510
  - lib/countries/data/subdivisions/AX.yaml
522
511
  - lib/countries/data/subdivisions/AZ.yaml
523
512
  - lib/countries/data/subdivisions/BA.yaml
@@ -529,6 +518,7 @@ files:
529
518
  - lib/countries/data/subdivisions/BH.yaml
530
519
  - lib/countries/data/subdivisions/BI.yaml
531
520
  - lib/countries/data/subdivisions/BJ.yaml
521
+ - lib/countries/data/subdivisions/BL.yaml
532
522
  - lib/countries/data/subdivisions/BM.yaml
533
523
  - lib/countries/data/subdivisions/BN.yaml
534
524
  - lib/countries/data/subdivisions/BO.yaml
@@ -550,9 +540,11 @@ files:
550
540
  - lib/countries/data/subdivisions/CM.yaml
551
541
  - lib/countries/data/subdivisions/CN.yaml
552
542
  - lib/countries/data/subdivisions/CO.yaml
543
+ - lib/countries/data/subdivisions/CP.yaml
553
544
  - lib/countries/data/subdivisions/CR.yaml
554
545
  - lib/countries/data/subdivisions/CU.yaml
555
546
  - lib/countries/data/subdivisions/CV.yaml
547
+ - lib/countries/data/subdivisions/CW.yaml
556
548
  - lib/countries/data/subdivisions/CY.yaml
557
549
  - lib/countries/data/subdivisions/CZ.yaml
558
550
  - lib/countries/data/subdivisions/DE.yaml
@@ -577,11 +569,13 @@ files:
577
569
  - lib/countries/data/subdivisions/GB.yaml
578
570
  - lib/countries/data/subdivisions/GD.yaml
579
571
  - lib/countries/data/subdivisions/GE.yaml
572
+ - lib/countries/data/subdivisions/GF.yaml
580
573
  - lib/countries/data/subdivisions/GG.yaml
581
574
  - lib/countries/data/subdivisions/GH.yaml
582
575
  - lib/countries/data/subdivisions/GL.yaml
583
576
  - lib/countries/data/subdivisions/GM.yaml
584
577
  - lib/countries/data/subdivisions/GN.yaml
578
+ - lib/countries/data/subdivisions/GP.yaml
585
579
  - lib/countries/data/subdivisions/GQ.yaml
586
580
  - lib/countries/data/subdivisions/GR.yaml
587
581
  - lib/countries/data/subdivisions/GT.yaml
@@ -593,6 +587,7 @@ files:
593
587
  - lib/countries/data/subdivisions/HR.yaml
594
588
  - lib/countries/data/subdivisions/HT.yaml
595
589
  - lib/countries/data/subdivisions/HU.yaml
590
+ - lib/countries/data/subdivisions/IC.yaml
596
591
  - lib/countries/data/subdivisions/ID.yaml
597
592
  - lib/countries/data/subdivisions/IE.yaml
598
593
  - lib/countries/data/subdivisions/IL.yaml
@@ -632,13 +627,16 @@ files:
632
627
  - lib/countries/data/subdivisions/MC.yaml
633
628
  - lib/countries/data/subdivisions/MD.yaml
634
629
  - lib/countries/data/subdivisions/ME.yaml
630
+ - lib/countries/data/subdivisions/MF.yaml
635
631
  - lib/countries/data/subdivisions/MG.yaml
636
632
  - lib/countries/data/subdivisions/MH.yaml
637
633
  - lib/countries/data/subdivisions/MK.yaml
638
634
  - lib/countries/data/subdivisions/ML.yaml
639
635
  - lib/countries/data/subdivisions/MM.yaml
640
636
  - lib/countries/data/subdivisions/MN.yaml
637
+ - lib/countries/data/subdivisions/MO.yaml
641
638
  - lib/countries/data/subdivisions/MP.yaml
639
+ - lib/countries/data/subdivisions/MQ.yaml
642
640
  - lib/countries/data/subdivisions/MR.yaml
643
641
  - lib/countries/data/subdivisions/MS.yaml
644
642
  - lib/countries/data/subdivisions/MT.yaml
@@ -667,11 +665,13 @@ files:
667
665
  - lib/countries/data/subdivisions/PK.yaml
668
666
  - lib/countries/data/subdivisions/PL.yaml
669
667
  - lib/countries/data/subdivisions/PM.yaml
668
+ - lib/countries/data/subdivisions/PR.yaml
670
669
  - lib/countries/data/subdivisions/PS.yaml
671
670
  - lib/countries/data/subdivisions/PT.yaml
672
671
  - lib/countries/data/subdivisions/PW.yaml
673
672
  - lib/countries/data/subdivisions/PY.yaml
674
673
  - lib/countries/data/subdivisions/QA.yaml
674
+ - lib/countries/data/subdivisions/RE.yaml
675
675
  - lib/countries/data/subdivisions/RO.yaml
676
676
  - lib/countries/data/subdivisions/RS.yaml
677
677
  - lib/countries/data/subdivisions/RU.yaml
@@ -694,8 +694,10 @@ files:
694
694
  - lib/countries/data/subdivisions/SS.yaml
695
695
  - lib/countries/data/subdivisions/ST.yaml
696
696
  - lib/countries/data/subdivisions/SV.yaml
697
+ - lib/countries/data/subdivisions/SX.yaml
697
698
  - lib/countries/data/subdivisions/SY.yaml
698
699
  - lib/countries/data/subdivisions/SZ.yaml
700
+ - lib/countries/data/subdivisions/TA.yaml
699
701
  - lib/countries/data/subdivisions/TD.yaml
700
702
  - lib/countries/data/subdivisions/TF.yaml
701
703
  - lib/countries/data/subdivisions/TG.yaml
@@ -756,12 +758,17 @@ files:
756
758
  - spec/perf_spec.rb
757
759
  - spec/spec_helper.rb
758
760
  - spec/subdivision_spec.rb
761
+ - spec/thread_safety_spec.rb
759
762
  - spec/timezone_spec.rb
760
- homepage: http://github.com/hexorx/countries
763
+ homepage: http://github.com/countries/countries
761
764
  licenses:
762
765
  - MIT
763
- metadata: {}
764
- post_install_message:
766
+ metadata:
767
+ bug_tracker_uri: http://github.com/countries/countries/issues
768
+ changelog_uri: https://github.com/countries/countries/blob/master/CHANGELOG.md
769
+ source_code_uri: https://github.com/countries/countries
770
+ wiki_uri: https://github.com/countries/countries/wiki
771
+ post_install_message:
765
772
  rdoc_options: []
766
773
  require_paths:
767
774
  - lib
@@ -776,8 +783,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
776
783
  - !ruby/object:Gem::Version
777
784
  version: '0'
778
785
  requirements: []
779
- rubygems_version: 3.1.4
780
- signing_key:
786
+ rubygems_version: 3.1.6
787
+ signing_key:
781
788
  specification_version: 4
782
789
  summary: Gives you a country object full of all sorts of useful information.
783
790
  test_files:
@@ -789,4 +796,5 @@ test_files:
789
796
  - spec/perf_spec.rb
790
797
  - spec/spec_helper.rb
791
798
  - spec/subdivision_spec.rb
799
+ - spec/thread_safety_spec.rb
792
800
  - spec/timezone_spec.rb
data/.travis.yml DELETED
@@ -1,15 +0,0 @@
1
- cache: bundler
2
- language: ruby
3
- rvm:
4
- - 1.9.3
5
- - 2.3.6
6
- - 2.4.3
7
- - 2.5.0
8
- - ruby-head
9
- before_install:
10
- - gem update --system
11
- - gem install bundler
12
- matrix:
13
- allow_failures:
14
- - rvm: ruby-head
15
- - rvm: 1.9.3