countries 3.1.0 → 4.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +37 -0
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +71 -1
  5. data/Gemfile +5 -0
  6. data/README.markdown +50 -35
  7. data/Rakefile +5 -3
  8. data/countries.gemspec +10 -5
  9. data/lib/countries/cache/countries.json +1 -1
  10. data/lib/countries/cache/locales/an.json +1 -1
  11. data/lib/countries/cache/locales/be.json +1 -1
  12. data/lib/countries/cache/locales/cv.json +1 -1
  13. data/lib/countries/cache/locales/he.json +1 -1
  14. data/lib/countries/cache/locales/hr.json +1 -1
  15. data/lib/countries/cache/locales/mk.json +1 -1
  16. data/lib/countries/cache/locales/ru.json +1 -1
  17. data/lib/countries/cache/locales/sr.json +1 -1
  18. data/lib/countries/cache/locales/sv.json +1 -1
  19. data/lib/countries/cache/locales/tr.json +1 -1
  20. data/lib/countries/country/class_methods.rb +19 -5
  21. data/lib/countries/country.rb +4 -0
  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 +3 -3
  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 +3 -3
  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 +154 -63
  153. data/lib/countries/data/subdivisions/AF.yaml +605 -300
  154. data/lib/countries/data/subdivisions/AG.yaml +149 -67
  155. data/lib/countries/data/subdivisions/AI.yaml +139 -125
  156. data/lib/countries/data/subdivisions/AL.yaml +472 -144
  157. data/lib/countries/data/subdivisions/AM.yaml +236 -88
  158. data/lib/countries/data/subdivisions/AO.yaml +344 -144
  159. data/lib/countries/data/subdivisions/AR.yaml +450 -187
  160. data/lib/countries/data/subdivisions/AS.yaml +34 -15
  161. data/lib/countries/data/subdivisions/AT.yaml +202 -72
  162. data/lib/countries/data/subdivisions/AU.yaml +212 -64
  163. data/lib/countries/data/subdivisions/AW.yaml +9 -0
  164. data/lib/countries/data/subdivisions/AX.yaml +20 -9
  165. data/lib/countries/data/subdivisions/AZ.yaml +1550 -592
  166. data/lib/countries/data/subdivisions/BA.yaml +189 -16
  167. data/lib/countries/data/subdivisions/BB.yaml +190 -88
  168. data/lib/countries/data/subdivisions/BD.yaml +1192 -519
  169. data/lib/countries/data/subdivisions/BE.yaml +278 -88
  170. data/lib/countries/data/subdivisions/BF.yaml +993 -366
  171. data/lib/countries/data/subdivisions/BG.yaml +600 -219
  172. data/lib/countries/data/subdivisions/BH.yaml +72 -35
  173. data/lib/countries/data/subdivisions/BI.yaml +298 -123
  174. data/lib/countries/data/subdivisions/BJ.yaml +226 -96
  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 -32
  178. data/lib/countries/data/subdivisions/BO.yaml +157 -72
  179. data/lib/countries/data/subdivisions/BQ.yaml +63 -24
  180. data/lib/countries/data/subdivisions/BR.yaml +689 -216
  181. data/lib/countries/data/subdivisions/BS.yaml +625 -108
  182. data/lib/countries/data/subdivisions/BT.yaml +346 -160
  183. data/lib/countries/data/subdivisions/BW.yaml +294 -72
  184. data/lib/countries/data/subdivisions/BY.yaml +140 -51
  185. data/lib/countries/data/subdivisions/BZ.yaml +97 -48
  186. data/lib/countries/data/subdivisions/CA.yaml +358 -105
  187. data/lib/countries/data/subdivisions/CD.yaml +451 -68
  188. data/lib/countries/data/subdivisions/CF.yaml +291 -136
  189. data/lib/countries/data/subdivisions/CG.yaml +217 -88
  190. data/lib/countries/data/subdivisions/CH.yaml +593 -208
  191. data/lib/countries/data/subdivisions/CI.yaml +431 -66
  192. data/lib/countries/data/subdivisions/CK.yaml +110 -99
  193. data/lib/countries/data/subdivisions/CL.yaml +262 -132
  194. data/lib/countries/data/subdivisions/CM.yaml +190 -80
  195. data/lib/countries/data/subdivisions/CN.yaml +691 -12
  196. data/lib/countries/data/subdivisions/CO.yaml +643 -264
  197. data/lib/countries/data/subdivisions/CP.yaml +4 -0
  198. data/lib/countries/data/subdivisions/CR.yaml +119 -56
  199. data/lib/countries/data/subdivisions/CU.yaml +268 -128
  200. data/lib/countries/data/subdivisions/CV.yaml +414 -126
  201. data/lib/countries/data/subdivisions/CW.yaml +9 -0
  202. data/lib/countries/data/subdivisions/CY.yaml +102 -48
  203. data/lib/countries/data/subdivisions/CZ.yaml +2430 -53
  204. data/lib/countries/data/subdivisions/DE.yaml +468 -128
  205. data/lib/countries/data/subdivisions/DJ.yaml +110 -48
  206. data/lib/countries/data/subdivisions/DK.yaml +186 -96
  207. data/lib/countries/data/subdivisions/DM.yaml +159 -80
  208. data/lib/countries/data/subdivisions/DO.yaml +660 -248
  209. data/lib/countries/data/subdivisions/DZ.yaml +809 -384
  210. data/lib/countries/data/subdivisions/EC.yaml +391 -192
  211. data/lib/countries/data/subdivisions/EE.yaml +543 -120
  212. data/lib/countries/data/subdivisions/EG.yaml +472 -216
  213. data/lib/countries/data/subdivisions/EH.yaml +24 -16
  214. data/lib/countries/data/subdivisions/ER.yaml +109 -48
  215. data/lib/countries/data/subdivisions/ES.yaml +1805 -550
  216. data/lib/countries/data/subdivisions/ET.yaml +207 -88
  217. data/lib/countries/data/subdivisions/FI.yaml +421 -37
  218. data/lib/countries/data/subdivisions/FJ.yaml +314 -40
  219. data/lib/countries/data/subdivisions/FM.yaml +63 -32
  220. data/lib/countries/data/subdivisions/FO.yaml +60 -54
  221. data/lib/countries/data/subdivisions/FR.yaml +2861 -922
  222. data/lib/countries/data/subdivisions/GA.yaml +159 -72
  223. data/lib/countries/data/subdivisions/GB.yaml +4960 -1755
  224. data/lib/countries/data/subdivisions/GD.yaml +114 -56
  225. data/lib/countries/data/subdivisions/GE.yaml +238 -96
  226. data/lib/countries/data/subdivisions/GF.yaml +11 -0
  227. data/lib/countries/data/subdivisions/GG.yaml +110 -99
  228. data/lib/countries/data/subdivisions/GH.yaml +266 -79
  229. data/lib/countries/data/subdivisions/GL.yaml +89 -0
  230. data/lib/countries/data/subdivisions/GM.yaml +124 -48
  231. data/lib/countries/data/subdivisions/GN.yaml +711 -274
  232. data/lib/countries/data/subdivisions/GP.yaml +11 -0
  233. data/lib/countries/data/subdivisions/GQ.yaml +143 -72
  234. data/lib/countries/data/subdivisions/GR.yaml +594 -165
  235. data/lib/countries/data/subdivisions/GT.yaml +351 -176
  236. data/lib/countries/data/subdivisions/GU.yaml +85 -58
  237. data/lib/countries/data/subdivisions/GW.yaml +192 -72
  238. data/lib/countries/data/subdivisions/GY.yaml +163 -80
  239. data/lib/countries/data/subdivisions/HK.yaml +86 -54
  240. data/lib/countries/data/subdivisions/HN.yaml +274 -144
  241. data/lib/countries/data/subdivisions/HR.yaml +429 -168
  242. data/lib/countries/data/subdivisions/HT.yaml +179 -72
  243. data/lib/countries/data/subdivisions/HU.yaml +791 -339
  244. data/lib/countries/data/subdivisions/IC.yaml +4 -0
  245. data/lib/countries/data/subdivisions/ID.yaml +2376 -1858
  246. data/lib/countries/data/subdivisions/IE.yaml +650 -259
  247. data/lib/countries/data/subdivisions/IL.yaml +114 -48
  248. data/lib/countries/data/subdivisions/IM.yaml +240 -216
  249. data/lib/countries/data/subdivisions/IN.yaml +1005 -298
  250. data/lib/countries/data/subdivisions/IQ.yaml +316 -139
  251. data/lib/countries/data/subdivisions/IR.yaml +596 -239
  252. data/lib/countries/data/subdivisions/IS.yaml +373 -67
  253. data/lib/countries/data/subdivisions/IT.yaml +2693 -880
  254. data/lib/countries/data/subdivisions/JE.yaml +120 -108
  255. data/lib/countries/data/subdivisions/JM.yaml +243 -112
  256. data/lib/countries/data/subdivisions/JO.yaml +193 -96
  257. data/lib/countries/data/subdivisions/JP.yaml +950 -376
  258. data/lib/countries/data/subdivisions/KE.yaml +807 -40
  259. data/lib/countries/data/subdivisions/KG.yaml +188 -64
  260. data/lib/countries/data/subdivisions/KH.yaml +437 -192
  261. data/lib/countries/data/subdivisions/KI.yaml +57 -24
  262. data/lib/countries/data/subdivisions/KM.yaml +49 -24
  263. data/lib/countries/data/subdivisions/KN.yaml +308 -112
  264. data/lib/countries/data/subdivisions/KP.yaml +365 -57
  265. data/lib/countries/data/subdivisions/KR.yaml +393 -128
  266. data/lib/countries/data/subdivisions/KW.yaml +87 -48
  267. data/lib/countries/data/subdivisions/KY.yaml +36 -24
  268. data/lib/countries/data/subdivisions/KZ.yaml +362 -135
  269. data/lib/countries/data/subdivisions/LA.yaml +300 -145
  270. data/lib/countries/data/subdivisions/LB.yaml +134 -48
  271. data/lib/countries/data/subdivisions/LC.yaml +166 -0
  272. data/lib/countries/data/subdivisions/LI.yaml +186 -88
  273. data/lib/countries/data/subdivisions/LK.yaml +544 -200
  274. data/lib/countries/data/subdivisions/LR.yaml +252 -110
  275. data/lib/countries/data/subdivisions/LS.yaml +149 -80
  276. data/lib/countries/data/subdivisions/LT.yaml +1042 -80
  277. data/lib/countries/data/subdivisions/LU.yaml +200 -17
  278. data/lib/countries/data/subdivisions/LV.yaml +2399 -223
  279. data/lib/countries/data/subdivisions/LY.yaml +339 -162
  280. data/lib/countries/data/subdivisions/MA.yaml +1443 -484
  281. data/lib/countries/data/subdivisions/MC.yaml +250 -0
  282. data/lib/countries/data/subdivisions/MD.yaml +638 -93
  283. data/lib/countries/data/subdivisions/ME.yaml +425 -168
  284. data/lib/countries/data/subdivisions/MF.yaml +9 -0
  285. data/lib/countries/data/subdivisions/MG.yaml +93 -48
  286. data/lib/countries/data/subdivisions/MH.yaml +422 -199
  287. data/lib/countries/data/subdivisions/MK.yaml +2972 -255
  288. data/lib/countries/data/subdivisions/ML.yaml +187 -71
  289. data/lib/countries/data/subdivisions/MM.yaml +287 -112
  290. data/lib/countries/data/subdivisions/MN.yaml +421 -176
  291. data/lib/countries/data/subdivisions/MO.yaml +9 -0
  292. data/lib/countries/data/subdivisions/MP.yaml +30 -12
  293. data/lib/countries/data/subdivisions/MQ.yaml +11 -0
  294. data/lib/countries/data/subdivisions/MR.yaml +245 -99
  295. data/lib/countries/data/subdivisions/MS.yaml +30 -27
  296. data/lib/countries/data/subdivisions/MT.yaml +1059 -544
  297. data/lib/countries/data/subdivisions/MU.yaml +317 -131
  298. data/lib/countries/data/subdivisions/MV.yaml +457 -163
  299. data/lib/countries/data/subdivisions/MW.yaml +537 -216
  300. data/lib/countries/data/subdivisions/MX.yaml +709 -256
  301. data/lib/countries/data/subdivisions/MY.yaml +336 -128
  302. data/lib/countries/data/subdivisions/MZ.yaml +191 -83
  303. data/lib/countries/data/subdivisions/NA.yaml +220 -107
  304. data/lib/countries/data/subdivisions/NC.yaml +26 -9
  305. data/lib/countries/data/subdivisions/NE.yaml +170 -64
  306. data/lib/countries/data/subdivisions/NG.yaml +870 -296
  307. data/lib/countries/data/subdivisions/NI.yaml +260 -136
  308. data/lib/countries/data/subdivisions/NL.yaml +381 -96
  309. data/lib/countries/data/subdivisions/NO.yaml +633 -1096
  310. data/lib/countries/data/subdivisions/NP.yaml +383 -112
  311. data/lib/countries/data/subdivisions/NR.yaml +260 -112
  312. data/lib/countries/data/subdivisions/NZ.yaml +318 -131
  313. data/lib/countries/data/subdivisions/OM.yaml +202 -52
  314. data/lib/countries/data/subdivisions/PA.yaml +203 -99
  315. data/lib/countries/data/subdivisions/PE.yaml +418 -208
  316. data/lib/countries/data/subdivisions/PF.yaml +30 -15
  317. data/lib/countries/data/subdivisions/PG.yaml +381 -155
  318. data/lib/countries/data/subdivisions/PH.yaml +1855 -662
  319. data/lib/countries/data/subdivisions/PK.yaml +185 -54
  320. data/lib/countries/data/subdivisions/PL.yaml +1176 -127
  321. data/lib/countries/data/subdivisions/PM.yaml +18 -6
  322. data/lib/countries/data/subdivisions/PR.yaml +1107 -0
  323. data/lib/countries/data/subdivisions/PS.yaml +257 -0
  324. data/lib/countries/data/subdivisions/PT.yaml +342 -160
  325. data/lib/countries/data/subdivisions/PW.yaml +269 -128
  326. data/lib/countries/data/subdivisions/PY.yaml +321 -144
  327. data/lib/countries/data/subdivisions/QA.yaml +168 -65
  328. data/lib/countries/data/subdivisions/RE.yaml +11 -0
  329. data/lib/countries/data/subdivisions/RO.yaml +729 -336
  330. data/lib/countries/data/subdivisions/RS.yaml +589 -240
  331. data/lib/countries/data/subdivisions/RU.yaml +1875 -665
  332. data/lib/countries/data/subdivisions/RW.yaml +102 -40
  333. data/lib/countries/data/subdivisions/SA.yaml +234 -104
  334. data/lib/countries/data/subdivisions/SB.yaml +169 -80
  335. data/lib/countries/data/subdivisions/SC.yaml +462 -184
  336. data/lib/countries/data/subdivisions/SD.yaml +163 -22
  337. data/lib/countries/data/subdivisions/SE.yaml +435 -237
  338. data/lib/countries/data/subdivisions/SG.yaml +111 -19
  339. data/lib/countries/data/subdivisions/SH.yaml +67 -14
  340. data/lib/countries/data/subdivisions/SI.yaml +3570 -1549
  341. data/lib/countries/data/subdivisions/SJ.yaml +20 -18
  342. data/lib/countries/data/subdivisions/SK.yaml +129 -64
  343. data/lib/countries/data/subdivisions/SL.yaml +80 -31
  344. data/lib/countries/data/subdivisions/SM.yaml +159 -72
  345. data/lib/countries/data/subdivisions/SN.yaml +233 -88
  346. data/lib/countries/data/subdivisions/SO.yaml +311 -144
  347. data/lib/countries/data/subdivisions/SR.yaml +158 -80
  348. data/lib/countries/data/subdivisions/SS.yaml +196 -0
  349. data/lib/countries/data/subdivisions/ST.yaml +49 -16
  350. data/lib/countries/data/subdivisions/SV.yaml +231 -112
  351. data/lib/countries/data/subdivisions/SX.yaml +9 -0
  352. data/lib/countries/data/subdivisions/SY.yaml +220 -112
  353. data/lib/countries/data/subdivisions/SZ.yaml +65 -32
  354. data/lib/countries/data/subdivisions/TA.yaml +4 -0
  355. data/lib/countries/data/subdivisions/TD.yaml +409 -139
  356. data/lib/countries/data/subdivisions/TF.yaml +38 -20
  357. data/lib/countries/data/subdivisions/TG.yaml +75 -40
  358. data/lib/countries/data/subdivisions/TH.yaml +1451 -616
  359. data/lib/countries/data/subdivisions/TJ.yaml +100 -24
  360. data/lib/countries/data/subdivisions/TK.yaml +30 -27
  361. data/lib/countries/data/subdivisions/TL.yaml +209 -104
  362. data/lib/countries/data/subdivisions/TM.yaml +116 -40
  363. data/lib/countries/data/subdivisions/TN.yaml +412 -192
  364. data/lib/countries/data/subdivisions/TO.yaml +75 -40
  365. data/lib/countries/data/subdivisions/TR.yaml +1817 -648
  366. data/lib/countries/data/subdivisions/TT.yaml +296 -113
  367. data/lib/countries/data/subdivisions/TV.yaml +133 -59
  368. data/lib/countries/data/subdivisions/TW.yaml +481 -164
  369. data/lib/countries/data/subdivisions/TZ.yaml +661 -208
  370. data/lib/countries/data/subdivisions/UA.yaml +505 -216
  371. data/lib/countries/data/subdivisions/UG.yaml +2262 -640
  372. data/lib/countries/data/subdivisions/UM.yaml +216 -71
  373. data/lib/countries/data/subdivisions/US.yaml +1658 -464
  374. data/lib/countries/data/subdivisions/UY.yaml +367 -152
  375. data/lib/countries/data/subdivisions/UZ.yaml +289 -113
  376. data/lib/countries/data/subdivisions/VC.yaml +101 -48
  377. data/lib/countries/data/subdivisions/VE.yaml +456 -200
  378. data/lib/countries/data/subdivisions/VI.yaml +26 -9
  379. data/lib/countries/data/subdivisions/VN.yaml +3664 -2996
  380. data/lib/countries/data/subdivisions/VU.yaml +98 -48
  381. data/lib/countries/data/subdivisions/WF.yaml +73 -0
  382. data/lib/countries/data/subdivisions/WS.yaml +200 -88
  383. data/lib/countries/data/subdivisions/YE.yaml +375 -152
  384. data/lib/countries/data/subdivisions/YT.yaml +76 -51
  385. data/lib/countries/data/subdivisions/ZA.yaml +238 -72
  386. data/lib/countries/data/subdivisions/ZM.yaml +157 -72
  387. data/lib/countries/data/subdivisions/ZW.yaml +152 -73
  388. data/lib/countries/data/translation_corrections.yaml +6 -1
  389. data/lib/countries/data.rb +48 -22
  390. data/lib/countries/sources/cldr/downloader.rb +12 -13
  391. data/lib/countries/tasks/geocoding.rake +9 -16
  392. data/lib/countries/translations.rb +1 -1
  393. data/lib/countries/version.rb +1 -1
  394. data/lib/countries.rb +0 -1
  395. data/spec/country_spec.rb +100 -0
  396. data/spec/data_spec.rb +4 -4
  397. data/spec/thread_safety_spec.rb +46 -0
  398. metadata +31 -23
  399. data/.travis.yml +0 -15
