countries 3.0.0 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (790) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql-analysis.yml +70 -0
  3. data/.github/workflows/tests.yml +35 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +40 -1
  6. data/.rubocop_todo.yml +8 -41
  7. data/CHANGELOG.md +315 -1
  8. data/Gemfile +9 -2
  9. data/LICENSE +3 -1
  10. data/README.markdown +141 -123
  11. data/Rakefile +29 -56
  12. data/UPGRADE.md +39 -0
  13. data/bin/console +1 -0
  14. data/countries.gemspec +15 -10
  15. data/lib/countries/cache/countries.json +1 -1
  16. data/lib/countries/cache/locales/ab.json +1 -0
  17. data/lib/countries/cache/locales/af.json +1 -1
  18. data/lib/countries/cache/locales/ak.json +1 -0
  19. data/lib/countries/cache/locales/am.json +1 -1
  20. data/lib/countries/cache/locales/an.json +1 -0
  21. data/lib/countries/cache/locales/ar.json +1 -1
  22. data/lib/countries/cache/locales/as.json +1 -1
  23. data/lib/countries/cache/locales/ay.json +1 -0
  24. data/lib/countries/cache/locales/az.json +1 -1
  25. data/lib/countries/cache/locales/ba.json +1 -0
  26. data/lib/countries/cache/locales/be.json +1 -1
  27. data/lib/countries/cache/locales/bg.json +1 -1
  28. data/lib/countries/cache/locales/bi.json +1 -0
  29. data/lib/countries/cache/locales/bn-in.json +1 -0
  30. data/lib/countries/cache/locales/bn.json +1 -1
  31. data/lib/countries/cache/locales/br.json +1 -1
  32. data/lib/countries/cache/locales/bs.json +1 -1
  33. data/lib/countries/cache/locales/ca.json +1 -1
  34. data/lib/countries/cache/locales/ce.json +1 -0
  35. data/lib/countries/cache/locales/ch.json +1 -0
  36. data/lib/countries/cache/locales/cs.json +1 -1
  37. data/lib/countries/cache/locales/cv.json +1 -0
  38. data/lib/countries/cache/locales/cy.json +1 -1
  39. data/lib/countries/cache/locales/da.json +1 -1
  40. data/lib/countries/cache/locales/de.json +1 -1
  41. data/lib/countries/cache/locales/dv.json +1 -0
  42. data/lib/countries/cache/locales/dz.json +1 -1
  43. data/lib/countries/cache/locales/ee.json +1 -0
  44. data/lib/countries/cache/locales/el.json +1 -1
  45. data/lib/countries/cache/locales/en.json +1 -1
  46. data/lib/countries/cache/locales/eo.json +1 -1
  47. data/lib/countries/cache/locales/es.json +1 -1
  48. data/lib/countries/cache/locales/et.json +1 -1
  49. data/lib/countries/cache/locales/eu.json +1 -1
  50. data/lib/countries/cache/locales/fa.json +1 -1
  51. data/lib/countries/cache/locales/ff.json +1 -0
  52. data/lib/countries/cache/locales/fi.json +1 -1
  53. data/lib/countries/cache/locales/fo.json +1 -1
  54. data/lib/countries/cache/locales/fr.json +1 -1
  55. data/lib/countries/cache/locales/fy.json +1 -0
  56. data/lib/countries/cache/locales/ga.json +1 -1
  57. data/lib/countries/cache/locales/gl.json +1 -1
  58. data/lib/countries/cache/locales/gn.json +1 -0
  59. data/lib/countries/cache/locales/gu.json +1 -1
  60. data/lib/countries/cache/locales/gv.json +1 -0
  61. data/lib/countries/cache/locales/ha.json +1 -0
  62. data/lib/countries/cache/locales/he.json +1 -1
  63. data/lib/countries/cache/locales/hi.json +1 -1
  64. data/lib/countries/cache/locales/hr.json +1 -1
  65. data/lib/countries/cache/locales/ht.json +1 -0
  66. data/lib/countries/cache/locales/hu.json +1 -1
  67. data/lib/countries/cache/locales/hy.json +1 -1
  68. data/lib/countries/cache/locales/ia.json +1 -1
  69. data/lib/countries/cache/locales/id.json +1 -1
  70. data/lib/countries/cache/locales/io.json +1 -0
  71. data/lib/countries/cache/locales/is.json +1 -1
  72. data/lib/countries/cache/locales/it.json +1 -1
  73. data/lib/countries/cache/locales/iu.json +1 -0
  74. data/lib/countries/cache/locales/ja.json +1 -1
  75. data/lib/countries/cache/locales/ka.json +1 -1
  76. data/lib/countries/cache/locales/ki.json +1 -0
  77. data/lib/countries/cache/locales/kk.json +1 -1
  78. data/lib/countries/cache/locales/kl.json +1 -0
  79. data/lib/countries/cache/locales/km.json +1 -1
  80. data/lib/countries/cache/locales/kn.json +1 -1
  81. data/lib/countries/cache/locales/ko.json +1 -1
  82. data/lib/countries/cache/locales/ku.json +1 -1
  83. data/lib/countries/cache/locales/kv.json +1 -0
  84. data/lib/countries/cache/locales/kw.json +1 -0
  85. data/lib/countries/cache/locales/ky.json +1 -0
  86. data/lib/countries/cache/locales/lo.json +1 -0
  87. data/lib/countries/cache/locales/lt.json +1 -1
  88. data/lib/countries/cache/locales/lv.json +1 -1
  89. data/lib/countries/cache/locales/mi.json +1 -1
  90. data/lib/countries/cache/locales/mk.json +1 -1
  91. data/lib/countries/cache/locales/ml.json +1 -1
  92. data/lib/countries/cache/locales/mn.json +1 -1
  93. data/lib/countries/cache/locales/mr.json +1 -1
  94. data/lib/countries/cache/locales/ms.json +1 -1
  95. data/lib/countries/cache/locales/mt.json +1 -1
  96. data/lib/countries/cache/locales/my.json +1 -0
  97. data/lib/countries/cache/locales/na.json +1 -0
  98. data/lib/countries/cache/locales/nb.json +1 -1
  99. data/lib/countries/cache/locales/ne.json +1 -1
  100. data/lib/countries/cache/locales/nl.json +1 -1
  101. data/lib/countries/cache/locales/nn.json +1 -1
  102. data/lib/countries/cache/locales/nv.json +1 -0
  103. data/lib/countries/cache/locales/oc.json +1 -1
  104. data/lib/countries/cache/locales/or.json +1 -1
  105. data/lib/countries/cache/locales/pa.json +1 -1
  106. data/lib/countries/cache/locales/pi.json +1 -0
  107. data/lib/countries/cache/locales/pl.json +1 -1
  108. data/lib/countries/cache/locales/ps.json +1 -1
  109. data/lib/countries/cache/locales/pt-br.json +1 -0
  110. data/lib/countries/cache/locales/pt.json +1 -1
  111. data/lib/countries/cache/locales/ro.json +1 -1
  112. data/lib/countries/cache/locales/ru.json +1 -1
  113. data/lib/countries/cache/locales/rw.json +1 -1
  114. data/lib/countries/cache/locales/sc.json +1 -0
  115. data/lib/countries/cache/locales/sd.json +1 -0
  116. data/lib/countries/cache/locales/si.json +1 -1
  117. data/lib/countries/cache/locales/sk.json +1 -1
  118. data/lib/countries/cache/locales/sl.json +1 -1
  119. data/lib/countries/cache/locales/so.json +1 -1
  120. data/lib/countries/cache/locales/sq.json +1 -1
  121. data/lib/countries/cache/locales/sr.json +1 -1
  122. data/lib/countries/cache/locales/sv.json +1 -1
  123. data/lib/countries/cache/locales/sw.json +1 -1
  124. data/lib/countries/cache/locales/ta.json +1 -1
  125. data/lib/countries/cache/locales/te.json +1 -1
  126. data/lib/countries/cache/locales/tg.json +1 -0
  127. data/lib/countries/cache/locales/th.json +1 -1
  128. data/lib/countries/cache/locales/ti.json +1 -1
  129. data/lib/countries/cache/locales/tk.json +1 -1
  130. data/lib/countries/cache/locales/tl.json +1 -1
  131. data/lib/countries/cache/locales/tr.json +1 -1
  132. data/lib/countries/cache/locales/tt.json +1 -1
  133. data/lib/countries/cache/locales/ug.json +1 -1
  134. data/lib/countries/cache/locales/uk.json +1 -1
  135. data/lib/countries/cache/locales/ur.json +1 -0
  136. data/lib/countries/cache/locales/uz.json +1 -0
  137. data/lib/countries/cache/locales/ve.json +1 -1
  138. data/lib/countries/cache/locales/vi.json +1 -1
  139. data/lib/countries/cache/locales/wa.json +1 -1
  140. data/lib/countries/cache/locales/wo.json +1 -1
  141. data/lib/countries/cache/locales/xh.json +1 -1
  142. data/lib/countries/cache/locales/yo.json +1 -0
  143. data/lib/countries/cache/locales/zh-cn.json +1 -0
  144. data/lib/countries/cache/locales/zh-hk.json +1 -0
  145. data/lib/countries/cache/locales/zh-tw.json +1 -0
  146. data/lib/countries/cache/locales/zu.json +1 -1
  147. data/lib/countries/configuration.rb +15 -0
  148. data/lib/countries/country/class_methods.rb +41 -97
  149. data/lib/countries/country/currency_methods.rb +6 -1
  150. data/lib/countries/country/emoji.rb +5 -3
  151. data/lib/countries/country/finder_methods.rb +81 -0
  152. data/lib/countries/country.rb +145 -11
  153. data/lib/countries/data/countries/AD.yaml +28 -28
  154. data/lib/countries/data/countries/AE.yaml +32 -33
  155. data/lib/countries/data/countries/AF.yaml +32 -32
  156. data/lib/countries/data/countries/AG.yaml +29 -30
  157. data/lib/countries/data/countries/AI.yaml +27 -27
  158. data/lib/countries/data/countries/AL.yaml +29 -29
  159. data/lib/countries/data/countries/AM.yaml +30 -30
  160. data/lib/countries/data/countries/AO.yaml +27 -28
  161. data/lib/countries/data/countries/AQ.yaml +26 -27
  162. data/lib/countries/data/countries/AR.yaml +30 -30
  163. data/lib/countries/data/countries/AS.yaml +31 -31
  164. data/lib/countries/data/countries/AT.yaml +36 -36
  165. data/lib/countries/data/countries/AU.yaml +34 -34
  166. data/lib/countries/data/countries/AW.yaml +25 -26
  167. data/lib/countries/data/countries/AX.yaml +27 -27
  168. data/lib/countries/data/countries/AZ.yaml +30 -30
  169. data/lib/countries/data/countries/BA.yaml +32 -32
  170. data/lib/countries/data/countries/BB.yaml +28 -28
  171. data/lib/countries/data/countries/BD.yaml +28 -28
  172. data/lib/countries/data/countries/BE.yaml +41 -41
  173. data/lib/countries/data/countries/BF.yaml +29 -30
  174. data/lib/countries/data/countries/BG.yaml +36 -36
  175. data/lib/countries/data/countries/BH.yaml +29 -29
  176. data/lib/countries/data/countries/BI.yaml +29 -30
  177. data/lib/countries/data/countries/BJ.yaml +27 -28
  178. data/lib/countries/data/countries/BL.yaml +25 -25
  179. data/lib/countries/data/countries/BM.yaml +29 -29
  180. data/lib/countries/data/countries/BN.yaml +26 -26
  181. data/lib/countries/data/countries/BO.yaml +31 -32
  182. data/lib/countries/data/countries/BQ.yaml +28 -29
  183. data/lib/countries/data/countries/BR.yaml +35 -35
  184. data/lib/countries/data/countries/BS.yaml +26 -28
  185. data/lib/countries/data/countries/BT.yaml +28 -28
  186. data/lib/countries/data/countries/BV.yaml +26 -27
  187. data/lib/countries/data/countries/BW.yaml +29 -30
  188. data/lib/countries/data/countries/BY.yaml +30 -30
  189. data/lib/countries/data/countries/BZ.yaml +28 -29
  190. data/lib/countries/data/countries/CA.yaml +30 -30
  191. data/lib/countries/data/countries/CC.yaml +29 -29
  192. data/lib/countries/data/countries/CD.yaml +35 -36
  193. data/lib/countries/data/countries/CF.yaml +29 -30
  194. data/lib/countries/data/countries/CG.yaml +29 -30
  195. data/lib/countries/data/countries/CH.yaml +40 -40
  196. data/lib/countries/data/countries/CI.yaml +27 -28
  197. data/lib/countries/data/countries/CK.yaml +27 -28
  198. data/lib/countries/data/countries/CL.yaml +33 -28
  199. data/lib/countries/data/countries/CM.yaml +29 -30
  200. data/lib/countries/data/countries/CN.yaml +28 -28
  201. data/lib/countries/data/countries/CO.yaml +28 -28
  202. data/lib/countries/data/countries/CR.yaml +28 -28
  203. data/lib/countries/data/countries/CU.yaml +27 -27
  204. data/lib/countries/data/countries/CV.yaml +28 -28
  205. data/lib/countries/data/countries/CW.yaml +25 -26
  206. data/lib/countries/data/countries/CX.yaml +30 -30
  207. data/lib/countries/data/countries/CY.yaml +41 -41
  208. data/lib/countries/data/countries/CZ.yaml +40 -38
  209. data/lib/countries/data/countries/DE.yaml +36 -36
  210. data/lib/countries/data/countries/DJ.yaml +29 -30
  211. data/lib/countries/data/countries/DK.yaml +35 -35
  212. data/lib/countries/data/countries/DM.yaml +26 -27
  213. data/lib/countries/data/countries/DO.yaml +28 -28
  214. data/lib/countries/data/countries/DZ.yaml +28 -28
  215. data/lib/countries/data/countries/EC.yaml +28 -28
  216. data/lib/countries/data/countries/EE.yaml +36 -36
  217. data/lib/countries/data/countries/EG.yaml +28 -28
  218. data/lib/countries/data/countries/EH.yaml +30 -30
  219. data/lib/countries/data/countries/ER.yaml +31 -32
  220. data/lib/countries/data/countries/ES.yaml +36 -36
  221. data/lib/countries/data/countries/ET.yaml +28 -28
  222. data/lib/countries/data/countries/FI.yaml +39 -39
  223. data/lib/countries/data/countries/FJ.yaml +33 -34
  224. data/lib/countries/data/countries/FK.yaml +29 -29
  225. data/lib/countries/data/countries/FM.yaml +28 -28
  226. data/lib/countries/data/countries/FO.yaml +28 -28
  227. data/lib/countries/data/countries/FR.yaml +37 -37
  228. data/lib/countries/data/countries/GA.yaml +27 -28
  229. data/lib/countries/data/countries/GB.yaml +44 -36
  230. data/lib/countries/data/countries/GD.yaml +26 -27
  231. data/lib/countries/data/countries/GE.yaml +28 -28
  232. data/lib/countries/data/countries/GF.yaml +29 -29
  233. data/lib/countries/data/countries/GG.yaml +31 -31
  234. data/lib/countries/data/countries/GH.yaml +27 -28
  235. data/lib/countries/data/countries/GI.yaml +28 -28
  236. data/lib/countries/data/countries/GL.yaml +29 -29
  237. data/lib/countries/data/countries/GM.yaml +28 -29
  238. data/lib/countries/data/countries/GN.yaml +30 -30
  239. data/lib/countries/data/countries/GP.yaml +27 -27
  240. data/lib/countries/data/countries/GQ.yaml +29 -30
  241. data/lib/countries/data/countries/GR.yaml +37 -37
  242. data/lib/countries/data/countries/GS.yaml +29 -29
  243. data/lib/countries/data/countries/GT.yaml +28 -28
  244. data/lib/countries/data/countries/GU.yaml +31 -31
  245. data/lib/countries/data/countries/GW.yaml +28 -28
  246. data/lib/countries/data/countries/GY.yaml +26 -27
  247. data/lib/countries/data/countries/HK.yaml +29 -30
  248. data/lib/countries/data/countries/HM.yaml +28 -28
  249. data/lib/countries/data/countries/HN.yaml +28 -28
  250. data/lib/countries/data/countries/HR.yaml +37 -37
  251. data/lib/countries/data/countries/HT.yaml +29 -29
  252. data/lib/countries/data/countries/HU.yaml +37 -37
  253. data/lib/countries/data/countries/ID.yaml +28 -28
  254. data/lib/countries/data/countries/IE.yaml +39 -39
  255. data/lib/countries/data/countries/IL.yaml +35 -30
  256. data/lib/countries/data/countries/IM.yaml +31 -31
  257. data/lib/countries/data/countries/IN.yaml +30 -30
  258. data/lib/countries/data/countries/IO.yaml +28 -28
  259. data/lib/countries/data/countries/IQ.yaml +28 -28
  260. data/lib/countries/data/countries/IR.yaml +28 -28
  261. data/lib/countries/data/countries/IS.yaml +35 -35
  262. data/lib/countries/data/countries/IT.yaml +36 -36
  263. data/lib/countries/data/countries/JE.yaml +26 -26
  264. data/lib/countries/data/countries/JM.yaml +28 -29
  265. data/lib/countries/data/countries/JO.yaml +28 -28
  266. data/lib/countries/data/countries/JP.yaml +28 -28
  267. data/lib/countries/data/countries/KE.yaml +30 -30
  268. data/lib/countries/data/countries/KG.yaml +30 -30
  269. data/lib/countries/data/countries/KH.yaml +28 -28
  270. data/lib/countries/data/countries/KI.yaml +27 -28
  271. data/lib/countries/data/countries/KM.yaml +29 -30
  272. data/lib/countries/data/countries/KN.yaml +28 -29
  273. data/lib/countries/data/countries/KP.yaml +28 -28
  274. data/lib/countries/data/countries/KR.yaml +28 -28
  275. data/lib/countries/data/countries/KW.yaml +28 -28
  276. data/lib/countries/data/countries/KY.yaml +29 -29
  277. data/lib/countries/data/countries/KZ.yaml +30 -30
  278. data/lib/countries/data/countries/LA.yaml +28 -28
  279. data/lib/countries/data/countries/LB.yaml +30 -30
  280. data/lib/countries/data/countries/LC.yaml +28 -29
  281. data/lib/countries/data/countries/LI.yaml +27 -27
  282. data/lib/countries/data/countries/LK.yaml +28 -28
  283. data/lib/countries/data/countries/LR.yaml +28 -28
  284. data/lib/countries/data/countries/LS.yaml +28 -28
  285. data/lib/countries/data/countries/LT.yaml +37 -37
  286. data/lib/countries/data/countries/LU.yaml +39 -39
  287. data/lib/countries/data/countries/LV.yaml +42 -36
  288. data/lib/countries/data/countries/LY.yaml +27 -28
  289. data/lib/countries/data/countries/MA.yaml +28 -28
  290. data/lib/countries/data/countries/MC.yaml +28 -28
  291. data/lib/countries/data/countries/MD.yaml +28 -28
  292. data/lib/countries/data/countries/ME.yaml +34 -34
  293. data/lib/countries/data/countries/MF.yaml +29 -29
  294. data/lib/countries/data/countries/MG.yaml +30 -30
  295. data/lib/countries/data/countries/MH.yaml +30 -30
  296. data/lib/countries/data/countries/MK.yaml +30 -28
  297. data/lib/countries/data/countries/ML.yaml +27 -28
  298. data/lib/countries/data/countries/MM.yaml +27 -27
  299. data/lib/countries/data/countries/MN.yaml +28 -28
  300. data/lib/countries/data/countries/MO.yaml +28 -29
  301. data/lib/countries/data/countries/MP.yaml +31 -31
  302. data/lib/countries/data/countries/MQ.yaml +27 -27
  303. data/lib/countries/data/countries/MR.yaml +29 -30
  304. data/lib/countries/data/countries/MS.yaml +26 -27
  305. data/lib/countries/data/countries/MT.yaml +38 -38
  306. data/lib/countries/data/countries/MU.yaml +28 -28
  307. data/lib/countries/data/countries/MV.yaml +28 -28
  308. data/lib/countries/data/countries/MW.yaml +29 -30
  309. data/lib/countries/data/countries/MX.yaml +33 -33
  310. data/lib/countries/data/countries/MY.yaml +30 -30
  311. data/lib/countries/data/countries/MZ.yaml +28 -28
  312. data/lib/countries/data/countries/NA.yaml +30 -30
  313. data/lib/countries/data/countries/NC.yaml +29 -29
  314. data/lib/countries/data/countries/NE.yaml +28 -28
  315. data/lib/countries/data/countries/NF.yaml +29 -29
  316. data/lib/countries/data/countries/NG.yaml +34 -34
  317. data/lib/countries/data/countries/NI.yaml +28 -28
  318. data/lib/countries/data/countries/NL.yaml +38 -36
  319. data/lib/countries/data/countries/NO.yaml +36 -36
  320. data/lib/countries/data/countries/NP.yaml +32 -32
  321. data/lib/countries/data/countries/NR.yaml +27 -28
  322. data/lib/countries/data/countries/NU.yaml +25 -26
  323. data/lib/countries/data/countries/NZ.yaml +35 -35
  324. data/lib/countries/data/countries/OM.yaml +28 -28
  325. data/lib/countries/data/countries/PA.yaml +27 -28
  326. data/lib/countries/data/countries/PE.yaml +28 -28
  327. data/lib/countries/data/countries/PF.yaml +29 -29
  328. data/lib/countries/data/countries/PG.yaml +28 -28
  329. data/lib/countries/data/countries/PH.yaml +35 -35
  330. data/lib/countries/data/countries/PK.yaml +30 -30
  331. data/lib/countries/data/countries/PL.yaml +37 -37
  332. data/lib/countries/data/countries/PM.yaml +29 -29
  333. data/lib/countries/data/countries/PN.yaml +27 -27
  334. data/lib/countries/data/countries/PR.yaml +30 -30
  335. data/lib/countries/data/countries/PS.yaml +31 -32
  336. data/lib/countries/data/countries/PT.yaml +34 -34
  337. data/lib/countries/data/countries/PW.yaml +26 -26
  338. data/lib/countries/data/countries/PY.yaml +30 -30
  339. data/lib/countries/data/countries/QA.yaml +27 -28
  340. data/lib/countries/data/countries/RE.yaml +28 -28
  341. data/lib/countries/data/countries/RO.yaml +37 -37
  342. data/lib/countries/data/countries/RS.yaml +28 -28
  343. data/lib/countries/data/countries/RU.yaml +28 -28
  344. data/lib/countries/data/countries/RW.yaml +31 -32
  345. data/lib/countries/data/countries/SA.yaml +33 -28
  346. data/lib/countries/data/countries/SB.yaml +28 -29
  347. data/lib/countries/data/countries/SC.yaml +29 -30
  348. data/lib/countries/data/countries/SD.yaml +30 -30
  349. data/lib/countries/data/countries/SE.yaml +37 -37
  350. data/lib/countries/data/countries/SG.yaml +32 -32
  351. data/lib/countries/data/countries/SH.yaml +29 -29
  352. data/lib/countries/data/countries/SI.yaml +36 -36
  353. data/lib/countries/data/countries/SJ.yaml +29 -29
  354. data/lib/countries/data/countries/SK.yaml +36 -36
  355. data/lib/countries/data/countries/SL.yaml +27 -28
  356. data/lib/countries/data/countries/SM.yaml +28 -28
  357. data/lib/countries/data/countries/SN.yaml +28 -28
  358. data/lib/countries/data/countries/SO.yaml +30 -30
  359. data/lib/countries/data/countries/SR.yaml +26 -27
  360. data/lib/countries/data/countries/SS.yaml +29 -30
  361. data/lib/countries/data/countries/ST.yaml +27 -28
  362. data/lib/countries/data/countries/SV.yaml +27 -27
  363. data/lib/countries/data/countries/SX.yaml +28 -29
  364. data/lib/countries/data/countries/SY.yaml +27 -28
  365. data/lib/countries/data/countries/SZ.yaml +30 -30
  366. data/lib/countries/data/countries/TC.yaml +30 -30
  367. data/lib/countries/data/countries/TD.yaml +29 -30
  368. data/lib/countries/data/countries/TF.yaml +30 -31
  369. data/lib/countries/data/countries/TG.yaml +27 -28
  370. data/lib/countries/data/countries/TH.yaml +35 -33
  371. data/lib/countries/data/countries/TJ.yaml +30 -30
  372. data/lib/countries/data/countries/TK.yaml +27 -28
  373. data/lib/countries/data/countries/TL.yaml +27 -28
  374. data/lib/countries/data/countries/TM.yaml +30 -30
  375. data/lib/countries/data/countries/TN.yaml +30 -30
  376. data/lib/countries/data/countries/TO.yaml +29 -30
  377. data/lib/countries/data/countries/TR.yaml +28 -28
  378. data/lib/countries/data/countries/TT.yaml +28 -29
  379. data/lib/countries/data/countries/TV.yaml +27 -28
  380. data/lib/countries/data/countries/TW.yaml +31 -29
  381. data/lib/countries/data/countries/TZ.yaml +30 -30
  382. data/lib/countries/data/countries/UA.yaml +34 -34
  383. data/lib/countries/data/countries/UG.yaml +29 -30
  384. data/lib/countries/data/countries/UM.yaml +29 -29
  385. data/lib/countries/data/countries/US.yaml +30 -28
  386. data/lib/countries/data/countries/UY.yaml +28 -28
  387. data/lib/countries/data/countries/UZ.yaml +30 -30
  388. data/lib/countries/data/countries/VA.yaml +31 -31
  389. data/lib/countries/data/countries/VC.yaml +29 -29
  390. data/lib/countries/data/countries/VE.yaml +28 -28
  391. data/lib/countries/data/countries/VG.yaml +30 -30
  392. data/lib/countries/data/countries/VI.yaml +29 -28
  393. data/lib/countries/data/countries/VN.yaml +34 -28
  394. data/lib/countries/data/countries/VU.yaml +31 -32
  395. data/lib/countries/data/countries/WF.yaml +29 -29
  396. data/lib/countries/data/countries/WS.yaml +29 -30
  397. data/lib/countries/data/countries/YE.yaml +27 -28
  398. data/lib/countries/data/countries/YT.yaml +26 -26
  399. data/lib/countries/data/countries/ZA.yaml +40 -40
  400. data/lib/countries/data/countries/ZM.yaml +28 -28
  401. data/lib/countries/data/countries/ZW.yaml +31 -32
  402. data/lib/countries/data/subdivisions/AD.yaml +42 -28
  403. data/lib/countries/data/subdivisions/AE.yaml +161 -63
  404. data/lib/countries/data/subdivisions/AF.yaml +719 -419
  405. data/lib/countries/data/subdivisions/AG.yaml +152 -76
  406. data/lib/countries/data/subdivisions/AL.yaml +264 -468
  407. data/lib/countries/data/subdivisions/AM.yaml +247 -88
  408. data/lib/countries/data/subdivisions/AO.yaml +362 -144
  409. data/lib/countries/data/subdivisions/AR.yaml +474 -187
  410. data/lib/countries/data/subdivisions/AT.yaml +211 -72
  411. data/lib/countries/data/subdivisions/AU.yaml +220 -64
  412. data/lib/countries/data/subdivisions/AZ.yaml +1783 -803
  413. data/lib/countries/data/subdivisions/BA.yaml +120 -95
  414. data/lib/countries/data/subdivisions/BB.yaml +201 -88
  415. data/lib/countries/data/subdivisions/BD.yaml +1288 -543
  416. data/lib/countries/data/subdivisions/BE.yaml +369 -166
  417. data/lib/countries/data/subdivisions/BF.yaml +2976 -2291
  418. data/lib/countries/data/subdivisions/BG.yaml +628 -219
  419. data/lib/countries/data/subdivisions/BH.yaml +70 -46
  420. data/lib/countries/data/subdivisions/BI.yaml +407 -213
  421. data/lib/countries/data/subdivisions/BJ.yaml +238 -96
  422. data/lib/countries/data/subdivisions/BN.yaml +67 -32
  423. data/lib/countries/data/subdivisions/BO.yaml +166 -72
  424. data/lib/countries/data/subdivisions/BQ.yaml +66 -24
  425. data/lib/countries/data/subdivisions/BR.yaml +716 -216
  426. data/lib/countries/data/subdivisions/BS.yaml +961 -566
  427. data/lib/countries/data/subdivisions/BT.yaml +366 -160
  428. data/lib/countries/data/subdivisions/BW.yaml +499 -261
  429. data/lib/countries/data/subdivisions/BY.yaml +205 -126
  430. data/lib/countries/data/subdivisions/BZ.yaml +103 -48
  431. data/lib/countries/data/subdivisions/CA.yaml +371 -105
  432. data/lib/countries/data/subdivisions/CD.yaml +752 -406
  433. data/lib/countries/data/subdivisions/CF.yaml +308 -136
  434. data/lib/countries/data/subdivisions/CG.yaml +231 -90
  435. data/lib/countries/data/subdivisions/CH.yaml +619 -208
  436. data/lib/countries/data/subdivisions/CI.yaml +415 -322
  437. data/lib/countries/data/subdivisions/CL.yaml +336 -153
  438. data/lib/countries/data/subdivisions/CM.yaml +200 -80
  439. data/lib/countries/data/subdivisions/CN.yaml +2290 -1650
  440. data/lib/countries/data/subdivisions/CO.yaml +676 -264
  441. data/lib/countries/data/subdivisions/CR.yaml +126 -56
  442. data/lib/countries/data/subdivisions/CU.yaml +284 -128
  443. data/lib/countries/data/subdivisions/CV.yaml +677 -363
  444. data/lib/countries/data/subdivisions/CY.yaml +108 -48
  445. data/lib/countries/data/subdivisions/CZ.yaml +2064 -1347
  446. data/lib/countries/data/subdivisions/DE.yaml +500 -144
  447. data/lib/countries/data/subdivisions/DJ.yaml +116 -48
  448. data/lib/countries/data/subdivisions/DK.yaml +113 -236
  449. data/lib/countries/data/subdivisions/DM.yaml +169 -80
  450. data/lib/countries/data/subdivisions/DO.yaml +702 -248
  451. data/lib/countries/data/subdivisions/DZ.yaml +857 -384
  452. data/lib/countries/data/subdivisions/EC.yaml +499 -276
  453. data/lib/countries/data/subdivisions/EE.yaml +826 -152
  454. data/lib/countries/data/subdivisions/EG.yaml +499 -216
  455. data/lib/countries/data/subdivisions/ER.yaml +115 -48
  456. data/lib/countries/data/subdivisions/ES.yaml +2773 -1401
  457. data/lib/countries/data/subdivisions/ET.yaml +218 -88
  458. data/lib/countries/data/subdivisions/FI.yaml +294 -123
  459. data/lib/countries/data/subdivisions/FJ.yaml +557 -264
  460. data/lib/countries/data/subdivisions/FM.yaml +67 -32
  461. data/lib/countries/data/subdivisions/FR.yaml +2967 -1258
  462. data/lib/countries/data/subdivisions/GA.yaml +168 -72
  463. data/lib/countries/data/subdivisions/GB.yaml +5311 -2625
  464. data/lib/countries/data/subdivisions/GD.yaml +121 -56
  465. data/lib/countries/data/subdivisions/GE.yaml +250 -96
  466. data/lib/countries/data/subdivisions/GH.yaml +259 -113
  467. data/lib/countries/data/subdivisions/GL.yaml +77 -43
  468. data/lib/countries/data/subdivisions/GM.yaml +130 -48
  469. data/lib/countries/data/subdivisions/GN.yaml +981 -503
  470. data/lib/countries/data/subdivisions/GQ.yaml +155 -72
  471. data/lib/countries/data/subdivisions/GR.yaml +276 -677
  472. data/lib/countries/data/subdivisions/GT.yaml +373 -176
  473. data/lib/countries/data/subdivisions/GW.yaml +211 -79
  474. data/lib/countries/data/subdivisions/GY.yaml +173 -80
  475. data/lib/countries/data/subdivisions/HN.yaml +292 -144
  476. data/lib/countries/data/subdivisions/HR.yaml +450 -168
  477. data/lib/countries/data/subdivisions/HT.yaml +223 -106
  478. data/lib/countries/data/subdivisions/HU.yaml +876 -381
  479. data/lib/countries/data/subdivisions/ID.yaml +2417 -1858
  480. data/lib/countries/data/subdivisions/IE.yaml +886 -429
  481. data/lib/countries/data/subdivisions/IL.yaml +120 -48
  482. data/lib/countries/data/subdivisions/IN.yaml +1092 -535
  483. data/lib/countries/data/subdivisions/IQ.yaml +388 -191
  484. data/lib/countries/data/subdivisions/IR.yaml +1675 -1305
  485. data/lib/countries/data/subdivisions/IS.yaml +580 -67
  486. data/lib/countries/data/subdivisions/IT.yaml +8979 -7307
  487. data/lib/countries/data/subdivisions/JM.yaml +257 -112
  488. data/lib/countries/data/subdivisions/JO.yaml +205 -96
  489. data/lib/countries/data/subdivisions/JP.yaml +997 -376
  490. data/lib/countries/data/subdivisions/KE.yaml +975 -273
  491. data/lib/countries/data/subdivisions/KG.yaml +251 -118
  492. data/lib/countries/data/subdivisions/KH.yaml +464 -194
  493. data/lib/countries/data/subdivisions/KI.yaml +60 -24
  494. data/lib/countries/data/subdivisions/KM.yaml +52 -24
  495. data/lib/countries/data/subdivisions/KN.yaml +324 -112
  496. data/lib/countries/data/subdivisions/KP.yaml +291 -186
  497. data/lib/countries/data/subdivisions/KR.yaml +410 -128
  498. data/lib/countries/data/subdivisions/KW.yaml +93 -48
  499. data/lib/countries/data/subdivisions/KZ.yaml +361 -189
  500. data/lib/countries/data/subdivisions/LA.yaml +306 -149
  501. data/lib/countries/data/subdivisions/LB.yaml +156 -62
  502. data/lib/countries/data/subdivisions/LC.yaml +231 -55
  503. data/lib/countries/data/subdivisions/LI.yaml +197 -88
  504. data/lib/countries/data/subdivisions/LK.yaml +809 -431
  505. data/lib/countries/data/subdivisions/LR.yaml +346 -187
  506. data/lib/countries/data/subdivisions/LS.yaml +159 -80
  507. data/lib/countries/data/subdivisions/LT.yaml +2146 -1114
  508. data/lib/countries/data/subdivisions/LU.yaml +292 -146
  509. data/lib/countries/data/subdivisions/LV.yaml +2447 -5217
  510. data/lib/countries/data/subdivisions/LY.yaml +361 -162
  511. data/lib/countries/data/subdivisions/MA.yaml +1604 -1424
  512. data/lib/countries/data/subdivisions/MC.yaml +396 -129
  513. data/lib/countries/data/subdivisions/MD.yaml +1130 -590
  514. data/lib/countries/data/subdivisions/ME.yaml +465 -186
  515. data/lib/countries/data/subdivisions/MG.yaml +99 -48
  516. data/lib/countries/data/subdivisions/MH.yaml +526 -276
  517. data/lib/countries/data/subdivisions/MK.yaml +3636 -3147
  518. data/lib/countries/data/subdivisions/ML.yaml +197 -70
  519. data/lib/countries/data/subdivisions/MM.yaml +302 -112
  520. data/lib/countries/data/subdivisions/MN.yaml +443 -176
  521. data/lib/countries/data/subdivisions/MR.yaml +253 -111
  522. data/lib/countries/data/subdivisions/MT.yaml +1127 -544
  523. data/lib/countries/data/subdivisions/MU.yaml +241 -293
  524. data/lib/countries/data/subdivisions/MV.yaml +464 -263
  525. data/lib/countries/data/subdivisions/MW.yaml +689 -337
  526. data/lib/countries/data/subdivisions/MX.yaml +733 -260
  527. data/lib/countries/data/subdivisions/MY.yaml +352 -128
  528. data/lib/countries/data/subdivisions/MZ.yaml +202 -83
  529. data/lib/countries/data/subdivisions/NA.yaml +256 -129
  530. data/lib/countries/data/subdivisions/NE.yaml +178 -64
  531. data/lib/countries/data/subdivisions/NG.yaml +907 -296
  532. data/lib/countries/data/subdivisions/NI.yaml +277 -136
  533. data/lib/countries/data/subdivisions/NL.yaml +566 -263
  534. data/lib/countries/data/subdivisions/NO.yaml +653 -1093
  535. data/lib/countries/data/subdivisions/NP.yaml +525 -228
  536. data/lib/countries/data/subdivisions/NR.yaml +274 -112
  537. data/lib/countries/data/subdivisions/NZ.yaml +357 -197
  538. data/lib/countries/data/subdivisions/OM.yaml +345 -246
  539. data/lib/countries/data/subdivisions/PA.yaml +230 -113
  540. data/lib/countries/data/subdivisions/PE.yaml +478 -242
  541. data/lib/countries/data/subdivisions/PG.yaml +468 -237
  542. data/lib/countries/data/subdivisions/PH.yaml +5157 -3894
  543. data/lib/countries/data/subdivisions/PK.yaml +245 -204
  544. data/lib/countries/data/subdivisions/PL.yaml +131 -32
  545. data/lib/countries/data/subdivisions/PS.yaml +273 -0
  546. data/lib/countries/data/subdivisions/PT.yaml +375 -173
  547. data/lib/countries/data/subdivisions/PW.yaml +285 -128
  548. data/lib/countries/data/subdivisions/PY.yaml +339 -144
  549. data/lib/countries/data/subdivisions/QA.yaml +149 -97
  550. data/lib/countries/data/subdivisions/RO.yaml +771 -336
  551. data/lib/countries/data/subdivisions/RS.yaml +642 -261
  552. data/lib/countries/data/subdivisions/RU.yaml +1958 -665
  553. data/lib/countries/data/subdivisions/RW.yaml +107 -40
  554. data/lib/countries/data/subdivisions/SA.yaml +247 -104
  555. data/lib/countries/data/subdivisions/SB.yaml +179 -80
  556. data/lib/countries/data/subdivisions/SC.yaml +493 -184
  557. data/lib/countries/data/subdivisions/SD.yaml +832 -673
  558. data/lib/countries/data/subdivisions/SE.yaml +456 -237
  559. data/lib/countries/data/subdivisions/SG.yaml +81 -54
  560. data/lib/countries/data/subdivisions/SH.yaml +73 -31
  561. data/lib/countries/data/subdivisions/SI.yaml +3823 -1590
  562. data/lib/countries/data/subdivisions/SK.yaml +137 -64
  563. data/lib/countries/data/subdivisions/SL.yaml +85 -31
  564. data/lib/countries/data/subdivisions/SM.yaml +168 -72
  565. data/lib/countries/data/subdivisions/SN.yaml +352 -193
  566. data/lib/countries/data/subdivisions/SO.yaml +329 -144
  567. data/lib/countries/data/subdivisions/SR.yaml +168 -80
  568. data/lib/countries/data/subdivisions/SS.yaml +206 -0
  569. data/lib/countries/data/subdivisions/ST.yaml +51 -26
  570. data/lib/countries/data/subdivisions/SV.yaml +245 -112
  571. data/lib/countries/data/subdivisions/SY.yaml +234 -112
  572. data/lib/countries/data/subdivisions/SZ.yaml +69 -32
  573. data/lib/countries/data/subdivisions/TD.yaml +591 -312
  574. data/lib/countries/data/subdivisions/TG.yaml +80 -40
  575. data/lib/countries/data/subdivisions/TH.yaml +1565 -652
  576. data/lib/countries/data/subdivisions/TJ.yaml +209 -128
  577. data/lib/countries/data/subdivisions/TL.yaml +222 -104
  578. data/lib/countries/data/subdivisions/TM.yaml +122 -40
  579. data/lib/countries/data/subdivisions/TN.yaml +436 -192
  580. data/lib/countries/data/subdivisions/TO.yaml +80 -40
  581. data/lib/countries/data/subdivisions/TR.yaml +1898 -648
  582. data/lib/countries/data/subdivisions/TT.yaml +355 -204
  583. data/lib/countries/data/subdivisions/TV.yaml +162 -94
  584. data/lib/countries/data/subdivisions/TW.yaml +514 -251
  585. data/lib/countries/data/subdivisions/TZ.yaml +692 -208
  586. data/lib/countries/data/subdivisions/UA.yaml +533 -217
  587. data/lib/countries/data/subdivisions/UG.yaml +5416 -3641
  588. data/lib/countries/data/subdivisions/UM.yaml +216 -72
  589. data/lib/countries/data/subdivisions/US.yaml +1692 -483
  590. data/lib/countries/data/subdivisions/UY.yaml +429 -195
  591. data/lib/countries/data/subdivisions/UZ.yaml +303 -113
  592. data/lib/countries/data/subdivisions/VC.yaml +107 -48
  593. data/lib/countries/data/subdivisions/VE.yaml +481 -200
  594. data/lib/countries/data/subdivisions/VN.yaml +1274 -543
  595. data/lib/countries/data/subdivisions/VU.yaml +104 -48
  596. data/lib/countries/data/subdivisions/WF.yaml +66 -0
  597. data/lib/countries/data/subdivisions/WS.yaml +211 -88
  598. data/lib/countries/data/subdivisions/YE.yaml +534 -289
  599. data/lib/countries/data/subdivisions/ZA.yaml +283 -131
  600. data/lib/countries/data/subdivisions/ZM.yaml +167 -72
  601. data/lib/countries/data/subdivisions/ZW.yaml +162 -73
  602. data/lib/countries/data/translations/countries-ab.yaml +254 -0
  603. data/lib/countries/data/translations/countries-af.yaml +254 -0
  604. data/lib/countries/data/translations/countries-ak.yaml +254 -0
  605. data/lib/countries/data/translations/countries-am.yaml +254 -0
  606. data/lib/countries/data/translations/countries-an.yaml +254 -0
  607. data/lib/countries/data/translations/countries-ar.yaml +254 -0
  608. data/lib/countries/data/translations/countries-as.yaml +254 -0
  609. data/lib/countries/data/translations/countries-ay.yaml +254 -0
  610. data/lib/countries/data/translations/countries-az.yaml +254 -0
  611. data/lib/countries/data/translations/countries-ba.yaml +254 -0
  612. data/lib/countries/data/translations/countries-be.yaml +254 -0
  613. data/lib/countries/data/translations/countries-bg.yaml +254 -0
  614. data/lib/countries/data/translations/countries-bi.yaml +254 -0
  615. data/lib/countries/data/translations/countries-bn.yaml +254 -0
  616. data/lib/countries/data/translations/countries-bn_IN.yaml +254 -0
  617. data/lib/countries/data/translations/countries-br.yaml +254 -0
  618. data/lib/countries/data/translations/countries-bs.yaml +254 -0
  619. data/lib/countries/data/translations/countries-ca.yaml +254 -0
  620. data/lib/countries/data/translations/countries-ce.yaml +254 -0
  621. data/lib/countries/data/translations/countries-ch.yaml +254 -0
  622. data/lib/countries/data/translations/countries-cs.yaml +254 -0
  623. data/lib/countries/data/translations/countries-cv.yaml +254 -0
  624. data/lib/countries/data/translations/countries-cy.yaml +254 -0
  625. data/lib/countries/data/translations/countries-da.yaml +254 -0
  626. data/lib/countries/data/translations/countries-de.yaml +254 -0
  627. data/lib/countries/data/translations/countries-dv.yaml +254 -0
  628. data/lib/countries/data/translations/countries-dz.yaml +254 -0
  629. data/lib/countries/data/translations/countries-ee.yaml +254 -0
  630. data/lib/countries/data/translations/countries-el.yaml +254 -0
  631. data/lib/countries/data/translations/countries-en.yaml +254 -0
  632. data/lib/countries/data/translations/countries-eo.yaml +254 -0
  633. data/lib/countries/data/translations/countries-es.yaml +254 -0
  634. data/lib/countries/data/translations/countries-et.yaml +254 -0
  635. data/lib/countries/data/translations/countries-eu.yaml +254 -0
  636. data/lib/countries/data/translations/countries-fa.yaml +254 -0
  637. data/lib/countries/data/translations/countries-ff.yaml +254 -0
  638. data/lib/countries/data/translations/countries-fi.yaml +254 -0
  639. data/lib/countries/data/translations/countries-fo.yaml +254 -0
  640. data/lib/countries/data/translations/countries-fr.yaml +254 -0
  641. data/lib/countries/data/translations/countries-fy.yaml +254 -0
  642. data/lib/countries/data/translations/countries-ga.yaml +254 -0
  643. data/lib/countries/data/translations/countries-gl.yaml +254 -0
  644. data/lib/countries/data/translations/countries-gn.yaml +254 -0
  645. data/lib/countries/data/translations/countries-gu.yaml +254 -0
  646. data/lib/countries/data/translations/countries-gv.yaml +254 -0
  647. data/lib/countries/data/translations/countries-ha.yaml +254 -0
  648. data/lib/countries/data/translations/countries-he.yaml +254 -0
  649. data/lib/countries/data/translations/countries-hi.yaml +254 -0
  650. data/lib/countries/data/translations/countries-hr.yaml +254 -0
  651. data/lib/countries/data/translations/countries-ht.yaml +254 -0
  652. data/lib/countries/data/translations/countries-hu.yaml +254 -0
  653. data/lib/countries/data/translations/countries-hy.yaml +254 -0
  654. data/lib/countries/data/translations/countries-ia.yaml +254 -0
  655. data/lib/countries/data/translations/countries-id.yaml +254 -0
  656. data/lib/countries/data/translations/countries-io.yaml +254 -0
  657. data/lib/countries/data/translations/countries-is.yaml +254 -0
  658. data/lib/countries/data/translations/countries-it.yaml +254 -0
  659. data/lib/countries/data/translations/countries-iu.yaml +254 -0
  660. data/lib/countries/data/translations/countries-ja.yaml +254 -0
  661. data/lib/countries/data/translations/countries-ka.yaml +254 -0
  662. data/lib/countries/data/translations/countries-ki.yaml +254 -0
  663. data/lib/countries/data/translations/countries-kk.yaml +254 -0
  664. data/lib/countries/data/translations/countries-kl.yaml +254 -0
  665. data/lib/countries/data/translations/countries-km.yaml +254 -0
  666. data/lib/countries/data/translations/countries-kn.yaml +254 -0
  667. data/lib/countries/data/translations/countries-ko.yaml +254 -0
  668. data/lib/countries/data/translations/countries-ku.yaml +254 -0
  669. data/lib/countries/data/translations/countries-kv.yaml +254 -0
  670. data/lib/countries/data/translations/countries-kw.yaml +254 -0
  671. data/lib/countries/data/translations/countries-ky.yaml +254 -0
  672. data/lib/countries/data/translations/countries-lo.yaml +254 -0
  673. data/lib/countries/data/translations/countries-lt.yaml +254 -0
  674. data/lib/countries/data/translations/countries-lv.yaml +254 -0
  675. data/lib/countries/data/translations/countries-mi.yaml +254 -0
  676. data/lib/countries/data/translations/countries-mk.yaml +254 -0
  677. data/lib/countries/data/translations/countries-ml.yaml +254 -0
  678. data/lib/countries/data/translations/countries-mn.yaml +254 -0
  679. data/lib/countries/data/translations/countries-mr.yaml +254 -0
  680. data/lib/countries/data/translations/countries-ms.yaml +254 -0
  681. data/lib/countries/data/translations/countries-mt.yaml +254 -0
  682. data/lib/countries/data/translations/countries-my.yaml +254 -0
  683. data/lib/countries/data/translations/countries-na.yaml +254 -0
  684. data/lib/countries/data/translations/countries-nb.yaml +254 -0
  685. data/lib/countries/data/translations/countries-ne.yaml +254 -0
  686. data/lib/countries/data/translations/countries-nl.yaml +254 -0
  687. data/lib/countries/data/translations/countries-nn.yaml +254 -0
  688. data/lib/countries/data/translations/countries-nv.yaml +254 -0
  689. data/lib/countries/data/translations/countries-oc.yaml +254 -0
  690. data/lib/countries/data/translations/countries-or.yaml +254 -0
  691. data/lib/countries/data/translations/countries-pa.yaml +254 -0
  692. data/lib/countries/data/translations/countries-pi.yaml +254 -0
  693. data/lib/countries/data/translations/countries-pl.yaml +254 -0
  694. data/lib/countries/data/translations/countries-ps.yaml +254 -0
  695. data/lib/countries/data/translations/countries-pt.yaml +254 -0
  696. data/lib/countries/data/translations/countries-pt_BR.yaml +254 -0
  697. data/lib/countries/data/translations/countries-ro.yaml +254 -0
  698. data/lib/countries/data/translations/countries-ru.yaml +254 -0
  699. data/lib/countries/data/translations/countries-rw.yaml +254 -0
  700. data/lib/countries/data/translations/countries-sc.yaml +254 -0
  701. data/lib/countries/data/translations/countries-sd.yaml +254 -0
  702. data/lib/countries/data/translations/countries-si.yaml +254 -0
  703. data/lib/countries/data/translations/countries-sk.yaml +254 -0
  704. data/lib/countries/data/translations/countries-sl.yaml +254 -0
  705. data/lib/countries/data/translations/countries-so.yaml +254 -0
  706. data/lib/countries/data/translations/countries-sq.yaml +254 -0
  707. data/lib/countries/data/translations/countries-sr.yaml +254 -0
  708. data/lib/countries/data/translations/countries-sv.yaml +254 -0
  709. data/lib/countries/data/translations/countries-sw.yaml +254 -0
  710. data/lib/countries/data/translations/countries-ta.yaml +254 -0
  711. data/lib/countries/data/translations/countries-te.yaml +254 -0
  712. data/lib/countries/data/translations/countries-tg.yaml +254 -0
  713. data/lib/countries/data/translations/countries-th.yaml +254 -0
  714. data/lib/countries/data/translations/countries-ti.yaml +254 -0
  715. data/lib/countries/data/translations/countries-tk.yaml +254 -0
  716. data/lib/countries/data/translations/countries-tl.yaml +254 -0
  717. data/lib/countries/data/translations/countries-tr.yaml +254 -0
  718. data/lib/countries/data/translations/countries-tt.yaml +254 -0
  719. data/lib/countries/data/translations/countries-ug.yaml +254 -0
  720. data/lib/countries/data/translations/countries-uk.yaml +254 -0
  721. data/lib/countries/data/translations/countries-ur.yaml +254 -0
  722. data/lib/countries/data/translations/countries-uz.yaml +254 -0
  723. data/lib/countries/data/translations/countries-ve.yaml +254 -0
  724. data/lib/countries/data/translations/countries-vi.yaml +254 -0
  725. data/lib/countries/data/translations/countries-wa.yaml +254 -0
  726. data/lib/countries/data/translations/countries-wo.yaml +254 -0
  727. data/lib/countries/data/translations/countries-xh.yaml +254 -0
  728. data/lib/countries/data/translations/countries-yo.yaml +254 -0
  729. data/lib/countries/data/translations/countries-zh_CN.yaml +254 -0
  730. data/lib/countries/data/translations/countries-zh_HK.yaml +254 -0
  731. data/lib/countries/data/translations/countries-zh_TW.yaml +254 -0
  732. data/lib/countries/data/translations/countries-zu.yaml +254 -0
  733. data/lib/countries/data.rb +106 -44
  734. data/lib/countries/global.rb +15 -3
  735. data/lib/countries/iso3166.rb +3 -1
  736. data/lib/countries/kwarg_struct.rb +2 -0
  737. data/lib/countries/mongoid.rb +5 -0
  738. data/lib/countries/sources/cldr/downloader.rb +16 -14
  739. data/lib/countries/sources/cldr/subdivision.rb +4 -0
  740. data/lib/countries/sources/cldr/subdivision_updater.rb +24 -17
  741. data/lib/countries/sources/local/cached_loader.rb +5 -0
  742. data/lib/countries/sources/local/subdivision.rb +6 -2
  743. data/lib/countries/sources.rb +2 -0
  744. data/lib/countries/structure.rb +4 -6
  745. data/lib/countries/subdivision.rb +21 -8
  746. data/lib/countries/tasks/geocoding.rake +21 -19
  747. data/lib/countries/tasks/postal_codes.rake +50 -0
  748. data/lib/countries/timezones.rb +9 -4
  749. data/lib/countries/translations.rb +5 -4
  750. data/lib/countries/version.rb +3 -1
  751. data/lib/countries.rb +1 -2
  752. data/spec/00_global_spec.rb +2 -0
  753. data/spec/configuration_spec.rb +11 -5
  754. data/spec/country_spec.rb +356 -79
  755. data/spec/data_spec.rb +105 -30
  756. data/spec/mongoid_spec.rb +2 -2
  757. data/spec/perf_spec.rb +16 -16
  758. data/spec/spec_helper.rb +2 -0
  759. data/spec/subdivision_spec.rb +17 -1
  760. data/spec/thread_safety_spec.rb +47 -0
  761. data/spec/timezone_spec.rb +2 -0
  762. metadata +205 -78
  763. data/.travis.yml +0 -16
  764. data/lib/countries/cache/locales/zh.json +0 -1
  765. data/lib/countries/data/subdivisions/AI.yaml +0 -183
  766. data/lib/countries/data/subdivisions/AS.yaml +0 -66
  767. data/lib/countries/data/subdivisions/AX.yaml +0 -40
  768. data/lib/countries/data/subdivisions/BM.yaml +0 -144
  769. data/lib/countries/data/subdivisions/CK.yaml +0 -144
  770. data/lib/countries/data/subdivisions/EH.yaml +0 -72
  771. data/lib/countries/data/subdivisions/FO.yaml +0 -79
  772. data/lib/countries/data/subdivisions/GG.yaml +0 -144
  773. data/lib/countries/data/subdivisions/GU.yaml +0 -248
  774. data/lib/countries/data/subdivisions/HK.yaml +0 -235
  775. data/lib/countries/data/subdivisions/IM.yaml +0 -313
  776. data/lib/countries/data/subdivisions/JE.yaml +0 -157
  777. data/lib/countries/data/subdivisions/KY.yaml +0 -73
  778. data/lib/countries/data/subdivisions/MP.yaml +0 -53
  779. data/lib/countries/data/subdivisions/MS.yaml +0 -40
  780. data/lib/countries/data/subdivisions/NC.yaml +0 -40
  781. data/lib/countries/data/subdivisions/PF.yaml +0 -66
  782. data/lib/countries/data/subdivisions/PM.yaml +0 -27
  783. data/lib/countries/data/subdivisions/PR.yaml +0 -1015
  784. data/lib/countries/data/subdivisions/SJ.yaml +0 -27
  785. data/lib/countries/data/subdivisions/TF.yaml +0 -49
  786. data/lib/countries/data/subdivisions/TK.yaml +0 -40
  787. data/lib/countries/data/subdivisions/VI.yaml +0 -40
  788. data/lib/countries/data/subdivisions/YT.yaml +0 -222
  789. data/lib/countries/data/translation_corrections.yaml +0 -32
  790. data/lib/countries/setup.rb +0 -18
