countries 3.0.0 β†’ 6.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (791) hide show
  1. checksums.yaml +4 -4
  2. data/lib/countries/cache/countries.json +1 -1
  3. data/lib/countries/cache/locales/ab.json +1 -0
  4. data/lib/countries/cache/locales/af.json +1 -1
  5. data/lib/countries/cache/locales/ak.json +1 -0
  6. data/lib/countries/cache/locales/am.json +1 -1
  7. data/lib/countries/cache/locales/an.json +1 -0
  8. data/lib/countries/cache/locales/ar.json +1 -1
  9. data/lib/countries/cache/locales/as.json +1 -1
  10. data/lib/countries/cache/locales/ay.json +1 -0
  11. data/lib/countries/cache/locales/az.json +1 -1
  12. data/lib/countries/cache/locales/ba.json +1 -0
  13. data/lib/countries/cache/locales/be.json +1 -1
  14. data/lib/countries/cache/locales/bg.json +1 -1
  15. data/lib/countries/cache/locales/bi.json +1 -0
  16. data/lib/countries/cache/locales/bn-in.json +1 -0
  17. data/lib/countries/cache/locales/bn.json +1 -1
  18. data/lib/countries/cache/locales/br.json +1 -1
  19. data/lib/countries/cache/locales/bs.json +1 -1
  20. data/lib/countries/cache/locales/ca.json +1 -1
  21. data/lib/countries/cache/locales/ce.json +1 -0
  22. data/lib/countries/cache/locales/ch.json +1 -0
  23. data/lib/countries/cache/locales/cs.json +1 -1
  24. data/lib/countries/cache/locales/cv.json +1 -0
  25. data/lib/countries/cache/locales/cy.json +1 -1
  26. data/lib/countries/cache/locales/da.json +1 -1
  27. data/lib/countries/cache/locales/de.json +1 -1
  28. data/lib/countries/cache/locales/dv.json +1 -0
  29. data/lib/countries/cache/locales/dz.json +1 -1
  30. data/lib/countries/cache/locales/ee.json +1 -0
  31. data/lib/countries/cache/locales/el.json +1 -1
  32. data/lib/countries/cache/locales/en.json +1 -1
  33. data/lib/countries/cache/locales/eo.json +1 -1
  34. data/lib/countries/cache/locales/es.json +1 -1
  35. data/lib/countries/cache/locales/et.json +1 -1
  36. data/lib/countries/cache/locales/eu.json +1 -1
  37. data/lib/countries/cache/locales/fa.json +1 -1
  38. data/lib/countries/cache/locales/ff.json +1 -0
  39. data/lib/countries/cache/locales/fi.json +1 -1
  40. data/lib/countries/cache/locales/fo.json +1 -1
  41. data/lib/countries/cache/locales/fr.json +1 -1
  42. data/lib/countries/cache/locales/fy.json +1 -0
  43. data/lib/countries/cache/locales/ga.json +1 -1
  44. data/lib/countries/cache/locales/gl.json +1 -1
  45. data/lib/countries/cache/locales/gn.json +1 -0
  46. data/lib/countries/cache/locales/gu.json +1 -1
  47. data/lib/countries/cache/locales/gv.json +1 -0
  48. data/lib/countries/cache/locales/ha.json +1 -0
  49. data/lib/countries/cache/locales/he.json +1 -1
  50. data/lib/countries/cache/locales/hi.json +1 -1
  51. data/lib/countries/cache/locales/hr.json +1 -1
  52. data/lib/countries/cache/locales/ht.json +1 -0
  53. data/lib/countries/cache/locales/hu.json +1 -1
  54. data/lib/countries/cache/locales/hy.json +1 -1
  55. data/lib/countries/cache/locales/ia.json +1 -1
  56. data/lib/countries/cache/locales/id.json +1 -1
  57. data/lib/countries/cache/locales/io.json +1 -0
  58. data/lib/countries/cache/locales/is.json +1 -1
  59. data/lib/countries/cache/locales/it.json +1 -1
  60. data/lib/countries/cache/locales/iu.json +1 -0
  61. data/lib/countries/cache/locales/ja.json +1 -1
  62. data/lib/countries/cache/locales/ka.json +1 -1
  63. data/lib/countries/cache/locales/ki.json +1 -0
  64. data/lib/countries/cache/locales/kk.json +1 -1
  65. data/lib/countries/cache/locales/kl.json +1 -0
  66. data/lib/countries/cache/locales/km.json +1 -1
  67. data/lib/countries/cache/locales/kn.json +1 -1
  68. data/lib/countries/cache/locales/ko.json +1 -1
  69. data/lib/countries/cache/locales/ku.json +1 -1
  70. data/lib/countries/cache/locales/kv.json +1 -0
  71. data/lib/countries/cache/locales/kw.json +1 -0
  72. data/lib/countries/cache/locales/ky.json +1 -0
  73. data/lib/countries/cache/locales/lo.json +1 -0
  74. data/lib/countries/cache/locales/lt.json +1 -1
  75. data/lib/countries/cache/locales/lv.json +1 -1
  76. data/lib/countries/cache/locales/mi.json +1 -1
  77. data/lib/countries/cache/locales/mk.json +1 -1
  78. data/lib/countries/cache/locales/ml.json +1 -1
  79. data/lib/countries/cache/locales/mn.json +1 -1
  80. data/lib/countries/cache/locales/mr.json +1 -1
  81. data/lib/countries/cache/locales/ms.json +1 -1
  82. data/lib/countries/cache/locales/mt.json +1 -1
  83. data/lib/countries/cache/locales/my.json +1 -0
  84. data/lib/countries/cache/locales/na.json +1 -0
  85. data/lib/countries/cache/locales/nb.json +1 -1
  86. data/lib/countries/cache/locales/ne.json +1 -1
  87. data/lib/countries/cache/locales/nl.json +1 -1
  88. data/lib/countries/cache/locales/nn.json +1 -1
  89. data/lib/countries/cache/locales/nv.json +1 -0
  90. data/lib/countries/cache/locales/oc.json +1 -1
  91. data/lib/countries/cache/locales/or.json +1 -1
  92. data/lib/countries/cache/locales/pa.json +1 -1
  93. data/lib/countries/cache/locales/pi.json +1 -0
  94. data/lib/countries/cache/locales/pl.json +1 -1
  95. data/lib/countries/cache/locales/ps.json +1 -1
  96. data/lib/countries/cache/locales/pt-br.json +1 -0
  97. data/lib/countries/cache/locales/pt.json +1 -1
  98. data/lib/countries/cache/locales/ro.json +1 -1
  99. data/lib/countries/cache/locales/ru.json +1 -1
  100. data/lib/countries/cache/locales/rw.json +1 -1
  101. data/lib/countries/cache/locales/sc.json +1 -0
  102. data/lib/countries/cache/locales/sd.json +1 -0
  103. data/lib/countries/cache/locales/si.json +1 -1
  104. data/lib/countries/cache/locales/sk.json +1 -1
  105. data/lib/countries/cache/locales/sl.json +1 -1
  106. data/lib/countries/cache/locales/so.json +1 -1
  107. data/lib/countries/cache/locales/sq.json +1 -1
  108. data/lib/countries/cache/locales/sr.json +1 -1
  109. data/lib/countries/cache/locales/sv.json +1 -1
  110. data/lib/countries/cache/locales/sw.json +1 -1
  111. data/lib/countries/cache/locales/ta.json +1 -1
  112. data/lib/countries/cache/locales/te.json +1 -1
  113. data/lib/countries/cache/locales/tg.json +1 -0
  114. data/lib/countries/cache/locales/th.json +1 -1
  115. data/lib/countries/cache/locales/ti.json +1 -1
  116. data/lib/countries/cache/locales/tk.json +1 -1
  117. data/lib/countries/cache/locales/tl.json +1 -1
  118. data/lib/countries/cache/locales/tr.json +1 -1
  119. data/lib/countries/cache/locales/tt.json +1 -1
  120. data/lib/countries/cache/locales/ug.json +1 -1
  121. data/lib/countries/cache/locales/uk.json +1 -1
  122. data/lib/countries/cache/locales/ur.json +1 -0
  123. data/lib/countries/cache/locales/uz.json +1 -0
  124. data/lib/countries/cache/locales/ve.json +1 -1
  125. data/lib/countries/cache/locales/vi.json +1 -1
  126. data/lib/countries/cache/locales/wa.json +1 -1
  127. data/lib/countries/cache/locales/wo.json +1 -1
  128. data/lib/countries/cache/locales/xh.json +1 -1
  129. data/lib/countries/cache/locales/yo.json +1 -0
  130. data/lib/countries/cache/locales/zh-cn.json +1 -0
  131. data/lib/countries/cache/locales/zh-hk.json +1 -0
  132. data/lib/countries/cache/locales/zh-tw.json +1 -0
  133. data/lib/countries/cache/locales/zu.json +1 -1
  134. data/lib/countries/configuration.rb +16 -1
  135. data/lib/countries/country/class_methods.rb +55 -92
  136. data/lib/countries/country/conversion_methods.rb +17 -0
  137. data/lib/countries/country/country_subdivision_methods.rb +82 -0
  138. data/lib/countries/country/currency_methods.rb +5 -1
  139. data/lib/countries/country/emoji.rb +5 -3
  140. data/lib/countries/country/finder_methods.rb +79 -0
  141. data/lib/countries/country.rb +132 -21
  142. data/lib/countries/data/countries/AD.yaml +29 -28
  143. data/lib/countries/data/countries/AE.yaml +33 -33
  144. data/lib/countries/data/countries/AF.yaml +33 -32
  145. data/lib/countries/data/countries/AG.yaml +30 -30
  146. data/lib/countries/data/countries/AI.yaml +28 -27
  147. data/lib/countries/data/countries/AL.yaml +30 -29
  148. data/lib/countries/data/countries/AM.yaml +31 -30
  149. data/lib/countries/data/countries/AO.yaml +28 -28
  150. data/lib/countries/data/countries/AQ.yaml +27 -27
  151. data/lib/countries/data/countries/AR.yaml +32 -30
  152. data/lib/countries/data/countries/AS.yaml +32 -31
  153. data/lib/countries/data/countries/AT.yaml +37 -36
  154. data/lib/countries/data/countries/AU.yaml +36 -33
  155. data/lib/countries/data/countries/AW.yaml +26 -26
  156. data/lib/countries/data/countries/AX.yaml +30 -27
  157. data/lib/countries/data/countries/AZ.yaml +31 -30
  158. data/lib/countries/data/countries/BA.yaml +33 -32
  159. data/lib/countries/data/countries/BB.yaml +29 -28
  160. data/lib/countries/data/countries/BD.yaml +29 -28
  161. data/lib/countries/data/countries/BE.yaml +42 -41
  162. data/lib/countries/data/countries/BF.yaml +30 -30
  163. data/lib/countries/data/countries/BG.yaml +38 -36
  164. data/lib/countries/data/countries/BH.yaml +30 -29
  165. data/lib/countries/data/countries/BI.yaml +30 -30
  166. data/lib/countries/data/countries/BJ.yaml +28 -28
  167. data/lib/countries/data/countries/BL.yaml +26 -25
  168. data/lib/countries/data/countries/BM.yaml +30 -29
  169. data/lib/countries/data/countries/BN.yaml +27 -26
  170. data/lib/countries/data/countries/BO.yaml +32 -32
  171. data/lib/countries/data/countries/BQ.yaml +29 -29
  172. data/lib/countries/data/countries/BR.yaml +37 -35
  173. data/lib/countries/data/countries/BS.yaml +27 -28
  174. data/lib/countries/data/countries/BT.yaml +29 -28
  175. data/lib/countries/data/countries/BV.yaml +27 -27
  176. data/lib/countries/data/countries/BW.yaml +30 -30
  177. data/lib/countries/data/countries/BY.yaml +31 -30
  178. data/lib/countries/data/countries/BZ.yaml +29 -29
  179. data/lib/countries/data/countries/CA.yaml +33 -30
  180. data/lib/countries/data/countries/CC.yaml +30 -29
  181. data/lib/countries/data/countries/CD.yaml +36 -36
  182. data/lib/countries/data/countries/CF.yaml +30 -30
  183. data/lib/countries/data/countries/CG.yaml +30 -30
  184. data/lib/countries/data/countries/CH.yaml +41 -40
  185. data/lib/countries/data/countries/CI.yaml +28 -28
  186. data/lib/countries/data/countries/CK.yaml +28 -28
  187. data/lib/countries/data/countries/CL.yaml +34 -28
  188. data/lib/countries/data/countries/CM.yaml +30 -30
  189. data/lib/countries/data/countries/CN.yaml +30 -28
  190. data/lib/countries/data/countries/CO.yaml +29 -28
  191. data/lib/countries/data/countries/CR.yaml +29 -28
  192. data/lib/countries/data/countries/CU.yaml +28 -27
  193. data/lib/countries/data/countries/CV.yaml +29 -28
  194. data/lib/countries/data/countries/CW.yaml +26 -26
  195. data/lib/countries/data/countries/CX.yaml +31 -30
  196. data/lib/countries/data/countries/CY.yaml +42 -41
  197. data/lib/countries/data/countries/CZ.yaml +39 -38
  198. data/lib/countries/data/countries/DE.yaml +39 -36
  199. data/lib/countries/data/countries/DJ.yaml +30 -30
  200. data/lib/countries/data/countries/DK.yaml +36 -35
  201. data/lib/countries/data/countries/DM.yaml +27 -27
  202. data/lib/countries/data/countries/DO.yaml +29 -28
  203. data/lib/countries/data/countries/DZ.yaml +29 -28
  204. data/lib/countries/data/countries/EC.yaml +29 -28
  205. data/lib/countries/data/countries/EE.yaml +37 -36
  206. data/lib/countries/data/countries/EG.yaml +29 -28
  207. data/lib/countries/data/countries/EH.yaml +31 -30
  208. data/lib/countries/data/countries/ER.yaml +32 -32
  209. data/lib/countries/data/countries/ES.yaml +37 -36
  210. data/lib/countries/data/countries/ET.yaml +29 -28
  211. data/lib/countries/data/countries/FI.yaml +40 -39
  212. data/lib/countries/data/countries/FJ.yaml +34 -34
  213. data/lib/countries/data/countries/FK.yaml +30 -29
  214. data/lib/countries/data/countries/FM.yaml +29 -28
  215. data/lib/countries/data/countries/FO.yaml +29 -28
  216. data/lib/countries/data/countries/FR.yaml +40 -37
  217. data/lib/countries/data/countries/GA.yaml +28 -28
  218. data/lib/countries/data/countries/GB.yaml +47 -36
  219. data/lib/countries/data/countries/GD.yaml +27 -27
  220. data/lib/countries/data/countries/GE.yaml +29 -28
  221. data/lib/countries/data/countries/GF.yaml +32 -29
  222. data/lib/countries/data/countries/GG.yaml +32 -31
  223. data/lib/countries/data/countries/GH.yaml +28 -28
  224. data/lib/countries/data/countries/GI.yaml +29 -28
  225. data/lib/countries/data/countries/GL.yaml +30 -29
  226. data/lib/countries/data/countries/GM.yaml +29 -29
  227. data/lib/countries/data/countries/GN.yaml +31 -30
  228. data/lib/countries/data/countries/GP.yaml +30 -27
  229. data/lib/countries/data/countries/GQ.yaml +30 -30
  230. data/lib/countries/data/countries/GR.yaml +38 -37
  231. data/lib/countries/data/countries/GS.yaml +30 -29
  232. data/lib/countries/data/countries/GT.yaml +29 -28
  233. data/lib/countries/data/countries/GU.yaml +32 -31
  234. data/lib/countries/data/countries/GW.yaml +29 -28
  235. data/lib/countries/data/countries/GY.yaml +27 -27
  236. data/lib/countries/data/countries/HK.yaml +30 -30
  237. data/lib/countries/data/countries/HM.yaml +29 -28
  238. data/lib/countries/data/countries/HN.yaml +29 -28
  239. data/lib/countries/data/countries/HR.yaml +38 -37
  240. data/lib/countries/data/countries/HT.yaml +30 -29
  241. data/lib/countries/data/countries/HU.yaml +38 -37
  242. data/lib/countries/data/countries/ID.yaml +30 -28
  243. data/lib/countries/data/countries/IE.yaml +40 -39
  244. data/lib/countries/data/countries/IL.yaml +36 -30
  245. data/lib/countries/data/countries/IM.yaml +32 -31
  246. data/lib/countries/data/countries/IN.yaml +32 -30
  247. data/lib/countries/data/countries/IO.yaml +29 -28
  248. data/lib/countries/data/countries/IQ.yaml +29 -28
  249. data/lib/countries/data/countries/IR.yaml +29 -28
  250. data/lib/countries/data/countries/IS.yaml +36 -35
  251. data/lib/countries/data/countries/IT.yaml +39 -36
  252. data/lib/countries/data/countries/JE.yaml +27 -26
  253. data/lib/countries/data/countries/JM.yaml +29 -29
  254. data/lib/countries/data/countries/JO.yaml +29 -28
  255. data/lib/countries/data/countries/JP.yaml +31 -28
  256. data/lib/countries/data/countries/KE.yaml +31 -30
  257. data/lib/countries/data/countries/KG.yaml +31 -30
  258. data/lib/countries/data/countries/KH.yaml +29 -28
  259. data/lib/countries/data/countries/KI.yaml +28 -28
  260. data/lib/countries/data/countries/KM.yaml +30 -30
  261. data/lib/countries/data/countries/KN.yaml +29 -29
  262. data/lib/countries/data/countries/KP.yaml +29 -28
  263. data/lib/countries/data/countries/KR.yaml +30 -28
  264. data/lib/countries/data/countries/KW.yaml +29 -28
  265. data/lib/countries/data/countries/KY.yaml +30 -29
  266. data/lib/countries/data/countries/KZ.yaml +31 -30
  267. data/lib/countries/data/countries/LA.yaml +29 -28
  268. data/lib/countries/data/countries/LB.yaml +32 -31
  269. data/lib/countries/data/countries/LC.yaml +29 -29
  270. data/lib/countries/data/countries/LI.yaml +30 -27
  271. data/lib/countries/data/countries/LK.yaml +29 -28
  272. data/lib/countries/data/countries/LR.yaml +29 -28
  273. data/lib/countries/data/countries/LS.yaml +29 -28
  274. data/lib/countries/data/countries/LT.yaml +38 -37
  275. data/lib/countries/data/countries/LU.yaml +40 -39
  276. data/lib/countries/data/countries/LV.yaml +43 -36
  277. data/lib/countries/data/countries/LY.yaml +28 -28
  278. data/lib/countries/data/countries/MA.yaml +29 -28
  279. data/lib/countries/data/countries/MC.yaml +31 -28
  280. data/lib/countries/data/countries/MD.yaml +29 -28
  281. data/lib/countries/data/countries/ME.yaml +35 -34
  282. data/lib/countries/data/countries/MF.yaml +32 -29
  283. data/lib/countries/data/countries/MG.yaml +31 -30
  284. data/lib/countries/data/countries/MH.yaml +31 -30
  285. data/lib/countries/data/countries/MK.yaml +31 -28
  286. data/lib/countries/data/countries/ML.yaml +28 -28
  287. data/lib/countries/data/countries/MM.yaml +28 -27
  288. data/lib/countries/data/countries/MN.yaml +29 -28
  289. data/lib/countries/data/countries/MO.yaml +29 -29
  290. data/lib/countries/data/countries/MP.yaml +32 -31
  291. data/lib/countries/data/countries/MQ.yaml +30 -27
  292. data/lib/countries/data/countries/MR.yaml +30 -30
  293. data/lib/countries/data/countries/MS.yaml +27 -27
  294. data/lib/countries/data/countries/MT.yaml +39 -38
  295. data/lib/countries/data/countries/MU.yaml +29 -28
  296. data/lib/countries/data/countries/MV.yaml +29 -28
  297. data/lib/countries/data/countries/MW.yaml +30 -30
  298. data/lib/countries/data/countries/MX.yaml +35 -33
  299. data/lib/countries/data/countries/MY.yaml +31 -30
  300. data/lib/countries/data/countries/MZ.yaml +29 -28
  301. data/lib/countries/data/countries/NA.yaml +31 -30
  302. data/lib/countries/data/countries/NC.yaml +30 -29
  303. data/lib/countries/data/countries/NE.yaml +29 -28
  304. data/lib/countries/data/countries/NF.yaml +30 -29
  305. data/lib/countries/data/countries/NG.yaml +35 -34
  306. data/lib/countries/data/countries/NI.yaml +29 -28
  307. data/lib/countries/data/countries/NL.yaml +40 -36
  308. data/lib/countries/data/countries/NO.yaml +37 -36
  309. data/lib/countries/data/countries/NP.yaml +33 -32
  310. data/lib/countries/data/countries/NR.yaml +28 -28
  311. data/lib/countries/data/countries/NU.yaml +26 -26
  312. data/lib/countries/data/countries/NZ.yaml +36 -35
  313. data/lib/countries/data/countries/OM.yaml +29 -28
  314. data/lib/countries/data/countries/PA.yaml +28 -28
  315. data/lib/countries/data/countries/PE.yaml +29 -28
  316. data/lib/countries/data/countries/PF.yaml +30 -29
  317. data/lib/countries/data/countries/PG.yaml +29 -28
  318. data/lib/countries/data/countries/PH.yaml +36 -35
  319. data/lib/countries/data/countries/PK.yaml +31 -30
  320. data/lib/countries/data/countries/PL.yaml +38 -37
  321. data/lib/countries/data/countries/PM.yaml +30 -29
  322. data/lib/countries/data/countries/PN.yaml +28 -27
  323. data/lib/countries/data/countries/PR.yaml +31 -30
  324. data/lib/countries/data/countries/PS.yaml +34 -32
  325. data/lib/countries/data/countries/PT.yaml +35 -34
  326. data/lib/countries/data/countries/PW.yaml +27 -26
  327. data/lib/countries/data/countries/PY.yaml +31 -30
  328. data/lib/countries/data/countries/QA.yaml +28 -28
  329. data/lib/countries/data/countries/RE.yaml +31 -28
  330. data/lib/countries/data/countries/RO.yaml +38 -37
  331. data/lib/countries/data/countries/RS.yaml +29 -28
  332. data/lib/countries/data/countries/RU.yaml +30 -28
  333. data/lib/countries/data/countries/RW.yaml +32 -32
  334. data/lib/countries/data/countries/SA.yaml +35 -28
  335. data/lib/countries/data/countries/SB.yaml +29 -29
  336. data/lib/countries/data/countries/SC.yaml +30 -30
  337. data/lib/countries/data/countries/SD.yaml +31 -30
  338. data/lib/countries/data/countries/SE.yaml +38 -37
  339. data/lib/countries/data/countries/SG.yaml +33 -32
  340. data/lib/countries/data/countries/SH.yaml +30 -29
  341. data/lib/countries/data/countries/SI.yaml +37 -36
  342. data/lib/countries/data/countries/SJ.yaml +30 -29
  343. data/lib/countries/data/countries/SK.yaml +37 -36
  344. data/lib/countries/data/countries/SL.yaml +28 -28
  345. data/lib/countries/data/countries/SM.yaml +29 -28
  346. data/lib/countries/data/countries/SN.yaml +29 -28
  347. data/lib/countries/data/countries/SO.yaml +31 -30
  348. data/lib/countries/data/countries/SR.yaml +27 -27
  349. data/lib/countries/data/countries/SS.yaml +30 -30
  350. data/lib/countries/data/countries/ST.yaml +28 -28
  351. data/lib/countries/data/countries/SV.yaml +28 -27
  352. data/lib/countries/data/countries/SX.yaml +29 -29
  353. data/lib/countries/data/countries/SY.yaml +28 -28
  354. data/lib/countries/data/countries/SZ.yaml +31 -30
  355. data/lib/countries/data/countries/TC.yaml +31 -30
  356. data/lib/countries/data/countries/TD.yaml +30 -30
  357. data/lib/countries/data/countries/TF.yaml +31 -31
  358. data/lib/countries/data/countries/TG.yaml +28 -28
  359. data/lib/countries/data/countries/TH.yaml +36 -33
  360. data/lib/countries/data/countries/TJ.yaml +31 -30
  361. data/lib/countries/data/countries/TK.yaml +28 -28
  362. data/lib/countries/data/countries/TL.yaml +28 -28
  363. data/lib/countries/data/countries/TM.yaml +31 -30
  364. data/lib/countries/data/countries/TN.yaml +31 -30
  365. data/lib/countries/data/countries/TO.yaml +30 -30
  366. data/lib/countries/data/countries/TR.yaml +30 -28
  367. data/lib/countries/data/countries/TT.yaml +29 -29
  368. data/lib/countries/data/countries/TV.yaml +28 -28
  369. data/lib/countries/data/countries/TW.yaml +32 -29
  370. data/lib/countries/data/countries/TZ.yaml +31 -30
  371. data/lib/countries/data/countries/UA.yaml +35 -34
  372. data/lib/countries/data/countries/UG.yaml +30 -30
  373. data/lib/countries/data/countries/UM.yaml +30 -29
  374. data/lib/countries/data/countries/US.yaml +33 -28
  375. data/lib/countries/data/countries/UY.yaml +29 -28
  376. data/lib/countries/data/countries/UZ.yaml +31 -30
  377. data/lib/countries/data/countries/VA.yaml +32 -31
  378. data/lib/countries/data/countries/VC.yaml +30 -29
  379. data/lib/countries/data/countries/VE.yaml +29 -28
  380. data/lib/countries/data/countries/VG.yaml +31 -30
  381. data/lib/countries/data/countries/VI.yaml +30 -28
  382. data/lib/countries/data/countries/VN.yaml +35 -28
  383. data/lib/countries/data/countries/VU.yaml +32 -32
  384. data/lib/countries/data/countries/WF.yaml +30 -29
  385. data/lib/countries/data/countries/WS.yaml +30 -30
  386. data/lib/countries/data/countries/YE.yaml +28 -28
  387. data/lib/countries/data/countries/YT.yaml +29 -26
  388. data/lib/countries/data/countries/ZA.yaml +42 -40
  389. data/lib/countries/data/countries/ZM.yaml +29 -28
  390. data/lib/countries/data/countries/ZW.yaml +32 -32
  391. data/lib/countries/data/locales_methods.rb +23 -0
  392. data/lib/countries/data/subdivision_methods.rb +30 -0
  393. data/lib/countries/data/subdivisions/AD.yaml +49 -28
  394. data/lib/countries/data/subdivisions/AE.yaml +185 -63
  395. data/lib/countries/data/subdivisions/AF.yaml +918 -419
  396. data/lib/countries/data/subdivisions/AG.yaml +169 -76
  397. data/lib/countries/data/subdivisions/AL.yaml +333 -468
  398. data/lib/countries/data/subdivisions/AM.yaml +291 -88
  399. data/lib/countries/data/subdivisions/AO.yaml +416 -144
  400. data/lib/countries/data/subdivisions/AR.yaml +543 -187
  401. data/lib/countries/data/subdivisions/AT.yaml +246 -72
  402. data/lib/countries/data/subdivisions/AU.yaml +257 -64
  403. data/lib/countries/data/subdivisions/AZ.yaml +2099 -805
  404. data/lib/countries/data/subdivisions/BA.yaml +128 -95
  405. data/lib/countries/data/subdivisions/BB.yaml +216 -88
  406. data/lib/countries/data/subdivisions/BD.yaml +1499 -543
  407. data/lib/countries/data/subdivisions/BE.yaml +403 -166
  408. data/lib/countries/data/subdivisions/BF.yaml +3032 -2291
  409. data/lib/countries/data/subdivisions/BG.yaml +658 -219
  410. data/lib/countries/data/subdivisions/BH.yaml +83 -46
  411. data/lib/countries/data/subdivisions/BI.yaml +461 -213
  412. data/lib/countries/data/subdivisions/BJ.yaml +260 -96
  413. data/lib/countries/data/subdivisions/BN.yaml +76 -32
  414. data/lib/countries/data/subdivisions/BO.yaml +201 -72
  415. data/lib/countries/data/subdivisions/BQ.yaml +70 -24
  416. data/lib/countries/data/subdivisions/BR.yaml +730 -216
  417. data/lib/countries/data/subdivisions/BS.yaml +985 -566
  418. data/lib/countries/data/subdivisions/BT.yaml +390 -160
  419. data/lib/countries/data/subdivisions/BW.yaml +523 -261
  420. data/lib/countries/data/subdivisions/BY.yaml +210 -126
  421. data/lib/countries/data/subdivisions/BZ.yaml +106 -48
  422. data/lib/countries/data/subdivisions/CA.yaml +395 -105
  423. data/lib/countries/data/subdivisions/CD.yaml +829 -406
  424. data/lib/countries/data/subdivisions/CF.yaml +323 -136
  425. data/lib/countries/data/subdivisions/CG.yaml +249 -90
  426. data/lib/countries/data/subdivisions/CH.yaml +711 -208
  427. data/lib/countries/data/subdivisions/CI.yaml +480 -322
  428. data/lib/countries/data/subdivisions/CL.yaml +379 -153
  429. data/lib/countries/data/subdivisions/CM.yaml +222 -80
  430. data/lib/countries/data/subdivisions/CN.yaml +2388 -1650
  431. data/lib/countries/data/subdivisions/CO.yaml +744 -264
  432. data/lib/countries/data/subdivisions/CR.yaml +140 -56
  433. data/lib/countries/data/subdivisions/CU.yaml +326 -128
  434. data/lib/countries/data/subdivisions/CV.yaml +709 -363
  435. data/lib/countries/data/subdivisions/CY.yaml +126 -48
  436. data/lib/countries/data/subdivisions/CZ.yaml +2291 -1347
  437. data/lib/countries/data/subdivisions/DE.yaml +531 -144
  438. data/lib/countries/data/subdivisions/DJ.yaml +132 -48
  439. data/lib/countries/data/subdivisions/DK.yaml +126 -236
  440. data/lib/countries/data/subdivisions/DM.yaml +170 -80
  441. data/lib/countries/data/subdivisions/DO.yaml +804 -248
  442. data/lib/countries/data/subdivisions/DZ.yaml +961 -384
  443. data/lib/countries/data/subdivisions/EC.yaml +571 -276
  444. data/lib/countries/data/subdivisions/EE.yaml +832 -152
  445. data/lib/countries/data/subdivisions/EG.yaml +553 -216
  446. data/lib/countries/data/subdivisions/ER.yaml +117 -48
  447. data/lib/countries/data/subdivisions/ES.yaml +3025 -1401
  448. data/lib/countries/data/subdivisions/ET.yaml +245 -88
  449. data/lib/countries/data/subdivisions/FI.yaml +372 -123
  450. data/lib/countries/data/subdivisions/FJ.yaml +587 -264
  451. data/lib/countries/data/subdivisions/FM.yaml +78 -32
  452. data/lib/countries/data/subdivisions/FR.yaml +3298 -1258
  453. data/lib/countries/data/subdivisions/GA.yaml +192 -72
  454. data/lib/countries/data/subdivisions/GB.yaml +5799 -2625
  455. data/lib/countries/data/subdivisions/GD.yaml +131 -56
  456. data/lib/countries/data/subdivisions/GE.yaml +284 -96
  457. data/lib/countries/data/subdivisions/GH.yaml +338 -113
  458. data/lib/countries/data/subdivisions/GL.yaml +135 -43
  459. data/lib/countries/data/subdivisions/GM.yaml +140 -48
  460. data/lib/countries/data/subdivisions/GN.yaml +1046 -503
  461. data/lib/countries/data/subdivisions/GQ.yaml +191 -72
  462. data/lib/countries/data/subdivisions/GR.yaml +317 -677
  463. data/lib/countries/data/subdivisions/GT.yaml +395 -198
  464. data/lib/countries/data/subdivisions/GW.yaml +235 -79
  465. data/lib/countries/data/subdivisions/GY.yaml +204 -80
  466. data/lib/countries/data/subdivisions/HN.yaml +313 -144
  467. data/lib/countries/data/subdivisions/HR.yaml +532 -168
  468. data/lib/countries/data/subdivisions/HT.yaml +237 -106
  469. data/lib/countries/data/subdivisions/HU.yaml +970 -381
  470. data/lib/countries/data/subdivisions/ID.yaml +2516 -1858
  471. data/lib/countries/data/subdivisions/IE.yaml +925 -429
  472. data/lib/countries/data/subdivisions/IL.yaml +135 -48
  473. data/lib/countries/data/subdivisions/IN.yaml +1304 -537
  474. data/lib/countries/data/subdivisions/IQ.yaml +447 -191
  475. data/lib/countries/data/subdivisions/IR.yaml +1708 -1306
  476. data/lib/countries/data/subdivisions/IS.yaml +1140 -67
  477. data/lib/countries/data/subdivisions/IT.yaml +9300 -7307
  478. data/lib/countries/data/subdivisions/JM.yaml +279 -112
  479. data/lib/countries/data/subdivisions/JO.yaml +221 -96
  480. data/lib/countries/data/subdivisions/JP.yaml +1039 -376
  481. data/lib/countries/data/subdivisions/KE.yaml +1273 -273
  482. data/lib/countries/data/subdivisions/KG.yaml +279 -118
  483. data/lib/countries/data/subdivisions/KH.yaml +572 -194
  484. data/lib/countries/data/subdivisions/KI.yaml +66 -24
  485. data/lib/countries/data/subdivisions/KM.yaml +56 -24
  486. data/lib/countries/data/subdivisions/KN.yaml +330 -112
  487. data/lib/countries/data/subdivisions/KP.yaml +333 -186
  488. data/lib/countries/data/subdivisions/KR.yaml +446 -128
  489. data/lib/countries/data/subdivisions/KW.yaml +98 -48
  490. data/lib/countries/data/subdivisions/KZ.yaml +488 -189
  491. data/lib/countries/data/subdivisions/LA.yaml +355 -149
  492. data/lib/countries/data/subdivisions/LB.yaml +184 -62
  493. data/lib/countries/data/subdivisions/LC.yaml +237 -55
  494. data/lib/countries/data/subdivisions/LI.yaml +234 -88
  495. data/lib/countries/data/subdivisions/LK.yaml +876 -431
  496. data/lib/countries/data/subdivisions/LR.yaml +362 -187
  497. data/lib/countries/data/subdivisions/LS.yaml +182 -80
  498. data/lib/countries/data/subdivisions/LT.yaml +2461 -1114
  499. data/lib/countries/data/subdivisions/LU.yaml +323 -146
  500. data/lib/countries/data/subdivisions/LV.yaml +2530 -5217
  501. data/lib/countries/data/subdivisions/LY.yaml +377 -162
  502. data/lib/countries/data/subdivisions/MA.yaml +3250 -2255
  503. data/lib/countries/data/subdivisions/MC.yaml +443 -129
  504. data/lib/countries/data/subdivisions/MD.yaml +1171 -590
  505. data/lib/countries/data/subdivisions/ME.yaml +548 -186
  506. data/lib/countries/data/subdivisions/MG.yaml +120 -48
  507. data/lib/countries/data/subdivisions/MH.yaml +596 -276
  508. data/lib/countries/data/subdivisions/MK.yaml +4141 -3147
  509. data/lib/countries/data/subdivisions/ML.yaml +230 -70
  510. data/lib/countries/data/subdivisions/MM.yaml +353 -112
  511. data/lib/countries/data/subdivisions/MN.yaml +537 -176
  512. data/lib/countries/data/subdivisions/MR.yaml +285 -111
  513. data/lib/countries/data/subdivisions/MT.yaml +1253 -544
  514. data/lib/countries/data/subdivisions/MU.yaml +262 -293
  515. data/lib/countries/data/subdivisions/MV.yaml +484 -263
  516. data/lib/countries/data/subdivisions/MW.yaml +741 -337
  517. data/lib/countries/data/subdivisions/MX.yaml +756 -260
  518. data/lib/countries/data/subdivisions/MY.yaml +376 -128
  519. data/lib/countries/data/subdivisions/MZ.yaml +222 -83
  520. data/lib/countries/data/subdivisions/NA.yaml +284 -129
  521. data/lib/countries/data/subdivisions/NE.yaml +187 -64
  522. data/lib/countries/data/subdivisions/NG.yaml +996 -296
  523. data/lib/countries/data/subdivisions/NI.yaml +302 -136
  524. data/lib/countries/data/subdivisions/NL.yaml +590 -263
  525. data/lib/countries/data/subdivisions/NO.yaml +782 -1085
  526. data/lib/countries/data/subdivisions/NP.yaml +534 -228
  527. data/lib/countries/data/subdivisions/NR.yaml +293 -112
  528. data/lib/countries/data/subdivisions/NZ.yaml +391 -197
  529. data/lib/countries/data/subdivisions/OM.yaml +355 -246
  530. data/lib/countries/data/subdivisions/PA.yaml +257 -113
  531. data/lib/countries/data/subdivisions/PE.yaml +502 -242
  532. data/lib/countries/data/subdivisions/PG.yaml +514 -237
  533. data/lib/countries/data/subdivisions/PH.yaml +5450 -3894
  534. data/lib/countries/data/subdivisions/PK.yaml +267 -204
  535. data/lib/countries/data/subdivisions/PL.yaml +272 -32
  536. data/lib/countries/data/subdivisions/PS.yaml +314 -0
  537. data/lib/countries/data/subdivisions/PT.yaml +411 -173
  538. data/lib/countries/data/subdivisions/PW.yaml +309 -128
  539. data/lib/countries/data/subdivisions/PY.yaml +360 -144
  540. data/lib/countries/data/subdivisions/QA.yaml +175 -97
  541. data/lib/countries/data/subdivisions/RO.yaml +960 -336
  542. data/lib/countries/data/subdivisions/RS.yaml +754 -261
  543. data/lib/countries/data/subdivisions/RU.yaml +2081 -665
  544. data/lib/countries/data/subdivisions/RW.yaml +114 -40
  545. data/lib/countries/data/subdivisions/SA.yaml +285 -104
  546. data/lib/countries/data/subdivisions/SB.yaml +190 -80
  547. data/lib/countries/data/subdivisions/SC.yaml +538 -184
  548. data/lib/countries/data/subdivisions/SD.yaml +847 -673
  549. data/lib/countries/data/subdivisions/SE.yaml +498 -237
  550. data/lib/countries/data/subdivisions/SG.yaml +89 -54
  551. data/lib/countries/data/subdivisions/SH.yaml +79 -31
  552. data/lib/countries/data/subdivisions/SI.yaml +4558 -1590
  553. data/lib/countries/data/subdivisions/SK.yaml +159 -64
  554. data/lib/countries/data/subdivisions/SL.yaml +92 -31
  555. data/lib/countries/data/subdivisions/SM.yaml +187 -72
  556. data/lib/countries/data/subdivisions/SN.yaml +395 -193
  557. data/lib/countries/data/subdivisions/SO.yaml +400 -144
  558. data/lib/countries/data/subdivisions/SR.yaml +185 -80
  559. data/lib/countries/data/subdivisions/SS.yaml +210 -0
  560. data/lib/countries/data/subdivisions/ST.yaml +178 -26
  561. data/lib/countries/data/subdivisions/SV.yaml +265 -112
  562. data/lib/countries/data/subdivisions/SY.yaml +287 -112
  563. data/lib/countries/data/subdivisions/SZ.yaml +87 -32
  564. data/lib/countries/data/subdivisions/TD.yaml +642 -312
  565. data/lib/countries/data/subdivisions/TG.yaml +93 -40
  566. data/lib/countries/data/subdivisions/TH.yaml +1796 -652
  567. data/lib/countries/data/subdivisions/TJ.yaml +224 -128
  568. data/lib/countries/data/subdivisions/TL.yaml +260 -104
  569. data/lib/countries/data/subdivisions/TM.yaml +137 -40
  570. data/lib/countries/data/subdivisions/TN.yaml +461 -192
  571. data/lib/countries/data/subdivisions/TO.yaml +81 -40
  572. data/lib/countries/data/subdivisions/TR.yaml +1991 -648
  573. data/lib/countries/data/subdivisions/TT.yaml +380 -204
  574. data/lib/countries/data/subdivisions/TV.yaml +187 -94
  575. data/lib/countries/data/subdivisions/TW.yaml +620 -251
  576. data/lib/countries/data/subdivisions/TZ.yaml +730 -208
  577. data/lib/countries/data/subdivisions/UA.yaml +640 -217
  578. data/lib/countries/data/subdivisions/UG.yaml +5678 -3641
  579. data/lib/countries/data/subdivisions/UM.yaml +220 -72
  580. data/lib/countries/data/subdivisions/US.yaml +1857 -486
  581. data/lib/countries/data/subdivisions/UY.yaml +456 -195
  582. data/lib/countries/data/subdivisions/UZ.yaml +380 -113
  583. data/lib/countries/data/subdivisions/VC.yaml +113 -48
  584. data/lib/countries/data/subdivisions/VE.yaml +514 -200
  585. data/lib/countries/data/subdivisions/VN.yaml +1405 -543
  586. data/lib/countries/data/subdivisions/VU.yaml +112 -48
  587. data/lib/countries/data/subdivisions/WF.yaml +66 -0
  588. data/lib/countries/data/subdivisions/WS.yaml +229 -88
  589. data/lib/countries/data/subdivisions/YE.yaml +550 -289
  590. data/lib/countries/data/subdivisions/ZA.yaml +288 -131
  591. data/lib/countries/data/subdivisions/ZM.yaml +191 -72
  592. data/lib/countries/data/subdivisions/ZW.yaml +183 -73
  593. data/lib/countries/data/translations/countries-ab.yaml +254 -0
  594. data/lib/countries/data/translations/countries-af.yaml +254 -0
  595. data/lib/countries/data/translations/countries-ak.yaml +254 -0
  596. data/lib/countries/data/translations/countries-am.yaml +254 -0
  597. data/lib/countries/data/translations/countries-an.yaml +254 -0
  598. data/lib/countries/data/translations/countries-ar.yaml +254 -0
  599. data/lib/countries/data/translations/countries-as.yaml +254 -0
  600. data/lib/countries/data/translations/countries-ay.yaml +254 -0
  601. data/lib/countries/data/translations/countries-az.yaml +254 -0
  602. data/lib/countries/data/translations/countries-ba.yaml +254 -0
  603. data/lib/countries/data/translations/countries-be.yaml +254 -0
  604. data/lib/countries/data/translations/countries-bg.yaml +254 -0
  605. data/lib/countries/data/translations/countries-bi.yaml +254 -0
  606. data/lib/countries/data/translations/countries-bn.yaml +254 -0
  607. data/lib/countries/data/translations/countries-bn_IN.yaml +254 -0
  608. data/lib/countries/data/translations/countries-br.yaml +254 -0
  609. data/lib/countries/data/translations/countries-bs.yaml +254 -0
  610. data/lib/countries/data/translations/countries-ca.yaml +254 -0
  611. data/lib/countries/data/translations/countries-ce.yaml +254 -0
  612. data/lib/countries/data/translations/countries-ch.yaml +254 -0
  613. data/lib/countries/data/translations/countries-cs.yaml +254 -0
  614. data/lib/countries/data/translations/countries-cv.yaml +254 -0
  615. data/lib/countries/data/translations/countries-cy.yaml +254 -0
  616. data/lib/countries/data/translations/countries-da.yaml +254 -0
  617. data/lib/countries/data/translations/countries-de.yaml +254 -0
  618. data/lib/countries/data/translations/countries-dv.yaml +254 -0
  619. data/lib/countries/data/translations/countries-dz.yaml +254 -0
  620. data/lib/countries/data/translations/countries-ee.yaml +254 -0
  621. data/lib/countries/data/translations/countries-el.yaml +254 -0
  622. data/lib/countries/data/translations/countries-en.yaml +254 -0
  623. data/lib/countries/data/translations/countries-eo.yaml +254 -0
  624. data/lib/countries/data/translations/countries-es.yaml +254 -0
  625. data/lib/countries/data/translations/countries-et.yaml +254 -0
  626. data/lib/countries/data/translations/countries-eu.yaml +254 -0
  627. data/lib/countries/data/translations/countries-fa.yaml +254 -0
  628. data/lib/countries/data/translations/countries-ff.yaml +254 -0
  629. data/lib/countries/data/translations/countries-fi.yaml +254 -0
  630. data/lib/countries/data/translations/countries-fo.yaml +254 -0
  631. data/lib/countries/data/translations/countries-fr.yaml +254 -0
  632. data/lib/countries/data/translations/countries-fy.yaml +254 -0
  633. data/lib/countries/data/translations/countries-ga.yaml +254 -0
  634. data/lib/countries/data/translations/countries-gl.yaml +254 -0
  635. data/lib/countries/data/translations/countries-gn.yaml +254 -0
  636. data/lib/countries/data/translations/countries-gu.yaml +254 -0
  637. data/lib/countries/data/translations/countries-gv.yaml +254 -0
  638. data/lib/countries/data/translations/countries-ha.yaml +254 -0
  639. data/lib/countries/data/translations/countries-he.yaml +254 -0
  640. data/lib/countries/data/translations/countries-hi.yaml +254 -0
  641. data/lib/countries/data/translations/countries-hr.yaml +254 -0
  642. data/lib/countries/data/translations/countries-ht.yaml +254 -0
  643. data/lib/countries/data/translations/countries-hu.yaml +254 -0
  644. data/lib/countries/data/translations/countries-hy.yaml +254 -0
  645. data/lib/countries/data/translations/countries-ia.yaml +254 -0
  646. data/lib/countries/data/translations/countries-id.yaml +254 -0
  647. data/lib/countries/data/translations/countries-io.yaml +254 -0
  648. data/lib/countries/data/translations/countries-is.yaml +254 -0
  649. data/lib/countries/data/translations/countries-it.yaml +254 -0
  650. data/lib/countries/data/translations/countries-iu.yaml +254 -0
  651. data/lib/countries/data/translations/countries-ja.yaml +254 -0
  652. data/lib/countries/data/translations/countries-ka.yaml +254 -0
  653. data/lib/countries/data/translations/countries-ki.yaml +254 -0
  654. data/lib/countries/data/translations/countries-kk.yaml +254 -0
  655. data/lib/countries/data/translations/countries-kl.yaml +254 -0
  656. data/lib/countries/data/translations/countries-km.yaml +254 -0
  657. data/lib/countries/data/translations/countries-kn.yaml +254 -0
  658. data/lib/countries/data/translations/countries-ko.yaml +254 -0
  659. data/lib/countries/data/translations/countries-ku.yaml +254 -0
  660. data/lib/countries/data/translations/countries-kv.yaml +254 -0
  661. data/lib/countries/data/translations/countries-kw.yaml +254 -0
  662. data/lib/countries/data/translations/countries-ky.yaml +254 -0
  663. data/lib/countries/data/translations/countries-lo.yaml +254 -0
  664. data/lib/countries/data/translations/countries-lt.yaml +254 -0
  665. data/lib/countries/data/translations/countries-lv.yaml +254 -0
  666. data/lib/countries/data/translations/countries-mi.yaml +254 -0
  667. data/lib/countries/data/translations/countries-mk.yaml +254 -0
  668. data/lib/countries/data/translations/countries-ml.yaml +254 -0
  669. data/lib/countries/data/translations/countries-mn.yaml +254 -0
  670. data/lib/countries/data/translations/countries-mr.yaml +254 -0
  671. data/lib/countries/data/translations/countries-ms.yaml +254 -0
  672. data/lib/countries/data/translations/countries-mt.yaml +254 -0
  673. data/lib/countries/data/translations/countries-my.yaml +254 -0
  674. data/lib/countries/data/translations/countries-na.yaml +254 -0
  675. data/lib/countries/data/translations/countries-nb.yaml +254 -0
  676. data/lib/countries/data/translations/countries-ne.yaml +254 -0
  677. data/lib/countries/data/translations/countries-nl.yaml +254 -0
  678. data/lib/countries/data/translations/countries-nn.yaml +254 -0
  679. data/lib/countries/data/translations/countries-nv.yaml +254 -0
  680. data/lib/countries/data/translations/countries-oc.yaml +254 -0
  681. data/lib/countries/data/translations/countries-or.yaml +254 -0
  682. data/lib/countries/data/translations/countries-pa.yaml +254 -0
  683. data/lib/countries/data/translations/countries-pi.yaml +254 -0
  684. data/lib/countries/data/translations/countries-pl.yaml +254 -0
  685. data/lib/countries/data/translations/countries-ps.yaml +254 -0
  686. data/lib/countries/data/translations/countries-pt.yaml +254 -0
  687. data/lib/countries/data/translations/countries-pt_BR.yaml +254 -0
  688. data/lib/countries/data/translations/countries-ro.yaml +254 -0
  689. data/lib/countries/data/translations/countries-ru.yaml +254 -0
  690. data/lib/countries/data/translations/countries-rw.yaml +254 -0
  691. data/lib/countries/data/translations/countries-sc.yaml +254 -0
  692. data/lib/countries/data/translations/countries-sd.yaml +254 -0
  693. data/lib/countries/data/translations/countries-si.yaml +254 -0
  694. data/lib/countries/data/translations/countries-sk.yaml +254 -0
  695. data/lib/countries/data/translations/countries-sl.yaml +254 -0
  696. data/lib/countries/data/translations/countries-so.yaml +254 -0
  697. data/lib/countries/data/translations/countries-sq.yaml +254 -0
  698. data/lib/countries/data/translations/countries-sr.yaml +254 -0
  699. data/lib/countries/data/translations/countries-sv.yaml +254 -0
  700. data/lib/countries/data/translations/countries-sw.yaml +254 -0
  701. data/lib/countries/data/translations/countries-ta.yaml +254 -0
  702. data/lib/countries/data/translations/countries-te.yaml +254 -0
  703. data/lib/countries/data/translations/countries-tg.yaml +254 -0
  704. data/lib/countries/data/translations/countries-th.yaml +254 -0
  705. data/lib/countries/data/translations/countries-ti.yaml +254 -0
  706. data/lib/countries/data/translations/countries-tk.yaml +254 -0
  707. data/lib/countries/data/translations/countries-tl.yaml +254 -0
  708. data/lib/countries/data/translations/countries-tr.yaml +254 -0
  709. data/lib/countries/data/translations/countries-tt.yaml +254 -0
  710. data/lib/countries/data/translations/countries-ug.yaml +254 -0
  711. data/lib/countries/data/translations/countries-uk.yaml +254 -0
  712. data/lib/countries/data/translations/countries-ur.yaml +254 -0
  713. data/lib/countries/data/translations/countries-uz.yaml +254 -0
  714. data/lib/countries/data/translations/countries-ve.yaml +254 -0
  715. data/lib/countries/data/translations/countries-vi.yaml +254 -0
  716. data/lib/countries/data/translations/countries-wa.yaml +254 -0
  717. data/lib/countries/data/translations/countries-wo.yaml +254 -0
  718. data/lib/countries/data/translations/countries-xh.yaml +254 -0
  719. data/lib/countries/data/translations/countries-yo.yaml +254 -0
  720. data/lib/countries/data/translations/countries-zh_CN.yaml +254 -0
  721. data/lib/countries/data/translations/countries-zh_HK.yaml +254 -0
  722. data/lib/countries/data/translations/countries-zh_TW.yaml +254 -0
  723. data/lib/countries/data/translations/countries-zu.yaml +254 -0
  724. data/lib/countries/data.rb +85 -61
  725. data/lib/countries/global.rb +14 -3
  726. data/lib/countries/iso3166.rb +7 -2
  727. data/lib/countries/mongoid.rb +5 -0
  728. data/lib/countries/sources/cldr/downloader.rb +16 -14
  729. data/lib/countries/sources/cldr/subdivision.rb +5 -1
  730. data/lib/countries/sources/cldr/subdivision_updater.rb +24 -17
  731. data/lib/countries/sources/local/cached_loader.rb +5 -0
  732. data/lib/countries/sources/local/subdivision.rb +6 -2
  733. data/lib/countries/sources.rb +2 -0
  734. data/lib/countries/structure.rb +5 -6
  735. data/lib/countries/subdivision.rb +26 -8
  736. data/lib/countries/tasks/postal_codes.rake +54 -0
  737. data/lib/countries/timezones.rb +9 -4
  738. data/lib/countries/translations.rb +5 -4
  739. data/lib/countries/version.rb +3 -1
  740. data/lib/countries.rb +1 -2
  741. metadata +213 -104
  742. data/.gitignore +0 -25
  743. data/.rspec +0 -2
  744. data/.rubocop.yml +0 -1
  745. data/.rubocop_todo.yml +0 -52
  746. data/.travis.yml +0 -16
  747. data/CHANGELOG.md +0 -388
  748. data/Gemfile +0 -9
  749. data/LICENSE +0 -22
  750. data/README.markdown +0 -331
  751. data/Rakefile +0 -90
  752. data/bin/console +0 -14
  753. data/countries.gemspec +0 -25
  754. data/lib/countries/cache/locales/zh.json +0 -1
  755. data/lib/countries/data/subdivisions/AI.yaml +0 -183
  756. data/lib/countries/data/subdivisions/AS.yaml +0 -66
  757. data/lib/countries/data/subdivisions/AX.yaml +0 -40
  758. data/lib/countries/data/subdivisions/BM.yaml +0 -144
  759. data/lib/countries/data/subdivisions/CK.yaml +0 -144
  760. data/lib/countries/data/subdivisions/EH.yaml +0 -72
  761. data/lib/countries/data/subdivisions/FO.yaml +0 -79
  762. data/lib/countries/data/subdivisions/GG.yaml +0 -144
  763. data/lib/countries/data/subdivisions/GU.yaml +0 -248
  764. data/lib/countries/data/subdivisions/HK.yaml +0 -235
  765. data/lib/countries/data/subdivisions/IM.yaml +0 -313
  766. data/lib/countries/data/subdivisions/JE.yaml +0 -157
  767. data/lib/countries/data/subdivisions/KY.yaml +0 -73
  768. data/lib/countries/data/subdivisions/MP.yaml +0 -53
  769. data/lib/countries/data/subdivisions/MS.yaml +0 -40
  770. data/lib/countries/data/subdivisions/NC.yaml +0 -40
  771. data/lib/countries/data/subdivisions/PF.yaml +0 -66
  772. data/lib/countries/data/subdivisions/PM.yaml +0 -27
  773. data/lib/countries/data/subdivisions/PR.yaml +0 -1015
  774. data/lib/countries/data/subdivisions/SJ.yaml +0 -27
  775. data/lib/countries/data/subdivisions/TF.yaml +0 -49
  776. data/lib/countries/data/subdivisions/TK.yaml +0 -40
  777. data/lib/countries/data/subdivisions/VI.yaml +0 -40
  778. data/lib/countries/data/subdivisions/YT.yaml +0 -222
  779. data/lib/countries/data/translation_corrections.yaml +0 -32
  780. data/lib/countries/kwarg_struct.rb +0 -12
  781. data/lib/countries/setup.rb +0 -18
  782. data/lib/countries/tasks/geocoding.rake +0 -104
  783. data/spec/00_global_spec.rb +0 -56
  784. data/spec/configuration_spec.rb +0 -54
  785. data/spec/country_spec.rb +0 -894
  786. data/spec/data_spec.rb +0 -181
  787. data/spec/mongoid_spec.rb +0 -61
  788. data/spec/perf_spec.rb +0 -74
  789. data/spec/spec_helper.rb +0 -13
  790. data/spec/subdivision_spec.rb +0 -18
  791. data/spec/timezone_spec.rb +0 -32
