countries 3.0.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (790) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql-analysis.yml +70 -0
  3. data/.github/workflows/tests.yml +35 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +40 -1
  6. data/.rubocop_todo.yml +8 -41
  7. data/CHANGELOG.md +315 -1
  8. data/Gemfile +9 -2
  9. data/LICENSE +3 -1
  10. data/README.markdown +141 -123
  11. data/Rakefile +29 -56
  12. data/UPGRADE.md +39 -0
  13. data/bin/console +1 -0
  14. data/countries.gemspec +15 -10
  15. data/lib/countries/cache/countries.json +1 -1
  16. data/lib/countries/cache/locales/ab.json +1 -0
  17. data/lib/countries/cache/locales/af.json +1 -1
  18. data/lib/countries/cache/locales/ak.json +1 -0
  19. data/lib/countries/cache/locales/am.json +1 -1
  20. data/lib/countries/cache/locales/an.json +1 -0
  21. data/lib/countries/cache/locales/ar.json +1 -1
  22. data/lib/countries/cache/locales/as.json +1 -1
  23. data/lib/countries/cache/locales/ay.json +1 -0
  24. data/lib/countries/cache/locales/az.json +1 -1
  25. data/lib/countries/cache/locales/ba.json +1 -0
  26. data/lib/countries/cache/locales/be.json +1 -1
  27. data/lib/countries/cache/locales/bg.json +1 -1
  28. data/lib/countries/cache/locales/bi.json +1 -0
  29. data/lib/countries/cache/locales/bn-in.json +1 -0
  30. data/lib/countries/cache/locales/bn.json +1 -1
  31. data/lib/countries/cache/locales/br.json +1 -1
  32. data/lib/countries/cache/locales/bs.json +1 -1
  33. data/lib/countries/cache/locales/ca.json +1 -1
  34. data/lib/countries/cache/locales/ce.json +1 -0
  35. data/lib/countries/cache/locales/ch.json +1 -0
  36. data/lib/countries/cache/locales/cs.json +1 -1
  37. data/lib/countries/cache/locales/cv.json +1 -0
  38. data/lib/countries/cache/locales/cy.json +1 -1
  39. data/lib/countries/cache/locales/da.json +1 -1
  40. data/lib/countries/cache/locales/de.json +1 -1
  41. data/lib/countries/cache/locales/dv.json +1 -0
  42. data/lib/countries/cache/locales/dz.json +1 -1
  43. data/lib/countries/cache/locales/ee.json +1 -0
  44. data/lib/countries/cache/locales/el.json +1 -1
  45. data/lib/countries/cache/locales/en.json +1 -1
  46. data/lib/countries/cache/locales/eo.json +1 -1
  47. data/lib/countries/cache/locales/es.json +1 -1
  48. data/lib/countries/cache/locales/et.json +1 -1
  49. data/lib/countries/cache/locales/eu.json +1 -1
  50. data/lib/countries/cache/locales/fa.json +1 -1
  51. data/lib/countries/cache/locales/ff.json +1 -0
  52. data/lib/countries/cache/locales/fi.json +1 -1
  53. data/lib/countries/cache/locales/fo.json +1 -1
  54. data/lib/countries/cache/locales/fr.json +1 -1
  55. data/lib/countries/cache/locales/fy.json +1 -0
  56. data/lib/countries/cache/locales/ga.json +1 -1
  57. data/lib/countries/cache/locales/gl.json +1 -1
  58. data/lib/countries/cache/locales/gn.json +1 -0
  59. data/lib/countries/cache/locales/gu.json +1 -1
  60. data/lib/countries/cache/locales/gv.json +1 -0
  61. data/lib/countries/cache/locales/ha.json +1 -0
  62. data/lib/countries/cache/locales/he.json +1 -1
  63. data/lib/countries/cache/locales/hi.json +1 -1
  64. data/lib/countries/cache/locales/hr.json +1 -1
  65. data/lib/countries/cache/locales/ht.json +1 -0
  66. data/lib/countries/cache/locales/hu.json +1 -1
  67. data/lib/countries/cache/locales/hy.json +1 -1
  68. data/lib/countries/cache/locales/ia.json +1 -1
  69. data/lib/countries/cache/locales/id.json +1 -1
  70. data/lib/countries/cache/locales/io.json +1 -0
  71. data/lib/countries/cache/locales/is.json +1 -1
  72. data/lib/countries/cache/locales/it.json +1 -1
  73. data/lib/countries/cache/locales/iu.json +1 -0
  74. data/lib/countries/cache/locales/ja.json +1 -1
  75. data/lib/countries/cache/locales/ka.json +1 -1
  76. data/lib/countries/cache/locales/ki.json +1 -0
  77. data/lib/countries/cache/locales/kk.json +1 -1
  78. data/lib/countries/cache/locales/kl.json +1 -0
  79. data/lib/countries/cache/locales/km.json +1 -1
  80. data/lib/countries/cache/locales/kn.json +1 -1
  81. data/lib/countries/cache/locales/ko.json +1 -1
  82. data/lib/countries/cache/locales/ku.json +1 -1
  83. data/lib/countries/cache/locales/kv.json +1 -0
  84. data/lib/countries/cache/locales/kw.json +1 -0
  85. data/lib/countries/cache/locales/ky.json +1 -0
  86. data/lib/countries/cache/locales/lo.json +1 -0
  87. data/lib/countries/cache/locales/lt.json +1 -1
  88. data/lib/countries/cache/locales/lv.json +1 -1
  89. data/lib/countries/cache/locales/mi.json +1 -1
  90. data/lib/countries/cache/locales/mk.json +1 -1
  91. data/lib/countries/cache/locales/ml.json +1 -1
  92. data/lib/countries/cache/locales/mn.json +1 -1
  93. data/lib/countries/cache/locales/mr.json +1 -1
  94. data/lib/countries/cache/locales/ms.json +1 -1
  95. data/lib/countries/cache/locales/mt.json +1 -1
  96. data/lib/countries/cache/locales/my.json +1 -0
  97. data/lib/countries/cache/locales/na.json +1 -0
  98. data/lib/countries/cache/locales/nb.json +1 -1
  99. data/lib/countries/cache/locales/ne.json +1 -1
  100. data/lib/countries/cache/locales/nl.json +1 -1
  101. data/lib/countries/cache/locales/nn.json +1 -1
  102. data/lib/countries/cache/locales/nv.json +1 -0
  103. data/lib/countries/cache/locales/oc.json +1 -1
  104. data/lib/countries/cache/locales/or.json +1 -1
  105. data/lib/countries/cache/locales/pa.json +1 -1
  106. data/lib/countries/cache/locales/pi.json +1 -0
  107. data/lib/countries/cache/locales/pl.json +1 -1
  108. data/lib/countries/cache/locales/ps.json +1 -1
  109. data/lib/countries/cache/locales/pt-br.json +1 -0
  110. data/lib/countries/cache/locales/pt.json +1 -1
  111. data/lib/countries/cache/locales/ro.json +1 -1
  112. data/lib/countries/cache/locales/ru.json +1 -1
  113. data/lib/countries/cache/locales/rw.json +1 -1
  114. data/lib/countries/cache/locales/sc.json +1 -0
  115. data/lib/countries/cache/locales/sd.json +1 -0
  116. data/lib/countries/cache/locales/si.json +1 -1
  117. data/lib/countries/cache/locales/sk.json +1 -1
  118. data/lib/countries/cache/locales/sl.json +1 -1
  119. data/lib/countries/cache/locales/so.json +1 -1
  120. data/lib/countries/cache/locales/sq.json +1 -1
  121. data/lib/countries/cache/locales/sr.json +1 -1
  122. data/lib/countries/cache/locales/sv.json +1 -1
  123. data/lib/countries/cache/locales/sw.json +1 -1
  124. data/lib/countries/cache/locales/ta.json +1 -1
  125. data/lib/countries/cache/locales/te.json +1 -1
  126. data/lib/countries/cache/locales/tg.json +1 -0
  127. data/lib/countries/cache/locales/th.json +1 -1
  128. data/lib/countries/cache/locales/ti.json +1 -1
  129. data/lib/countries/cache/locales/tk.json +1 -1
  130. data/lib/countries/cache/locales/tl.json +1 -1
  131. data/lib/countries/cache/locales/tr.json +1 -1
  132. data/lib/countries/cache/locales/tt.json +1 -1
  133. data/lib/countries/cache/locales/ug.json +1 -1
  134. data/lib/countries/cache/locales/uk.json +1 -1
  135. data/lib/countries/cache/locales/ur.json +1 -0
  136. data/lib/countries/cache/locales/uz.json +1 -0
  137. data/lib/countries/cache/locales/ve.json +1 -1
  138. data/lib/countries/cache/locales/vi.json +1 -1
  139. data/lib/countries/cache/locales/wa.json +1 -1
  140. data/lib/countries/cache/locales/wo.json +1 -1
  141. data/lib/countries/cache/locales/xh.json +1 -1
  142. data/lib/countries/cache/locales/yo.json +1 -0
  143. data/lib/countries/cache/locales/zh-cn.json +1 -0
  144. data/lib/countries/cache/locales/zh-hk.json +1 -0
  145. data/lib/countries/cache/locales/zh-tw.json +1 -0
  146. data/lib/countries/cache/locales/zu.json +1 -1
  147. data/lib/countries/configuration.rb +15 -0
  148. data/lib/countries/country/class_methods.rb +41 -97
  149. data/lib/countries/country/currency_methods.rb +6 -1
  150. data/lib/countries/country/emoji.rb +5 -3
  151. data/lib/countries/country/finder_methods.rb +81 -0
  152. data/lib/countries/country.rb +145 -11
  153. data/lib/countries/data/countries/AD.yaml +28 -28
  154. data/lib/countries/data/countries/AE.yaml +32 -33
  155. data/lib/countries/data/countries/AF.yaml +32 -32
  156. data/lib/countries/data/countries/AG.yaml +29 -30
  157. data/lib/countries/data/countries/AI.yaml +27 -27
  158. data/lib/countries/data/countries/AL.yaml +29 -29
  159. data/lib/countries/data/countries/AM.yaml +30 -30
  160. data/lib/countries/data/countries/AO.yaml +27 -28
  161. data/lib/countries/data/countries/AQ.yaml +26 -27
  162. data/lib/countries/data/countries/AR.yaml +30 -30
  163. data/lib/countries/data/countries/AS.yaml +31 -31
  164. data/lib/countries/data/countries/AT.yaml +36 -36
  165. data/lib/countries/data/countries/AU.yaml +34 -34
  166. data/lib/countries/data/countries/AW.yaml +25 -26
  167. data/lib/countries/data/countries/AX.yaml +27 -27
  168. data/lib/countries/data/countries/AZ.yaml +30 -30
  169. data/lib/countries/data/countries/BA.yaml +32 -32
  170. data/lib/countries/data/countries/BB.yaml +28 -28
  171. data/lib/countries/data/countries/BD.yaml +28 -28
  172. data/lib/countries/data/countries/BE.yaml +41 -41
  173. data/lib/countries/data/countries/BF.yaml +29 -30
  174. data/lib/countries/data/countries/BG.yaml +36 -36
  175. data/lib/countries/data/countries/BH.yaml +29 -29
  176. data/lib/countries/data/countries/BI.yaml +29 -30
  177. data/lib/countries/data/countries/BJ.yaml +27 -28
  178. data/lib/countries/data/countries/BL.yaml +25 -25
  179. data/lib/countries/data/countries/BM.yaml +29 -29
  180. data/lib/countries/data/countries/BN.yaml +26 -26
  181. data/lib/countries/data/countries/BO.yaml +31 -32
  182. data/lib/countries/data/countries/BQ.yaml +28 -29
  183. data/lib/countries/data/countries/BR.yaml +35 -35
  184. data/lib/countries/data/countries/BS.yaml +26 -28
  185. data/lib/countries/data/countries/BT.yaml +28 -28
  186. data/lib/countries/data/countries/BV.yaml +26 -27
  187. data/lib/countries/data/countries/BW.yaml +29 -30
  188. data/lib/countries/data/countries/BY.yaml +30 -30
  189. data/lib/countries/data/countries/BZ.yaml +28 -29
  190. data/lib/countries/data/countries/CA.yaml +30 -30
  191. data/lib/countries/data/countries/CC.yaml +29 -29
  192. data/lib/countries/data/countries/CD.yaml +35 -36
  193. data/lib/countries/data/countries/CF.yaml +29 -30
  194. data/lib/countries/data/countries/CG.yaml +29 -30
  195. data/lib/countries/data/countries/CH.yaml +40 -40
  196. data/lib/countries/data/countries/CI.yaml +27 -28
  197. data/lib/countries/data/countries/CK.yaml +27 -28
  198. data/lib/countries/data/countries/CL.yaml +33 -28
  199. data/lib/countries/data/countries/CM.yaml +29 -30
  200. data/lib/countries/data/countries/CN.yaml +28 -28
  201. data/lib/countries/data/countries/CO.yaml +28 -28
  202. data/lib/countries/data/countries/CR.yaml +28 -28
  203. data/lib/countries/data/countries/CU.yaml +27 -27
  204. data/lib/countries/data/countries/CV.yaml +28 -28
  205. data/lib/countries/data/countries/CW.yaml +25 -26
  206. data/lib/countries/data/countries/CX.yaml +30 -30
  207. data/lib/countries/data/countries/CY.yaml +41 -41
  208. data/lib/countries/data/countries/CZ.yaml +40 -38
  209. data/lib/countries/data/countries/DE.yaml +36 -36
  210. data/lib/countries/data/countries/DJ.yaml +29 -30
  211. data/lib/countries/data/countries/DK.yaml +35 -35
  212. data/lib/countries/data/countries/DM.yaml +26 -27
  213. data/lib/countries/data/countries/DO.yaml +28 -28
  214. data/lib/countries/data/countries/DZ.yaml +28 -28
  215. data/lib/countries/data/countries/EC.yaml +28 -28
  216. data/lib/countries/data/countries/EE.yaml +36 -36
  217. data/lib/countries/data/countries/EG.yaml +28 -28
  218. data/lib/countries/data/countries/EH.yaml +30 -30
  219. data/lib/countries/data/countries/ER.yaml +31 -32
  220. data/lib/countries/data/countries/ES.yaml +36 -36
  221. data/lib/countries/data/countries/ET.yaml +28 -28
  222. data/lib/countries/data/countries/FI.yaml +39 -39
  223. data/lib/countries/data/countries/FJ.yaml +33 -34
  224. data/lib/countries/data/countries/FK.yaml +29 -29
  225. data/lib/countries/data/countries/FM.yaml +28 -28
  226. data/lib/countries/data/countries/FO.yaml +28 -28
  227. data/lib/countries/data/countries/FR.yaml +37 -37
  228. data/lib/countries/data/countries/GA.yaml +27 -28
  229. data/lib/countries/data/countries/GB.yaml +44 -36
  230. data/lib/countries/data/countries/GD.yaml +26 -27
  231. data/lib/countries/data/countries/GE.yaml +28 -28
  232. data/lib/countries/data/countries/GF.yaml +29 -29
  233. data/lib/countries/data/countries/GG.yaml +31 -31
  234. data/lib/countries/data/countries/GH.yaml +27 -28
  235. data/lib/countries/data/countries/GI.yaml +28 -28
  236. data/lib/countries/data/countries/GL.yaml +29 -29
  237. data/lib/countries/data/countries/GM.yaml +28 -29
  238. data/lib/countries/data/countries/GN.yaml +30 -30
  239. data/lib/countries/data/countries/GP.yaml +27 -27
  240. data/lib/countries/data/countries/GQ.yaml +29 -30
  241. data/lib/countries/data/countries/GR.yaml +37 -37
  242. data/lib/countries/data/countries/GS.yaml +29 -29
  243. data/lib/countries/data/countries/GT.yaml +28 -28
  244. data/lib/countries/data/countries/GU.yaml +31 -31
  245. data/lib/countries/data/countries/GW.yaml +28 -28
  246. data/lib/countries/data/countries/GY.yaml +26 -27
  247. data/lib/countries/data/countries/HK.yaml +29 -30
  248. data/lib/countries/data/countries/HM.yaml +28 -28
  249. data/lib/countries/data/countries/HN.yaml +28 -28
  250. data/lib/countries/data/countries/HR.yaml +37 -37
  251. data/lib/countries/data/countries/HT.yaml +29 -29
  252. data/lib/countries/data/countries/HU.yaml +37 -37
  253. data/lib/countries/data/countries/ID.yaml +28 -28
  254. data/lib/countries/data/countries/IE.yaml +39 -39
  255. data/lib/countries/data/countries/IL.yaml +35 -30
  256. data/lib/countries/data/countries/IM.yaml +31 -31
  257. data/lib/countries/data/countries/IN.yaml +30 -30
  258. data/lib/countries/data/countries/IO.yaml +28 -28
  259. data/lib/countries/data/countries/IQ.yaml +28 -28
  260. data/lib/countries/data/countries/IR.yaml +28 -28
  261. data/lib/countries/data/countries/IS.yaml +35 -35
  262. data/lib/countries/data/countries/IT.yaml +36 -36
  263. data/lib/countries/data/countries/JE.yaml +26 -26
  264. data/lib/countries/data/countries/JM.yaml +28 -29
  265. data/lib/countries/data/countries/JO.yaml +28 -28
  266. data/lib/countries/data/countries/JP.yaml +28 -28
  267. data/lib/countries/data/countries/KE.yaml +30 -30
  268. data/lib/countries/data/countries/KG.yaml +30 -30
  269. data/lib/countries/data/countries/KH.yaml +28 -28
  270. data/lib/countries/data/countries/KI.yaml +27 -28
  271. data/lib/countries/data/countries/KM.yaml +29 -30
  272. data/lib/countries/data/countries/KN.yaml +28 -29
  273. data/lib/countries/data/countries/KP.yaml +28 -28
  274. data/lib/countries/data/countries/KR.yaml +28 -28
  275. data/lib/countries/data/countries/KW.yaml +28 -28
  276. data/lib/countries/data/countries/KY.yaml +29 -29
  277. data/lib/countries/data/countries/KZ.yaml +30 -30
  278. data/lib/countries/data/countries/LA.yaml +28 -28
  279. data/lib/countries/data/countries/LB.yaml +30 -30
  280. data/lib/countries/data/countries/LC.yaml +28 -29
  281. data/lib/countries/data/countries/LI.yaml +27 -27
  282. data/lib/countries/data/countries/LK.yaml +28 -28
  283. data/lib/countries/data/countries/LR.yaml +28 -28
  284. data/lib/countries/data/countries/LS.yaml +28 -28
  285. data/lib/countries/data/countries/LT.yaml +37 -37
  286. data/lib/countries/data/countries/LU.yaml +39 -39
  287. data/lib/countries/data/countries/LV.yaml +42 -36
  288. data/lib/countries/data/countries/LY.yaml +27 -28
  289. data/lib/countries/data/countries/MA.yaml +28 -28
  290. data/lib/countries/data/countries/MC.yaml +28 -28
  291. data/lib/countries/data/countries/MD.yaml +28 -28
  292. data/lib/countries/data/countries/ME.yaml +34 -34
  293. data/lib/countries/data/countries/MF.yaml +29 -29
  294. data/lib/countries/data/countries/MG.yaml +30 -30
  295. data/lib/countries/data/countries/MH.yaml +30 -30
  296. data/lib/countries/data/countries/MK.yaml +30 -28
  297. data/lib/countries/data/countries/ML.yaml +27 -28
  298. data/lib/countries/data/countries/MM.yaml +27 -27
  299. data/lib/countries/data/countries/MN.yaml +28 -28
  300. data/lib/countries/data/countries/MO.yaml +28 -29
  301. data/lib/countries/data/countries/MP.yaml +31 -31
  302. data/lib/countries/data/countries/MQ.yaml +27 -27
  303. data/lib/countries/data/countries/MR.yaml +29 -30
  304. data/lib/countries/data/countries/MS.yaml +26 -27
  305. data/lib/countries/data/countries/MT.yaml +38 -38
  306. data/lib/countries/data/countries/MU.yaml +28 -28
  307. data/lib/countries/data/countries/MV.yaml +28 -28
  308. data/lib/countries/data/countries/MW.yaml +29 -30
  309. data/lib/countries/data/countries/MX.yaml +33 -33
  310. data/lib/countries/data/countries/MY.yaml +30 -30
  311. data/lib/countries/data/countries/MZ.yaml +28 -28
  312. data/lib/countries/data/countries/NA.yaml +30 -30
  313. data/lib/countries/data/countries/NC.yaml +29 -29
  314. data/lib/countries/data/countries/NE.yaml +28 -28
  315. data/lib/countries/data/countries/NF.yaml +29 -29
  316. data/lib/countries/data/countries/NG.yaml +34 -34
  317. data/lib/countries/data/countries/NI.yaml +28 -28
  318. data/lib/countries/data/countries/NL.yaml +38 -36
  319. data/lib/countries/data/countries/NO.yaml +36 -36
  320. data/lib/countries/data/countries/NP.yaml +32 -32
  321. data/lib/countries/data/countries/NR.yaml +27 -28
  322. data/lib/countries/data/countries/NU.yaml +25 -26
  323. data/lib/countries/data/countries/NZ.yaml +35 -35
  324. data/lib/countries/data/countries/OM.yaml +28 -28
  325. data/lib/countries/data/countries/PA.yaml +27 -28
  326. data/lib/countries/data/countries/PE.yaml +28 -28
  327. data/lib/countries/data/countries/PF.yaml +29 -29
  328. data/lib/countries/data/countries/PG.yaml +28 -28
  329. data/lib/countries/data/countries/PH.yaml +35 -35
  330. data/lib/countries/data/countries/PK.yaml +30 -30
  331. data/lib/countries/data/countries/PL.yaml +37 -37
  332. data/lib/countries/data/countries/PM.yaml +29 -29
  333. data/lib/countries/data/countries/PN.yaml +27 -27
  334. data/lib/countries/data/countries/PR.yaml +30 -30
  335. data/lib/countries/data/countries/PS.yaml +31 -32
  336. data/lib/countries/data/countries/PT.yaml +34 -34
  337. data/lib/countries/data/countries/PW.yaml +26 -26
  338. data/lib/countries/data/countries/PY.yaml +30 -30
  339. data/lib/countries/data/countries/QA.yaml +27 -28
  340. data/lib/countries/data/countries/RE.yaml +28 -28
  341. data/lib/countries/data/countries/RO.yaml +37 -37
  342. data/lib/countries/data/countries/RS.yaml +28 -28
  343. data/lib/countries/data/countries/RU.yaml +28 -28
  344. data/lib/countries/data/countries/RW.yaml +31 -32
  345. data/lib/countries/data/countries/SA.yaml +33 -28
  346. data/lib/countries/data/countries/SB.yaml +28 -29
  347. data/lib/countries/data/countries/SC.yaml +29 -30
  348. data/lib/countries/data/countries/SD.yaml +30 -30
  349. data/lib/countries/data/countries/SE.yaml +37 -37
  350. data/lib/countries/data/countries/SG.yaml +32 -32
  351. data/lib/countries/data/countries/SH.yaml +29 -29
  352. data/lib/countries/data/countries/SI.yaml +36 -36
  353. data/lib/countries/data/countries/SJ.yaml +29 -29
  354. data/lib/countries/data/countries/SK.yaml +36 -36
  355. data/lib/countries/data/countries/SL.yaml +27 -28
  356. data/lib/countries/data/countries/SM.yaml +28 -28
  357. data/lib/countries/data/countries/SN.yaml +28 -28
  358. data/lib/countries/data/countries/SO.yaml +30 -30
  359. data/lib/countries/data/countries/SR.yaml +26 -27
  360. data/lib/countries/data/countries/SS.yaml +29 -30
  361. data/lib/countries/data/countries/ST.yaml +27 -28
  362. data/lib/countries/data/countries/SV.yaml +27 -27
  363. data/lib/countries/data/countries/SX.yaml +28 -29
  364. data/lib/countries/data/countries/SY.yaml +27 -28
  365. data/lib/countries/data/countries/SZ.yaml +30 -30
  366. data/lib/countries/data/countries/TC.yaml +30 -30
  367. data/lib/countries/data/countries/TD.yaml +29 -30
  368. data/lib/countries/data/countries/TF.yaml +30 -31
  369. data/lib/countries/data/countries/TG.yaml +27 -28
  370. data/lib/countries/data/countries/TH.yaml +35 -33
  371. data/lib/countries/data/countries/TJ.yaml +30 -30
  372. data/lib/countries/data/countries/TK.yaml +27 -28
  373. data/lib/countries/data/countries/TL.yaml +27 -28
  374. data/lib/countries/data/countries/TM.yaml +30 -30
  375. data/lib/countries/data/countries/TN.yaml +30 -30
  376. data/lib/countries/data/countries/TO.yaml +29 -30
  377. data/lib/countries/data/countries/TR.yaml +28 -28
  378. data/lib/countries/data/countries/TT.yaml +28 -29
  379. data/lib/countries/data/countries/TV.yaml +27 -28
  380. data/lib/countries/data/countries/TW.yaml +31 -29
  381. data/lib/countries/data/countries/TZ.yaml +30 -30
  382. data/lib/countries/data/countries/UA.yaml +34 -34
  383. data/lib/countries/data/countries/UG.yaml +29 -30
  384. data/lib/countries/data/countries/UM.yaml +29 -29
  385. data/lib/countries/data/countries/US.yaml +30 -28
  386. data/lib/countries/data/countries/UY.yaml +28 -28
  387. data/lib/countries/data/countries/UZ.yaml +30 -30
  388. data/lib/countries/data/countries/VA.yaml +31 -31
  389. data/lib/countries/data/countries/VC.yaml +29 -29
  390. data/lib/countries/data/countries/VE.yaml +28 -28
  391. data/lib/countries/data/countries/VG.yaml +30 -30
  392. data/lib/countries/data/countries/VI.yaml +29 -28
  393. data/lib/countries/data/countries/VN.yaml +34 -28
  394. data/lib/countries/data/countries/VU.yaml +31 -32
  395. data/lib/countries/data/countries/WF.yaml +29 -29
  396. data/lib/countries/data/countries/WS.yaml +29 -30
  397. data/lib/countries/data/countries/YE.yaml +27 -28
  398. data/lib/countries/data/countries/YT.yaml +26 -26
  399. data/lib/countries/data/countries/ZA.yaml +40 -40
  400. data/lib/countries/data/countries/ZM.yaml +28 -28
  401. data/lib/countries/data/countries/ZW.yaml +31 -32
  402. data/lib/countries/data/subdivisions/AD.yaml +42 -28
  403. data/lib/countries/data/subdivisions/AE.yaml +161 -63
  404. data/lib/countries/data/subdivisions/AF.yaml +719 -419
  405. data/lib/countries/data/subdivisions/AG.yaml +152 -76
  406. data/lib/countries/data/subdivisions/AL.yaml +264 -468
  407. data/lib/countries/data/subdivisions/AM.yaml +247 -88
  408. data/lib/countries/data/subdivisions/AO.yaml +362 -144
  409. data/lib/countries/data/subdivisions/AR.yaml +474 -187
  410. data/lib/countries/data/subdivisions/AT.yaml +211 -72
  411. data/lib/countries/data/subdivisions/AU.yaml +220 -64
  412. data/lib/countries/data/subdivisions/AZ.yaml +1783 -803
  413. data/lib/countries/data/subdivisions/BA.yaml +120 -95
  414. data/lib/countries/data/subdivisions/BB.yaml +201 -88
  415. data/lib/countries/data/subdivisions/BD.yaml +1288 -543
  416. data/lib/countries/data/subdivisions/BE.yaml +369 -166
  417. data/lib/countries/data/subdivisions/BF.yaml +2976 -2291
  418. data/lib/countries/data/subdivisions/BG.yaml +628 -219
  419. data/lib/countries/data/subdivisions/BH.yaml +70 -46
  420. data/lib/countries/data/subdivisions/BI.yaml +407 -213
  421. data/lib/countries/data/subdivisions/BJ.yaml +238 -96
  422. data/lib/countries/data/subdivisions/BN.yaml +67 -32
  423. data/lib/countries/data/subdivisions/BO.yaml +166 -72
  424. data/lib/countries/data/subdivisions/BQ.yaml +66 -24
  425. data/lib/countries/data/subdivisions/BR.yaml +716 -216
  426. data/lib/countries/data/subdivisions/BS.yaml +961 -566
  427. data/lib/countries/data/subdivisions/BT.yaml +366 -160
  428. data/lib/countries/data/subdivisions/BW.yaml +499 -261
  429. data/lib/countries/data/subdivisions/BY.yaml +205 -126
  430. data/lib/countries/data/subdivisions/BZ.yaml +103 -48
  431. data/lib/countries/data/subdivisions/CA.yaml +371 -105
  432. data/lib/countries/data/subdivisions/CD.yaml +752 -406
  433. data/lib/countries/data/subdivisions/CF.yaml +308 -136
  434. data/lib/countries/data/subdivisions/CG.yaml +231 -90
  435. data/lib/countries/data/subdivisions/CH.yaml +619 -208
  436. data/lib/countries/data/subdivisions/CI.yaml +415 -322
  437. data/lib/countries/data/subdivisions/CL.yaml +336 -153
  438. data/lib/countries/data/subdivisions/CM.yaml +200 -80
  439. data/lib/countries/data/subdivisions/CN.yaml +2290 -1650
  440. data/lib/countries/data/subdivisions/CO.yaml +676 -264
  441. data/lib/countries/data/subdivisions/CR.yaml +126 -56
  442. data/lib/countries/data/subdivisions/CU.yaml +284 -128
  443. data/lib/countries/data/subdivisions/CV.yaml +677 -363
  444. data/lib/countries/data/subdivisions/CY.yaml +108 -48
  445. data/lib/countries/data/subdivisions/CZ.yaml +2064 -1347
  446. data/lib/countries/data/subdivisions/DE.yaml +500 -144
  447. data/lib/countries/data/subdivisions/DJ.yaml +116 -48
  448. data/lib/countries/data/subdivisions/DK.yaml +113 -236
  449. data/lib/countries/data/subdivisions/DM.yaml +169 -80
  450. data/lib/countries/data/subdivisions/DO.yaml +702 -248
  451. data/lib/countries/data/subdivisions/DZ.yaml +857 -384
  452. data/lib/countries/data/subdivisions/EC.yaml +499 -276
  453. data/lib/countries/data/subdivisions/EE.yaml +826 -152
  454. data/lib/countries/data/subdivisions/EG.yaml +499 -216
  455. data/lib/countries/data/subdivisions/ER.yaml +115 -48
  456. data/lib/countries/data/subdivisions/ES.yaml +2773 -1401
  457. data/lib/countries/data/subdivisions/ET.yaml +218 -88
  458. data/lib/countries/data/subdivisions/FI.yaml +294 -123
  459. data/lib/countries/data/subdivisions/FJ.yaml +557 -264
  460. data/lib/countries/data/subdivisions/FM.yaml +67 -32
  461. data/lib/countries/data/subdivisions/FR.yaml +2967 -1258
  462. data/lib/countries/data/subdivisions/GA.yaml +168 -72
  463. data/lib/countries/data/subdivisions/GB.yaml +5311 -2625
  464. data/lib/countries/data/subdivisions/GD.yaml +121 -56
  465. data/lib/countries/data/subdivisions/GE.yaml +250 -96
  466. data/lib/countries/data/subdivisions/GH.yaml +259 -113
  467. data/lib/countries/data/subdivisions/GL.yaml +77 -43
  468. data/lib/countries/data/subdivisions/GM.yaml +130 -48
  469. data/lib/countries/data/subdivisions/GN.yaml +981 -503
  470. data/lib/countries/data/subdivisions/GQ.yaml +155 -72
  471. data/lib/countries/data/subdivisions/GR.yaml +276 -677
  472. data/lib/countries/data/subdivisions/GT.yaml +373 -176
  473. data/lib/countries/data/subdivisions/GW.yaml +211 -79
  474. data/lib/countries/data/subdivisions/GY.yaml +173 -80
  475. data/lib/countries/data/subdivisions/HN.yaml +292 -144
  476. data/lib/countries/data/subdivisions/HR.yaml +450 -168
  477. data/lib/countries/data/subdivisions/HT.yaml +223 -106
  478. data/lib/countries/data/subdivisions/HU.yaml +876 -381
  479. data/lib/countries/data/subdivisions/ID.yaml +2417 -1858
  480. data/lib/countries/data/subdivisions/IE.yaml +886 -429
  481. data/lib/countries/data/subdivisions/IL.yaml +120 -48
  482. data/lib/countries/data/subdivisions/IN.yaml +1092 -535
  483. data/lib/countries/data/subdivisions/IQ.yaml +388 -191
  484. data/lib/countries/data/subdivisions/IR.yaml +1675 -1305
  485. data/lib/countries/data/subdivisions/IS.yaml +580 -67
  486. data/lib/countries/data/subdivisions/IT.yaml +8979 -7307
  487. data/lib/countries/data/subdivisions/JM.yaml +257 -112
  488. data/lib/countries/data/subdivisions/JO.yaml +205 -96
  489. data/lib/countries/data/subdivisions/JP.yaml +997 -376
  490. data/lib/countries/data/subdivisions/KE.yaml +975 -273
  491. data/lib/countries/data/subdivisions/KG.yaml +251 -118
  492. data/lib/countries/data/subdivisions/KH.yaml +464 -194
  493. data/lib/countries/data/subdivisions/KI.yaml +60 -24
  494. data/lib/countries/data/subdivisions/KM.yaml +52 -24
  495. data/lib/countries/data/subdivisions/KN.yaml +324 -112
  496. data/lib/countries/data/subdivisions/KP.yaml +291 -186
  497. data/lib/countries/data/subdivisions/KR.yaml +410 -128
  498. data/lib/countries/data/subdivisions/KW.yaml +93 -48
  499. data/lib/countries/data/subdivisions/KZ.yaml +361 -189
  500. data/lib/countries/data/subdivisions/LA.yaml +306 -149
  501. data/lib/countries/data/subdivisions/LB.yaml +156 -62
  502. data/lib/countries/data/subdivisions/LC.yaml +231 -55
  503. data/lib/countries/data/subdivisions/LI.yaml +197 -88
  504. data/lib/countries/data/subdivisions/LK.yaml +809 -431
  505. data/lib/countries/data/subdivisions/LR.yaml +346 -187
  506. data/lib/countries/data/subdivisions/LS.yaml +159 -80
  507. data/lib/countries/data/subdivisions/LT.yaml +2146 -1114
  508. data/lib/countries/data/subdivisions/LU.yaml +292 -146
  509. data/lib/countries/data/subdivisions/LV.yaml +2447 -5217
  510. data/lib/countries/data/subdivisions/LY.yaml +361 -162
  511. data/lib/countries/data/subdivisions/MA.yaml +1604 -1424
  512. data/lib/countries/data/subdivisions/MC.yaml +396 -129
  513. data/lib/countries/data/subdivisions/MD.yaml +1130 -590
  514. data/lib/countries/data/subdivisions/ME.yaml +465 -186
  515. data/lib/countries/data/subdivisions/MG.yaml +99 -48
  516. data/lib/countries/data/subdivisions/MH.yaml +526 -276
  517. data/lib/countries/data/subdivisions/MK.yaml +3636 -3147
  518. data/lib/countries/data/subdivisions/ML.yaml +197 -70
  519. data/lib/countries/data/subdivisions/MM.yaml +302 -112
  520. data/lib/countries/data/subdivisions/MN.yaml +443 -176
  521. data/lib/countries/data/subdivisions/MR.yaml +253 -111
  522. data/lib/countries/data/subdivisions/MT.yaml +1127 -544
  523. data/lib/countries/data/subdivisions/MU.yaml +241 -293
  524. data/lib/countries/data/subdivisions/MV.yaml +464 -263
  525. data/lib/countries/data/subdivisions/MW.yaml +689 -337
  526. data/lib/countries/data/subdivisions/MX.yaml +733 -260
  527. data/lib/countries/data/subdivisions/MY.yaml +352 -128
  528. data/lib/countries/data/subdivisions/MZ.yaml +202 -83
  529. data/lib/countries/data/subdivisions/NA.yaml +256 -129
  530. data/lib/countries/data/subdivisions/NE.yaml +178 -64
  531. data/lib/countries/data/subdivisions/NG.yaml +907 -296
  532. data/lib/countries/data/subdivisions/NI.yaml +277 -136
  533. data/lib/countries/data/subdivisions/NL.yaml +566 -263
  534. data/lib/countries/data/subdivisions/NO.yaml +653 -1093
  535. data/lib/countries/data/subdivisions/NP.yaml +525 -228
  536. data/lib/countries/data/subdivisions/NR.yaml +274 -112
  537. data/lib/countries/data/subdivisions/NZ.yaml +357 -197
  538. data/lib/countries/data/subdivisions/OM.yaml +345 -246
  539. data/lib/countries/data/subdivisions/PA.yaml +230 -113
  540. data/lib/countries/data/subdivisions/PE.yaml +478 -242
  541. data/lib/countries/data/subdivisions/PG.yaml +468 -237
  542. data/lib/countries/data/subdivisions/PH.yaml +5157 -3894
  543. data/lib/countries/data/subdivisions/PK.yaml +245 -204
  544. data/lib/countries/data/subdivisions/PL.yaml +131 -32
  545. data/lib/countries/data/subdivisions/PS.yaml +273 -0
  546. data/lib/countries/data/subdivisions/PT.yaml +375 -173
  547. data/lib/countries/data/subdivisions/PW.yaml +285 -128
  548. data/lib/countries/data/subdivisions/PY.yaml +339 -144
  549. data/lib/countries/data/subdivisions/QA.yaml +149 -97
  550. data/lib/countries/data/subdivisions/RO.yaml +771 -336
  551. data/lib/countries/data/subdivisions/RS.yaml +642 -261
  552. data/lib/countries/data/subdivisions/RU.yaml +1958 -665
  553. data/lib/countries/data/subdivisions/RW.yaml +107 -40
  554. data/lib/countries/data/subdivisions/SA.yaml +247 -104
  555. data/lib/countries/data/subdivisions/SB.yaml +179 -80
  556. data/lib/countries/data/subdivisions/SC.yaml +493 -184
  557. data/lib/countries/data/subdivisions/SD.yaml +832 -673
  558. data/lib/countries/data/subdivisions/SE.yaml +456 -237
  559. data/lib/countries/data/subdivisions/SG.yaml +81 -54
  560. data/lib/countries/data/subdivisions/SH.yaml +73 -31
  561. data/lib/countries/data/subdivisions/SI.yaml +3823 -1590
  562. data/lib/countries/data/subdivisions/SK.yaml +137 -64
  563. data/lib/countries/data/subdivisions/SL.yaml +85 -31
  564. data/lib/countries/data/subdivisions/SM.yaml +168 -72
  565. data/lib/countries/data/subdivisions/SN.yaml +352 -193
  566. data/lib/countries/data/subdivisions/SO.yaml +329 -144
  567. data/lib/countries/data/subdivisions/SR.yaml +168 -80
  568. data/lib/countries/data/subdivisions/SS.yaml +206 -0
  569. data/lib/countries/data/subdivisions/ST.yaml +51 -26
  570. data/lib/countries/data/subdivisions/SV.yaml +245 -112
  571. data/lib/countries/data/subdivisions/SY.yaml +234 -112
  572. data/lib/countries/data/subdivisions/SZ.yaml +69 -32
  573. data/lib/countries/data/subdivisions/TD.yaml +591 -312
  574. data/lib/countries/data/subdivisions/TG.yaml +80 -40
  575. data/lib/countries/data/subdivisions/TH.yaml +1565 -652
  576. data/lib/countries/data/subdivisions/TJ.yaml +209 -128
  577. data/lib/countries/data/subdivisions/TL.yaml +222 -104
  578. data/lib/countries/data/subdivisions/TM.yaml +122 -40
  579. data/lib/countries/data/subdivisions/TN.yaml +436 -192
  580. data/lib/countries/data/subdivisions/TO.yaml +80 -40
  581. data/lib/countries/data/subdivisions/TR.yaml +1898 -648
  582. data/lib/countries/data/subdivisions/TT.yaml +355 -204
  583. data/lib/countries/data/subdivisions/TV.yaml +162 -94
  584. data/lib/countries/data/subdivisions/TW.yaml +514 -251
  585. data/lib/countries/data/subdivisions/TZ.yaml +692 -208
  586. data/lib/countries/data/subdivisions/UA.yaml +533 -217
  587. data/lib/countries/data/subdivisions/UG.yaml +5416 -3641
  588. data/lib/countries/data/subdivisions/UM.yaml +216 -72
  589. data/lib/countries/data/subdivisions/US.yaml +1692 -483
  590. data/lib/countries/data/subdivisions/UY.yaml +429 -195
  591. data/lib/countries/data/subdivisions/UZ.yaml +303 -113
  592. data/lib/countries/data/subdivisions/VC.yaml +107 -48
  593. data/lib/countries/data/subdivisions/VE.yaml +481 -200
  594. data/lib/countries/data/subdivisions/VN.yaml +1274 -543
  595. data/lib/countries/data/subdivisions/VU.yaml +104 -48
  596. data/lib/countries/data/subdivisions/WF.yaml +66 -0
  597. data/lib/countries/data/subdivisions/WS.yaml +211 -88
  598. data/lib/countries/data/subdivisions/YE.yaml +534 -289
  599. data/lib/countries/data/subdivisions/ZA.yaml +283 -131
  600. data/lib/countries/data/subdivisions/ZM.yaml +167 -72
  601. data/lib/countries/data/subdivisions/ZW.yaml +162 -73
  602. data/lib/countries/data/translations/countries-ab.yaml +254 -0
  603. data/lib/countries/data/translations/countries-af.yaml +254 -0
  604. data/lib/countries/data/translations/countries-ak.yaml +254 -0
  605. data/lib/countries/data/translations/countries-am.yaml +254 -0
  606. data/lib/countries/data/translations/countries-an.yaml +254 -0
  607. data/lib/countries/data/translations/countries-ar.yaml +254 -0
  608. data/lib/countries/data/translations/countries-as.yaml +254 -0
  609. data/lib/countries/data/translations/countries-ay.yaml +254 -0
  610. data/lib/countries/data/translations/countries-az.yaml +254 -0
  611. data/lib/countries/data/translations/countries-ba.yaml +254 -0
  612. data/lib/countries/data/translations/countries-be.yaml +254 -0
  613. data/lib/countries/data/translations/countries-bg.yaml +254 -0
  614. data/lib/countries/data/translations/countries-bi.yaml +254 -0
  615. data/lib/countries/data/translations/countries-bn.yaml +254 -0
  616. data/lib/countries/data/translations/countries-bn_IN.yaml +254 -0
  617. data/lib/countries/data/translations/countries-br.yaml +254 -0
  618. data/lib/countries/data/translations/countries-bs.yaml +254 -0
  619. data/lib/countries/data/translations/countries-ca.yaml +254 -0
  620. data/lib/countries/data/translations/countries-ce.yaml +254 -0
  621. data/lib/countries/data/translations/countries-ch.yaml +254 -0
  622. data/lib/countries/data/translations/countries-cs.yaml +254 -0
  623. data/lib/countries/data/translations/countries-cv.yaml +254 -0
  624. data/lib/countries/data/translations/countries-cy.yaml +254 -0
  625. data/lib/countries/data/translations/countries-da.yaml +254 -0
  626. data/lib/countries/data/translations/countries-de.yaml +254 -0
  627. data/lib/countries/data/translations/countries-dv.yaml +254 -0
  628. data/lib/countries/data/translations/countries-dz.yaml +254 -0
  629. data/lib/countries/data/translations/countries-ee.yaml +254 -0
  630. data/lib/countries/data/translations/countries-el.yaml +254 -0
  631. data/lib/countries/data/translations/countries-en.yaml +254 -0
  632. data/lib/countries/data/translations/countries-eo.yaml +254 -0
  633. data/lib/countries/data/translations/countries-es.yaml +254 -0
  634. data/lib/countries/data/translations/countries-et.yaml +254 -0
  635. data/lib/countries/data/translations/countries-eu.yaml +254 -0
  636. data/lib/countries/data/translations/countries-fa.yaml +254 -0
  637. data/lib/countries/data/translations/countries-ff.yaml +254 -0
  638. data/lib/countries/data/translations/countries-fi.yaml +254 -0
  639. data/lib/countries/data/translations/countries-fo.yaml +254 -0
  640. data/lib/countries/data/translations/countries-fr.yaml +254 -0
  641. data/lib/countries/data/translations/countries-fy.yaml +254 -0
  642. data/lib/countries/data/translations/countries-ga.yaml +254 -0
  643. data/lib/countries/data/translations/countries-gl.yaml +254 -0
  644. data/lib/countries/data/translations/countries-gn.yaml +254 -0
  645. data/lib/countries/data/translations/countries-gu.yaml +254 -0
  646. data/lib/countries/data/translations/countries-gv.yaml +254 -0
  647. data/lib/countries/data/translations/countries-ha.yaml +254 -0
  648. data/lib/countries/data/translations/countries-he.yaml +254 -0
  649. data/lib/countries/data/translations/countries-hi.yaml +254 -0
  650. data/lib/countries/data/translations/countries-hr.yaml +254 -0
  651. data/lib/countries/data/translations/countries-ht.yaml +254 -0
  652. data/lib/countries/data/translations/countries-hu.yaml +254 -0
  653. data/lib/countries/data/translations/countries-hy.yaml +254 -0
  654. data/lib/countries/data/translations/countries-ia.yaml +254 -0
  655. data/lib/countries/data/translations/countries-id.yaml +254 -0
  656. data/lib/countries/data/translations/countries-io.yaml +254 -0
  657. data/lib/countries/data/translations/countries-is.yaml +254 -0
  658. data/lib/countries/data/translations/countries-it.yaml +254 -0
  659. data/lib/countries/data/translations/countries-iu.yaml +254 -0
  660. data/lib/countries/data/translations/countries-ja.yaml +254 -0
  661. data/lib/countries/data/translations/countries-ka.yaml +254 -0
  662. data/lib/countries/data/translations/countries-ki.yaml +254 -0
  663. data/lib/countries/data/translations/countries-kk.yaml +254 -0
  664. data/lib/countries/data/translations/countries-kl.yaml +254 -0
  665. data/lib/countries/data/translations/countries-km.yaml +254 -0
  666. data/lib/countries/data/translations/countries-kn.yaml +254 -0
  667. data/lib/countries/data/translations/countries-ko.yaml +254 -0
  668. data/lib/countries/data/translations/countries-ku.yaml +254 -0
  669. data/lib/countries/data/translations/countries-kv.yaml +254 -0
  670. data/lib/countries/data/translations/countries-kw.yaml +254 -0
  671. data/lib/countries/data/translations/countries-ky.yaml +254 -0
  672. data/lib/countries/data/translations/countries-lo.yaml +254 -0
  673. data/lib/countries/data/translations/countries-lt.yaml +254 -0
  674. data/lib/countries/data/translations/countries-lv.yaml +254 -0
  675. data/lib/countries/data/translations/countries-mi.yaml +254 -0
  676. data/lib/countries/data/translations/countries-mk.yaml +254 -0
  677. data/lib/countries/data/translations/countries-ml.yaml +254 -0
  678. data/lib/countries/data/translations/countries-mn.yaml +254 -0
  679. data/lib/countries/data/translations/countries-mr.yaml +254 -0
  680. data/lib/countries/data/translations/countries-ms.yaml +254 -0
  681. data/lib/countries/data/translations/countries-mt.yaml +254 -0
  682. data/lib/countries/data/translations/countries-my.yaml +254 -0
  683. data/lib/countries/data/translations/countries-na.yaml +254 -0
  684. data/lib/countries/data/translations/countries-nb.yaml +254 -0
  685. data/lib/countries/data/translations/countries-ne.yaml +254 -0
  686. data/lib/countries/data/translations/countries-nl.yaml +254 -0
  687. data/lib/countries/data/translations/countries-nn.yaml +254 -0
  688. data/lib/countries/data/translations/countries-nv.yaml +254 -0
  689. data/lib/countries/data/translations/countries-oc.yaml +254 -0
  690. data/lib/countries/data/translations/countries-or.yaml +254 -0
  691. data/lib/countries/data/translations/countries-pa.yaml +254 -0
  692. data/lib/countries/data/translations/countries-pi.yaml +254 -0
  693. data/lib/countries/data/translations/countries-pl.yaml +254 -0
  694. data/lib/countries/data/translations/countries-ps.yaml +254 -0
  695. data/lib/countries/data/translations/countries-pt.yaml +254 -0
  696. data/lib/countries/data/translations/countries-pt_BR.yaml +254 -0
  697. data/lib/countries/data/translations/countries-ro.yaml +254 -0
  698. data/lib/countries/data/translations/countries-ru.yaml +254 -0
  699. data/lib/countries/data/translations/countries-rw.yaml +254 -0
  700. data/lib/countries/data/translations/countries-sc.yaml +254 -0
  701. data/lib/countries/data/translations/countries-sd.yaml +254 -0
  702. data/lib/countries/data/translations/countries-si.yaml +254 -0
  703. data/lib/countries/data/translations/countries-sk.yaml +254 -0
  704. data/lib/countries/data/translations/countries-sl.yaml +254 -0
  705. data/lib/countries/data/translations/countries-so.yaml +254 -0
  706. data/lib/countries/data/translations/countries-sq.yaml +254 -0
  707. data/lib/countries/data/translations/countries-sr.yaml +254 -0
  708. data/lib/countries/data/translations/countries-sv.yaml +254 -0
  709. data/lib/countries/data/translations/countries-sw.yaml +254 -0
  710. data/lib/countries/data/translations/countries-ta.yaml +254 -0
  711. data/lib/countries/data/translations/countries-te.yaml +254 -0
  712. data/lib/countries/data/translations/countries-tg.yaml +254 -0
  713. data/lib/countries/data/translations/countries-th.yaml +254 -0
  714. data/lib/countries/data/translations/countries-ti.yaml +254 -0
  715. data/lib/countries/data/translations/countries-tk.yaml +254 -0
  716. data/lib/countries/data/translations/countries-tl.yaml +254 -0
  717. data/lib/countries/data/translations/countries-tr.yaml +254 -0
  718. data/lib/countries/data/translations/countries-tt.yaml +254 -0
  719. data/lib/countries/data/translations/countries-ug.yaml +254 -0
  720. data/lib/countries/data/translations/countries-uk.yaml +254 -0
  721. data/lib/countries/data/translations/countries-ur.yaml +254 -0
  722. data/lib/countries/data/translations/countries-uz.yaml +254 -0
  723. data/lib/countries/data/translations/countries-ve.yaml +254 -0
  724. data/lib/countries/data/translations/countries-vi.yaml +254 -0
  725. data/lib/countries/data/translations/countries-wa.yaml +254 -0
  726. data/lib/countries/data/translations/countries-wo.yaml +254 -0
  727. data/lib/countries/data/translations/countries-xh.yaml +254 -0
  728. data/lib/countries/data/translations/countries-yo.yaml +254 -0
  729. data/lib/countries/data/translations/countries-zh_CN.yaml +254 -0
  730. data/lib/countries/data/translations/countries-zh_HK.yaml +254 -0
  731. data/lib/countries/data/translations/countries-zh_TW.yaml +254 -0
  732. data/lib/countries/data/translations/countries-zu.yaml +254 -0
  733. data/lib/countries/data.rb +106 -44
  734. data/lib/countries/global.rb +15 -3
  735. data/lib/countries/iso3166.rb +3 -1
  736. data/lib/countries/kwarg_struct.rb +2 -0
  737. data/lib/countries/mongoid.rb +5 -0
  738. data/lib/countries/sources/cldr/downloader.rb +16 -14
  739. data/lib/countries/sources/cldr/subdivision.rb +4 -0
  740. data/lib/countries/sources/cldr/subdivision_updater.rb +24 -17
  741. data/lib/countries/sources/local/cached_loader.rb +5 -0
  742. data/lib/countries/sources/local/subdivision.rb +6 -2
  743. data/lib/countries/sources.rb +2 -0
  744. data/lib/countries/structure.rb +4 -6
  745. data/lib/countries/subdivision.rb +21 -8
  746. data/lib/countries/tasks/geocoding.rake +21 -19
  747. data/lib/countries/tasks/postal_codes.rake +50 -0
  748. data/lib/countries/timezones.rb +9 -4
  749. data/lib/countries/translations.rb +5 -4
  750. data/lib/countries/version.rb +3 -1
  751. data/lib/countries.rb +1 -2
  752. data/spec/00_global_spec.rb +2 -0
  753. data/spec/configuration_spec.rb +11 -5
  754. data/spec/country_spec.rb +356 -79
  755. data/spec/data_spec.rb +105 -30
  756. data/spec/mongoid_spec.rb +2 -2
  757. data/spec/perf_spec.rb +16 -16
  758. data/spec/spec_helper.rb +2 -0
  759. data/spec/subdivision_spec.rb +17 -1
  760. data/spec/thread_safety_spec.rb +47 -0
  761. data/spec/timezone_spec.rb +2 -0
  762. metadata +205 -78
  763. data/.travis.yml +0 -16
  764. data/lib/countries/cache/locales/zh.json +0 -1
  765. data/lib/countries/data/subdivisions/AI.yaml +0 -183
  766. data/lib/countries/data/subdivisions/AS.yaml +0 -66
  767. data/lib/countries/data/subdivisions/AX.yaml +0 -40
  768. data/lib/countries/data/subdivisions/BM.yaml +0 -144
  769. data/lib/countries/data/subdivisions/CK.yaml +0 -144
  770. data/lib/countries/data/subdivisions/EH.yaml +0 -72
  771. data/lib/countries/data/subdivisions/FO.yaml +0 -79
  772. data/lib/countries/data/subdivisions/GG.yaml +0 -144
  773. data/lib/countries/data/subdivisions/GU.yaml +0 -248
  774. data/lib/countries/data/subdivisions/HK.yaml +0 -235
  775. data/lib/countries/data/subdivisions/IM.yaml +0 -313
  776. data/lib/countries/data/subdivisions/JE.yaml +0 -157
  777. data/lib/countries/data/subdivisions/KY.yaml +0 -73
  778. data/lib/countries/data/subdivisions/MP.yaml +0 -53
  779. data/lib/countries/data/subdivisions/MS.yaml +0 -40
  780. data/lib/countries/data/subdivisions/NC.yaml +0 -40
  781. data/lib/countries/data/subdivisions/PF.yaml +0 -66
  782. data/lib/countries/data/subdivisions/PM.yaml +0 -27
  783. data/lib/countries/data/subdivisions/PR.yaml +0 -1015
  784. data/lib/countries/data/subdivisions/SJ.yaml +0 -27
  785. data/lib/countries/data/subdivisions/TF.yaml +0 -49
  786. data/lib/countries/data/subdivisions/TK.yaml +0 -40
  787. data/lib/countries/data/subdivisions/VI.yaml +0 -40
  788. data/lib/countries/data/subdivisions/YT.yaml +0 -222
  789. data/lib/countries/data/translation_corrections.yaml +0 -32
  790. data/lib/countries/setup.rb +0 -18