@@ -5,7 +5,7 @@ module ISO3166
5
5
  @@cache_dir = [File.dirname(__FILE__), 'cache']
6
6
  @@cache = {}
7
7
  @@registered_data = {}
8
- @@semaphore = Mutex.new
8
+ @@mutex = Mutex.new
9
9
 
10
10
  def initialize(alpha2)
11
11
  @alpha2 = alpha2.to_s.upcase
@@ -26,10 +26,9 @@ module ISO3166
26
26
 
27
27
  def register(data)
28
28
  alpha2 = data[:alpha2].upcase
29
- @@registered_data[alpha2] = \
30
- data.each_with_object({}) { |(k, v), a| a[k.to_s] = v }
29
+ @@registered_data[alpha2] = deep_stringify_keys(data)
31
30
  @@registered_data[alpha2]['translations'] = \
32
- Translations.new.merge(data[:translations] || {})
31
+ Translations.new.merge(data['translations'] || {})
33
32
  @@cache = cache.merge(@@registered_data)
34
33
  end
35
34
 
@@ -40,9 +39,7 @@ module ISO3166
40
39
  end
41
40
 
42
41
  def cache
43
- @@semaphore.synchronize do
44
- update_cache
45
- end
42
+ update_cache
46
43
  end
47
44
 