@@ -1 +1 @@
1
- {"AF":"Afghanistan","AX":"I-Irelandi","AL":"Albania","DZ":"I-Buligariya","AS":"Melika, Mntla","AD":"Andorra","AO":"Angola","AI":"Anguilla","AQ":"Antarctica","AG":"Antigua no Barbuda","AR":"I-Argentina","AM":"I-Argentina","AW":"Aruba","AU":"I-Australiya","AT":"I-Austriyiya","AZ":"I-Azerbayijani","BS":"I-Panama","BH":"I Brazili","BD":"Isi-Bhangladeshi","BB":"I-Barbados","BY":"I Bhelarusi","BE":"Isi-Bhelijiyamu","BZ":"Isi-Bhelijiyamu","BJ":"Benin","BM":"Bermuda","BT":"Bhutan","BO":"Bolivia, Plurinational State of","BQ":"Bonaire, Sint Eustatius and Saba","BA":"Bosnia and Herzegovina","BW":"Botswana","BV":"Bouvet Island","BR":"I Brazili","IO":"British Indian Ocean Territory","BN":"Brunei Darussalam","BG":"I-Buligariya","BF":"Burkina Faso","BI":"Burundi","KH":"I Kholombiya","CM":"Cameroon","CA":"I Khanada","CV":"Cape Verde","KY":"Cayman Islands","CF":"Ulawulo lokuziphatha kwe Dominikhani","TD":"Isi-Shayina","CL":"I-Chile","CN":"Isi-Shayina","CX":"Christmas Island","CC":"Cocos (Keeling) Islands","CO":"I Kholombiya","KM":"Comoros","CG":"Congo","CD":"Congo, The Democratic Republic of the","CK":"Cook Islands","CR":"Costa Rica","CI":"CΓ΄te d'Ivoire","HR":"I-Crowathiya","CU":"I Kholombiya","CW":"CuraΓ§ao","CY":"Cyprus","CZ":"Ulawulo lokuziphatha kwe Dominikhani","DK":"Isi-Denimaki","DJ":"Djibouti","DM":"I-Romaniya","DO":"Ulawulo lokuziphatha kwe Dominikhani","EC":"Equador","EG":"Amandla","SV":"I-El Salvador","GQ":"Equatorial Guinea","ER":"Eritrea","EE":"I-Estoniya","ET":"I-Estoniya","FK":"Falkland Islands (Malvinas)","FO":"I-Irelandi","FJ":"Fiji","FI":"I-Finilandi","FR":"Isi Frentshi","GF":"French Guiana","PF":"French Polynesia","TF":"French Southern Territories","GA":"Gabon","GM":"I Jamayikha","GE":"I-Serbiya","DE":"Isi-Jalimani","GH":"Isi-Shayina","GI":"Gibraltar","GR":"I-Grisi","GL":"I-Grenada","GD":"I-Grenada","GP":"Guadeloupe","GU":"I-Guwathemala","GT":"I-Guwathemala","GG":"Guernsey","GN":"Guinea","GW":"Guinea-Bissau","GY":"Guyana","HT":"Haiti","HM":"Heard Island and McDonald Islands","VA":"Holy See (Vatican City State)","HN":"I-Hondurasi","HK":"Hong Kong","HU":"I-Hungariya","IS":"I-Icelandi","IN":"I-Indoneshiya","ID":"I-Indoneshiya","IR":"Ulawulo lokuziphatha kwe Dominikhani","IQ":"I-Sirayeli","IE":"I-Irelandi","IM":"Isle of Man","IL":"I-Sirayeli","IT":"I-Ithali","JM":"I Jamayikha","JP":"I-Japhani","JE":"Jersey","JO":"Isi-Koreyani","KZ":"I-Tayiwani","KE":"Kenya","KI":"Kiribati","KP":"Korea, Democratic People's Republic of","KR":"Ulawulo lokuziphatha kwe Dominikhani","KW":"Kuwait","KG":"Kyrgyzstan","LA":"Lao People's Democratic Republic","LV":"I-Latviya","LB":"Lebanon","LS":"Lesotho","LR":"I-Serbiya","LY":"I-Serbiya","LI":"Liechtenstein","LT":"I-Lithuwaniya","LU":"I-Luxembourg","MO":"I-Malta","MK":"Ulawulo lokuziphatha kwe Dominikhani","MG":"Madagascar","MW":"I-Malta","MY":"I-Malta","MV":"I-Malta","ML":"I-Malta","MT":"I-Malta","MH":"Marshall Islands","MQ":"Martinique","MR":"I-Lithuwaniya","MU":"I-Lithuwaniya","YT":"Mayotte","MX":"I-Mexico","FM":"Micronesia, Federated States of","MD":"Ulawulo lokuziphatha kwe Dominikhani","MC":"Monaco","MN":"Mongolia","ME":"Montenegro","MS":"Montserrat","MA":"Morocco","MZ":"Mozambique","MM":"I-Panama","NA":"Namibia","NR":"Nauru","NP":"Nepal","NL":"I-Netherlands","NC":"I-Makhedoniya","NZ":"I-New Zealand","NI":"I-Paraguwayi","NE":"Niger","NG":"I-Serbiya","NU":"Niue","NF":"Norfolk Island","MP":"Northern Mariana Islands","NO":"I-Noweyi","OM":"Oman","PK":"Pakistan","PW":"I-Paraguwayi","PS":"Palestine, State of","PA":"I-Panama","PG":"Papua New Guinea","PY":"I-Paraguwayi","PE":"I-Peru","PH":"Philippines","PN":"Pitcairn","PL":"I-Polandi","PT":"I-Phothugali","PR":"Puerto Rico","QA":"I-Malta","RE":"RΓ©union","RO":"I-Romaniya","RU":"Russian Federation","RW":"I Khanada","BL":"Saint BarthΓ©lemy","SH":"Saint Helena, Ascension and Tristan da Cunha","KN":"St. Kitts no Nevis","LC":"St. Lucia","MF":"Saint Martin (French part)","PM":"Saint Pierre and Miquelon","VC":"I-St. Vincent ne Grenadines","WS":"Samoa","SM":"San Marino","ST":"Sao Tome and Principe","SA":"Saudi Arabia","SN":"Senegal","RS":"I-Serbiya","SC":"Seychelles","SL":"Sierra Leone","SG":"Singapore","SX":"Sint Maarten (Dutch part)","SK":"Isi-Slovaki","SI":"Isi-Sloveniya","SB":"Solomon Islands","SO":"I-Romaniya","ZA":"I-Mzantsi Afrika","GS":"South Georgia and the South Sandwich Islands","ES":"Isi-Spayini","LK":"Sri Lanka","SD":"Umsindo","SR":"Suriname","SS":"I-Mzantsi Afrika","SJ":"Svalbard and Jan Mayen","SZ":"I-Thayilandi","SE":"Isi-Swideni","CH":"I-Switzerland","SY":"Ulawulo lokuziphatha kwe Dominikhani","TW":"I-Tayiwani","TJ":"I-Tayiwani","TZ":"Ulawulo lokuziphatha kwe Dominikhani","TH":"I-Thayilandi","TL":"Timor-Leste","TG":"Togo","TK":"Tokelau","TO":"Tonga","TT":"I-Trinidad ne Tobago","TN":"Isi-Rashiya","TR":"I-Turkey","TM":"Turkmenistan","TC":"Turks and Caicos Islands","TV":"Tuvalu","UG":"I Khanada","UA":"I-Ukraine","AE":"United Arab Emirates","GB":"United Kingdom","US":"United States ye Melika","UM":"United States ye Melika","UY":"I-Uruguwayi","UZ":"Uzbekistan","VU":"Vanuatu","VE":"Ulawulo lokuziphatha kwe Dominikhani","VN":"I-Vietnami","VG":"Virgin Islands, British","VI":"I-Finilandi","WF":"Wallis and Futuna","EH":"Western Sahara","YE":"Yemen","ZM":"I Jamayikha","ZW":"Zimbabwe"}
1
+ {"AD":"I-Andora","AE":"United Arab Emirates","AF":"I-Afganistani","AG":"Antigua no Barbuda","AI":"Anguilla","AL":"I-Albaniya","AM":"Armenia","AO":"I-Angola","AQ":"Antarctica","AR":"I-Argentina","AS":"American Samoa","AT":"I-Ostriya","AU":"I-Ostreliya","AW":"Aruba","AX":"Γ…land Islands","AZ":"I-Azerbayijani","BA":"IBhosniya neHerzegovina","BB":"I-Barbados","BD":"Isi-Bhangladeshi","BE":"Isi-Bhelijiyamu","BF":"IBukhina Faso","BG":"IBulgariya","BH":"Bahrain","BI":"IBurundi","BJ":"IBenini","BL":"Saint BarthΓ©lemy","BM":"Bermuda","BN":"Brunei Darussalam","BO":"I Boliviya","BQ":"Bonaire, Sint Eustatius and Saba","BR":"IBrazili","BS":"Bahamas","BT":"Bhutan","BV":"Bouvet Island","BW":"IButswana","BY":"IBelarusi","BZ":"Belize","CA":"I Khanada","CC":"Cocos (Keeling) Islands","CD":"Congo, The Democratic Republic of the","CF":"Central African Republic","CG":"Congo","CH":"I-Switzerland","CI":"CΓ΄te d'Ivoire","CK":"Cook Islands","CL":"I-Chile","CM":"IKamerooni","CN":"Isi-Shayina","CO":"IKolombiya","CR":"Costa Rica","CU":"Cuba","CV":"Cabo Verde","CW":"CuraΓ§ao","CX":"Christmas Island","CY":"Cyprus","CZ":"Czechia","DE":"IJalimani","DJ":"IJibuthi","DK":"IDenimaki","DM":"Dominica","DO":"Ulawulo lokuziphatha kwe Dominikhani","DZ":"IAljiriya","EC":"Ecuador","EE":"I-Estoniya","EG":"IGibhithe","EH":"Western Sahara","ER":"I-Eritrea","ES":"ISpeyini","ET":"I-Ithiopia","FI":"IFinlandi","FJ":"IFiji","FK":"Falkland Islands (Malvinas)","FM":"Micronesia, Federated States of","FO":"Faroe Islands","FR":"IFulansi","GA":"IGaboni","GB":"Umbuso Ohlangeneyo","GD":"I-Grenada","GE":"Georgia","GF":"French Guiana","GG":"Guernsey","GH":"IGana","GI":"Gibraltar","GL":"Greenland","GM":"Gambia","GN":"IGini","GP":"Guadeloupe","GQ":"IGini Enkabazwe","GR":"IGreki","GS":"South Georgia and the South Sandwich Islands","GT":"I-Guwathemala","GU":"Guam","GW":"IGini Bisawu","GY":"Guyana","HK":"Hong Kong","HM":"Heard Island and McDonald Islands","HN":"I-Hondurasi","HR":"IKrowati","HT":"Haiti","HU":"I-Hungariya","ID":"I-Indonesia","IE":"I-Ayilendi","IL":"Isreyili","IM":"Isle of Man","IN":"India","IO":"British Indian Ocean Territory","IQ":"I-Iraki","IR":"Iran, Islamic Republic of","IS":"I-Ayisilandi","IT":"ITaliya","JE":"Jersey","JM":"Jamaica","JO":"Jordan","JP":"IJaphani","KE":"IKenya","KG":"Kyrgyzstan","KH":"Cambodia","KI":"Kiribati","KM":"IsiKhomorosi","KN":"Saint Kitts and Nevis","KP":"North Korea","KR":"South Korea","KW":"Kuwait","KY":"Cayman Islands","KZ":"Kazakhstan","LA":"Lao People's Democratic Republic","LB":"Lebanon","LC":"Saint Lucia","LI":"Liechtenstein","LK":"Sri Lanka","LR":"ILiberia","LS":"OSotho","LT":"ILithuwaniya","LU":"I-Luxembourg","LV":"ILatviya","LY":"ILibiya","MA":"IMorokho","MC":"Monaco","MD":"Moldova","ME":"IMontenegro","MF":"Saint Martin (French part)","MG":"IMadagasika","MH":"Marshall Islands","MK":"North Macedonia","ML":"IMali","MM":"Myanmar","MN":"Mongolia","MO":"Macao","MP":"Northern Mariana Islands","MQ":"Martinique","MR":"IMoritaniya","MS":"Montserrat","MT":"IMalta","MU":"IMorishisi","MV":"Maldives","MW":"IMalawi","MX":"IMekisiko","MY":"Malaysia","MZ":"IMozambiki","NA":"INamibhiya","NC":"New Caledonia","NE":"INayighe","NF":"Norfolk Island","NG":"INigeria","NI":"Nicaragua","NL":"I-Netherlands","NO":"INoki","NP":"Nepal","NR":"Nauru","NU":"Niue","NZ":"INyuzilandi","OM":"Oman","PA":"Panama","PE":"I-Peru","PF":"French Polynesia","PG":"Papua New Guinea","PH":"Philippines","PK":"IPakistani","PL":"IPolandi","PM":"Saint Pierre and Miquelon","PN":"Pitcairn","PR":"Puerto Rico","PS":"Palestine, State of","PT":"IPhothugali","PW":"Palau","PY":"I-Paraguwayi","QA":"Qatar","RE":"IRiyunion","RO":"I-Romaniya","RS":"ISerbiya","RU":"Russian Federation","RW":"IRuwanda","SA":"Saudi Arabia","SB":"Solomon Islands","SC":"IsiSeyisheli","SD":"ISudan","SE":"ISwidi","SG":"Singapore","SH":"Saint Helena, Ascension and Tristan da Cunha","SI":"ISloveniya","SJ":"Svalbard and Jan Mayen","SK":"ISlovaki","SL":"ISiera Liyoni","SM":"USanti Marino","SN":"ISenegal","SO":"ISomalia","SR":"Suriname","SS":"ISudan yaseNingizimu","ST":"ISawu Tome noPhrinitshipeyi","SV":"El Salvador","SX":"Sint Maarten (Dutch part)","SY":"Syrian Arab Republic","SZ":"Eswatini","TC":"Turks and Caicos Islands","TD":"ITshedi","TF":"French Southern Territories","TG":"ITogo","TH":"I-Thayilandi","TJ":"Tajikistan","TK":"Tokelau","TL":"Timor-Leste","TM":"Turkmenistan","TN":"ITunisia","TO":"Tonga","TR":"ITheki","TT":"I-Trinidad ne Tobago","TV":"Tuvalu","TW":"I-Tayiwani","TZ":"ITanzania","UA":"I-Yukreyini","UG":"IYuganda","UM":"United States Minor Outlying Islands","US":"United States","UY":"I-Uruguwayi","UZ":"Uzbekistan","VA":"Holy See (Vatican City State)","VC":"Saint Vincent and the Grenadines","VE":"I-Venezuwela","VG":"Virgin Islands, British","VI":"Virgin Islands, U.S.","VN":"IViyetnami","VU":"Vanuatu","WF":"Wallis and Futuna","WS":"Samoa","YE":"IYemen","YT":"IMayotte","ZA":"IRiphabliki yaseNingizimu Afrika","ZM":"IZambiya","ZW":"IZimbabwe"}
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ISO3166
2
4
  class << self