data/README.markdown CHANGED
@@ -2,39 +2,38 @@
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) [![Build Status](https://travis-ci.org/hexorx/countries.svg)](https://travis-ci.org/hexorx/countries) [![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
+ [![CodeQL](https://github.com/countries/countries/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/codeql-analysis.yml)
7
+
6
8
 
7
9
  ## Installation
8
10
 
9
- ``` bash
10
- gem install countries
11
- ```
11
+ ```bash
12
+ gem install countries
13
+ ```
12
14
 
13
- Or you can install via Bundler if you are using Rails. Add this line to your application's Gemfile:
15
+ Or you can install via Bundler if you are using Rails:
14
16
 
15
- ```ruby
16
- gem 'countries'
17
+ ```bash
18
+ bundle add countries
17
19
  ```
18
20
 
19
- And then execute:
20
-
21
- $ bundle
22
-
23
21
  ## Basic Usage
24
22
 
25
23
  Simply load a new country object using Country.new(*alpha2*) or the shortcut Country[*alpha2*]. An example works best.
26
24
 
27
- ``` ruby
25
+ ```ruby
28
26
  c = ISO3166::Country.new('US')
29
27
  ```
30
28
 
31
29
  ## Configuration
32
30
 
33
- #### Country Helper
31
+ ### Country Helper
32
+
34
33
  Some apps might not want to constantly call `ISO3166::Country` this gem has a
35
34
  helper that can provide a `Country` class
36
35
 
37
- ``` ruby
36
+ ```ruby
38
37
  # With global Country Helper
39
38
  c = Country['US']
40
39
  ```
@@ -43,58 +42,35 @@ c = Country['US']
43
42
 
44
43
  To Use
45
44
 
46
- ``` ruby
47
- gem 'countries', require: 'countries/global'
48
- ```
49
-
50
- ## Upgrading to 3.x
51
-
52
- We dropped currency support via money by default, see [instructions](README.markdown#Currencies) if you are using currency featues
53
-
54
- ## Upgrading Country Helper to > 1.2.0
55
- ``` ruby
56
- gem 'countries', require: 'global'
57
- ```
58
-
59
- has become
60
- ``` ruby
45
+ ```ruby
61
46
  gem 'countries', require: 'countries/global'
62
47
  ```
63
48
 
64
- ## Selective Loading of Locales
49
+ ## Upgrading to 4.2 and 5.x
65
50
 
66
- As of 2.0 you can selectively load locales to reduce memory usage in production.
67
-
68
- By default we load I18n.available_locales if I18n is present, otherwise only [:en]. This means almost any rails environment will only bring in it's supported translations.
51
+ Release 4.2.0 introduced changes to name attributes and finders and deprecated several methods to resolve some existing confusion regardign official ISO country names vs. the "common names" that are commonly used.
69
52
 
70
- You can add all the locales like this.
53
+ The 5.0 release removed these deprecated methods and also removed support for Ruby 2.5 and 2.6
71
54
 
72
- ``` ruby
73
- ISO3166.configure do |config|
74
- config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
75
- end
76
- ```
77
-
78
- or something a bit more simple
79
- ``` ruby
80
- ISO3166.configure do |config|
81
- config.locales = [:en, :de, :fr, :es]
82
- end
83
- ```
55
+ Plase see [UPGRADE.md](../master/UPGRADE.md) for more information
84
56
 
85
57
  ## Attribute-Based Finder Methods
86
58
 
87
59
  You can lookup a country or an array of countries using any of the data attributes via the find\_country\_by_*attribute* dynamic methods:
88
60
 
89
- ``` ruby
90
- c = ISO3166::Country.find_country_by_name('united states')
61
+ ```ruby
62
+ c = ISO3166::Country.find_country_by_iso_short_name('italy')
63
+ c = ISO3166::Country.find_country_by_any_name('united states')
64
+ h = ISO3166::Country.find_all_by(:translated_names, 'França')
91
65
  list = ISO3166::Country.find_all_countries_by_region('Americas')
92
- c = ISO3166::Country.find_country_by_alpha3('can')
66
+ c = ISO3166::Country.find_country_by_alpha2("FR")
93
67
  ```
94
68
 
95
- For a list of available attributes please see ISO3166::DEFAULT_COUNTRY_HASH.
69
+ For a list of available attributes please see `ISO3166::DEFAULT_COUNTRY_HASH`.
96
70
  Note: searches are *case insensitive and ignore accents*.
97
71
 
72
+ _Please note that `find_by_name`, `find_by_names`, `find_*_by_name` and `find_*_by_names` methods were removed in 5.0. See [UPGRADE.md](../master/UPGRADE.md) for more information_
73
+
98
74
  ## Country Info
99
75
 
100
76
  ### Identification Codes
@@ -106,10 +82,12 @@ c.alpha3 # => "USA"
106
82
  c.gec # => "US"
107
83
  ```
108
84
 
109
- ### Names & Translations
85
+ ### Names & Translations
110
86
 
111
87
  ```ruby
112
- c.name # => "United States"
88
+ c.iso_long_name # => "The United States of America"
89
+ c.iso_short_name # => "United States of America"
90
+ c.common_name # => "United States" (This is a shortcut for c.translations('en'))
113
91
  c.unofficial_names # => ["United States of America", "Vereinigte Staaten von Amerika", "États-Unis", "Estados Unidos"]
114
92
 
115
93
  # Get the names for a country translated to its local languages
@@ -121,31 +99,45 @@ c.local_name # => "België"
121
99
  c.translation('de') # => 'Vereinigte Staaten von Amerika'
122
100
  c.translations['fr'] # => "États-Unis"
123
101
 
102
+ # Get all translations for a locale, defaults to 'en'
124
103
  ISO3166::Country.translations # {"DE"=>"Germany",...}
125
- ISO3166::Country.translations('DE') # {"DE"=>"Deutschland",...}
104
+ ISO3166::Country.translations('de') # {"DE"=>"Deutschland",...}
126
105
  ISO3166::Country.all_translated # ['Germany', ...]
127
- ISO3166::Country.all_translated('DE') # ['Deutschland', ...]
106
+ ISO3166::Country.all_translated('de') # ['Deutschland', ...]
107
+
108
+ # Nationality
109
+ c.nationality # => "American"
128
110
  ```
129
111
 
130
112
  ### Subdivisions & States
131
113
 
132
- ``` ruby
114
+ ```ruby
133
115
  c.subdivisions # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
116
+ c.subdivision_types # => ["state", "outlying_area", "district"]
117
+ c.subdivisions_of_types(['state']) # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
118
+ c.humanized_subdivision_types # => ["State", "Outlying area", "District"]
119
+
120
+ # This is now deprecated. #states is an alias of #subdivisions and returns all subdivisions regardless of type
134
121
  c.states # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
122
+
123
+
124
+ # Get specific translations for the country subdivisions
125
+ c.subdivision_names_with_codes('es') #=> [ ..., ["Nuevo Hampshire", "NH"], ["Nueva Jersey", "NJ"], ... ]
135
126
  ```
136
127
 
137
128
  ### Location
138
129
 
139
- ``` ruby
140
- c.latitude # => "38 00 N"
141
- c.longitude # => "97 00 W"
142
- c.latitude_dec # => 39.44325637817383
143
- c.longitude_dec # => -98.95733642578125
130
+ ```ruby
131
+ c.latitude # => "37.09024"
132
+ c.longitude # => "-95.712891"
144
133
 
134
+ c.world_region # => "AMER"
145
135
  c.region # => "Americas"
146
136
  c.subregion # => "Northern America"
147
137
  ```
148
138
 
139
+ Please note that `latitude_dec` and `longitude_dec` were deprecated on release 4.2 and removed in 5.0. These attributes have been redundant for several years, since the `latitude` and `longitude` fields have been switched decimal coordinates.
140
+
149
141
  ### Timezones **(optional)**
150
142
 
151
143
  Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do this for you.
@@ -154,15 +146,15 @@ Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do thi
154
146
  gem 'tzinfo', '~> 1.2', '>= 1.2.2'
155
147
  ```
156
148
 
157
- ``` ruby
149
+ ```ruby
158
150
  c.timezones.zone_identifiers # => ["America/New_York", "America/Detroit", "America/Kentucky/Louisville", ...]
159
- c.timezones.zone_info # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/CountryInfo)
160
- c.timezones # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
151
+ c.timezones.zone_info # see [tzinfo docs](https://www.rubydoc.info/gems/tzinfo/TZInfo/CountryTimezone)
152
+ c.timezones # see [tzinfo docs](https://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
161
153
  ```
162
154
 
163
155
  ### Telephone Routing (E164)
164
156
 
165
- ``` ruby
157
+ ```ruby
166
158
  c.country_code # => "1"
167
159
  c.national_destination_code_lengths # => 3
168
160
  c.national_number_lengths # => 10
@@ -172,38 +164,63 @@ c.national_prefix # => "1"
172
164
 
173
165
  ### Boundary Boxes
174
166
 
175
- ``` ruby
167
+ ```ruby
176
168
  c.min_longitude # => '45'
177
169
  c.min_latitude # => '22.166667'
178
170
  c.max_longitude # => '58'
179
171
  c.max_latitude # => '26.133333'
172
+
173
+ c.bounds #> {"northeast"=>{"lat"=>22.166667, "lng"=>58}, "southwest"=>{"lat"=>26.133333, "lng"=>45}}
180
174
  ```
181
175
 
182
176
  ### European Union Membership
183
177
 
184
- ``` ruby
178
+ ```ruby
185
179
  c.in_eu? # => false
186
180
  ```
187
181
 
182
+ ### European Economic Area Membership
183
+
184
+ ```ruby
185
+ c.in_eea? # => false
186
+ ```
187
+
188
+ ### European Single Market Membership
189
+
190
+ ```ruby
191
+ c.in_esm? # => false
192
+ ```
193
+
194
+ ## Country Code in Emoji
195
+
196
+ ```ruby
197
+ c = Country['MY']
198
+ c.emoji_flag # => "🇲🇾"
199
+ ```
200
+
201
+ ### Plucking multiple attributes
202
+
203
+ ```ruby
204
+ ISO3166::Country.pluck(:alpha2, :iso_short_name) # => [["AD", "Andorra"], ["AE", "United Arab Emirates"], ...
205
+ ```
206
+
188
207
  ## Currencies
189
208
 
190
209
  To enable currencies extension please add the following to countries initializer.
191
210
 
192
- ``` ruby
211
+ ```ruby
193
212
  ISO3166.configuration.enable_currency_extension!
194
213
  ```
195
214
 
196
215
  Please note that it requires you to add "money" dependency to your gemfile.
197
216
 
198
- ``` ruby
217
+ ```ruby
199
218
  gem "money", "~> 6.9"
200
219
  ```
201
220
 
202
- **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
+ 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.
203
222
 
204
- 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.
205
-
206
- ``` ruby
223
+ ```ruby
207
224
  c = ISO3166::Country['us']
208
225
  c.currency.iso_code # => 'USD'
209
226
  c.currency.name # => 'United States Dollar'
@@ -212,29 +229,53 @@ c.currency.symbol # => '$'
212
229
 
213
230
  ## Address Formatting
214
231
 
215
- A template for formatting addresses is available through the address_format method. These templates are compatible with the [Liquid][] template system.
232
+ 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.
216
233
 
217
- ``` ruby
234
+ ```ruby
218
235
  c.address_format # => "{{recipient}}\n{{street}}\n{{city}} {{region}} {{postalcode}}\n{{country}}"
219
236
  ```
220
237
 
238
+ ## Selective Loading of Locales
239
+
240
+ As of 2.0 you can selectively load locales to reduce memory usage in production.
241
+
242
+ 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.
243
+
244
+ You can add all the locales like this.
245
+
246
+ ```ruby
247
+ ISO3166.configure do |config|
248
+ config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
249
+ end
250
+ ```
251
+
252
+ or something a bit more simple
253
+ ```ruby
254
+ ISO3166.configure do |config|
255
+ config.locales = [:en, :de, :fr, :es]
256
+ end
257
+ ```
258
+
259
+ If you change the value of `ISO3166.configuration.locales` after initialization, you should call `ISO3166::Data.reset` to reset the data cache, or you may end up with inconsistently loaded locales.
260
+ As of 5.1.1, subdivision translations also respect this and will only load the selected locales.
261
+
221
262
  ## Loading Custom Data
222
263
 
223
- As of 2.0 countries supports loading custom countries / overriding data in it's data set, though if you choose to do this please contribute back to the upstream repo!
264
+ As of 2.0 countries supports loading custom countries / overriding data in its data set, though if you choose to do this please contribute back to the upstream repo!
224
265
 
225
- Any country registered this way will have it's data available for searching etc... If you are overriding an existing country, for cultural reasons, our code uses a simple merge, not a deep merge so you will need to __bring in all data you wish to be available__. Bringing in an existing country will also remove it from the internal management of translations, __all registered countries will remain in memory__.
266
+ Any country registered this way will have its data available for searching etc... If you are overriding an existing country, for cultural reasons, our code uses a simple merge, not a deep merge so you will need to __bring in all data you wish to be available__. Bringing in an existing country will also remove it from the internal management of translations, __all registered countries will remain in memory__.
226
267
 
227
- ``` ruby
268
+ ```ruby
228
269
  ISO3166::Data.register(
229
270
  alpha2: 'LOL',
230
- name: 'Happy Country',
271
+ iso_short_name: 'Happy Country',
231
272
  translations: {
232
273
  'en' => 'Happy Country',
233
274
  'de' => 'glückliches Land'
234
275
  }
235
276
  )
236
277
 
237
- ISO3166::Country.new('LOL').name == 'Happy Country'
278
+ ISO3166::Country.new('LOL').iso_short_name == 'Happy Country'
238
279
  ```
239
280
 
240
281
  ## Mongoid
@@ -253,61 +294,41 @@ Searching:
253
294
 
254
295
  ```ruby
255
296
  # By alpha2
256
- british_things = Things.where(country: 'GB')
257
- british_things.first.country.name # => "United Kingdom"
297
+ spanish_things = Things.where(country: 'ES')
298
+ spanish_things.first.country.iso_short_name # => "Spain"
258
299
 
259
300
  # By object
260
- british_things = Things.where(country: Country.find_by_name('United Kingdom')[1])
261
- british_things.first.country.name # => "United Kingdom"
301
+ spanish_things = Things.where(country: Country.find_by_iso_short_name('Spain')[1])
302
+ spanish_things.first.country.iso_short_name # => "Spain"
262
303
  ```
304
+
263
305
  Saving:
264
306
 
265
307
  ```ruby
266
308
  # By alpha2
267
- british_thing = Thing.new(country: 'GB')
268
- british_thing.save!
269
- british_thing.country.name # => "United Kingdom"
309
+ spanish_things = Thing.new(country: 'ES')
310
+ spanish_things.save!
311
+ spanish_things.country.iso_short_name # => "Spain"
270
312
 
271
313
  # By object
272
- british_thing = Thing.new(country: Country.find_by_name('United Kingdom')[1])
273
- british_thing.save!
274
- british_thing.country.name # => "United Kingdom"
314
+ spanish_things = Thing.new(country: Country.find_by_iso_short_name('Spain')[1])
315
+ spanish_things.save!
316
+ spanish_things.country.iso_short_name # => "Spain"
275
317
  ```
276
318
 
277
319
  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:
278
320
 
279
- ``` ruby
321
+ ```ruby
280
322
  def country
281
- super.name
323
+ super.iso_short_name
282
324
  end
283
325
  ```
284
326
 
285
- ## Country Code in Emoji
286
-
287
- ``` ruby
288
- c = Country['MY']
289
- c.emoji_flag # => "🇲🇾"
290
- ```
291
-
292
327
  ## Note on Patches/Pull Requests
293
328
 
294
- ### Please do not submit pull requests on `cache/**/*`
295
-
296
- Any additions should be directed upstream to [pkg-isocodes](http://anonscm.debian.org/cgit/pkg-isocodes/iso-codes.git/)
297
-
298
- New Bugs can be filed upstream here https://alioth.debian.org/projects/pkg-iso-codes/
299
- If you need to correct an upstream translation please add it to the lib/countries/data/translations_corrections.yaml
300
-
301
- ```
302
- # Ex:
303
- #
304
- # locale:
305
- # alpha2: localized_name
306
- #
307
- ```
329
+ **Please do not submit pull requests on `cache/**/*`**. These files generated by a rake task when preparing new releases and are not meant to be manually updated.
308
330
 
309
- Any corrections can be applied in translations_corrections.yaml these will be injected during
310
- the next ```rake update_cache```
331
+ If you with to submit a PR to correct an translation, please edit the `lib/countries/data/translations/countries-<locale>.yaml` file. Changes to the locale YAML files will be injected during the next `rake update_cache`.
311
332
 
312
333
  * Fork the project.
313
334
  * Make your feature addition or bug fix.
@@ -316,16 +337,13 @@ the next ```rake update_cache```
316
337
  * Commit, do not mess with rakefile, version, or history.
317
338
  (if you want to have your own version, that is fine but
318
339
  bump version in a commit by itself I can ignore when I pull)
319
- * Send me a pull request. Bonus points for topic branches.
340
+ * Make sure your you haven't made changes to `cache/**/*`
341
+ * Submit a pull request. Bonus points for topic branches.
320
342
 
321
343
  ## Copyright
322
344
 
323
- Copyright (c) 2016 hexorx. See LICENSE for details.
345
+ Copyright (c) 2012-2015 hexorx \
346
+ Copyright (c) 2015-2021 hexorx, rposborne \
347
+ Copyright (c) 2022 hexorx, rposborne, pmor
324
348
 
325
- [Teliax]: http://teliax.com
326
- [Centrex]: http://en.wikipedia.org/wiki/Centrex
327
- [CommonDataHub]: http://commondatahub.com
328
- [Currencies]: http://gemcutter.org/gems/currencies
329
- [Money]: http://gemcutter.org/gems/money
330
- [Liquid]: http://www.liquidmarkup.org/
331
- [country_select]: https://github.com/stefanpenner/country_select
349
+ See LICENSE for details.
data/Rakefile CHANGED
@@ -1,10 +1,17 @@
1
1
  #!/usr/bin/env rake
2
+ # frozen_string_literal: true
3
+
2
4
  require 'bundler/gem_tasks'
3
5
 
4
6
  require 'rake'
5
7
  require 'rspec/core/rake_task'
8
+ require 'yaml'
6
9
 
7
10
  ISO3166_ROOT_PATH = File.dirname(__FILE__)
11
+
12
+ # Enter your API Key enabled for Geocoding API and Places API
13
+ GOOGLE_API_KEY = 'ENTER API KEY'
14
+
8
15
  Dir.glob('lib/countries/tasks/*.rake').each { |r| load r }
9
16
 
10
17
  desc 'Run all examples'
@@ -14,39 +21,6 @@ end
14
21
 
15
22
  task default: [:spec]
16
23
 
17
- task :update_yaml_structure do
18
- require 'yaml'
19
-
20
- require 'pry'
21
-
22
- d = Dir['lib/countries/data/subdivisions/*.yaml']
23
- d.each do |file|
24
- puts "checking : #{file}"
25
- data = YAML.load_file(file)
26
-
27
- data = data.each_with_object({}) do |(k, subd), a|
28
- a[k] ||= {}
29
- a[k]['unofficial_names'] = subd.delete('names')
30
- a[k]['translations'] = { 'en' => subd['name'] }
31
- a[k]['geo'] = {
32
- 'latitude' => subd.delete('latitude'),
33
- 'longitude' => subd.delete('longitude'),
34
- 'min_latitude' => subd.delete('min_latitude'),
35
- 'min_longitude' => subd.delete('min_longitude'),
36
- 'max_latitude' => subd.delete('max_latitude'),
37
- 'max_longitude' => subd.delete('max_longitude')
38
- }
39
-
40
- a[k] = a[k].merge(subd)
41
- end
42
- File.open(file, 'w') { |f| f.write data.to_yaml }
43
- begin
44
- rescue
45
- puts "failed to read #{file}: #{$ERROR_INFO}"
46
- end
47
- end
48
- end
49
-
50
24
  desc 'Update CLDR subdivison data set'
51
25
  task :update_cldr_subdivison_data do
52
26
  require_relative './lib/countries/sources'
@@ -56,35 +30,34 @@ end
56
30
 
57
31
  desc 'Update Cache'
58
32
  task :update_cache do
59
- require 'yaml'
60
- require 'i18n_data'
61
-
62
- codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
33
+ codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq.sort
63
34
  data = {}
64
35
 
65
- corrections = YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'translation_corrections.yaml')) || {}
66
-
67
- I18nData.languages.keys.each do |locale|
68
- locale = locale.downcase
69
- begin
70
- local_names = I18nData.countries(locale)
71
- rescue I18nData::NoTranslationAvailable
72
- next
73
- end
36
+ Dir['lib/countries/data/translations/countries-*.yaml'].each do |locale_file|
37
+ locale = locale_file.split('-').last.split('.').first.downcase
38
+ local_names = YAML.load_file(locale_file)
74
39
 
75
- # Apply any known corrections to i18n_data
76
- unless corrections[locale].nil?
77
- corrections[locale].each do |alpha2, localized_name|
78
- local_names[alpha2] = localized_name
79
- end
80
- end
81
-
82
- File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', "#{locale}.json"), 'wb') { |f| f.write(local_names.to_json) }
40
+ out = File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', "#{locale.gsub(/_/, '-')}.json")
41
+ File.binwrite(out, local_names.to_json)
83
42
  end
84
43
 
85
44
  codes.each do |alpha2|
86
- data[alpha2] ||= YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml"))[alpha2]
45
+ country_file = File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml")
46
+ data[alpha2] ||= YAML.load_file(country_file)[alpha2]
87
47
  end
88
48
 
89
- File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries.json'), 'wb') { |f| f.write(data.to_json) }
49
+ out_file = File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries.json')
50
+ File.binwrite(out_file, data.to_json)
51
+ end
52
+
53
+ desc 'Sort subdivision YAML by code and translations by locale'
54
+ task :cleanup_subdivision_yaml do
55
+ ISO3166::Country.codes.each do |c_code|
56
+ sd = Sources::Local::Subdivision.new(c_code)
57
+ data = sd.load
58
+ next if data.nil? || data == {}
59
+ data = data.sort.to_h
60
+ data['translations'] = data['translations'].sort.to_h unless data['translations'].nil?
61
+ sd.save(data)
62
+ end
90
63
  end
data/UPGRADE.md ADDED
@@ -0,0 +1,39 @@
1
+ # Upgrading to 4.2 and 5.x
2
+
3
+ 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.
4
+
5
+ "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')`.
6
+
7
+ 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.
8
+
9
+ The `#name` and `#names` attributes, and corresponding finder methods were removed in 5.0.
10
+
11
+ The replacement finders added in 5.0 are:
12
+
13
+ - `#find_by_name` => `#find_by_any_name` - Searches all the name attributes, same as before
14
+ - `#find_by_names` => `#find_by_unofficial_names`
15
+ - `#find_*_by_name` => `#find_*_by_any_name`
16
+ - `#find_*_by_names` => `#find_*_by_unofficial_names`
17
+
18
+ With the addition of the new name attributes, there are now also the following finders:
19
+
20
+ - `#find_by_common_name`/`#find_*_by_common_name`
21
+ - `#find_by_iso_short_name`/`#find_*_by_iso_short_name`
22
+ - `#find_by_iso_long_name`/`#find_*_by_iso_long_name`
23
+
24
+ For translated country names, we use data originally sourced 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". Some corrections have been applied to these localized names. The methods to access translated names have not been changed.
25
+
26
+ The 5.0 release removed support for Ruby 2.5 (EOL 2021-03-01) and 2.6 (EOL 2022-03-31)
27
+
28
+ # Upgrading to 5.1
29
+
30
+ In release 5.1 a `type` attribute was added to the subdivisions object, to allow filtering the collection of subdivisions.
31
+
32
+ - `Country#subdivision_types` returns a list of subdivision types for that country (lowercase, snake_cased)
33
+ - `#subdivisions_of_types(types)` accepts an array of subdivision types and returns the subdivisions for those types
34
+
35
+ The `#states` method is deprecated to avoid confusion, as this method is an alias to `#subdivisions` and returns all subdivisions, regardless of type.
36
+
37
+ To get a list of `state` subdivisions (something that was not possible before 5.1), use `subdivisions_of_types(['state'])`
38
+
39
+ Please note that the subdivision types are obtained from ISO data, and each country defines its own subdivision types, eg: `state`, `district`, `region`, `municipality` and many others types exist.
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'countries'
data/countries.gemspec CHANGED
@@ -1,25 +1,30 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/countries/version', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('lib/countries/version', __dir__)
3
4
 
4
5
  Gem::Specification.new do |gem|
5
- gem.authors = ['Josh Robinson', 'Joe Corcoran', 'Russell Osborne']
6
- gem.email = ['hexorx@gmail.com', 'russell@burningpony.com']
6
+ gem.authors = ['Josh Robinson', 'Joe Corcoran', 'Russell Osborne', 'Pedro Moreira']
7
+ gem.email = ['hexorx@gmail.com', 'russell@burningpony.com', 'pedro@codecreations.tech']
7
8
  gem.description = 'All sorts of useful information about every country packaged as pretty little country objects. It includes data from ISO 3166'
8
9
  gem.summary = 'Gives you a country object full of all sorts of useful information.'
9
- gem.homepage = 'http://github.com/hexorx/countries'
10
+ gem.homepage = 'https://github.com/countries/countries'
11
+ gem.metadata = { 'bug_tracker_uri' => 'https://github.com/countries/countries/issues',
12
+ 'changelog_uri' => 'https://github.com/countries/countries/blob/master/CHANGELOG.md',
13
+ 'source_code_uri' => 'https://github.com/countries/countries',
14
+ 'wiki_uri' => 'https://github.com/countries/countries/wiki',
15
+ 'rubygems_mfa_required' => 'true' }
10
16
 
11
17
  gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
12
- gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
13
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
19
  gem.name = 'countries'
15
20
  gem.require_paths = ['lib']
16
21
  gem.version = Countries::VERSION.dup
17
22
  gem.license = 'MIT'
18
23
 
19
- gem.add_dependency('i18n_data', '~> 0.8.0')
20
- gem.add_dependency('unicode_utils', '~> 1.4')
21
- gem.add_dependency('sixarm_ruby_unaccent', '~> 1.1')
22
- gem.add_development_dependency('rspec', '>= 3')
24
+ gem.required_ruby_version = '>= 2.7'
25
+
26
+ gem.add_dependency('unaccent', '~> 0.3')
23
27
  gem.add_development_dependency('activesupport', '>= 3')
24
28
  gem.add_development_dependency('nokogiri', '>= 1.8')
29
+ gem.add_development_dependency('rspec', '>= 3')
25
30
  end