48
45
  def reset
@@ -64,10 +61,12 @@ module ISO3166
64
61
 
65
62
  def load_data!
66
63
  return @@cache unless load_required?
67
- @@cache = load_cache %w(countries.json)
68
- @@_country_codes = @@cache.keys
69
- @@cache = @@cache.merge(@@registered_data)
70
- @@cache
64
+ synchronized do
65
+ @@cache = load_cache %w(countries.json)
66
+ @@_country_codes = @@cache.keys
67
+ @@cache = @@cache.merge(@@registered_data)
68
+ @@cache
69
+ end
71
70
  end
72
71
 
73
72
  def sync_translations!
@@ -84,8 +83,23 @@ module ISO3166
84
83
 
85
84
  private
86
85
 
86
+ def synchronized(&block)
87
+ if use_mutex?
88
+ @@mutex.synchronize(&block)
89
+ else
90
+ block.call
91
+ end
92
+ end
93
+
94
+ def use_mutex?
95
+ # Stubbed in testing
96
+ true
97
+ end
98
+
87
99
  def load_required?
88
- @@cache.empty?
100
+ synchronized do
101
+ @@cache.empty?
102
+ end
89
103
  end
90
104
 
91
105
  def loaded_codes
@@ -118,21 +132,25 @@ module ISO3166
118
132
  end
