countries 4.1.2 → 4.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (418) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +2 -0
  3. data/CHANGELOG.md +80 -2
  4. data/README.markdown +41 -31
  5. data/Rakefile +23 -31
  6. data/countries.gemspec +4 -4
  7. data/lib/countries/cache/countries.json +1 -1
  8. data/lib/countries/cache/locales/nb.json +1 -1
  9. data/lib/countries/cache/locales/nn.json +1 -1
  10. data/lib/countries/configuration.rb +13 -0
  11. data/lib/countries/country/class_methods.rb +19 -6
  12. data/lib/countries/country/currency_methods.rb +4 -1
  13. data/lib/countries/country/emoji.rb +3 -0
  14. data/lib/countries/country.rb +147 -7
  15. data/lib/countries/data/countries/AD.yaml +28 -29
  16. data/lib/countries/data/countries/AE.yaml +32 -33
  17. data/lib/countries/data/countries/AF.yaml +32 -33
  18. data/lib/countries/data/countries/AG.yaml +28 -29
  19. data/lib/countries/data/countries/AI.yaml +27 -28
  20. data/lib/countries/data/countries/AL.yaml +28 -29
  21. data/lib/countries/data/countries/AM.yaml +30 -31
  22. data/lib/countries/data/countries/AO.yaml +25 -26
  23. data/lib/countries/data/countries/AQ.yaml +24 -25
  24. data/lib/countries/data/countries/AR.yaml +30 -31
  25. data/lib/countries/data/countries/AS.yaml +31 -32
  26. data/lib/countries/data/countries/AT.yaml +36 -37
  27. data/lib/countries/data/countries/AU.yaml +33 -34
  28. data/lib/countries/data/countries/AW.yaml +25 -26
  29. data/lib/countries/data/countries/AX.yaml +27 -28
  30. data/lib/countries/data/countries/AZ.yaml +30 -31
  31. data/lib/countries/data/countries/BA.yaml +32 -33
  32. data/lib/countries/data/countries/BB.yaml +28 -29
  33. data/lib/countries/data/countries/BD.yaml +27 -28
  34. data/lib/countries/data/countries/BE.yaml +41 -42
  35. data/lib/countries/data/countries/BF.yaml +27 -28
  36. data/lib/countries/data/countries/BG.yaml +36 -37
  37. data/lib/countries/data/countries/BH.yaml +28 -29
  38. data/lib/countries/data/countries/BI.yaml +27 -28
  39. data/lib/countries/data/countries/BJ.yaml +26 -27
  40. data/lib/countries/data/countries/BL.yaml +25 -26
  41. data/lib/countries/data/countries/BM.yaml +29 -30
  42. data/lib/countries/data/countries/BN.yaml +26 -27
  43. data/lib/countries/data/countries/BO.yaml +31 -32
  44. data/lib/countries/data/countries/BQ.yaml +28 -29
  45. data/lib/countries/data/countries/BR.yaml +35 -36
  46. data/lib/countries/data/countries/BS.yaml +27 -28
  47. data/lib/countries/data/countries/BT.yaml +28 -29
  48. data/lib/countries/data/countries/BV.yaml +23 -24
  49. data/lib/countries/data/countries/BW.yaml +27 -28
  50. data/lib/countries/data/countries/BY.yaml +30 -31
  51. data/lib/countries/data/countries/BZ.yaml +28 -29
  52. data/lib/countries/data/countries/CA.yaml +30 -31
  53. data/lib/countries/data/countries/CC.yaml +28 -29
  54. data/lib/countries/data/countries/CD.yaml +35 -36
  55. data/lib/countries/data/countries/CF.yaml +29 -30
  56. data/lib/countries/data/countries/CG.yaml +29 -30
  57. data/lib/countries/data/countries/CH.yaml +40 -41
  58. data/lib/countries/data/countries/CI.yaml +27 -28
  59. data/lib/countries/data/countries/CK.yaml +27 -28
  60. data/lib/countries/data/countries/CL.yaml +32 -33
  61. data/lib/countries/data/countries/CM.yaml +29 -30
  62. data/lib/countries/data/countries/CN.yaml +28 -29
  63. data/lib/countries/data/countries/CO.yaml +28 -29
  64. data/lib/countries/data/countries/CR.yaml +26 -27
  65. data/lib/countries/data/countries/CU.yaml +27 -28
  66. data/lib/countries/data/countries/CV.yaml +28 -29
  67. data/lib/countries/data/countries/CW.yaml +25 -26
  68. data/lib/countries/data/countries/CX.yaml +30 -31
  69. data/lib/countries/data/countries/CY.yaml +40 -41
  70. data/lib/countries/data/countries/CZ.yaml +38 -39
  71. data/lib/countries/data/countries/DE.yaml +36 -37
  72. data/lib/countries/data/countries/DJ.yaml +29 -30
  73. data/lib/countries/data/countries/DK.yaml +35 -36
  74. data/lib/countries/data/countries/DM.yaml +26 -27
  75. data/lib/countries/data/countries/DO.yaml +28 -29
  76. data/lib/countries/data/countries/DZ.yaml +28 -29
  77. data/lib/countries/data/countries/EC.yaml +28 -29
  78. data/lib/countries/data/countries/EE.yaml +35 -36
  79. data/lib/countries/data/countries/EG.yaml +28 -29
  80. data/lib/countries/data/countries/EH.yaml +30 -31
  81. data/lib/countries/data/countries/ER.yaml +31 -32
  82. data/lib/countries/data/countries/ES.yaml +36 -37
  83. data/lib/countries/data/countries/ET.yaml +28 -29
  84. data/lib/countries/data/countries/FI.yaml +38 -39
  85. data/lib/countries/data/countries/FJ.yaml +33 -34
  86. data/lib/countries/data/countries/FK.yaml +29 -30
  87. data/lib/countries/data/countries/FM.yaml +28 -29
  88. data/lib/countries/data/countries/FO.yaml +28 -29
  89. data/lib/countries/data/countries/FR.yaml +37 -38
  90. data/lib/countries/data/countries/GA.yaml +27 -28
  91. data/lib/countries/data/countries/GB.yaml +39 -38
  92. data/lib/countries/data/countries/GD.yaml +26 -27
  93. data/lib/countries/data/countries/GE.yaml +28 -29
  94. data/lib/countries/data/countries/GF.yaml +29 -30
  95. data/lib/countries/data/countries/GG.yaml +30 -31
  96. data/lib/countries/data/countries/GH.yaml +27 -28
  97. data/lib/countries/data/countries/GI.yaml +26 -27
  98. data/lib/countries/data/countries/GL.yaml +29 -30
  99. data/lib/countries/data/countries/GM.yaml +25 -26
  100. data/lib/countries/data/countries/GN.yaml +30 -31
  101. data/lib/countries/data/countries/GP.yaml +27 -28
  102. data/lib/countries/data/countries/GQ.yaml +29 -30
  103. data/lib/countries/data/countries/GR.yaml +37 -38
  104. data/lib/countries/data/countries/GS.yaml +27 -28
  105. data/lib/countries/data/countries/GT.yaml +26 -27
  106. data/lib/countries/data/countries/GU.yaml +31 -32
  107. data/lib/countries/data/countries/GW.yaml +28 -29
  108. data/lib/countries/data/countries/GY.yaml +26 -27
  109. data/lib/countries/data/countries/HK.yaml +28 -29
  110. data/lib/countries/data/countries/HM.yaml +27 -28
  111. data/lib/countries/data/countries/HN.yaml +27 -28
  112. data/lib/countries/data/countries/HR.yaml +37 -38
  113. data/lib/countries/data/countries/HT.yaml +29 -30
  114. data/lib/countries/data/countries/HU.yaml +37 -38
  115. data/lib/countries/data/countries/ID.yaml +28 -29
  116. data/lib/countries/data/countries/IE.yaml +39 -40
  117. data/lib/countries/data/countries/IL.yaml +35 -31
  118. data/lib/countries/data/countries/IM.yaml +29 -30
  119. data/lib/countries/data/countries/IN.yaml +30 -31
  120. data/lib/countries/data/countries/IO.yaml +26 -27
  121. data/lib/countries/data/countries/IQ.yaml +28 -29
  122. data/lib/countries/data/countries/IR.yaml +28 -29
  123. data/lib/countries/data/countries/IS.yaml +35 -36
  124. data/lib/countries/data/countries/IT.yaml +36 -37
  125. data/lib/countries/data/countries/JE.yaml +26 -27
  126. data/lib/countries/data/countries/JM.yaml +28 -29
  127. data/lib/countries/data/countries/JO.yaml +28 -29
  128. data/lib/countries/data/countries/JP.yaml +28 -29
  129. data/lib/countries/data/countries/KE.yaml +29 -30
  130. data/lib/countries/data/countries/KG.yaml +30 -31
  131. data/lib/countries/data/countries/KH.yaml +28 -29
  132. data/lib/countries/data/countries/KI.yaml +25 -26
  133. data/lib/countries/data/countries/KM.yaml +29 -30
  134. data/lib/countries/data/countries/KN.yaml +29 -29
  135. data/lib/countries/data/countries/KP.yaml +27 -28
  136. data/lib/countries/data/countries/KR.yaml +28 -29
  137. data/lib/countries/data/countries/KW.yaml +28 -29
  138. data/lib/countries/data/countries/KY.yaml +29 -30
  139. data/lib/countries/data/countries/KZ.yaml +30 -31
  140. data/lib/countries/data/countries/LA.yaml +27 -28
  141. data/lib/countries/data/countries/LB.yaml +30 -31
  142. data/lib/countries/data/countries/LC.yaml +28 -29
  143. data/lib/countries/data/countries/LI.yaml +27 -28
  144. data/lib/countries/data/countries/LK.yaml +28 -29
  145. data/lib/countries/data/countries/LR.yaml +28 -29
  146. data/lib/countries/data/countries/LS.yaml +28 -29
  147. data/lib/countries/data/countries/LT.yaml +37 -38
  148. data/lib/countries/data/countries/LU.yaml +39 -40
  149. data/lib/countries/data/countries/LV.yaml +36 -37
  150. data/lib/countries/data/countries/LY.yaml +27 -28
  151. data/lib/countries/data/countries/MA.yaml +28 -29
  152. data/lib/countries/data/countries/MC.yaml +28 -29
  153. data/lib/countries/data/countries/MD.yaml +28 -29
  154. data/lib/countries/data/countries/ME.yaml +33 -34
  155. data/lib/countries/data/countries/MF.yaml +29 -30
  156. data/lib/countries/data/countries/MG.yaml +30 -31
  157. data/lib/countries/data/countries/MH.yaml +30 -31
  158. data/lib/countries/data/countries/MK.yaml +28 -29
  159. data/lib/countries/data/countries/ML.yaml +25 -26
  160. data/lib/countries/data/countries/MM.yaml +27 -28
  161. data/lib/countries/data/countries/MN.yaml +28 -29
  162. data/lib/countries/data/countries/MO.yaml +28 -29
  163. data/lib/countries/data/countries/MP.yaml +31 -32
  164. data/lib/countries/data/countries/MQ.yaml +27 -28
  165. data/lib/countries/data/countries/MR.yaml +29 -30
  166. data/lib/countries/data/countries/MS.yaml +26 -27
  167. data/lib/countries/data/countries/MT.yaml +36 -37
  168. data/lib/countries/data/countries/MU.yaml +28 -29
  169. data/lib/countries/data/countries/MV.yaml +28 -29
  170. data/lib/countries/data/countries/MW.yaml +27 -28
  171. data/lib/countries/data/countries/MX.yaml +33 -34
  172. data/lib/countries/data/countries/MY.yaml +30 -31
  173. data/lib/countries/data/countries/MZ.yaml +28 -29
  174. data/lib/countries/data/countries/NA.yaml +30 -31
  175. data/lib/countries/data/countries/NC.yaml +29 -30
  176. data/lib/countries/data/countries/NE.yaml +27 -28
  177. data/lib/countries/data/countries/NF.yaml +29 -30
  178. data/lib/countries/data/countries/NG.yaml +33 -34
  179. data/lib/countries/data/countries/NI.yaml +26 -27
  180. data/lib/countries/data/countries/NL.yaml +36 -37
  181. data/lib/countries/data/countries/NO.yaml +36 -37
  182. data/lib/countries/data/countries/NP.yaml +32 -33
  183. data/lib/countries/data/countries/NR.yaml +27 -28
  184. data/lib/countries/data/countries/NU.yaml +25 -26
  185. data/lib/countries/data/countries/NZ.yaml +34 -35
  186. data/lib/countries/data/countries/OM.yaml +28 -29
  187. data/lib/countries/data/countries/PA.yaml +26 -27
  188. data/lib/countries/data/countries/PE.yaml +28 -29
  189. data/lib/countries/data/countries/PF.yaml +29 -30
  190. data/lib/countries/data/countries/PG.yaml +28 -29
  191. data/lib/countries/data/countries/PH.yaml +35 -36
  192. data/lib/countries/data/countries/PK.yaml +30 -31
  193. data/lib/countries/data/countries/PL.yaml +36 -37
  194. data/lib/countries/data/countries/PM.yaml +29 -30
  195. data/lib/countries/data/countries/PN.yaml +27 -28
  196. data/lib/countries/data/countries/PR.yaml +28 -29
  197. data/lib/countries/data/countries/PS.yaml +31 -32
  198. data/lib/countries/data/countries/PT.yaml +33 -34
  199. data/lib/countries/data/countries/PW.yaml +26 -27
  200. data/lib/countries/data/countries/PY.yaml +28 -29
  201. data/lib/countries/data/countries/QA.yaml +27 -28
  202. data/lib/countries/data/countries/RE.yaml +28 -29
  203. data/lib/countries/data/countries/RO.yaml +37 -38
  204. data/lib/countries/data/countries/RS.yaml +28 -29
  205. data/lib/countries/data/countries/RU.yaml +28 -29
  206. data/lib/countries/data/countries/RW.yaml +31 -32
  207. data/lib/countries/data/countries/SA.yaml +33 -29
  208. data/lib/countries/data/countries/SB.yaml +27 -28
  209. data/lib/countries/data/countries/SC.yaml +28 -29
  210. data/lib/countries/data/countries/SD.yaml +30 -31
  211. data/lib/countries/data/countries/SE.yaml +37 -38
  212. data/lib/countries/data/countries/SG.yaml +32 -33
  213. data/lib/countries/data/countries/SH.yaml +29 -30
  214. data/lib/countries/data/countries/SI.yaml +36 -37
  215. data/lib/countries/data/countries/SJ.yaml +29 -30
  216. data/lib/countries/data/countries/SK.yaml +36 -37
  217. data/lib/countries/data/countries/SL.yaml +25 -26
  218. data/lib/countries/data/countries/SM.yaml +28 -29
  219. data/lib/countries/data/countries/SN.yaml +27 -28
  220. data/lib/countries/data/countries/SO.yaml +30 -31
  221. data/lib/countries/data/countries/SR.yaml +26 -27
  222. data/lib/countries/data/countries/SS.yaml +29 -30
  223. data/lib/countries/data/countries/ST.yaml +27 -28
  224. data/lib/countries/data/countries/SV.yaml +27 -28
  225. data/lib/countries/data/countries/SX.yaml +28 -29
  226. data/lib/countries/data/countries/SY.yaml +27 -28
  227. data/lib/countries/data/countries/SZ.yaml +30 -31
  228. data/lib/countries/data/countries/TC.yaml +30 -31
  229. data/lib/countries/data/countries/TD.yaml +29 -30
  230. data/lib/countries/data/countries/TF.yaml +28 -29
  231. data/lib/countries/data/countries/TG.yaml +25 -26
  232. data/lib/countries/data/countries/TH.yaml +34 -35
  233. data/lib/countries/data/countries/TJ.yaml +30 -31
  234. data/lib/countries/data/countries/TK.yaml +27 -28
  235. data/lib/countries/data/countries/TL.yaml +27 -28
  236. data/lib/countries/data/countries/TM.yaml +30 -31
  237. data/lib/countries/data/countries/TN.yaml +30 -31
  238. data/lib/countries/data/countries/TO.yaml +29 -30
  239. data/lib/countries/data/countries/TR.yaml +28 -29
  240. data/lib/countries/data/countries/TT.yaml +28 -29
  241. data/lib/countries/data/countries/TV.yaml +25 -26
  242. data/lib/countries/data/countries/TW.yaml +28 -29
  243. data/lib/countries/data/countries/TZ.yaml +30 -31
  244. data/lib/countries/data/countries/UA.yaml +34 -35
  245. data/lib/countries/data/countries/UG.yaml +28 -29
  246. data/lib/countries/data/countries/UM.yaml +29 -30
  247. data/lib/countries/data/countries/US.yaml +29 -29
  248. data/lib/countries/data/countries/UY.yaml +27 -28
  249. data/lib/countries/data/countries/UZ.yaml +30 -31
  250. data/lib/countries/data/countries/VA.yaml +31 -32
  251. data/lib/countries/data/countries/VC.yaml +29 -30
  252. data/lib/countries/data/countries/VE.yaml +26 -27
  253. data/lib/countries/data/countries/VG.yaml +29 -30
  254. data/lib/countries/data/countries/VI.yaml +28 -29
  255. data/lib/countries/data/countries/VN.yaml +28 -29
  256. data/lib/countries/data/countries/VU.yaml +31 -32
  257. data/lib/countries/data/countries/WF.yaml +29 -30
  258. data/lib/countries/data/countries/WS.yaml +28 -29
  259. data/lib/countries/data/countries/YE.yaml +27 -28
  260. data/lib/countries/data/countries/YT.yaml +26 -27
  261. data/lib/countries/data/countries/ZA.yaml +39 -40
  262. data/lib/countries/data/countries/ZM.yaml +28 -29
  263. data/lib/countries/data/countries/ZW.yaml +31 -32
  264. data/lib/countries/data/subdivisions/AD.yaml +21 -21
  265. data/lib/countries/data/subdivisions/AF.yaml +2 -2
  266. data/lib/countries/data/subdivisions/AG.yaml +1 -1
  267. data/lib/countries/data/subdivisions/AI.yaml +98 -98
  268. data/lib/countries/data/subdivisions/AL.yaml +82 -626
  269. data/lib/countries/data/subdivisions/AZ.yaml +5 -5
  270. data/lib/countries/data/subdivisions/BA.yaml +11 -11
  271. data/lib/countries/data/subdivisions/BD.yaml +8 -8
  272. data/lib/countries/data/subdivisions/BE.yaml +2 -2
  273. data/lib/countries/data/subdivisions/BF.yaml +13 -13
  274. data/lib/countries/data/subdivisions/BI.yaml +3 -3
  275. data/lib/countries/data/subdivisions/BM.yaml +77 -77
  276. data/lib/countries/data/subdivisions/BS.yaml +22 -22
  277. data/lib/countries/data/subdivisions/BW.yaml +7 -7
  278. data/lib/countries/data/subdivisions/BY.yaml +1 -1
  279. data/lib/countries/data/subdivisions/CD.yaml +19 -19
  280. data/lib/countries/data/subdivisions/CG.yaml +1 -1
  281. data/lib/countries/data/subdivisions/CI.yaml +14 -14
  282. data/lib/countries/data/subdivisions/CK.yaml +77 -77
  283. data/lib/countries/data/subdivisions/CN.yaml +0 -107
  284. data/lib/countries/data/subdivisions/CV.yaml +9 -9
  285. data/lib/countries/data/subdivisions/CZ.yaml +115 -50
  286. data/lib/countries/data/subdivisions/DK.yaml +1 -0
  287. data/lib/countries/data/subdivisions/DO.yaml +11 -11
  288. data/lib/countries/data/subdivisions/EE.yaml +78 -2
  289. data/lib/countries/data/subdivisions/EH.yaml +12 -12
  290. data/lib/countries/data/subdivisions/ES.yaml +17 -17
  291. data/lib/countries/data/subdivisions/FI.yaml +16 -16
  292. data/lib/countries/data/subdivisions/FJ.yaml +14 -14
  293. data/lib/countries/data/subdivisions/GB.yaml +21 -20
  294. data/lib/countries/data/subdivisions/GH.yaml +7 -7
  295. data/lib/countries/data/subdivisions/GL.yaml +6 -6
  296. data/lib/countries/data/subdivisions/GN.yaml +7 -7
  297. data/lib/countries/data/subdivisions/GQ.yaml +1 -0
  298. data/lib/countries/data/subdivisions/GR.yaml +1 -1
  299. data/lib/countries/data/subdivisions/GW.yaml +3 -3
  300. data/lib/countries/data/subdivisions/HT.yaml +1 -1
  301. data/lib/countries/data/subdivisions/ID.yaml +41 -41
  302. data/lib/countries/data/subdivisions/IE.yaml +1 -2
  303. data/lib/countries/data/subdivisions/IN.yaml +4 -3
  304. data/lib/countries/data/subdivisions/IQ.yaml +1 -1
  305. data/lib/countries/data/subdivisions/IR.yaml +2 -1
  306. data/lib/countries/data/subdivisions/IS.yaml +72 -0
  307. data/lib/countries/data/subdivisions/IT.yaml +7 -8
  308. data/lib/countries/data/subdivisions/KE.yaml +391 -503
  309. data/lib/countries/data/subdivisions/KG.yaml +1 -1
  310. data/lib/countries/data/subdivisions/KH.yaml +1 -1
  311. data/lib/countries/data/subdivisions/KN.yaml +2 -2
  312. data/lib/countries/data/subdivisions/KP.yaml +12 -12
  313. data/lib/countries/data/subdivisions/KR.yaml +1 -1
  314. data/lib/countries/data/subdivisions/KZ.yaml +1 -1
  315. data/lib/countries/data/subdivisions/LA.yaml +1 -1
  316. data/lib/countries/data/subdivisions/LB.yaml +2 -2
  317. data/lib/countries/data/subdivisions/LC.yaml +10 -10
  318. data/lib/countries/data/subdivisions/LK.yaml +9 -9
  319. data/lib/countries/data/subdivisions/LR.yaml +2 -2
  320. data/lib/countries/data/subdivisions/LT.yaml +60 -60
  321. data/lib/countries/data/subdivisions/LU.yaml +1 -1
  322. data/lib/countries/data/subdivisions/LV.yaml +6 -0
  323. data/lib/countries/data/subdivisions/MA.yaml +35 -35
  324. data/lib/countries/data/subdivisions/MC.yaml +17 -17
  325. data/lib/countries/data/subdivisions/MD.yaml +740 -740
  326. data/lib/countries/data/subdivisions/ME.yaml +3 -3
  327. data/lib/countries/data/subdivisions/MH.yaml +2 -2
  328. data/lib/countries/data/subdivisions/MK.yaml +3501 -5809
  329. data/lib/countries/data/subdivisions/ML.yaml +2 -2
  330. data/lib/countries/data/subdivisions/MM.yaml +1 -1
  331. data/lib/countries/data/subdivisions/MR.yaml +3 -3
  332. data/lib/countries/data/subdivisions/MV.yaml +8 -8
  333. data/lib/countries/data/subdivisions/MW.yaml +4 -4
  334. data/lib/countries/data/subdivisions/MX.yaml +1 -1
  335. data/lib/countries/data/subdivisions/NL.yaml +6 -6
  336. data/lib/countries/data/subdivisions/NO.yaml +1 -0
  337. data/lib/countries/data/subdivisions/NP.yaml +12 -12
  338. data/lib/countries/data/subdivisions/NZ.yaml +1 -1
  339. data/lib/countries/data/subdivisions/OM.yaml +6 -6
  340. data/lib/countries/data/subdivisions/PG.yaml +3 -3
  341. data/lib/countries/data/subdivisions/PH.yaml +16 -16
  342. data/lib/countries/data/subdivisions/PK.yaml +2 -2
  343. data/lib/countries/data/subdivisions/PS.yaml +16 -16
  344. data/lib/countries/data/subdivisions/QA.yaml +2 -2
  345. data/lib/countries/data/subdivisions/RS.yaml +2 -2
  346. data/lib/countries/data/subdivisions/SC.yaml +4 -2
  347. data/lib/countries/data/subdivisions/SG.yaml +39 -109
  348. data/lib/countries/data/subdivisions/SH.yaml +1 -1
  349. data/lib/countries/data/subdivisions/SI.yaml +19 -19
  350. data/lib/countries/data/subdivisions/SJ.yaml +14 -14
  351. data/lib/countries/data/subdivisions/SL.yaml +1 -1
  352. data/lib/countries/data/subdivisions/SN.yaml +3 -3
  353. data/lib/countries/data/subdivisions/SS.yaml +10 -10
  354. data/lib/countries/data/subdivisions/ST.yaml +6 -0
  355. data/lib/countries/data/subdivisions/TD.yaml +6 -6
  356. data/lib/countries/data/subdivisions/TH.yaml +1 -1
  357. data/lib/countries/data/subdivisions/TJ.yaml +2 -2
  358. data/lib/countries/data/subdivisions/TK.yaml +21 -21
  359. data/lib/countries/data/subdivisions/TM.yaml +1 -1
  360. data/lib/countries/data/subdivisions/TT.yaml +2 -2
  361. data/lib/countries/data/subdivisions/TV.yaml +1 -1
  362. data/lib/countries/data/subdivisions/TW.yaml +3 -17
  363. data/lib/countries/data/subdivisions/TZ.yaml +5 -5
  364. data/lib/countries/data/subdivisions/UG.yaml +59 -52
  365. data/lib/countries/data/subdivisions/UM.yaml +0 -10
  366. data/lib/countries/data/subdivisions/US.yaml +0 -42
  367. data/lib/countries/data/subdivisions/WF.yaml +3 -13
  368. data/lib/countries/data/subdivisions/YE.yaml +3 -3
  369. data/lib/countries/data/subdivisions/ZA.yaml +2 -2
  370. data/lib/countries/data/subdivisions/ZM.yaml +1 -1
  371. data/lib/countries/data/translation_corrections.yaml +20 -14
  372. data/lib/countries/data.rb +5 -1
  373. data/lib/countries/global.rb +13 -3
  374. data/lib/countries/mongoid.rb +3 -0
  375. data/lib/countries/sources/cldr/downloader.rb +3 -0
  376. data/lib/countries/sources/cldr/subdivision.rb +1 -0
  377. data/lib/countries/sources/cldr/subdivision_updater.rb +1 -0
  378. data/lib/countries/sources/local/cached_loader.rb +2 -0
  379. data/lib/countries/sources/local/subdivision.rb +1 -0
  380. data/lib/countries/structure.rb +2 -5
  381. data/lib/countries/tasks/geocoding.rake +1 -1
  382. data/lib/countries/timezones.rb +4 -2
  383. data/lib/countries/translations.rb +2 -3
  384. data/lib/countries/version.rb +1 -1
  385. data/spec/country_spec.rb +60 -56
  386. data/spec/data_spec.rb +9 -9
  387. metadata +5 -36
  388. data/lib/countries/data/subdivisions/AS.yaml +0 -85
  389. data/lib/countries/data/subdivisions/AW.yaml +0 -9
  390. data/lib/countries/data/subdivisions/AX.yaml +0 -51
  391. data/lib/countries/data/subdivisions/BL.yaml +0 -11
  392. data/lib/countries/data/subdivisions/CP.yaml +0 -4
  393. data/lib/countries/data/subdivisions/CW.yaml +0 -9
  394. data/lib/countries/data/subdivisions/FO.yaml +0 -85
  395. data/lib/countries/data/subdivisions/GF.yaml +0 -11
  396. data/lib/countries/data/subdivisions/GG.yaml +0 -155
  397. data/lib/countries/data/subdivisions/GP.yaml +0 -11
  398. data/lib/countries/data/subdivisions/GU.yaml +0 -275
  399. data/lib/countries/data/subdivisions/HK.yaml +0 -267
  400. data/lib/countries/data/subdivisions/IC.yaml +0 -4
  401. data/lib/countries/data/subdivisions/IM.yaml +0 -337
  402. data/lib/countries/data/subdivisions/JE.yaml +0 -169
  403. data/lib/countries/data/subdivisions/KY.yaml +0 -85
  404. data/lib/countries/data/subdivisions/MF.yaml +0 -9
  405. data/lib/countries/data/subdivisions/MO.yaml +0 -9
  406. data/lib/countries/data/subdivisions/MP.yaml +0 -71
  407. data/lib/countries/data/subdivisions/MQ.yaml +0 -11
  408. data/lib/countries/data/subdivisions/MS.yaml +0 -43
  409. data/lib/countries/data/subdivisions/NC.yaml +0 -57
  410. data/lib/countries/data/subdivisions/PF.yaml +0 -81
  411. data/lib/countries/data/subdivisions/PM.yaml +0 -39
  412. data/lib/countries/data/subdivisions/PR.yaml +0 -1107
  413. data/lib/countries/data/subdivisions/RE.yaml +0 -11
  414. data/lib/countries/data/subdivisions/SX.yaml +0 -9
  415. data/lib/countries/data/subdivisions/TA.yaml +0 -4
  416. data/lib/countries/data/subdivisions/TF.yaml +0 -67
  417. data/lib/countries/data/subdivisions/VI.yaml +0 -57
  418. data/lib/countries/data/subdivisions/YT.yaml +0 -247
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d7fef1ba0b30d18c6653eb178c2a69c32d42d53e5d21418ed2ead00c94a5ed9c
4
- data.tar.gz: c2160c97c50d1994ee1520607eeff6413bf4ccabe0aa51b82f7e94dec8c25fa2
3
+ metadata.gz: d5f2fb748d2a4450607d449b042b5e4b7ed07a53424a624ddd48a44a73aff087
4
+ data.tar.gz: 6d95e456629c9116e35fb9fce029503f24bd199883c10eb77f5dc775702dac6c
5
5
  SHA512:
