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
@@ -0,0 +1,254 @@
1
+ # Country name translations for locale zu
2
+ #
3
+ # alpha2: localized_name
4
+ #
5
+ ---
6
+ AD: I-Andora
7
+ AE: United Arab Emirates
8
+ AF: I-Afganistani
9
+ AG: Antigua no Barbuda
10
+ AI: Anguilla
11
+ AL: I-Albaniya
12
+ AM: Armenia
13
+ AO: I-Angola
14
+ AQ: Antarctica
15
+ AR: I-Argentina
16
+ AS: American Samoa
17
+ AT: I-Ostriya
18
+ AU: I-Ostreliya
19
+ AW: Aruba
20
+ AX: Åland Islands
21
+ AZ: I-Azerbayijani
22
+ BA: IBhosniya neHerzegovina
23
+ BB: I-Barbados
24
+ BD: Isi-Bhangladeshi
25
+ BE: Isi-Bhelijiyamu
26
+ BF: IBukhina Faso
27
+ BG: IBulgariya
28
+ BH: Bahrain
29
+ BI: IBurundi
30
+ BJ: IBenini
31
+ BL: Saint Barthélemy
32
+ BM: Bermuda
33
+ BN: Brunei Darussalam
34
+ BO: I Boliviya
35
+ BQ: Bonaire, Sint Eustatius and Saba
36
+ BR: IBrazili
37
+ BS: Bahamas
38
+ BT: Bhutan
39
+ BV: Bouvet Island
40
+ BW: IButswana
41
+ BY: IBelarusi
42
+ BZ: Belize
43
+ CA: I Khanada
44
+ CC: Cocos (Keeling) Islands
45
+ CD: Congo, The Democratic Republic of the
46
+ CF: Central African Republic
47
+ CG: Congo
48
+ CH: I-Switzerland
49
+ CI: Côte d'Ivoire
50
+ CK: Cook Islands
51
+ CL: I-Chile
52
+ CM: IKamerooni
53
+ CN: Isi-Shayina
54
+ CO: IKolombiya
55
+ CR: Costa Rica
56
+ CU: Cuba
57
+ CV: Cabo Verde
58
+ CW: Curaçao
59
+ CX: Christmas Island
60
+ CY: Cyprus
61
+ CZ: Czechia
62
+ DE: IJalimani
63
+ DJ: IJibuthi
64
+ DK: IDenimaki
65
+ DM: Dominica
66
+ DO: Ulawulo lokuziphatha kwe Dominikhani
67
+ DZ: IAljiriya
68
+ EC: Ecuador
69
+ EE: I-Estoniya
70
+ EG: IGibhithe
71
+ EH: Western Sahara
72
+ ER: I-Eritrea
73
+ ES: ISpeyini
74
+ ET: I-Ithiopia
75
+ FI: IFinlandi
76
+ FJ: IFiji
77
+ FK: Falkland Islands (Malvinas)
78
+ FM: Micronesia, Federated States of
79
+ FO: Faroe Islands
80
+ FR: IFulansi
81
+ GA: IGaboni
82
+ GB: Umbuso Ohlangeneyo
83
+ GD: I-Grenada
84
+ GE: Georgia
85
+ GF: French Guiana
86
+ GG: Guernsey
87
+ GH: IGana
88
+ GI: Gibraltar
89
+ GL: Greenland
90
+ GM: Gambia
91
+ GN: IGini
92
+ GP: Guadeloupe
93
+ GQ: IGini Enkabazwe
94
+ GR: IGreki
95
+ GS: South Georgia and the South Sandwich Islands
96
+ GT: I-Guwathemala
97
+ GU: Guam
98
+ GW: IGini Bisawu
99
+ GY: Guyana
100
+ HK: Hong Kong
101
+ HM: Heard Island and McDonald Islands
102
+ HN: I-Hondurasi
103
+ HR: IKrowati
104
+ HT: Haiti
105
+ HU: I-Hungariya
106
+ ID: I-Indonesia
107
+ IE: I-Ayilendi
108
+ IL: Isreyili
109
+ IM: Isle of Man
110
+ IN: India
111
+ IO: British Indian Ocean Territory
112
+ IQ: I-Iraki
113
+ IR: Iran, Islamic Republic of
114
+ IS: I-Ayisilandi
115
+ IT: ITaliya
116
+ JE: Jersey
117
+ JM: Jamaica
118
+ JO: Jordan
119
+ JP: IJaphani
120
+ KE: IKenya
121
+ KG: Kyrgyzstan
122
+ KH: Cambodia
123
+ KI: Kiribati
124
+ KM: IsiKhomorosi
125
+ KN: Saint Kitts and Nevis
126
+ KP: North Korea
127
+ KR: South Korea
128
+ KW: Kuwait
129
+ KY: Cayman Islands
130
+ KZ: Kazakhstan
131
+ LA: Lao People's Democratic Republic
132
+ LB: Lebanon
133
+ LC: Saint Lucia
134
+ LI: Liechtenstein
135
+ LK: Sri Lanka
136
+ LR: ILiberia
137
+ LS: OSotho
138
+ LT: ILithuwaniya
139
+ LU: I-Luxembourg
140
+ LV: ILatviya
141
+ LY: ILibiya
142
+ MA: IMorokho
143
+ MC: Monaco
144
+ MD: Moldova
145
+ ME: IMontenegro
146
+ MF: Saint Martin (French part)
147
+ MG: IMadagasika
148
+ MH: Marshall Islands
149
+ MK: North Macedonia
150
+ ML: IMali
151
+ MM: Myanmar
152
+ MN: Mongolia
153
+ MO: Macao
154
+ MP: Northern Mariana Islands
155
+ MQ: Martinique
156
+ MR: IMoritaniya
157
+ MS: Montserrat
158
+ MT: IMalta
159
+ MU: IMorishisi
160
+ MV: Maldives
161
+ MW: IMalawi
162
+ MX: IMekisiko
163
+ MY: Malaysia
164
+ MZ: IMozambiki
165
+ NA: INamibhiya
166
+ NC: New Caledonia
167
+ NE: INayighe
168
+ NF: Norfolk Island
169
+ NG: INigeria
170
+ NI: Nicaragua
171
+ NL: I-Netherlands
172
+ 'NO': INoki
173
+ NP: Nepal
174
+ NR: Nauru
175
+ NU: Niue
176
+ NZ: INyuzilandi
177
+ OM: Oman
178
+ PA: Panama
179
+ PE: I-Peru
180
+ PF: French Polynesia
181
+ PG: Papua New Guinea
182
+ PH: Philippines
183
+ PK: IPakistani
184
+ PL: IPolandi
185
+ PM: Saint Pierre and Miquelon
186
+ PN: Pitcairn
187
+ PR: Puerto Rico
188
+ PS: Palestine, State of
189
+ PT: IPhothugali
190
+ PW: Palau
191
+ PY: I-Paraguwayi
192
+ QA: Qatar
193
+ RE: IRiyunion
194
+ RO: I-Romaniya
195
+ RS: ISerbiya
196
+ RU: Russian Federation
197
+ RW: IRuwanda
198
+ SA: Saudi Arabia
199
+ SB: Solomon Islands
200
+ SC: IsiSeyisheli
201
+ SD: ISudan
202
+ SE: ISwidi
203
+ SG: Singapore
204
+ SH: Saint Helena, Ascension and Tristan da Cunha
205
+ SI: ISloveniya
206
+ SJ: Svalbard and Jan Mayen
207
+ SK: ISlovaki
208
+ SL: ISiera Liyoni
209
+ SM: USanti Marino
210
+ SN: ISenegal
211
+ SO: ISomalia
212
+ SR: Suriname
213
+ SS: ISudan yaseNingizimu
214
+ ST: ISawu Tome noPhrinitshipeyi
215
+ SV: El Salvador
216
+ SX: Sint Maarten (Dutch part)
217
+ SY: Syrian Arab Republic
218
+ SZ: Eswatini
219
+ TC: Turks and Caicos Islands
220
+ TD: ITshedi
221
+ TF: French Southern Territories
222
+ TG: ITogo
223
+ TH: I-Thayilandi
224
+ TJ: Tajikistan
225
+ TK: Tokelau
226
+ TL: Timor-Leste
227
+ TM: Turkmenistan
228
+ TN: ITunisia
229
+ TO: Tonga
230
+ TR: ITheki
231
+ TT: I-Trinidad ne Tobago
232
+ TV: Tuvalu
233
+ TW: I-Tayiwani
234
+ TZ: ITanzania
235
+ UA: I-Yukreyini
236
+ UG: IYuganda
237
+ UM: United States Minor Outlying Islands
238
+ US: United States
239
+ UY: I-Uruguwayi
240
+ UZ: Uzbekistan
241
+ VA: Holy See (Vatican City State)
242
+ VC: Saint Vincent and the Grenadines
243
+ VE: I-Venezuwela
244
+ VG: Virgin Islands, British
245
+ VI: Virgin Islands, U.S.
246
+ VN: IViyetnami
247
+ VU: Vanuatu
248
+ WF: Wallis and Futuna
249
+ WS: Samoa
250
+ YE: IYemen
251
+ YT: IMayotte
252
+ ZA: IRiphabliki yaseNingizimu Afrika
253
+ ZM: IZambiya
254
+ ZW: IZimbabwe
@@ -1,10 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ISO3166
2
- ##
3
4
  # Handles building the in memory store of countries data