119
133
 
120
134
  def load_translations(locale)
121
- locale_names = load_cache(['locales', "#{locale}.json"])
122
- internal_codes.each do |alpha2|
123
- @@cache[alpha2]['translations'] ||= Translations.new
124
- @@cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
125
- @@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
135
+ synchronized do
136
+ locale_names = load_cache(['locales', "#{locale}.json"])
137
+ internal_codes.each do |alpha2|
138
+ @@cache[alpha2]['translations'] ||= Translations.new
139
+ @@cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
140
+ @@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
141
+ end
142
+ ISO3166.configuration.loaded_locales << locale
126
143
  end
127
- ISO3166.configuration.loaded_locales << locale
128
144
  end
129
145
 
130
146
  def unload_translations(locale)
131
- internal_codes.each do |alpha2|
132
- @@cache[alpha2]['translations'].delete(locale)
133
- @@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
147
+ synchronized do
148
+ internal_codes.each do |alpha2|
149
+ @@cache[alpha2]['translations'].delete(locale)
150
+ @@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
151
+ end
152
+ ISO3166.configuration.loaded_locales.delete(locale)
134
153
  end
135
- ISO3166.configuration.loaded_locales.delete(locale)
136
154
  end
137
155
 
138
156
  def load_cache(file_array)
@@ -143,6 +161,14 @@ module ISO3166
143
161
  def datafile_path(file_array)