3
5
  attr_writer :configuration
@@ -24,6 +26,19 @@ module ISO3166
24
26
  @loaded_locales = []
25
27
  end
26
28
 
29
+ # Enables the integration with the {Money}[https://github.com/RubyMoney/money] gem
30
+ #
31
+ # Please note that it requires you to add "money" gem to your gemfile.
32
+ #
33
+ # gem "money", "~> 6.9"
34
+ #
35
+ # *WARNING* if you have a top level class named +Money+ you will conflict with this gem.
36
+ #
37
+ # @example
38
+ # c = ISO3166::Country['us']
39
+ # c.currency.iso_code # => 'USD'
40
+ # c.currency.name # => 'United States Dollar'
41
+ # c.currency.symbol # => '$'
27
42
  def enable_currency_extension!
28
43
  require 'countries/country/currency_methods'
29
44
  ISO3166::Country.prepend(ISO3166::CountryCurrencyMethods)
@@ -33,7 +48,7 @@ module ISO3166
33
48
 
34
49
  def default_locales
35
50
  locales = if Object.const_defined?('I18n') && I18n.respond_to?(:available_locales)
36
- I18n.available_locales
51
+ I18n.available_locales.dup
37
52
  else
38
53
  [:en]
39
54
  end
@@ -1,7 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'unaccent'
4
+
1
5
  module ISO3166