@@ -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,14 @@
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
+ @cache_dir = [File.dirname(__FILE__), 'cache']
7
+ @cache = {}
8
+ @loaded_country_codes = []
9
+ @registered_data = {}
10
+ @mutex = Mutex.new
11
+ @subdivisions = {}
8
12
 
9
13
  def initialize(alpha2)
10
14
  @alpha2 = alpha2.to_s.upcase
@@ -15,56 +19,88 @@ module ISO3166
15
19
  end
16
20
 
17
21
  class << self
18
- def cache_dir
19
- @@cache_dir
20
- end
21
-
22
- def cache_dir=(value)
23
- @@cache_dir = value
24
- end
25
22
 
23
+ # Registers a new Country with custom data.
24
+ # 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__.
25
+ # Overriding an existing country will also remove it from the internal management of translations.
26
26
  def register(data)
27
27
  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)
28
+ @registered_data[alpha2] = deep_stringify_keys(data)
29
+ @registered_data[alpha2]['translations'] = \
30
+ Translations.new.merge(data['translations'] || {})
31
+ @cache = cache.merge(@registered_data)
33
32
  end
34
33
 
34
+ # Removes a country from the loaded data
35
35
  def unregister(alpha2)
36
36
  alpha2 = alpha2.to_s.upcase