144
162
  File.join([@@cache_dir] + file_array)
145
163
  end
164
+
165
+ def deep_stringify_keys(data)
166
+ data.transform_keys!(&:to_s)
167
+ data.transform_values! do |v|
168
+ v.is_a?(Hash) ? deep_stringify_keys(v) : v
169
+ end
170
+ return data
171
+ end
146
172
  end
147
173
  end
148
174
  end
@@ -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'] ||= {}
@@ -6,7 +6,7 @@ module ISO3166
6
6
  # to `pt` to prevent from showing nil values
7
7
  class Translations < Hash
8
8
  def [](locale)
9
- super(locale) || super(locale.sub(/-.*/, ''))
9
+ super(locale) || super(locale.to_s.sub(/-.*/, ''))
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module Countries
2
- VERSION = '3.1.0'.freeze
2
+ VERSION = '4.1.1'.freeze
3
3
  end
data/lib/countries.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'unicode_utils/downcase'
2
1
  require 'sixarm_ruby_unaccent'
3
2
 
4
3
  require 'countries/version'
data/spec/country_spec.rb CHANGED
@@ -248,6 +248,10 @@ describe ISO3166::Country do
248
248
  expect(virginia.name).to eq('Virginia')
249
249
  end
250
250
 
251
+ it 'should have a code' do
252
+ expect(virginia.code).to eq('VA')
253
+ end
254
+
251
255
  it 'should behave like a hash' do