2
6
  UNSEARCHABLE_METHODS = [:translations].freeze
3
7
 
4
- def self::Country(country_data_or_country)
8
+ def self.Country(country_data_or_country)
5
9
  case country_data_or_country
6
10
  when ISO3166::Country
7
11
  country_data_or_country
@@ -13,9 +17,6 @@ module ISO3166
13
17
  end
14
18
 
15
19
  module CountryClassMethods
16
- FIND_BY_REGEX = /^find_(all_)?(country_|countries_)?by_(.+)/
17
- SEARCH_TERM_FILTER_REGEX = /\(|\)|\[\]|,/
18
-
19
20
  def new(country_data)
20
21
  super if country_data.is_a?(Hash) || codes.include?(country_data.to_s.upcase)
21
22
  end
@@ -31,119 +32,81 @@ module ISO3166
31
32
 
32
33
  alias countries all
33
34
 
34
- def all_translated(locale = 'en')
35
- translations(locale).values
36
- end
37
-
38
35
  def all_names_with_codes(locale = 'en')
39
36
  Country.all.map do |c|
40
- lc = (c.translation(locale) || c.name)
37
+ lc = (c.translation(locale) || c.iso_short_name)
41
38
  [lc.respond_to?('html_safe') ? lc.html_safe : lc, c.alpha2]