37
- @@cache.delete(alpha2)
38
- @@registered_data.delete(alpha2)
37
+ @cache.delete(alpha2)
38
+ @registered_data.delete(alpha2)
39
39
  end
40
40
 
41
41
  def cache
42
42
  update_cache
43
43
  end
44
44
 
45
+ # Resets the loaded data and cache
45
46
  def reset
46
- @@cache = {}
47
- @@registered_data = {}
47
+ @cache = {}
48
+ @subdivisions = {}
49
+ @registered_data = {}
48
50
  ISO3166.configuration.loaded_locales = []
49
51
  end
50
52
 
51
53
  def codes
52
54
  load_data!
53
- loaded_codes
55
+ cached_codes
54
56
  end
55
57
 
56
58
  def update_cache
57
59
  load_data!
58
60
  sync_translations!
59
- @@cache
61
+ @cache
62
+ end
63
+
64
+ def loaded_codes
65
+ load_data!
66
+ @loaded_country_codes
67
+ end
68
+
69
+ def datafile_path(file_array)
70
+ File.join([@cache_dir] + file_array)
71
+ end
72
+
73
+ def subdivision_data(alpha2)
74
+ file = subdivision_file_path(alpha2)
75
+ data = File.exist?(file) ? YAML.load_file(file) : {}
76
+ locales = ISO3166.configuration.locales.map(&:to_s)
77
+ data.each_value{ |v| v['translations'] = v['translations'].slice(*locales)}
78
+
79
+ return data
60
80
  end