6
- metadata.gz: 4cbc87e4f7c70926939546cdd1bea00f081b135d9063d35c95b9fe4eb372be6fba5231297869e457b82d28c3e232eddde736d497624c2477d837d49d0e55c15d
7
- data.tar.gz: 9de3121086005ae9b98dedb25774e6505d5955db69ef3239ce866c8fe0e4383481bfc2bcc0ab247cecc2f6ad9974c80a8b948b37174cd1c42e1c5f1356cd5a87
6
+ metadata.gz: 50fd92660600b1a2592457702e9e0068cc6a1268ab4d89f73a256b7acf23ef1e92c6f726986cb20c71d203dbc9c91d2fdc7dc80b2b193aa9728af3e90dd005e1
7
+ data.tar.gz: 70ec6a17d80e78e6b5b7ee9bc45b8286218e0974bae3d0c01247e00ed3ba719cdc03c0d498ec77fb799d8e828b804febc722af56568a2146f5221fd9905b9e2b
@@ -23,6 +23,8 @@ jobs:
23
23
  bundler-version: default
24
24
  - ruby-version: 3.0.3
25
25
  bundler-version: default
26
+ - ruby-version: 3.1.0
27
+ bundler-version: default
26
28
  steps:
27
29
  - uses: actions/checkout@v2