4
5
  class Data
5
- @@cache_dir = [File.dirname(__FILE__), 'cache']
6
- @@cache = {}
7
- @@registered_data = {}
6
+ extend SubdivisionMethods
7
+ extend LocalesMethods
8
+
9
+ @cache_dir = [File.dirname(__FILE__), 'cache']
10
+ @cache = {}
11
+ @loaded_country_codes = []
12
+ @registered_data = {}
13
+ @mutex = Mutex.new
14
+ @subdivisions = {}
8
15
 
9
16
  def initialize(alpha2)
10
17
  @alpha2 = alpha2.to_s.upcase
@@ -15,56 +22,68 @@ module ISO3166
15
22
  end
16
23
 
17
24
  class << self
18
- def cache_dir
19
- @@cache_dir
20
- end
21
-
22
- def cache_dir=(value)
23
- @@cache_dir = value
24
- end
25
-
25
+ # Registers a new Country with custom data.
26
+ # If you are overriding an existing country, this does not perform a deep merge so you will need to __bring in all data you wish to be available__.
27
+ # Overriding an existing country will also remove it from the internal management of translations.
26
28
  def register(data)
27
29
  alpha2 = data[:alpha2].upcase
28
- @@registered_data[alpha2] = \
29
- data.each_with_object({}) { |(k, v), a| a[k.to_s] = v }
30
- @@registered_data[alpha2]['translations'] = \
31
- Translations.new.merge(data[:translations] || {})
32
- @@cache = cache.merge(@@registered_data)
30
+ @registered_data[alpha2] = deep_stringify_keys(data)
31
+ @registered_data[alpha2]['translations'] = Translations.new.merge(data['translations'] || {})
32
+ @cache = cache.merge(@registered_data)
33
33
  end