252
256
  expect(virginia['name']).to eq('Virginia')
253
257
  end
@@ -345,6 +349,26 @@ describe ISO3166::Country do
345
349
  expect(countries.first).to eq('Aruba')
346
350
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
347
351
  end
352
+
353
+ context 'with custom countries' do
354
+ before do
355
+ ISO3166::Data.register(
356
+ alpha2: 'XX',
357
+ name: 'Custom Country',
358
+ translations: { 'en' => 'Custom Country' }
359
+ )
360
+ end
361
+
362
+ it 'should include custom registered countries' do
363
+ custom_country = ISO3166::Country.find_by_alpha2('XX')[1]
364
+ countries = ISO3166::Country.all_translated
365
+ expect(countries).to include(custom_country['name'])
366
+ end
367
+
368
+ after do
369
+ ISO3166::Data.unregister('XX')
370
+ end
371
+ end
348
372
  end
349
373
 
350
374
  describe 'all_names_with_codes' do
@@ -780,6 +804,45 @@ describe ISO3166::Country do
780
804
  end
781
805
  end
782
806
 
807
+ describe 'finder methods respond_to_missing?' do
808
+ subject { ISO3166::Country.respond_to?(method_name) }
809
+ describe 'find_all_by' do
810
+ context 'find by a valid Country attribute' do
811
+ let(:method_name) { :find_all_by_currency }
812
+ it { is_expected.to be true }
813
+ end
814
+
815
+ context 'find by an invalid attribute' do
816
+ let(:method_name) { :find_all_by_invalid }
817
+ it { is_expected.to be false }
818
+ end
819
+ end
820
+
821
+ describe 'hash finder methods' do
822
+ context 'find by a valid Country attribute' do
823
+ let(:method_name) { :find_by_name }
824
+ it { is_expected.to be true }
825
+ end
826
+
827
+ context 'find by an invalid attribute' do
828
+ let(:method_name) { :find_by_invalid }
829
+ it { is_expected.to be false }
830
+ end
831
+ end
832
+
833
+ describe 'country finder methods' do
834
+ context 'find country by a valid Country attribute' do
835
+ let(:method_name) { :find_country_by_alpha3 }
836
+ it { is_expected.to be true }
837
+ end
838
+
839
+ context 'find by an invalid attribute' do
840
+ let(:method_name) { :find_country_by_invalid }
841
+ it { is_expected.to be false }
842
+ end
843
+ end
844
+ end
845
+
783
846
  describe 'names in Data' do