61
81
 
82
+ def subdivisions(alpha2)
83
+ @subdivisions ||= {}
84
+ @subdivisions[alpha2] ||= create_subdivisions(ISO3166::Data.subdivision_data(alpha2))
85
+ end
86
+
87
+ def create_subdivisions(subdivision_data)
88
+ subdivision_data.each_with_object({}) do |(k, v), hash|
89
+ hash[k] = Subdivision.new(v)
90
+ end
91
+ end
92
+
93
+ private
94
+
62
95
  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
96
+ return @cache unless load_required?
97
+
98
+ synchronized do
99
+ @cache = load_cache %w[countries.json]
100
+ @loaded_country_codes = @cache.keys
101
+ @cache = @cache.merge(@registered_data)
102
+ @cache
103
+ end
68
104
  end
69
105
 
70
106
  def sync_translations!
@@ -79,19 +115,32 @@ module ISO3166
79
115
  end
80
116
  end
81
117
 
82
- private
118
+ def synchronized(&block)
119
+ if use_mutex?
120
+ @mutex.synchronize(&block)
121
+ else
122
+ block.call
123
+ end
124
+ end
125
+
126
+ def use_mutex?
127
+ # Stubbed in testing
128
+ true
129
+ end
83
130
 
84
131
  def load_required?