34
34
 
35
+ # Removes a country from the loaded data
35
36
  def unregister(alpha2)
36
37
  alpha2 = alpha2.to_s.upcase
37
- @@cache.delete(alpha2)
38
- @@registered_data.delete(alpha2)
38
+ @cache.delete(alpha2)
39
+ @registered_data.delete(alpha2)
39
40
  end
40
41
 
41
42
  def cache
42
43
  update_cache
43
44
  end
44
45
 
46
+ # Resets the loaded data and cache
45
47
  def reset
46
- @@cache = {}
47
- @@registered_data = {}
48
- ISO3166.configuration.loaded_locales = []
48
+ synchronized do
49
+ @cache = {}
50
+ @subdivisions = {}
51
+ @registered_data = {}
52
+ ISO3166.configuration.loaded_locales = []
53
+ end
49
54
  end
50
55
 
51
56
  def codes
52
57
  load_data!
53
- loaded_codes
58
+ cached_codes
54
59
  end
55
60
 
56
61
  def update_cache
57
62
  load_data!
58
63
  sync_translations!
59
- @@cache
64
+ @cache
65
+ end
66
+
67
+ def loaded_codes
68
+ load_data!
69
+ @loaded_country_codes
70
+ end
71
+
72
+ def datafile_path(file_array)
73
+ File.join([@cache_dir] + file_array)
60
74
  end