784
847
  it 'should be unique (to allow .find_by_name work properly)' do
785
848
  names = ISO3166::Data.cache.map do |_k, v|
@@ -838,6 +901,23 @@ describe ISO3166::Country do
838
901
  end
839
902
  end
840
903
 
904
+ describe 'in_esm?' do
905
+ let(:netherlands) { ISO3166::Country.search('NL') }
906
+ let(:switzerland) { ISO3166::Country.search('CH') }
907
+
908
+ it 'should return false for countries without esm_member or eea_member flag' do
909
+ expect(country.in_esm?).to be_falsey
910
+ end
911
+
912
+ it 'should return true for countries with eea_member flag set to true' do
913
+ expect(netherlands.in_esm?).to be_truthy
914
+ end
915
+
916
+ it 'should return true for countries with esm_member flag set to true' do
917
+ expect(switzerland.in_esm?).to be_truthy
918
+ end
919
+ end
920
+
841
921
  describe 'gec' do
842
922
  it 'should return the country\'s GEC code' do
843
923
  expect(ISO3166::Country.new('NA').gec).to eql 'WA'
@@ -931,4 +1011,24 @@ describe ISO3166::Country do
931
1011
  expect(countries.all? { |country| country.un_locode.length == 2 }).to be
932
1012
  end