42
39
  end.sort
43
40
  end
44
41
 
45
- def translations(locale = 'en')
46
- I18nData.countries(locale.upcase)
47
- end
48
-
49
- def search(query)
50
- country = new(query.to_s.upcase)
51
- country && country.valid? ? country : nil
42
+ def pluck(*attributes)
43
+ all.map { |country| country.data.fetch_values(*attributes.map(&:to_s)) }
52
44
  end
53
45
 
54
- def [](query)
55
- search(query)
56
- end
57
-
58
- def method_missing(method_name, *arguments)
59
- matches = method_name.to_s.match(FIND_BY_REGEX)
60
- return_all = matches[1]
61
- super unless matches
62
-
63
- countries = find_by(matches[3], arguments[0], matches[2])
64
- return_all ? countries : countries.last
46
+ def all_translated(locale = 'en')
47
+ translations(locale).values
65
48
  end
66
49
 
67
- def respond_to_missing?(method_name, include_private = false)
68
- matches = method_name.to_s.match(FIND_BY_REGEX)
69
- if matches && matches[3]
70
- matches[3].all? { |a| instance_methods.include?(a.to_sym) }
71
- else
72
- super
50
+ def translations(locale = 'en')
51
+ locale = locale.downcase.freeze
52
+ file_path = ISO3166::Data.datafile_path(%W[locales #{locale}.json])
53
+ translations = JSON.parse(File.read(file_path))
54
+
55
+ custom_countries = {}
56
+ (ISO3166::Data.codes - ISO3166::Data.loaded_codes).each do |code|
57
+ country = ISO3166::Country[code]
58
+ translation = country.translations[locale] || country.iso_short_name
59
+ custom_countries[code] = translation
73
60
  end
61
+
62
+ translations.merge(custom_countries)
74
63
  end
75
64
 
76
- def find_all_by(attribute, val)
77
- attributes, lookup_value = parse_attributes(attribute, val)
65
+ # @param query_val [String] A value to query using `query_method`
66
+ # @param query_method [Symbol] An optional query method, defaults to Country#alpha2
67
+ # @param result_method [Symbol] An optional method of `Country` to apply to the result set.
68
+ # @return [Array] An array of countries matching the provided query, or the result of applying `result_method` to the array of `Country` objects
69
+ def collect_countries_with(query_val, query_method = :alpha2, result_method = :itself)
70
+ return nil unless [query_method, result_method].map { |e| method_defined? e }.all?
78
71
 
79
- ISO3166::Data.cache.select do |_, v|
80
- country = Country.new(v)
81
- attributes.any? do |attr|
82
- Array(country.send(attr)).any? { |n| lookup_value === parse_value(n) }
83
- end
84
- end
72
+ all.select { |country| country.send(query_method).include? query_val }
73
+ .map { |country| country.send(result_method) }
85
74
  end
86
75
 
87
- def subdivisions(alpha2)
88
- @subdivisions ||= {}
89
- @subdivisions[alpha2] ||= create_subdivisions(subdivision_data(alpha2))
90
- end
76
+ # @param subdivision_str [String] A subdivision name or code to search for. Search includes translated subdivision names.
77
+ # @param result_method [Symbol] An optional method of `Country` to apply to the result set.
78
+ # @return [Array] An array of countries with subdivisions matching the provided name, or the result of applying `result_method` to the array of `Country` objects
79
+ def collect_likely_countries_by_subdivision_name(subdivision_str, result_method = :itself)
80
+ return nil unless method_defined? result_method
91
81
 
92
- def create_subdivisions(subdivision_data)
93
- subdivision_data.each_with_object({}) do |(k, v), hash|
94
- hash[k] = Subdivision.new(v)
95
- end
82
+ all.select { |country| country.subdivision_for_string?(subdivision_str) }
83
+ .map { |country| country.send(result_method) }
96
84
  end
97
85
 
98
86
  protected
99
87
 
100
- def strip_accents(v)
101
- if v.is_a?(Regexp)
102
- Regexp.new(v.source.unaccent, 'i')
88
+ def strip_accents(string)
89
+ if string.is_a?(Regexp)
90
+ Regexp.new(Unaccent.unaccent(string.source), 'i')
103
91
  else
104
- UnicodeUtils.downcase(v.to_s.unaccent)
105
- end
106
- end
107
-
108
- def parse_attributes(attribute, val)
109
- raise "Invalid attribute name '#{attribute}'" unless searchable_attribute?(attribute.to_sym)
110
-
111
- attributes = Array(attribute.to_s)
112
- if attributes == ['name']
113
- attributes << 'unofficial_names'
114
- # TODO: Revisit when better data from i18n_data
115
- # attributes << 'translated_names'
116
- end
117
-
118
- [attributes, parse_value(val)]
119
- end
120
-
121
- def searchable_attribute?(attribute)
122
- searchable_attributes.include?(attribute.to_sym)
123
- end
124
-
125
- def searchable_attributes
126
- instance_methods - UNSEARCHABLE_METHODS
127
- end
128
-
129
- def find_by(attribute, value, obj = nil)
130
- find_all_by(attribute.downcase, value).map do |country|
131
- obj.nil? ? country : new(country.last)
92
+ Unaccent.unaccent(string.to_s).downcase
132
93
  end
133
94
  end
134
95
 
135
- def parse_value(value)
136
- value = value.gsub(SEARCH_TERM_FILTER_REGEX, '') if value.respond_to?(:gsub)
137
- strip_accents(value)
138
- end
139
-
140
- def subdivision_data(alpha2)
141
- file = subdivision_file_path(alpha2)
142
- File.exist?(file) ? YAML.load_file(file) : {}
143
- end
144
-
145
- def subdivision_file_path(alpha2)
146
- File.join(File.dirname(__FILE__), '..', 'data', 'subdivisions', "#{alpha2}.yaml")
96
+ # Some methods like parse_value are expensive in that they
97
+ # create a large number of objects internally. In order to reduce the
98
+ # object creations and save the GC, we can cache them in an class instance
99
+ # variable. This will make subsequent parses O(1) and will stop the
100
+ # creation of new String object instances.
101
+ #
102
+ # NB: We only want to use this cache for values coming from the JSON
103
+ # file or our own code, caching user-generated data could be dangerous
104
+ # since the cache would continually grow.
105
+ def cached(value)
106
+ @_parsed_values_cache ||= {}
107
+ return @_parsed_values_cache[value] if @_parsed_values_cache[value]
108
+
109
+ @_parsed_values_cache[value] = yield
147
110
  end
148
111
  end
149
112
  end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ISO3166
4
+ module ConversionMethods
5
+ # @param alpha2 [String] ISO 3166 alpha-2 country code.
6
+ # @return [String] ISO 3166 alpha-3 country code.
7
+ def from_alpha2_to_alpha3(alpha2)
8
+ find_country_by_alpha2(alpha2)&.alpha3
9
+ end
10
+
11
+ # @param alpha3 [String] ISO 3166 alpha-3 country code.
12
+ # @return [String] ISO 3166 alpha-2 country code.
13
+ def from_alpha3_to_alpha2(alpha3)
14
+ find_country_by_alpha3(alpha3)&.alpha2
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ISO3166
4
+ module CountrySubdivisionMethods
5
+ # @param subdivision_str [String] A subdivision name or code to search for. Search includes translated subdivision names.
6
+ # @return [Subdivision] The first subdivision matching the provided string
7
+ def find_subdivision_by_name(subdivision_str)
8
+ subdivisions.select do |k, v|
9
+ subdivision_str == k || v.name == subdivision_str || v.translations.values.include?(subdivision_str)
10
+ end.values.first
11
+ end
12
+
13
+ def subdivision_for_string?(subdivision_str)
14
+ !subdivisions.transform_values(&:translations)
15
+ .select { |k, v| subdivision_str == k || v.values.include?(subdivision_str) }.empty?
16
+ end
17
+
18
+ # +true+ if this Country has any Subdivisions.
19
+ def subdivisions?
20
+ !subdivisions.empty?
21
+ end
22
+
23
+ # @return [Array<ISO3166::Subdivision>] the list of subdivisions for this Country.
24
+ def subdivisions
25
+ @subdivisions ||= if data['subdivisions']
26
+ ISO3166::Data.create_subdivisions(data['subdivisions'])
27
+ else
28
+ ISO3166::Data.subdivisions(alpha2)
29
+ end
30
+ end
31
+
32
+ # @param types [Array<String>] The locale to use for translations.
33
+ # @return [Array<ISO3166::Subdivision>] the list of subdivisions of the given type(s) for this Country.
34
+ def subdivisions_of_types(types)
35
+ subdivisions.select { |_k, v| types.include?(v.type) }
36
+ end
37
+
38
+ # @return [Array<String>] the list of subdivision types for this country
39
+ def subdivision_types
40
+ subdivisions.map { |_k, v| v['type'] }.uniq
41
+ end
42
+
43
+ # @return [Array<String>] the list of humanized subdivision types for this country. Uses ActiveSupport's `#humanize` if available
44
+ def humanized_subdivision_types
45
+ if String.instance_methods.include?(:humanize)
46
+ subdivisions.map { |_k, v| v['type'].humanize.freeze }.uniq
47
+ else
48
+ subdivisions.map { |_k, v| humanize_string(v['type']) }.uniq
49
+ end
50
+ end
51
+
52
+ # @param locale [String] The locale to use for translations.
53
+ # @return [Array<Array>] This Country's subdivision pairs of names and codes.
54
+ def subdivision_names_with_codes(locale = 'en')
55
+ subdivisions.map { |k, v| [v.translations[locale] || v.name, k] }
56
+ end
57
+
58
+ # @param locale [String] The locale to use for translations.
59
+ # @return [Array<String>] A list of subdivision names for this country.
60
+ def subdivision_names(locale = 'en')
61
+ subdivisions.map { |_k, v| v.translations[locale] || v.name }
62
+ end
63
+
64
+ def states
65
+ if RUBY_VERSION =~ /^3\.\d\.\d/
66
+ warn 'DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.',
67
+ uplevel: 1, category: :deprecated
68
+ else
69
+ warn 'DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.',
70
+ uplevel: 1
71
+ end
72
+
73
+ subdivisions
74
+ end
75
+
76
+ private
77
+
78
+ def humanize_string(str)
79
+ (str[0].upcase + str.tr('_', ' ')[1..]).freeze
80
+ end
81
+ end
82
+ end
@@ -1,8 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'money'
2
4
 
3
5
  module ISO3166
4
- # Optional extension which allows you to get back a Money::Currency object with all the currency info
6
+ # Optional extension which allows you to get back a +Money::Currency+ object with all the currency info.
7
+ # This requires enabling the integration with the {Money}[https://github.com/RubyMoney/money] gem (See {ISO3166::Configuration#enable_currency_extension!})
5
8
  module CountryCurrencyMethods
9
+ # @return [Money::Currency] The currency data for this Country's +currency_code+
6
10
  def currency
7
11
  Money::Currency.find(data['currency_code'])
8
12
  end
@@ -1,5 +1,4 @@
1
- #!/bin/env ruby
2
- # encoding: utf-8
1
+ # frozen_string_literal: true
3
2
 
4
3
  module ISO3166
5
4
  module Emoji
@@ -32,8 +31,11 @@ module ISO3166
32
31
  'z' => 'πŸ‡Ώ'
33
32
  }.freeze
34
33
 
34
+ # @return [String] the emoji flag for this country
35
+ #
36
+ # The emoji flag for this country, using Unicode Regional Indicator characters. e.g: "U+1F1FA U+1F1F8" for πŸ‡ΊπŸ‡Έ
35
37
  def emoji_flag
36
- alpha2.downcase.chars.map { |c| CODE_POINTS[c] }.join('')
38
+ alpha2.downcase.chars.map { |c| CODE_POINTS[c] }.join.freeze
37
39
  end
38
40
  end
39
41
  end
@@ -0,0 +1,79 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ISO3166
4
+ module CountryFinderMethods
5
+ FIND_BY_REGEX = /^find_(all_)?(country_|countries_)?by_(.+)/
6
+ SEARCH_TERM_FILTER_REGEX = /\(|\)|\[\]|,/
7
+
8
+ def search(query)
9
+ country = new(query.to_s.upcase)
10
+ country&.valid? ? country : nil
11
+ end
12
+
13
+ def [](query)
14
+ search(query)
15
+ end
16
+
17
+ def find_all_by(attribute, val)
18
+ attributes, lookup_value = parse_attributes(attribute, val)
19
+
20
+ ISO3166::Data.cache.select do |_, v|
21
+ country = Country.new(v)
22
+ attributes.any? do |attr|
23
+ Array(country.send(attr)).any? do |n|
24
+ lookup_value === cached(n) { parse_value(n) }
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ def method_missing(method_name, *arguments)
31
+ matches = method_name.to_s.match(FIND_BY_REGEX)
32
+ return_all = matches[1]
33
+ super unless matches
34
+
35
+ countries = find_by(matches[3], arguments[0], matches[2])
36
+ return_all ? countries : countries.last
37
+ end
38
+
39
+ def respond_to_missing?(method_name, include_private = false)
40
+ matches = method_name.to_s.match(FIND_BY_REGEX)
41
+ if matches && matches[3]
42
+ instance_methods.include?(matches[3].to_sym)
43
+ else
44
+ super
45
+ end
46
+ end
47
+
48
+ protected
49
+
50
+ def find_by(attribute, value, obj = nil)
51
+ find_all_by(attribute.downcase, value).map do |country|
52
+ obj.nil? ? country : new(country.last)
53
+ end
54
+ end
55
+
56
+ def parse_attributes(attribute, val)
57
+ raise "Invalid attribute name '#{attribute}'" unless searchable_attribute?(attribute.to_sym)
58
+
59
+ attributes = Array(attribute.to_s)
60
+ attributes = %w[iso_long_name iso_short_name unofficial_names translated_names] if attribute.to_s == 'any_name'
61
+
62
+ [attributes, parse_value(val)]
63
+ end
64
+
65
+ def parse_value(value)
66
+ value = value.gsub(SEARCH_TERM_FILTER_REGEX, '').freeze if value.respond_to?(:gsub)
67
+ strip_accents(value)
68
+ end
69
+
70
+ def searchable_attribute?(attribute)
71
+ searchable_attributes.include?(attribute.to_sym)
72
+ end
73
+
74
+ def searchable_attributes
75
+ # Add name and names until we complete the deprecation of the finders
76
+ instance_methods - UNSEARCHABLE_METHODS + %i[name names any_name]
77
+ end
78
+ end
79
+ end