61
75
 
76
+ private
77
+
62
78
  def load_data!
63
- return @@cache unless load_required?
64
- @@cache = load_cache %w(countries.json)
65
- @@_country_codes = @@cache.keys
66
- @@cache = @@cache.merge(@@registered_data)
67
- @@cache
79
+ return @cache unless load_required?
80
+
81
+ synchronized do
82
+ @cache = load_cache %w[countries.json]
83
+ @loaded_country_codes = @cache.keys
84
+ @cache = @cache.merge(@registered_data)
85
+ @cache
86
+ end
68
87
  end
69
88
 
70
89
  def sync_translations!
@@ -79,57 +98,55 @@ module ISO3166
79
98
  end
80
99
  end
81
100
 
82
- private
101
+ def synchronized(&block)
102
+ @mutex.synchronize(&block)
103
+ end
83
104
 
84
105
  def load_required?
85
- @@cache.empty?
106
+ synchronized { @cache.empty? }
86
107
  end
87
108
 
88
- def loaded_codes
89
- @@cache.keys
109
+ def cached_codes
110
+ @cache.keys
90
111
  end
91
112
 
92
113
  # Codes that we have translations for in dataset
93
114
  def internal_codes
94
- @@_country_codes - @@registered_data.keys
115
+ @loaded_country_codes - @registered_data.keys
95
116
  end
96
117
 
97
118
  def cache_flush_required?
98
119
  !locales_to_load.empty? || !locales_to_remove.empty?
99
120
  end
100
121
 
101
- def locales_to_load
102
- requested_locales - loaded_locales
103
- end
104
-
105
- def locales_to_remove
106
- loaded_locales - requested_locales
107
- end
108
-
109
- def requested_locales
110
- ISO3166.configuration.locales.map { |l| l.to_s.downcase }
122
+ def load_translations(locale)
123
+ synchronized do
124
+ locale_names = load_cache(['locales', "#{locale}.json"])
125
+ internal_codes.each do |alpha2|
126
+ load_alpha2_translation_for_locale(alpha2, locale, locale_names)
127
+ end
128
+ ISO3166.configuration.loaded_locales << locale
129
+ end
111
130
  end
112
131
 
113
- def loaded_locales
114
- ISO3166.configuration.loaded_locales.map { |l| l.to_s.downcase }
132
+ def load_alpha2_translation_for_locale(alpha2, locale, locale_names)
133
+ @cache[alpha2]['translations'] ||= Translations.new
134
+ @cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
135
+ @cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
115
136
  end
116
137
 
117
- def load_translations(locale)
118
- locale_names = load_cache(['locales', "#{locale}.json"])
119
- internal_codes.each do |alpha2|
120
- @@cache[alpha2]['translations'] ||= Translations.new
121
- @@cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
122
- @@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
138
+ def unload_translations(locale)
139
+ synchronized do
140
+ internal_codes.each do |alpha2|
141
+ unload_alpha2_translation_for_locale(alpha2, locale)
142
+ end
143
+ ISO3166.configuration.loaded_locales.delete(locale)
123
144
  end
124
- ISO3166.configuration.loaded_locales << locale
125
145
  end
126
146
 
127
- def unload_translations(locale)
128
- internal_codes.each do |alpha2|
129
- @@cache[alpha2]['translations'].delete(locale)
130
- @@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
131
- end
132
- ISO3166.configuration.loaded_locales.delete(locale)
147
+ def unload_alpha2_translation_for_locale(alpha2, locale)
148
+ @cache[alpha2]['translations'].delete(locale)
149
+ @cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
133
150
  end
134
151
 
135
152
  def load_cache(file_array)
@@ -137,8 +154,15 @@ module ISO3166
137
154
  File.exist?(file_path) ? JSON.parse(File.binread(file_path)) : {}
138
155
  end
139
156
 