85
- @@cache.empty?
132
+ synchronized do
133
+ @cache.empty?
134
+ end
86
135
  end
87
136
 
88
- def loaded_codes
89
- @@cache.keys
137
+ def cached_codes
138
+ @cache.keys
90
139
  end
91
140
 
92
141
  # Codes that we have translations for in dataset
93
142
  def internal_codes
94
- @@_country_codes - @@registered_data.keys
143
+ @loaded_country_codes - @registered_data.keys
95
144
  end
96
145
 
97
146
  def cache_flush_required?
@@ -115,21 +164,25 @@ module ISO3166
115
164
  end
116
165
 
117
166
  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
167
+ synchronized do
168
+ locale_names = load_cache(['locales', "#{locale}.json"])
169
+ internal_codes.each do |alpha2|
170
+ @cache[alpha2]['translations'] ||= Translations.new
171
+ @cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
172
+ @cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
173
+ end
174
+ ISO3166.configuration.loaded_locales << locale
123
175
  end
124
- ISO3166.configuration.loaded_locales << locale
125
176
  end
126
177
 
127
178
  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
179
+ synchronized do
180
+ internal_codes.each do |alpha2|
181
+ @cache[alpha2]['translations'].delete(locale)
182
+ @cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
183
+ end
184
+ ISO3166.configuration.loaded_locales.delete(locale)
131
185
  end