933
1013
  end
1014
+
1015
+ describe '.pluck' do
1016
+ let(:args) { [] }
1017
+
1018
+ subject { ISO3166::Country.pluck(*args) }
1019
+
1020
+ it "returns empty arrays" do
1021
+ expect(subject.first).to be_empty
1022
+ expect(subject.last).to be_empty
1023
+ end
1024
+
1025
+ context "when asking for alpha2, alpha3 and name" do
1026
+ let(:args) { [:alpha2, :alpha3, :name] }
1027
+
1028
+ it "returns the correct values" do
1029
+ expect(subject.first).to eq(["AD", "AND", "Andorra"])
1030
+ expect(subject.last).to eq(["ZW", "ZWE", "Zimbabwe"])
1031
+ end
1032
+ end
1033
+ end
934
1034
  end
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', code: 'CHA'}),
120
+ 'CYI' => ISO3166::Subdivision.new({name: 'New Municipality', code: 'CYI'}))
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', code: 'LOL1'}),
147
+ 'LOL2' => ISO3166::Subdivision.new({name: 'Happy sub2', code: 'LOL2'}))
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.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Robinson
8
8
  - Joe Corcoran
9
9
  - Russell Osborne
10
+ - Pedro Moreira
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
- date: 2021-03-24 00:00:00.000000000 Z
14
+ date: 2021-12-06 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.1
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.1
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,11 +758,16 @@ 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: {}
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
764
771
  post_install_message:
765
772
  rdoc_options: []
766
773
  require_paths:
@@ -769,14 +776,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
769
776
  requirements:
770
777
  - - ">="
771
778
  - !ruby/object:Gem::Version
772
- version: '0'
779
+ version: '2.5'
773
780
  required_rubygems_version: !ruby/object:Gem::Requirement
774
781
  requirements:
775
782
  - - ">="
776
783
  - !ruby/object:Gem::Version
777
784
  version: '0'
778
785
  requirements: []
779
- rubygems_version: 3.1.4
786
+ rubygems_version: 3.2.32
780
787
  signing_key:
781
788
  specification_version: 4
782
789
  summary: Gives you a country object full of all sorts of useful information.
@@ -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