140
- def datafile_path(file_array)
141
- File.join([@@cache_dir] + file_array)
157
+ def deep_stringify_keys(data)
158
+ data.transform_keys!(&:to_s)
159
+ data.transform_values! { |v| v.is_a?(Hash) ? deep_stringify_keys(v) : v }
160
+
161
+ data
162
+ end
163
+
164
+ def subdivision_file_path(alpha2)
165
+ File.join(File.dirname(__FILE__), 'data', 'subdivisions', "#{alpha2}.yaml")
142
166
  end
143
167
  end
144
168
  end
@@ -1,7 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'countries'
2
4
 
5
+ # Some apps might not want to constantly call +ISO3166::Country+. This gem has a helper that can provide a Country class
6
+ #
7
+ # With global Country Helper enabled
8
+ #
9
+ # c = Country['US']
10
+ #
11
+ # This will conflict with any existing Country constant
12
+ #
13
+ # To Use
14
+ #
15
+ # gem 'countries', require: 'countries/global'
16
+ #
3
17
  class Country < ISO3166::Country
4
- def to_s
5
- name
6
- end
7
18
  end
@@ -1,13 +1,18 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
  require 'json'
3
- require 'i18n_data'
4
5
 
5
- require 'countries/kwarg_struct'
6
6
  require 'countries/configuration'
7
+ require 'countries/data/locales_methods'
8
+ require 'countries/data/subdivision_methods'
7
9
  require 'countries/data'
8
10
  require 'countries/structure'
9
11
  require 'countries/translations'
12
+ require 'countries/country/country_subdivision_methods'
10
13
  require 'countries/country/class_methods'
14
+ require 'countries/country/conversion_methods'
15
+ require 'countries/country/finder_methods'
11
16
  require 'countries/country/emoji'
12
17
  require 'countries/country'
13
18
  require 'countries/subdivision'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ISO3166
2
4
  class Country
3
5
  def mongoize
@@ -5,6 +7,7 @@ module ISO3166
5
7
  end
6
8
 
7
9
  class << self
10
+ # Convert an +ISO3166::Country+ to the data that is stored by Mongoid.
8
11
  def mongoize(country)
9
12
  if country.is_a?(self) && !country.data.nil?
10
13
  country.alpha2
@@ -13,10 +16,12 @@ module ISO3166
13
16
  end
14
17
  end
15
18
 
19
+ # Get the object as it was stored with Mongoid, and instantiate an +ISO3166::Country+.
16
20
  def demongoize(alpha2)
17
21
  new(alpha2)
18
22
  end
19
23
 
24
+ # Convert an +ISO3166::Country+ to the data that is stored by Mongoid.
20
25
  def evolve(country)
21
26
  mongoize(country)
22
27
  end
@@ -1,9 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'uri'
2
4
  require 'net/http'
3
5
  require 'nokogiri'
4
6
  require 'fileutils'
7
+ require 'json'
8
+
9
+ # Support code to allow updating subdivision data from the Unicode CLDR repository
5
10
  module Sources
11
+ # Support code to allow updating subdivision data from the Unicode CLDR repository
6
12
  module CLDR
13
+ # Downloads data from the Unicode CLDR repository
7
14
  module Downloader
8
15
  module_function
9
16
 
@@ -14,21 +21,16 @@ module Sources
14
21
  def download_folder(type)
15
22
  folder = File.join(ISO3166_ROOT_PATH, 'tmp', 'cldr', 'trunk', 'common', type)
16
23
  FileUtils.mkdir_p(folder)
17
- doc = Nokogiri::HTML get(type + '/')
18
- doc.css('a[href]').map { |e| e.attributes['href'].value }.each do |href|
19
- next if href == '../'
20
- File.write(File.join(folder, href), get([type, href].join('/')))
21
- end
22
- end
24
+ url = URI.parse("https://api.github.com/repos/unicode-org/cldr/contents/common/#{type}")
25
+ path_listing = JSON.parse(Net::HTTP.get_response(url).body)
26
+ path_listing.each do |path|
27
+ next unless path['name'] =~ /\.xml$/
23
28
 