28
30
  - name: Set up Ruby ${{ matrix.ruby-version }}
data/CHANGELOG.md CHANGED
@@ -1,13 +1,87 @@
1
1
  # Change Log
2
+
2
3
  All notable changes to this project will be documented in this file.
3
- This project adheres to [Semantic Versioning](http://semver.org/).
4
+ This project adheres to [Semantic Versioning](https://semver.org/).
4
5
 
5
6
  ## [Future 5.0 release]
6
7
 
7
- - Drop support for Ruby 2.5 [\#708](https://github.com/countries/countries/pull/708) ([pmor](https://github.com/pmor))
8
+ **Breaking Changes**
9
+
10
+ - Drop support for Ruby 2.5 and 2.6 [\#708](https://github.com/countries/countries/pull/708) ([pmor](https://github.com/pmor))
11
+
12
+ ## [4.2.2](https://github.com/countries/countries/releases/tag/v4.2.2) (2022/02/17 13:52 +00:00)
13
+
14
+ **IMPORTANT NOTE: This should be be the last release of the 4.x series, and the last one to support Ruby 2.5 and 2.6**
15
+
16
+ **Merged pull requests:**
17
+
18
+ * http:// -> https:// by [\#737](https://github.com/countries/countries/pull/737) ([biow0lf](https://github.com/biow0lf))
19
+ * Update AE start_of_week to monday. [\#739](https://github.com/countries/countries/pull/739) ([pmor](https://github.com/pmor))
20
+ * Fix Subdivision data by [\#740](https://github.com/countries/countries/pull/740) ([pmor](https://github.com/pmor))
21
+
22
+ **Closed issues:**
23
+
24
+ * Change on UAE Value.start_of_week [\#738](https://github.com/countries/countries/issues/738)
25
+
26
+
27
+ **Full Changelog**: https://github.com/countries/countries/compare/v4.2.1...v4.2.2
28
+
29
+ ## [4.2.1](https://github.com/countries/countries/releases/tag/v4.2.1) (2022/01/11 12:39 +00:00)
30
+
31
+ - Missing update to cache files on release 4.2.0
32
+ - Update postal code regexes from rake task [\#734](https://github.com/countries/countries/pull/734 ) ([cover](https://github.com/cover))
33
+
34
+ ## [4.2.0](https://github.com/countries/countries/releases/tag/v4.2.0) (2022/01/11 11:04 +00:00)
35
+
36
+ **Deprecations**
37
+
38
+ - `Country#name`, `Country#names` and the finders using these attributes. See README ('Upgrading to 4.2 and 5.x')
39
+ - `latitude_dec` and `longitude_dec` attributes
40
+
41
+ **Merged pull requests:**
42
+
43
+ * Name methods refactor [\#717](https://github.com/countries/countries/pull/717) ([pmor](https://github.com/pmor))
44
+ * Remove non-ISO US subdivisions [\#720](https://github.com/countries/countries/pull/720) ([pmor](https://github.com/pmor))
45
+ * Update MK subdivisions [\#721](https://github.com/countries/countries/pull/721) ([pmor](https://github.com/pmor))
46
+ * Update Kenya subdivision data [\#722](https://github.com/countries/countries/pull/722) ([pmor](https://github.com/pmor))
47
+ * Fix French Southern Territories continent and region data [\#725](https://github.com/countries/countries/pull/725) ([pmor](https://github.com/pmor))
48
+ * Fix SG subdivision data [\#726](https://github.com/countries/countries/pull/726) ([pmor](https://github.com/pmor))
49
+ * Remove FO subdivisions [\#727](https://github.com/countries/countries/pull/727) ([pmor](https://github.com/pmor))
50
+ * JE and IM currencies should be GBP [\#728](https://github.com/countries/countries/pull/728) ([pmor](https://github.com/pmor))
51
+ * Fix US translations in nb and no locales [\#729](https://github.com/countries/countries/pull/729) ([pmor](https://github.com/pmor))
52
+ * Missing alternative names for GB and US [\#724](https://github.com/countries/countries/pull/#724) ([dima4p](https://github.com/dima4p))
53
+ * Deprecate latitude_dec and longitude_dec, delegate to latitude [\#723](https://github.com/countries/countries/pull/#723) ([pmor](https://github.com/pmor)
54
+ * add VAT for Israel and Saudi Arabia [\#730](https://github.com/countries/countries/pull/#723) ([Venca24](https://github.com/Venca24)
55
+ * Remove non-ISO KY subdivisions [\#731](https://github.com/countries/countries/pull/731) ([pmor](https://github.com/pmor))
56
+ * Fix duplicated translations of CZ-10 subdivision [\#733](https://github.com/countries/countries/pull/733) ([pmor](https://github.com/pmor))
57
+
58
+ **Closed issues:**
59
+
60
+ * Update Kenya subdivisions/states [\#318](https://github.com/countries/countries/issues/318)
61
+ * North Macedonia updates (2020-03-02) [\#674](https://github.com/countries/countries/issues/674)
62
+ * Singapore wrong subdivision codes (SG-SG-0x) [\#663](https://github.com/countries/countries/issues/663)
63
+ * Remove Faroe Islands subdivisions [\#606](https://github.com/countries/countries/issues/606)
64
+ * Jersey uses GBP instead of JEP currency [\#492](https://github.com/countries/countries/issues/492)
65
+ * USA in Norwegian translation should be 'USA' instead of 'De forente stater' [\#564](https://github.com/countries/countries/issues/564)
66
+ * Geographic bounds for UK includes all of Europe [\#535](https://github.com/countries/countries/issues/535)
67
+ * Wrong min_longitude for United States of America? [\#698](https://github.com/countries/countries/issues/698)
68
+ * Translations for CZ-10 are defined twice [\#732](https://github.com/countries/countries/issues/732)
69
+
70
+
71
+ ## [4.1.3](https://github.com/countries/countries/releases/tag/v4.1.2) (2022/01/03 12:16 +00:00)
72
+
73
+ **Merged pull requests:**
74
+
75
+ * Fix empty translations in LV subdivisions [\#719](https://github.com/countries/countries/pull/719) ([pmor](https://github.com/pmor))
76
+
77
+ **Closed issues:**
78
+
79
+ * Subdivision translations for some latvian subdivisions nil in countries 4.1.2 [\#718](https://github.com/countries/countries/issues/718)
8
80
 
9
81
  ## [4.1.2](https://github.com/countries/countries/releases/tag/v4.1.2) (2021/12/20 17:06 +00:00)
10
82
 
83
+ **Merged pull requests:**
84
+
11
85
  * Update subdivisions, fix #600 conflicts [\#710](https://github.com/countries/countries/pull/710) ([donnen](https://github.com/donnen), [pmor](https://github.com/pmor))
12
86
  * Fix conflicts in #605 and update those countries to the latest subdivision data [\#711](https://github.com/countries/countries/pull/711) ([jjamesjohnson](https://github.com/jjamesjohnson), [pmor](https://github.com/pmor))
13
87
  * Update NZ subdivision data and fix Chatham Island entry [\#712](https://github.com/countries/countries/pull/712) ([pmor](https://github.com/pmor))
@@ -57,6 +131,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
57
131
 
58
132
  [Full changelog](https://github.com/countries/countries/compare/v3.1.0...v4.0.0)
59
133
 
134
+ **Breaking changes:**
135
+
136
+ - None
137
+
60
138
  **Closed issues:**
61
139
 
62
140
  - update_cldr_subdivison_data Rake task broken due to CLDR repo change [\#633](https://github.com/countries/countries/issues/633)
data/README.markdown CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Countries is a collection of all sorts of useful information for every country in the ISO 3166 standard. It contains info for the following standards ISO3166-1 (countries), ISO3166-2 (states/subdivisions), ISO4217 (currency) and E.164 (phone numbers). I will add any country based data I can get access to. I hope this to be a repository for all country based information.
4
4
 
5
- [![Gem Version](https://badge.fury.io/rb/countries.svg)](https://badge.fury.io/rb/countries) [![Tests](https://github.com/countries/countries/actions/workflows/tests.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/tests.yml) [![Code Climate](https://codeclimate.com/github/hexorx/countries.svg)](https://codeclimate.com/github/hexorx/countries)
5
+ [![Gem Version](https://badge.fury.io/rb/countries.svg)](https://badge.fury.io/rb/countries) [![Tests](https://github.com/countries/countries/actions/workflows/tests.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/tests.yml) [![Code Climate](https://codeclimate.com/github/countries/countries.svg)](https://codeclimate.com/github/countries/countries)
6
6
 
7
7
  ## Installation
8
8
 
@@ -50,19 +50,21 @@ gem 'countries', require: 'countries/global'
50
50
 
51
51
  ## Upgrading to 4.2 and 5.x
52
52
 
53
- In release 4.2 the `#name` attribute was deprecated in favour of `#iso_short_name` and we added `#iso_long_name`, to make it clear that these attributes use the ISO3166 names, and are not the "common names" most people might expect, eg: The ISO name for "United Kingdom" is "United Kingdom of Great Britain and Northern Ireland", but if you're building a dropdown box to select a country, you're likely expecting to see "United Kingdom" instead.
53
+ In release 4.2 the `#name` attribute was deprecated in favour of `#iso_short_name` and we added the `#iso_long_name` attribute, to make it clear that these attributes use the ISO3166 names, and are not the "common names" most people might expect, eg: The ISO name for "United Kingdom" is "United Kingdom of Great Britain and Northern Ireland", but if you're building a dropdown box to select a country, you're likely expecting to see "United Kingdom" instead.
54
54
 
55
- The `#name` attribute will be removed in 5.0.
55
+ "Common names" in English have been available in the translation data, via `#translation('en')`. As of release 4.2, a shortcut method has been added for simplicity, `#common_name`, which delegates to `#translation('en')`.
56
56
 
57
- For translated country names, we use data from [pkg-isocodes](https://salsa.debian.org/iso-codes-team/iso-codes), via the [i18n_data](https://github.com/grosser/i18n_data) gem, and these generally correspond to the expected "common names". These names and the corresponding methods have not been changed.
57
+ For additional clarity, the `#names` method, which was an alias to `#unofficial_names` has also been deprecated, together with the finder methods that use `name` or `names` attributes.
58
58
 
59
+ The `#name` and `#names` attributes, and corresponding finder methods will be removed in 5.0.
59
60
 
61
+ For translated country names, we use data from [pkg-isocodes](https://salsa.debian.org/iso-codes-team/iso-codes), via the [i18n_data](https://github.com/grosser/i18n_data) gem, and these generally correspond to the expected "common names". These names and the corresponding methods have not been changed.
60
62
 
61
63
  ## Selective Loading of Locales
62
64
 
63
65
  As of 2.0 you can selectively load locales to reduce memory usage in production.
64
66
 
65
- By default we load I18n.available_locales if I18n is present, otherwise only [:en]. This means almost any rails environment will only bring in its supported translations.
67
+ By default we load `I18n.available_locales` if I18n is present, otherwise only `[:en]`. This means almost any Rails environment will only bring in its supported translations.
66
68
 
67
69
  You can add all the locales like this.
68
70
 
@@ -84,15 +86,18 @@ end
84
86
  You can lookup a country or an array of countries using any of the data attributes via the find\_country\_by_*attribute* dynamic methods:
85
87
 
86
88
  ```ruby
87
- c = ISO3166::Country.find_country_by_name('united states')
89
+ c = ISO3166::Country.find_country_by_iso_short_name('united states')
88
90
  h = ISO3166::Country.find_all_by(:translated_names, 'França')
89
91
  list = ISO3166::Country.find_all_countries_by_region('Americas')
90
92
  c = ISO3166::Country.find_country_by_alpha3('can')
91
93
  ```
92
94
 
93
- For a list of available attributes please see ISO3166::DEFAULT_COUNTRY_HASH.
95
+ For a list of available attributes please see `ISO3166::DEFAULT_COUNTRY_HASH`.
94
96
  Note: searches are *case insensitive and ignore accents*.
95
97
 
98
+ _Please note that `find_by_name`, `find_by_names`, `find_*_by_name` and `find_*_by_names` methods are deprecated and will be removed in 5.0. See [Upgrading to 4.2 and 5.x](#upgrading-to-4-2-and-5-x) above_
99
+
100
+
96
101
  ## Country Info
97
102
 
98
103
  ### Identification Codes
@@ -109,6 +114,7 @@ c.gec # => "US"
109
114
  ```ruby
110
115
  c.iso_long_name # => "The United States of America"
111
116
  c.iso_short_name # => "United States of America"
117
+ c.common_name # => "United States" (This is a shortcut for c.translations('en'))
112
118
  c.unofficial_names # => ["United States of America", "Vereinigte Staaten von Amerika", "États-Unis", "Estados Unidos"]
113
119
 
114
120
  # Get the names for a country translated to its local languages
@@ -124,6 +130,9 @@ ISO3166::Country.translations # {"DE"=>"Germany",...}
124
130
  ISO3166::Country.translations('DE') # {"DE"=>"Deutschland",...}
125
131
  ISO3166::Country.all_translated # ['Germany', ...]
126
132
  ISO3166::Country.all_translated('DE') # ['Deutschland', ...]
133
+
134
+ # Nationality
135
+ c.nationality # => "American"
127
136
  ```
128
137
 
129
138
  ### Subdivisions & States
@@ -136,15 +145,16 @@ c.states # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
136
145
  ### Location
137
146
 
138
147
  ```ruby
139
- c.latitude # => "38 00 N"
140
- c.longitude # => "97 00 W"
141
- c.latitude_dec # => 39.44325637817383
142
- c.longitude_dec # => -98.95733642578125
148
+ c.latitude # => "37.09024"
149
+ c.longitude # => "-95.712891"
143
150
 
151
+ c.world_region # => "AMER"
144
152
  c.region # => "Americas"
145
153
  c.subregion # => "Northern America"
146
154
  ```
147
155
 
156
+ Please note that `latitude_dec` and `longitude_dec` was be deprecated on release 4.2 and will be deleted in 5.0. These attributes have been redundant for several years, since the `latitude` and `longitude` fields have been switched decimal coordinates.
157
+
148
158
  ### Timezones **(optional)**
149
159
 
150
160
  Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do this for you.
@@ -155,8 +165,8 @@ gem 'tzinfo', '~> 1.2', '>= 1.2.2'
155
165
 
156
166
  ```ruby
157
167
  c.timezones.zone_identifiers # => ["America/New_York", "America/Detroit", "America/Kentucky/Louisville", ...]
158
- c.timezones.zone_info # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/CountryInfo)
159
- c.timezones # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
168
+ c.timezones.zone_info # see [tzinfo docs](https://www.rubydoc.info/gems/tzinfo/TZInfo/CountryTimezone)
169
+ c.timezones # see [tzinfo docs](https://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
160
170
  ```
161
171
 
162
172
  ### Telephone Routing (E164)
@@ -176,6 +186,8 @@ c.min_longitude # => '45'
176
186
  c.min_latitude # => '22.166667'
177
187
  c.max_longitude # => '58'
178
188
  c.max_latitude # => '26.133333'
189
+
190
+ c.bounds #> {"northeast"=>{"lat"=>22.166667, "lng"=>58}, "southwest"=>{"lat"=>26.133333, "lng"=>45}}
179
191
  ```
180
192
 
181
193
  ### European Union Membership
@@ -200,7 +212,7 @@ c.in_esm? # => false
200
212
  ### Plucking multiple attributes
201
213
 
202
214
  ```ruby
203
- ISO3166::Country.pluck(:alpha2, :name) # => [["AD", "Andorra"], ["AE", "United Arab Emirates"], ...
215
+ ISO3166::Country.pluck(:alpha2, :iso_short_name) # => [["AD", "Andorra"], ["AE", "United Arab Emirates"], ...
204
216
  ```
205
217
 
206
218
  ## Currencies
@@ -217,9 +229,7 @@ Please note that it requires you to add "money" dependency to your gemfile.
217
229
  gem "money", "~> 6.9"
218
230
  ```
219
231
 
220
- **WARNING** if you have a top level class named `Money` you will conflict with this gem. If this is a large issue we will add a feature to turn currency features off.
221
-
222
- Countries now uses the [Money](https://github.com/RubyMoney/money) gem. What this means is you now get back a Money::Currency object that gives you access to all the currency information.
232
+ Countries now uses the [Money](https://github.com/RubyMoney/money) gem. What this means is you now get back a `Money::Currency` object that gives you access to all the currency information.
223
233
 
224
234
  ```ruby
225
235
  c = ISO3166::Country['us']
@@ -230,7 +240,7 @@ c.currency.symbol # => '$'
230
240
 
231
241
  ## Address Formatting
232
242
 
233
- A template for formatting addresses is available through the address_format method. These templates are compatible with the [Liquid](http://www.liquidmarkup.org/) template system.
243
+ A template for formatting addresses is available through the address_format method. These templates are compatible with the [Liquid](https://shopify.github.io/liquid/) template system.
234
244
 
235
245
  ```ruby
236
246
  c.address_format # => "{{recipient}}\n{{street}}\n{{city}} {{region}} {{postalcode}}\n{{country}}"
@@ -245,14 +255,14 @@ Any country registered this way will have its data available for searching etc..
245
255
  ```ruby
246
256
  ISO3166::Data.register(
247
257
  alpha2: 'LOL',
248
- name: 'Happy Country',
258
+ iso_short_name: 'Happy Country',
249
259
  translations: {
250
260
  'en' => 'Happy Country',
251
261
  'de' => 'glückliches Land'
252
262
  }
253
263
  )
254
264
 
255
- ISO3166::Country.new('LOL').name == 'Happy Country'
265
+ ISO3166::Country.new('LOL').iso_short_name == 'Happy Country'
256
266
  ```
257
267
 
258
268
  ## Mongoid
@@ -271,33 +281,33 @@ Searching:
271
281
 
272
282
  ```ruby
273
283
  # By alpha2
274
- british_things = Things.where(country: 'GB')
275
- british_things.first.country.name # => "United Kingdom"
284
+ spanish_things = Things.where(country: 'ES')
285
+ spanish_things.first.country.iso_short_name # => "Spain"
276
286
 
277
287
  # By object
278
- british_things = Things.where(country: Country.find_by_name('United Kingdom')[1])
279
- british_things.first.country.name # => "United Kingdom"
288
+ spanish_things = Things.where(country: Country.find_by_iso_short_name('Spain')[1])
289
+ spanish_things.first.country.iso_short_name # => "Spain"
280
290
  ```
281
291
 
282
292
  Saving:
283
293
 
284
294
  ```ruby
285
295
  # By alpha2
286
- british_thing = Thing.new(country: 'GB')
287
- british_thing.save!
288
- british_thing.country.name # => "United Kingdom"
296
+ spanish_things = Thing.new(country: 'ES')
297
+ spanish_things.save!
298
+ spanish_things.country.iso_short_name # => "Spain"
289
299
 
290
300
  # By object
291
- british_thing = Thing.new(country: Country.find_by_name('United Kingdom')[1])
292
- british_thing.save!
293
- british_thing.country.name # => "United Kingdom"
301
+ spanish_things = Thing.new(country: Country.find_by_iso_short_name('Spain')[1])
302
+ spanish_things.save!
303
+ spanish_things.country.iso_short_name # => "Spain"
294
304
  ```
295
305
 
296
306
  Note that the database stores only the alpha2 code and rebuilds the object when queried. To return the country name by default you can override the reader method in your model:
297
307
 
298
308
  ```ruby
299
309
  def country
300
- super.name
310
+ super.iso_short_name
301
311
  end
302
312
  ```
303
313
 
data/Rakefile CHANGED
@@ -19,36 +19,6 @@ end
19
19
 
20
20
  task default: [:spec]
21
21
 
22
- task :update_yaml_structure do
23
-
24
- d = Dir['lib/countries/data/subdivisions/*.yaml']
25
- d.each do |file|
26
- puts "checking : #{file}"
27
- data = YAML.load_file(file)
28
-
29
- data = data.each_with_object({}) do |(k, subd), a|
30
- a[k] ||= {}
31
- a[k]['unofficial_names'] = subd.delete('names')
32
- a[k]['translations'] = { 'en' => subd['name'] }
33
- a[k]['geo'] = {
34
- 'latitude' => subd.delete('latitude'),
35
- 'longitude' => subd.delete('longitude'),
36
- 'min_latitude' => subd.delete('min_latitude'),
37
- 'min_longitude' => subd.delete('min_longitude'),
38
- 'max_latitude' => subd.delete('max_latitude'),
39
- 'max_longitude' => subd.delete('max_longitude')
40
- }
41
-
42
- a[k] = a[k].merge(subd)
43
- end
44
- File.open(file, 'w') { |f| f.write data.to_yaml }
45
- begin
46
- rescue
47
- puts "failed to read #{file}: #{$ERROR_INFO}"
48
- end
49
- end
50
- end
51
-
52
22
  desc 'Update CLDR subdivison data set'
53
23
  task :update_cldr_subdivison_data do
54
24
  require_relative './lib/countries/sources'
@@ -61,7 +31,7 @@ task :update_cache do
61
31
  require 'yaml'
62
32
  require 'i18n_data'
63
33
 
64
- codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
34
+ codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq.sort
65
35
  data = {}
66
36
 
67
37
  corrections = YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'translation_corrections.yaml')) || {}
@@ -91,3 +61,25 @@ task :update_cache do
91
61
 
92
62
  File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries.json'), 'wb') { |f| f.write(data.to_json) }
93
63
  end
64
+
65
+ # Temporary task to update YAML file structure with iso_long_name and iso_short_name attributes
66
+ task :update_iso_names do
67
+ require 'csv'
68
+ isodata = CSV.read 'isonames.csv', headers: true
69
+
70
+ d = Dir['lib/countries/data/countries/*.yaml']
71
+ d.each do |file|
72
+ puts "checking : #{file}"
73
+ data = YAML.load_file(file)
74
+
75
+ country_code = data.keys.first
76
+ iso_country = isodata.find {|c| c['cc'] == country_code}
77
+
78
+ data.values.first['iso_long_name'] = iso_country['iso_full_name']
79
+ data.values.first['iso_short_name'] = data.values.first.delete('name')
80
+
81
+ data[country_code.upcase] = data[country_code.upcase].sort.to_h
82
+
83
+ File.open(file, 'w') { |f| f.write data.to_yaml }
84
+ end
85
+ end
data/countries.gemspec CHANGED
@@ -6,10 +6,10 @@ Gem::Specification.new do |gem|
6
6
  gem.email = ['hexorx@gmail.com', 'russell@burningpony.com', 'pedro@codecreations.tech']
7
7
  gem.description = 'All sorts of useful information about every country packaged as pretty little country objects. It includes data from ISO 3166'
8
8
  gem.summary = 'Gives you a country object full of all sorts of useful information.'
9
- gem.homepage = 'http://github.com/countries/countries'
10
- gem.metadata = { 'bug_tracker_uri' => 'http://github.com/countries/countries/issues',
11
- 'changelog_uri' => 'https://github.com/countries/countries/blob/master/CHANGELOG.md',
12
- 'source_code_uri' => 'https://github.com/countries/countries',
9
+ gem.homepage = 'https://github.com/countries/countries'
10
+ gem.metadata = { 'bug_tracker_uri' => 'https://github.com/countries/countries/issues',
11
+ 'changelog_uri' => 'https://github.com/countries/countries/blob/master/CHANGELOG.md',
12
+ 'source_code_uri' => 'https://github.com/countries/countries',
13
13
  'wiki_uri' => 'https://github.com/countries/countries/wiki'}
14
14
 
15
15
  gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)