132
- ISO3166.configuration.loaded_locales.delete(locale)
133
186
  end
134
187
 
135
188
  def load_cache(file_array)
@@ -137,8 +190,17 @@ module ISO3166
137
190
  File.exist?(file_path) ? JSON.parse(File.binread(file_path)) : {}
138
191
  end
139
192
 
140
- def datafile_path(file_array)
141
- File.join([@@cache_dir] + file_array)
193
+ def deep_stringify_keys(data)
194
+ data.transform_keys!(&:to_s)
195
+ data.transform_values! do |v|
196
+ v.is_a?(Hash) ? deep_stringify_keys(v) : v
197
+ end
198
+
199
+ data
200
+ end
201
+
202
+ def subdivision_file_path(alpha2)
203
+ File.join(File.dirname(__FILE__), 'data', 'subdivisions', "#{alpha2}.yaml")
142
204
  end
143
205
  end
144
206
  end
@@ -1,7 +1,19 @@
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
18
+
7
19
  end
@@ -1,6 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
  require 'json'
3
- require 'i18n_data'
4
5
 
5
6
  require 'countries/kwarg_struct'
6
7
  require 'countries/configuration'
@@ -8,6 +9,7 @@ require 'countries/data'
8
9
  require 'countries/structure'
9
10
  require 'countries/translations'
10
11
  require 'countries/country/class_methods'
12
+ require 'countries/country/finder_methods'
11
13
  require 'countries/country/emoji'
12
14
  require 'countries/country'
13
15
  require 'countries/subdivision'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ISO3166
2
4
  class KwargStruct < Struct
3
5
  # Override the initialize to handle hashes of named parameters
@@ -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
@@ -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 = {}