24
- def get(path)
25
- url = URI("http://www.unicode.org/repos/cldr/trunk/common/#{path}")
26
-
27
- http = Net::HTTP.new(url.host, url.port)
28
-
29
- request = Net::HTTP::Get.new(url)
30
- response = http.request(request)
31
- response.read_body
29
+ File.open(File.join(folder, path['name']), 'w') do |f|
30
+ raw_url = URI.parse(path['download_url'])
31
+ f.write(Net::HTTP.get_response(raw_url).body)
32
+ end
33
+ end
32
34
  end
33
35
  end
34
36
  end
@@ -1,7 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Sources
2
4
  module CLDR
5
+ # Auxiliary Subdivision class to support loading Unicode CLDR data to update local files
3
6
  class Subdivision
4
7
  attr_reader :xml, :language_code
8
+
5
9
  def initialize(language_code:, xml:)
6
10
  @language_code = language_code
7
11
  @xml = xml
@@ -16,7 +20,7 @@ module Sources
16
20
  end
17
21
 
18
22
  def code
19
- type[2..-1].upcase
23
+ type[2..].upcase
20
24
  end
21
25
 
22
26
  def type
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'active_support'
2
4
  require 'active_support/core_ext/hash/deep_merge'
3
5
  require 'nokogiri'
@@ -5,28 +7,33 @@ require 'pry'
5
7
 
6
8
  module Sources
7
9
  module CLDR
10
+ # Updates local subdivision files with data from the Unicode CLDR repository
8
11
  class SubdivisionUpdater
9
12
  def call
10
13
  d = Dir['./tmp/cldr/trunk/common/subdivisions/*.xml']
11
- loader = Sources::Local::CachedLoader.new(Sources::Local::Subdivision)
12
- d.each do |file_path|
13
- language_data = Nokogiri::XML(File.read(file_path))
14
- language_code = File.basename(file_path, '.*')
15
- subdivisions = language_data.css('subdivision')
16
- next if subdivisions.empty?
17
- last_country_code_seen = nil
14
+ @loader = Sources::Local::CachedLoader.new(Sources::Local::Subdivision)
15
+ d.each { |file_path| update_locale(file_path) }
16
+ end
17
+
18
+ def update_locale(file_path)
19
+ language_data = Nokogiri::XML(File.read(file_path))
20
+ language_code = File.basename(file_path, '.*')
21
+ subdivisions = language_data.css('subdivision')
22
+ return if subdivisions.empty?
23
+
24
+ last_country_code_seen = nil
18
25
 
19
- subdivisions.each_with_index do |subdivision, index|
20
- subdivision = Sources::CLDR::Subdivision.new(language_code: language_code, xml: subdivision)
21
- data = loader.load(subdivision.country_code)
22
- data[subdivision.code] ||= {}
23
- data[subdivision.code] = data[subdivision.code].deep_merge(subdivision.to_h)
24
- if (last_country_code_seen && last_country_code_seen != subdivision.country_code) || index == subdivisions.size - 1
25
- puts "Updated #{subdivision.country_code} with language_code #{language_code}"
26
- loader.save(subdivision.country_code, data)
27
- end
28
- last_country_code_seen = subdivision.country_code
26
+ subdivisions.each_with_index do |subdivision, index|
27
+ subdivision = Sources::CLDR::Subdivision.new(language_code: language_code, xml: subdivision)
28
+ data = @loader.load(subdivision.country_code)
29
+ data[subdivision.code] ||= {}
30
+ data[subdivision.code] = data[subdivision.code].deep_merge(subdivision.to_h)
31
+ if (last_country_code_seen && last_country_code_seen != subdivision.country_code) ||
32
+ index == subdivisions.size - 1
33
+ puts "Updated #{subdivision.country_code} with language_code #{language_code}"
34
+ @loader.save(subdivision.country_code, data)
29
35
  end
36
+ last_country_code_seen = subdivision.country_code
30
37
  end
31
38
  end
32
39
  end
@@ -1,7 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Sources
4
+ # Support code to allow updating subdivision data from the Unicode CLDR repository
2
5
  module Local
6
+ # Loader for locally-cached data, to allow merging Unicode CLDR data with existing local data
3
7
  class CachedLoader
4
8
  attr_reader :klass
9
+
5
10
  def initialize(klass)
6
11
  @klass = klass
7
12
  @loaded_countries = {}