countries 5.0.2 → 5.1.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 (485) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.markdown +13 -7
  4. data/Rakefile +15 -21
  5. data/UPGRADE.md +15 -2
  6. data/countries.gemspec +0 -1
  7. data/lib/countries/cache/locales/ab.json +1 -1
  8. data/lib/countries/cache/locales/af.json +1 -1
  9. data/lib/countries/cache/locales/ak.json +1 -1
  10. data/lib/countries/cache/locales/am.json +1 -1
  11. data/lib/countries/cache/locales/an.json +1 -1
  12. data/lib/countries/cache/locales/ar.json +1 -1
  13. data/lib/countries/cache/locales/as.json +1 -1
  14. data/lib/countries/cache/locales/ay.json +1 -1
  15. data/lib/countries/cache/locales/az.json +1 -1
  16. data/lib/countries/cache/locales/ba.json +1 -1
  17. data/lib/countries/cache/locales/be.json +1 -1
  18. data/lib/countries/cache/locales/bg.json +1 -1
  19. data/lib/countries/cache/locales/bi.json +1 -1
  20. data/lib/countries/cache/locales/bn-in.json +1 -1
  21. data/lib/countries/cache/locales/bn.json +1 -1
  22. data/lib/countries/cache/locales/br.json +1 -1
  23. data/lib/countries/cache/locales/bs.json +1 -1
  24. data/lib/countries/cache/locales/ca.json +1 -1
  25. data/lib/countries/cache/locales/ce.json +1 -1
  26. data/lib/countries/cache/locales/ch.json +1 -1
  27. data/lib/countries/cache/locales/cs.json +1 -1
  28. data/lib/countries/cache/locales/cv.json +1 -1
  29. data/lib/countries/cache/locales/cy.json +1 -1
  30. data/lib/countries/cache/locales/da.json +1 -1
  31. data/lib/countries/cache/locales/de.json +1 -1
  32. data/lib/countries/cache/locales/dv.json +1 -1
  33. data/lib/countries/cache/locales/dz.json +1 -1
  34. data/lib/countries/cache/locales/ee.json +1 -1
  35. data/lib/countries/cache/locales/el.json +1 -1
  36. data/lib/countries/cache/locales/en.json +1 -1
  37. data/lib/countries/cache/locales/eo.json +1 -1
  38. data/lib/countries/cache/locales/es.json +1 -1
  39. data/lib/countries/cache/locales/et.json +1 -1
  40. data/lib/countries/cache/locales/eu.json +1 -1
  41. data/lib/countries/cache/locales/fa.json +1 -1
  42. data/lib/countries/cache/locales/ff.json +1 -1
  43. data/lib/countries/cache/locales/fi.json +1 -1
  44. data/lib/countries/cache/locales/fo.json +1 -1
  45. data/lib/countries/cache/locales/fr.json +1 -1
  46. data/lib/countries/cache/locales/fy.json +1 -1
  47. data/lib/countries/cache/locales/ga.json +1 -1
  48. data/lib/countries/cache/locales/gl.json +1 -1
  49. data/lib/countries/cache/locales/gn.json +1 -1
  50. data/lib/countries/cache/locales/gu.json +1 -1
  51. data/lib/countries/cache/locales/gv.json +1 -1
  52. data/lib/countries/cache/locales/ha.json +1 -1
  53. data/lib/countries/cache/locales/he.json +1 -1
  54. data/lib/countries/cache/locales/hi.json +1 -1
  55. data/lib/countries/cache/locales/hr.json +1 -1
  56. data/lib/countries/cache/locales/ht.json +1 -1
  57. data/lib/countries/cache/locales/hu.json +1 -1
  58. data/lib/countries/cache/locales/hy.json +1 -1
  59. data/lib/countries/cache/locales/ia.json +1 -1
  60. data/lib/countries/cache/locales/id.json +1 -1
  61. data/lib/countries/cache/locales/io.json +1 -1
  62. data/lib/countries/cache/locales/is.json +1 -1
  63. data/lib/countries/cache/locales/it.json +1 -1
  64. data/lib/countries/cache/locales/iu.json +1 -1
  65. data/lib/countries/cache/locales/ja.json +1 -1
  66. data/lib/countries/cache/locales/ka.json +1 -1
  67. data/lib/countries/cache/locales/ki.json +1 -1
  68. data/lib/countries/cache/locales/kk.json +1 -1
  69. data/lib/countries/cache/locales/kl.json +1 -1
  70. data/lib/countries/cache/locales/km.json +1 -1
  71. data/lib/countries/cache/locales/kn.json +1 -1
  72. data/lib/countries/cache/locales/ko.json +1 -1
  73. data/lib/countries/cache/locales/kv.json +1 -1
  74. data/lib/countries/cache/locales/kw.json +1 -1
  75. data/lib/countries/cache/locales/ky.json +1 -1
  76. data/lib/countries/cache/locales/lo.json +1 -1
  77. data/lib/countries/cache/locales/lt.json +1 -1
  78. data/lib/countries/cache/locales/lv.json +1 -1
  79. data/lib/countries/cache/locales/mi.json +1 -1
  80. data/lib/countries/cache/locales/mk.json +1 -1
  81. data/lib/countries/cache/locales/ml.json +1 -1
  82. data/lib/countries/cache/locales/mn.json +1 -1
  83. data/lib/countries/cache/locales/mr.json +1 -1
  84. data/lib/countries/cache/locales/ms.json +1 -1
  85. data/lib/countries/cache/locales/mt.json +1 -1
  86. data/lib/countries/cache/locales/my.json +1 -1
  87. data/lib/countries/cache/locales/na.json +1 -1
  88. data/lib/countries/cache/locales/nb.json +1 -1
  89. data/lib/countries/cache/locales/ne.json +1 -1
  90. data/lib/countries/cache/locales/nl.json +1 -1
  91. data/lib/countries/cache/locales/nn.json +1 -1
  92. data/lib/countries/cache/locales/nv.json +1 -1
  93. data/lib/countries/cache/locales/oc.json +1 -1
  94. data/lib/countries/cache/locales/or.json +1 -1
  95. data/lib/countries/cache/locales/pa.json +1 -1
  96. data/lib/countries/cache/locales/pi.json +1 -1
  97. data/lib/countries/cache/locales/pl.json +1 -1
  98. data/lib/countries/cache/locales/ps.json +1 -1
  99. data/lib/countries/cache/locales/pt-br.json +1 -1
  100. data/lib/countries/cache/locales/pt.json +1 -1
  101. data/lib/countries/cache/locales/ro.json +1 -1
  102. data/lib/countries/cache/locales/ru.json +1 -1
  103. data/lib/countries/cache/locales/rw.json +1 -1
  104. data/lib/countries/cache/locales/sc.json +1 -1
  105. data/lib/countries/cache/locales/sd.json +1 -1
  106. data/lib/countries/cache/locales/si.json +1 -1
  107. data/lib/countries/cache/locales/sk.json +1 -1
  108. data/lib/countries/cache/locales/sl.json +1 -1
  109. data/lib/countries/cache/locales/so.json +1 -1
  110. data/lib/countries/cache/locales/sq.json +1 -1
  111. data/lib/countries/cache/locales/sr.json +1 -1
  112. data/lib/countries/cache/locales/sv.json +1 -1
  113. data/lib/countries/cache/locales/sw.json +1 -1
  114. data/lib/countries/cache/locales/ta.json +1 -1
  115. data/lib/countries/cache/locales/te.json +1 -1
  116. data/lib/countries/cache/locales/tg.json +1 -1
  117. data/lib/countries/cache/locales/th.json +1 -1
  118. data/lib/countries/cache/locales/ti.json +1 -1
  119. data/lib/countries/cache/locales/tk.json +1 -1
  120. data/lib/countries/cache/locales/tl.json +1 -1
  121. data/lib/countries/cache/locales/tr.json +1 -1
  122. data/lib/countries/cache/locales/tt.json +1 -1
  123. data/lib/countries/cache/locales/ug.json +1 -1
  124. data/lib/countries/cache/locales/uk.json +1 -1
  125. data/lib/countries/cache/locales/ur.json +1 -1
  126. data/lib/countries/cache/locales/uz.json +1 -1
  127. data/lib/countries/cache/locales/ve.json +1 -1
  128. data/lib/countries/cache/locales/vi.json +1 -1
  129. data/lib/countries/cache/locales/wa.json +1 -1
  130. data/lib/countries/cache/locales/wo.json +1 -1
  131. data/lib/countries/cache/locales/xh.json +1 -1
  132. data/lib/countries/cache/locales/yo.json +1 -1
  133. data/lib/countries/cache/locales/zh-cn.json +1 -1
  134. data/lib/countries/cache/locales/zh-hk.json +1 -1
  135. data/lib/countries/cache/locales/zh-tw.json +1 -1
  136. data/lib/countries/cache/locales/zu.json +1 -1
  137. data/lib/countries/country/class_methods.rb +9 -7
  138. data/lib/countries/country.rb +29 -3
  139. data/lib/countries/data/subdivisions/AD.yaml +14 -7
  140. data/lib/countries/data/subdivisions/AE.yaml +14 -7
  141. data/lib/countries/data/subdivisions/AF.yaml +196 -201
  142. data/lib/countries/data/subdivisions/AG.yaml +16 -22
  143. data/lib/countries/data/subdivisions/AL.yaml +24 -12
  144. data/lib/countries/data/subdivisions/AM.yaml +22 -11
  145. data/lib/countries/data/subdivisions/AO.yaml +36 -18
  146. data/lib/countries/data/subdivisions/AR.yaml +48 -24
  147. data/lib/countries/data/subdivisions/AT.yaml +18 -9
  148. data/lib/countries/data/subdivisions/AU.yaml +16 -8
  149. data/lib/countries/data/subdivisions/AZ.yaml +434 -412
  150. data/lib/countries/data/subdivisions/BA.yaml +75 -223
  151. data/lib/countries/data/subdivisions/BB.yaml +22 -11
  152. data/lib/countries/data/subdivisions/BD.yaml +188 -116
  153. data/lib/countries/data/subdivisions/BE.yaml +174 -161
  154. data/lib/countries/data/subdivisions/BF.yaml +2918 -2860
  155. data/lib/countries/data/subdivisions/BG.yaml +56 -28
  156. data/lib/countries/data/subdivisions/BH.yaml +8 -21
  157. data/lib/countries/data/subdivisions/BI.yaml +176 -157
  158. data/lib/countries/data/subdivisions/BJ.yaml +24 -12
  159. data/lib/countries/data/subdivisions/BN.yaml +8 -4
  160. data/lib/countries/data/subdivisions/BO.yaml +18 -9
  161. data/lib/countries/data/subdivisions/BQ.yaml +6 -3
  162. data/lib/countries/data/subdivisions/BR.yaml +54 -27
  163. data/lib/countries/data/subdivisions/BS.yaml +575 -697
  164. data/lib/countries/data/subdivisions/BT.yaml +40 -20
  165. data/lib/countries/data/subdivisions/BW.yaml +337 -321
  166. data/lib/countries/data/subdivisions/BY.yaml +106 -116
  167. data/lib/countries/data/subdivisions/BZ.yaml +12 -6
  168. data/lib/countries/data/subdivisions/CA.yaml +26 -13
  169. data/lib/countries/data/subdivisions/CD.yaml +488 -525
  170. data/lib/countries/data/subdivisions/CF.yaml +34 -17
  171. data/lib/countries/data/subdivisions/CG.yaml +40 -28
  172. data/lib/countries/data/subdivisions/CH.yaml +52 -26
  173. data/lib/countries/data/subdivisions/CI.yaml +244 -516
  174. data/lib/countries/data/subdivisions/CL.yaml +81 -65
  175. data/lib/countries/data/subdivisions/CM.yaml +20 -10
  176. data/lib/countries/data/subdivisions/CN.yaml +2152 -2084
  177. data/lib/countries/data/subdivisions/CO.yaml +66 -33
  178. data/lib/countries/data/subdivisions/CR.yaml +14 -7
  179. data/lib/countries/data/subdivisions/CU.yaml +32 -16
  180. data/lib/countries/data/subdivisions/CV.yaml +427 -401
  181. data/lib/countries/data/subdivisions/CY.yaml +12 -6
  182. data/lib/countries/data/subdivisions/CZ.yaml +1116 -85
  183. data/lib/countries/data/subdivisions/DE.yaml +32 -16
  184. data/lib/countries/data/subdivisions/DJ.yaml +12 -6
  185. data/lib/countries/data/subdivisions/DK.yaml +25 -17
  186. data/lib/countries/data/subdivisions/DM.yaml +20 -10
  187. data/lib/countries/data/subdivisions/DO.yaml +84 -42
  188. data/lib/countries/data/subdivisions/DZ.yaml +96 -48
  189. data/lib/countries/data/subdivisions/EC.yaml +158 -134
  190. data/lib/countries/data/subdivisions/EE.yaml +501 -334
  191. data/lib/countries/data/subdivisions/EG.yaml +54 -27
  192. data/lib/countries/data/subdivisions/ER.yaml +12 -6
  193. data/lib/countries/data/subdivisions/ES.yaml +1459 -1390
  194. data/lib/countries/data/subdivisions/ET.yaml +22 -11
  195. data/lib/countries/data/subdivisions/FI.yaml +185 -1
  196. data/lib/countries/data/subdivisions/FJ.yaml +443 -424
  197. data/lib/countries/data/subdivisions/FM.yaml +8 -4
  198. data/lib/countries/data/subdivisions/FR.yaml +438 -275
  199. data/lib/countries/data/subdivisions/GA.yaml +18 -9
  200. data/lib/countries/data/subdivisions/GB.yaml +1185 -1708
  201. data/lib/countries/data/subdivisions/GD.yaml +14 -7
  202. data/lib/countries/data/subdivisions/GE.yaml +24 -12
  203. data/lib/countries/data/subdivisions/GH.yaml +114 -155
  204. data/lib/countries/data/subdivisions/GL.yaml +24 -79
  205. data/lib/countries/data/subdivisions/GM.yaml +12 -6
  206. data/lib/countries/data/subdivisions/GN.yaml +444 -403
  207. data/lib/countries/data/subdivisions/GQ.yaml +24 -13
  208. data/lib/countries/data/subdivisions/GR.yaml +114 -73
  209. data/lib/countries/data/subdivisions/GT.yaml +44 -22
  210. data/lib/countries/data/subdivisions/GW.yaml +69 -57
  211. data/lib/countries/data/subdivisions/GY.yaml +20 -10
  212. data/lib/countries/data/subdivisions/HN.yaml +36 -18
  213. data/lib/countries/data/subdivisions/HR.yaml +42 -21
  214. data/lib/countries/data/subdivisions/HT.yaml +73 -63
  215. data/lib/countries/data/subdivisions/HU.yaml +106 -63
  216. data/lib/countries/data/subdivisions/ID.yaml +229 -188
  217. data/lib/countries/data/subdivisions/IE.yaml +128 -97
  218. data/lib/countries/data/subdivisions/IL.yaml +12 -6
  219. data/lib/countries/data/subdivisions/IN.yaml +245 -396
  220. data/lib/countries/data/subdivisions/IQ.yaml +111 -91
  221. data/lib/countries/data/subdivisions/IR.yaml +1463 -1451
  222. data/lib/countries/data/subdivisions/IS.yaml +160 -25
  223. data/lib/countries/data/subdivisions/IT.yaml +8740 -8292
  224. data/lib/countries/data/subdivisions/JM.yaml +28 -14
  225. data/lib/countries/data/subdivisions/JO.yaml +24 -12
  226. data/lib/countries/data/subdivisions/JP.yaml +94 -47
  227. data/lib/countries/data/subdivisions/KE.yaml +95 -48
  228. data/lib/countries/data/subdivisions/KG.yaml +95 -86
  229. data/lib/countries/data/subdivisions/KH.yaml +64 -39
  230. data/lib/countries/data/subdivisions/KI.yaml +6 -3
  231. data/lib/countries/data/subdivisions/KM.yaml +6 -3
  232. data/lib/countries/data/subdivisions/KN.yaml +32 -16
  233. data/lib/countries/data/subdivisions/KP.yaml +24 -227
  234. data/lib/countries/data/subdivisions/KR.yaml +34 -17
  235. data/lib/countries/data/subdivisions/KW.yaml +12 -6
  236. data/lib/countries/data/subdivisions/KZ.yaml +47 -102
  237. data/lib/countries/data/subdivisions/LA.yaml +36 -34
  238. data/lib/countries/data/subdivisions/LB.yaml +71 -63
  239. data/lib/countries/data/subdivisions/LC.yaml +116 -106
  240. data/lib/countries/data/subdivisions/LI.yaml +22 -11
  241. data/lib/countries/data/subdivisions/LK.yaml +445 -411
  242. data/lib/countries/data/subdivisions/LR.yaml +146 -129
  243. data/lib/countries/data/subdivisions/LS.yaml +20 -10
  244. data/lib/countries/data/subdivisions/LT.yaml +1706 -1636
  245. data/lib/countries/data/subdivisions/LU.yaml +24 -12
  246. data/lib/countries/data/subdivisions/LV.yaml +1623 -1577
  247. data/lib/countries/data/subdivisions/LY.yaml +44 -22
  248. data/lib/countries/data/subdivisions/MA.yaml +810 -1589
  249. data/lib/countries/data/subdivisions/MC.yaml +261 -244
  250. data/lib/countries/data/subdivisions/MD.yaml +74 -79
  251. data/lib/countries/data/subdivisions/ME.yaml +217 -195
  252. data/lib/countries/data/subdivisions/MG.yaml +12 -6
  253. data/lib/countries/data/subdivisions/MH.yaml +167 -140
  254. data/lib/countries/data/subdivisions/MK.yaml +160 -80
  255. data/lib/countries/data/subdivisions/ML.yaml +48 -37
  256. data/lib/countries/data/subdivisions/MM.yaml +30 -15
  257. data/lib/countries/data/subdivisions/MN.yaml +44 -22
  258. data/lib/countries/data/subdivisions/MR.yaml +30 -34
  259. data/lib/countries/data/subdivisions/MT.yaml +136 -68
  260. data/lib/countries/data/subdivisions/MU.yaml +24 -262
  261. data/lib/countries/data/subdivisions/MV.yaml +161 -254
  262. data/lib/countries/data/subdivisions/MW.yaml +250 -219
  263. data/lib/countries/data/subdivisions/MX.yaml +64 -32
  264. data/lib/countries/data/subdivisions/MY.yaml +32 -16
  265. data/lib/countries/data/subdivisions/MZ.yaml +22 -11
  266. data/lib/countries/data/subdivisions/NA.yaml +58 -44
  267. data/lib/countries/data/subdivisions/NE.yaml +16 -8
  268. data/lib/countries/data/subdivisions/NG.yaml +74 -37
  269. data/lib/countries/data/subdivisions/NI.yaml +34 -17
  270. data/lib/countries/data/subdivisions/NL.yaml +303 -285
  271. data/lib/countries/data/subdivisions/NO.yaml +39 -17
  272. data/lib/countries/data/subdivisions/NP.yaml +302 -276
  273. data/lib/countries/data/subdivisions/NR.yaml +28 -14
  274. data/lib/countries/data/subdivisions/NZ.yaml +34 -17
  275. data/lib/countries/data/subdivisions/OM.yaml +260 -311
  276. data/lib/countries/data/subdivisions/PA.yaml +57 -44
  277. data/lib/countries/data/subdivisions/PE.yaml +107 -81
  278. data/lib/countries/data/subdivisions/PG.yaml +163 -158
  279. data/lib/countries/data/subdivisions/PH.yaml +5062 -4992
  280. data/lib/countries/data/subdivisions/PK.yaml +145 -235
  281. data/lib/countries/data/subdivisions/PL.yaml +51 -3
  282. data/lib/countries/data/subdivisions/PS.yaml +32 -16
  283. data/lib/countries/data/subdivisions/PT.yaml +40 -20
  284. data/lib/countries/data/subdivisions/PW.yaml +32 -16
  285. data/lib/countries/data/subdivisions/PY.yaml +36 -18
  286. data/lib/countries/data/subdivisions/QA.yaml +27 -78
  287. data/lib/countries/data/subdivisions/RO.yaml +84 -42
  288. data/lib/countries/data/subdivisions/RS.yaml +104 -72
  289. data/lib/countries/data/subdivisions/RU.yaml +166 -83
  290. data/lib/countries/data/subdivisions/RW.yaml +10 -5
  291. data/lib/countries/data/subdivisions/SA.yaml +26 -13
  292. data/lib/countries/data/subdivisions/SB.yaml +20 -10
  293. data/lib/countries/data/subdivisions/SC.yaml +54 -25
  294. data/lib/countries/data/subdivisions/SD.yaml +798 -780
  295. data/lib/countries/data/subdivisions/SE.yaml +42 -21
  296. data/lib/countries/data/subdivisions/SG.yaml +15 -10
  297. data/lib/countries/data/subdivisions/SH.yaml +21 -32
  298. data/lib/countries/data/subdivisions/SI.yaml +475 -263
  299. data/lib/countries/data/subdivisions/SK.yaml +16 -8
  300. data/lib/countries/data/subdivisions/SL.yaml +23 -18
  301. data/lib/countries/data/subdivisions/SM.yaml +18 -9
  302. data/lib/countries/data/subdivisions/SN.yaml +188 -174
  303. data/lib/countries/data/subdivisions/SO.yaml +36 -18
  304. data/lib/countries/data/subdivisions/SR.yaml +20 -10
  305. data/lib/countries/data/subdivisions/SS.yaml +20 -10
  306. data/lib/countries/data/subdivisions/ST.yaml +38 -52
  307. data/lib/countries/data/subdivisions/SV.yaml +28 -14
  308. data/lib/countries/data/subdivisions/SY.yaml +28 -14
  309. data/lib/countries/data/subdivisions/SZ.yaml +8 -4
  310. data/lib/countries/data/subdivisions/TD.yaml +312 -303
  311. data/lib/countries/data/subdivisions/TG.yaml +10 -5
  312. data/lib/countries/data/subdivisions/TH.yaml +211 -133
  313. data/lib/countries/data/subdivisions/TJ.yaml +161 -156
  314. data/lib/countries/data/subdivisions/TL.yaml +26 -13
  315. data/lib/countries/data/subdivisions/TM.yaml +12 -6
  316. data/lib/countries/data/subdivisions/TN.yaml +48 -24
  317. data/lib/countries/data/subdivisions/TO.yaml +10 -5
  318. data/lib/countries/data/subdivisions/TR.yaml +162 -81
  319. data/lib/countries/data/subdivisions/TT.yaml +128 -160
  320. data/lib/countries/data/subdivisions/TV.yaml +57 -63
  321. data/lib/countries/data/subdivisions/TW.yaml +143 -183
  322. data/lib/countries/data/subdivisions/TZ.yaml +62 -31
  323. data/lib/countries/data/subdivisions/UA.yaml +55 -28
  324. data/lib/countries/data/subdivisions/UG.yaml +4806 -4660
  325. data/lib/countries/data/subdivisions/UM.yaml +18 -9
  326. data/lib/countries/data/subdivisions/US.yaml +114 -57
  327. data/lib/countries/data/subdivisions/UY.yaml +99 -80
  328. data/lib/countries/data/subdivisions/UZ.yaml +28 -14
  329. data/lib/countries/data/subdivisions/VC.yaml +12 -6
  330. data/lib/countries/data/subdivisions/VE.yaml +50 -25
  331. data/lib/countries/data/subdivisions/VN.yaml +3576 -3513
  332. data/lib/countries/data/subdivisions/VU.yaml +12 -6
  333. data/lib/countries/data/subdivisions/WF.yaml +6 -3
  334. data/lib/countries/data/subdivisions/WS.yaml +22 -11
  335. data/lib/countries/data/subdivisions/YE.yaml +222 -200
  336. data/lib/countries/data/subdivisions/ZA.yaml +86 -100
  337. data/lib/countries/data/subdivisions/ZM.yaml +20 -10
  338. data/lib/countries/data/subdivisions/ZW.yaml +20 -10
  339. data/lib/countries/data/translations/countries-ab.yaml +254 -0
  340. data/lib/countries/data/translations/countries-af.yaml +254 -0
  341. data/lib/countries/data/translations/countries-ak.yaml +254 -0
  342. data/lib/countries/data/translations/countries-am.yaml +254 -0
  343. data/lib/countries/data/translations/countries-an.yaml +254 -0
  344. data/lib/countries/data/translations/countries-ar.yaml +254 -0
  345. data/lib/countries/data/translations/countries-as.yaml +254 -0
  346. data/lib/countries/data/translations/countries-ay.yaml +254 -0
  347. data/lib/countries/data/translations/countries-az.yaml +254 -0
  348. data/lib/countries/data/translations/countries-ba.yaml +254 -0
  349. data/lib/countries/data/translations/countries-be.yaml +254 -0
  350. data/lib/countries/data/translations/countries-bg.yaml +254 -0
  351. data/lib/countries/data/translations/countries-bi.yaml +254 -0
  352. data/lib/countries/data/translations/countries-bn.yaml +254 -0
  353. data/lib/countries/data/translations/countries-bn_IN.yaml +254 -0
  354. data/lib/countries/data/translations/countries-br.yaml +254 -0
  355. data/lib/countries/data/translations/countries-bs.yaml +254 -0
  356. data/lib/countries/data/translations/countries-ca.yaml +254 -0
  357. data/lib/countries/data/translations/countries-ce.yaml +254 -0
  358. data/lib/countries/data/translations/countries-ch.yaml +254 -0
  359. data/lib/countries/data/translations/countries-cs.yaml +254 -0
  360. data/lib/countries/data/translations/countries-cv.yaml +254 -0
  361. data/lib/countries/data/translations/countries-cy.yaml +254 -0
  362. data/lib/countries/data/translations/countries-da.yaml +254 -0
  363. data/lib/countries/data/translations/countries-de.yaml +254 -0
  364. data/lib/countries/data/translations/countries-dv.yaml +254 -0
  365. data/lib/countries/data/translations/countries-dz.yaml +254 -0
  366. data/lib/countries/data/translations/countries-ee.yaml +254 -0
  367. data/lib/countries/data/translations/countries-el.yaml +254 -0
  368. data/lib/countries/data/translations/countries-en.yaml +254 -0
  369. data/lib/countries/data/translations/countries-eo.yaml +254 -0
  370. data/lib/countries/data/translations/countries-es.yaml +254 -0
  371. data/lib/countries/data/translations/countries-et.yaml +254 -0
  372. data/lib/countries/data/translations/countries-eu.yaml +254 -0
  373. data/lib/countries/data/translations/countries-fa.yaml +254 -0
  374. data/lib/countries/data/translations/countries-ff.yaml +254 -0
  375. data/lib/countries/data/translations/countries-fi.yaml +254 -0
  376. data/lib/countries/data/translations/countries-fo.yaml +254 -0
  377. data/lib/countries/data/translations/countries-fr.yaml +254 -0
  378. data/lib/countries/data/translations/countries-fy.yaml +254 -0
  379. data/lib/countries/data/translations/countries-ga.yaml +254 -0
  380. data/lib/countries/data/translations/countries-gl.yaml +254 -0
  381. data/lib/countries/data/translations/countries-gn.yaml +254 -0
  382. data/lib/countries/data/translations/countries-gu.yaml +254 -0
  383. data/lib/countries/data/translations/countries-gv.yaml +254 -0
  384. data/lib/countries/data/translations/countries-ha.yaml +254 -0
  385. data/lib/countries/data/translations/countries-he.yaml +254 -0
  386. data/lib/countries/data/translations/countries-hi.yaml +254 -0
  387. data/lib/countries/data/translations/countries-hr.yaml +254 -0
  388. data/lib/countries/data/translations/countries-ht.yaml +254 -0
  389. data/lib/countries/data/translations/countries-hu.yaml +254 -0
  390. data/lib/countries/data/translations/countries-hy.yaml +254 -0
  391. data/lib/countries/data/translations/countries-ia.yaml +254 -0
  392. data/lib/countries/data/translations/countries-id.yaml +254 -0
  393. data/lib/countries/data/translations/countries-io.yaml +254 -0
  394. data/lib/countries/data/translations/countries-is.yaml +254 -0
  395. data/lib/countries/data/translations/countries-it.yaml +254 -0
  396. data/lib/countries/data/translations/countries-iu.yaml +254 -0
  397. data/lib/countries/data/translations/countries-ja.yaml +254 -0
  398. data/lib/countries/data/translations/countries-ka.yaml +254 -0
  399. data/lib/countries/data/translations/countries-ki.yaml +254 -0
  400. data/lib/countries/data/translations/countries-kk.yaml +254 -0
  401. data/lib/countries/data/translations/countries-kl.yaml +254 -0
  402. data/lib/countries/data/translations/countries-km.yaml +254 -0
  403. data/lib/countries/data/translations/countries-kn.yaml +254 -0
  404. data/lib/countries/data/translations/countries-ko.yaml +254 -0
  405. data/lib/countries/data/translations/countries-ku.yaml +254 -0
  406. data/lib/countries/data/translations/countries-kv.yaml +254 -0
  407. data/lib/countries/data/translations/countries-kw.yaml +254 -0
  408. data/lib/countries/data/translations/countries-ky.yaml +254 -0
  409. data/lib/countries/data/translations/countries-lo.yaml +254 -0
  410. data/lib/countries/data/translations/countries-lt.yaml +254 -0
  411. data/lib/countries/data/translations/countries-lv.yaml +254 -0
  412. data/lib/countries/data/translations/countries-mi.yaml +254 -0
  413. data/lib/countries/data/translations/countries-mk.yaml +254 -0
  414. data/lib/countries/data/translations/countries-ml.yaml +254 -0
  415. data/lib/countries/data/translations/countries-mn.yaml +254 -0
  416. data/lib/countries/data/translations/countries-mr.yaml +254 -0
  417. data/lib/countries/data/translations/countries-ms.yaml +254 -0
  418. data/lib/countries/data/translations/countries-mt.yaml +254 -0
  419. data/lib/countries/data/translations/countries-my.yaml +254 -0
  420. data/lib/countries/data/translations/countries-na.yaml +254 -0
  421. data/lib/countries/data/translations/countries-nb.yaml +254 -0
  422. data/lib/countries/data/translations/countries-ne.yaml +254 -0
  423. data/lib/countries/data/translations/countries-nl.yaml +254 -0
  424. data/lib/countries/data/translations/countries-nn.yaml +254 -0
  425. data/lib/countries/data/translations/countries-nv.yaml +254 -0
  426. data/lib/countries/data/translations/countries-oc.yaml +254 -0
  427. data/lib/countries/data/translations/countries-or.yaml +254 -0
  428. data/lib/countries/data/translations/countries-pa.yaml +254 -0
  429. data/lib/countries/data/translations/countries-pi.yaml +254 -0
  430. data/lib/countries/data/translations/countries-pl.yaml +254 -0
  431. data/lib/countries/data/translations/countries-ps.yaml +254 -0
  432. data/lib/countries/data/translations/countries-pt.yaml +254 -0
  433. data/lib/countries/data/translations/countries-pt_BR.yaml +254 -0
  434. data/lib/countries/data/translations/countries-ro.yaml +254 -0
  435. data/lib/countries/data/translations/countries-ru.yaml +254 -0
  436. data/lib/countries/data/translations/countries-rw.yaml +254 -0
  437. data/lib/countries/data/translations/countries-sc.yaml +254 -0
  438. data/lib/countries/data/translations/countries-sd.yaml +254 -0
  439. data/lib/countries/data/translations/countries-si.yaml +254 -0
  440. data/lib/countries/data/translations/countries-sk.yaml +254 -0
  441. data/lib/countries/data/translations/countries-sl.yaml +254 -0
  442. data/lib/countries/data/translations/countries-so.yaml +254 -0
  443. data/lib/countries/data/translations/countries-sq.yaml +254 -0
  444. data/lib/countries/data/translations/countries-sr.yaml +254 -0
  445. data/lib/countries/data/translations/countries-sv.yaml +254 -0
  446. data/lib/countries/data/translations/countries-sw.yaml +254 -0
  447. data/lib/countries/data/translations/countries-ta.yaml +254 -0
  448. data/lib/countries/data/translations/countries-te.yaml +254 -0
  449. data/lib/countries/data/translations/countries-tg.yaml +254 -0
  450. data/lib/countries/data/translations/countries-th.yaml +254 -0
  451. data/lib/countries/data/translations/countries-ti.yaml +254 -0
  452. data/lib/countries/data/translations/countries-tk.yaml +254 -0
  453. data/lib/countries/data/translations/countries-tl.yaml +254 -0
  454. data/lib/countries/data/translations/countries-tr.yaml +254 -0
  455. data/lib/countries/data/translations/countries-tt.yaml +254 -0
  456. data/lib/countries/data/translations/countries-ug.yaml +254 -0
  457. data/lib/countries/data/translations/countries-uk.yaml +254 -0
  458. data/lib/countries/data/translations/countries-ur.yaml +254 -0
  459. data/lib/countries/data/translations/countries-uz.yaml +254 -0
  460. data/lib/countries/data/translations/countries-ve.yaml +254 -0
  461. data/lib/countries/data/translations/countries-vi.yaml +254 -0
  462. data/lib/countries/data/translations/countries-wa.yaml +254 -0
  463. data/lib/countries/data/translations/countries-wo.yaml +254 -0
  464. data/lib/countries/data/translations/countries-xh.yaml +254 -0
  465. data/lib/countries/data/translations/countries-yo.yaml +254 -0
  466. data/lib/countries/data/translations/countries-zh_CN.yaml +254 -0
  467. data/lib/countries/data/translations/countries-zh_HK.yaml +254 -0
  468. data/lib/countries/data/translations/countries-zh_TW.yaml +254 -0
  469. data/lib/countries/data/translations/countries-zu.yaml +254 -0
  470. data/lib/countries/data.rb +14 -8
  471. data/lib/countries/iso3166.rb +0 -1
  472. data/lib/countries/sources/cldr/subdivision_updater.rb +1 -1
  473. data/lib/countries/subdivision.rb +19 -8
  474. data/lib/countries/version.rb +1 -1
  475. data/spec/country_spec.rb +63 -19
  476. data/spec/data_spec.rb +63 -5
  477. metadata +133 -24
  478. data/lib/countries/cache/locales/zh.json +0 -1
  479. data/lib/countries/data/subdivisions/AI.yaml +0 -197
  480. data/lib/countries/data/subdivisions/BM.yaml +0 -155
  481. data/lib/countries/data/subdivisions/CK.yaml +0 -155
  482. data/lib/countries/data/subdivisions/EH.yaml +0 -80
  483. data/lib/countries/data/subdivisions/SJ.yaml +0 -29
  484. data/lib/countries/data/subdivisions/TK.yaml +0 -43
  485. data/lib/countries/data/translation_corrections.yaml +0 -53
@@ -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
@@ -5,6 +5,7 @@ module ISO3166
5
5
  class Data
6
6
  @cache_dir = [File.dirname(__FILE__), 'cache']
7
7
  @cache = {}
8
+ @loaded_country_codes = []
8
9
  @registered_data = {}
9
10
  @mutex = Mutex.new
10
11
 
@@ -49,7 +50,7 @@ module ISO3166
49
50
 
50
51
  def codes
51
52
  load_data!
52
- loaded_codes
53
+ cached_codes
53
54
  end
54
55
 
55
56
  def update_cache
@@ -58,6 +59,15 @@ module ISO3166
58
59
  @cache
59
60
  end
60
61
 
62
+ def loaded_codes
63
+ load_data!
64
+ @loaded_country_codes
65
+ end
66
+
67
+ def datafile_path(file_array)
68
+ File.join([@cache_dir] + file_array)
69
+ end
70
+
61
71
  private
62
72
 
63
73
  def load_data!
@@ -65,7 +75,7 @@ module ISO3166
65
75
 
66
76
  synchronized do
67
77
  @cache = load_cache %w[countries.json]
68
- @_country_codes = @cache.keys
78
+ @loaded_country_codes = @cache.keys
69
79
  @cache = @cache.merge(@registered_data)
70
80
  @cache
71
81
  end
@@ -102,13 +112,13 @@ module ISO3166
102
112
  end
103
113
  end
104
114
 
105
- def loaded_codes
115
+ def cached_codes
106
116
  @cache.keys
107
117
  end
108
118
 
109
119
  # Codes that we have translations for in dataset
110
120
  def internal_codes
111
- @_country_codes - @registered_data.keys
121
+ @loaded_country_codes - @registered_data.keys
112
122
  end
113
123
 
114
124
  def cache_flush_required?
@@ -158,10 +168,6 @@ module ISO3166
158
168
  File.exist?(file_path) ? JSON.parse(File.binread(file_path)) : {}
159
169
  end
160
170
 
161
- def datafile_path(file_array)
162
- File.join([@cache_dir] + file_array)
163
- end
164
-
165
171
  def deep_stringify_keys(data)
166
172
  data.transform_keys!(&:to_s)
167
173
  data.transform_values! do |v|
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'yaml'
4
4
  require 'json'
5
- require 'i18n_data'
6
5
 
7
6
  require 'countries/kwarg_struct'
8
7
  require 'countries/configuration'
@@ -19,7 +19,7 @@ module Sources
19
19
  language_data = Nokogiri::XML(File.read(file_path))
20
20
  language_code = File.basename(file_path, '.*')
21
21
  subdivisions = language_data.css('subdivision')
22
- next if subdivisions.empty?
22
+ return if subdivisions.empty?
23
23
 
24
24
  last_country_code_seen = nil
25
25
 
@@ -1,12 +1,23 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ISO3166
4
- Subdivision = KwargStruct.new(
5
- :name,
6
- :code,
7
- :unofficial_names,
8
- :geo,
9
- :translations,
10
- :comments
11
- )
4
+ class Subdivision
5
+ attr_accessor :name,
6
+ :code,
7
+ :unofficial_names,
8
+ :geo,
9
+ :translations,
10
+ :comments,
11
+ :type
12
+
13
+ def initialize(attrs)
14
+ attrs.each_pair do |k, v|
15
+ send "#{k}=", v
16
+ end
17
+ end
18
+
19
+ def [](attr_name)
20
+ send attr_name
21
+ end
22
+ end
12
23
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Countries
4
- VERSION = '5.0.2'.freeze
4
+ VERSION = '5.1.0'.freeze
5
5
  end
data/spec/country_spec.rb CHANGED
@@ -221,7 +221,7 @@ describe ISO3166::Country do
221
221
  end
222
222
 
223
223
  describe 'subdivisions' do
224
- let(:virginia) { country.states['VA'] }
224
+ let(:virginia) { country.subdivisions['VA'] }
225
225
  it 'should return an empty hash for a country with no ISO3166-2' do
226
226
  expect(ISO3166::Country.search('VA').subdivisions.size).to eq(0)
227
227
  end
@@ -230,8 +230,8 @@ describe ISO3166::Country do
230
230
  expect(country.subdivisions.size).to eq(57)
231
231
  end
232
232
 
233
- it 'should be available through states' do
234
- expect(country.states.size).to eq(57)
233
+ it '#states should be deprecated' do
234
+ expect {country.states}.to output.to_stderr
235
235
  end
236
236
 
237
237
  it 'should be a subdivision object' do
@@ -251,6 +251,60 @@ describe ISO3166::Country do
251
251
  end
252
252
  end
253
253
 
254
+ describe 'subdivision_types' do
255
+ it "should return an array of subdivision types" do
256
+ expect(country.subdivision_types).to contain_exactly('district', 'state', 'outlying_area')
257
+ end
258
+
259
+ it "should return an array of subdivision types even if there is only a single type" do
260
+ expect(ISO3166::Country['LI'].subdivision_types).to contain_exactly('commune')
261
+ end
262
+
263
+ it "should return an empty array if country has no subdivisions" do
264
+ expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
265
+ expect(ISO3166::Country['AS'].subdivision_types).to eq([])
266
+ end
267
+ end
268
+
269
+ describe 'subdivisions_of_types' do
270
+ it "given a single type, should return an array of subdivisions that match the type" do
271
+ us_states = country.subdivisions_of_types(%w[state])
272
+ expect(us_states.size).to eq(50)
273
+ dc = country.subdivisions_of_types(%w[district])
274
+ expect(dc.size).to eq(1)
275
+ end
276
+
277
+ it "given multiple types, should return an array of subdivisions matching the types" do
278
+ us_states_plus_dc = country.subdivisions_of_types(%w[state district])
279
+ expect(us_states_plus_dc.size).to eq(51)
280
+ end
281
+
282
+ it "given multiple types where at least one does not exist for that country, should work without issue" do
283
+ us_states_plus_dc = country.subdivisions_of_types(%w[state district governorate])
284
+ expect(us_states_plus_dc.size).to eq(51)
285
+ end
286
+
287
+ it "given only types that do not exist for that country, should return an empty collection" do
288
+ should_be_empty = ISO3166::Country['PT'].subdivisions_of_types(%w[state county])
289
+ expect(should_be_empty).to be_empty
290
+ end
291
+ end
292
+
293
+ describe 'humanized_subdivision_types' do
294
+ it "should return an array of humanized subdivision types" do
295
+ expect(country.humanized_subdivision_types).to contain_exactly('District', 'State', 'Outlying area')
296
+ end
297
+
298
+ it "should return an array of subdivision types even if there is only a single type" do
299
+ expect(ISO3166::Country['LI'].humanized_subdivision_types).to contain_exactly('Commune')
300
+ end
301
+
302
+ it "should return an empty array if country has no subdivisions" do
303
+ expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
304
+ expect(ISO3166::Country['AS'].humanized_subdivision_types).to eq([])
305
+ end
306
+ end
307
+
254
308
  describe 'subdivision_names_with_codes' do
255
309
  it 'should return an alphabetized list of all subdivisions names with codes' do
256
310
  subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes
@@ -330,7 +384,7 @@ describe ISO3166::Country do
330
384
  countries = ISO3166::Country.all_translated('fr')
331
385
  expect(countries).to be_an(Array)
332
386
  expect(countries.first).to be_a(String)
333
- expect(countries.first).to eq('Aruba')
387
+ expect(countries.first).to eq('Andorre')
334
388
  # countries missing the desired locale will not be added to the list
335
389
  # so all 250 countries may not be returned, 'fr' returns 249, for example
336
390
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
@@ -340,7 +394,7 @@ describe ISO3166::Country do
340
394
  countries = ISO3166::Country.all_translated
341
395
  expect(countries).to be_an(Array)
342
396
  expect(countries.first).to be_a(String)
343
- expect(countries.first).to eq('Aruba')
397
+ expect(countries.first).to eq('Andorra')
344
398
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
345
399
  end
346
400
 
@@ -448,8 +502,8 @@ describe ISO3166::Country do
448
502
  it 'should return an hash of all country names translated to the selected locale' do
449
503
  countries = ISO3166::Country.translations('fr')
450
504
  expect(countries).to be_an(Hash)
451
- expect(countries.first[0]).to eq('AW')
452
- expect(countries.first).to eq(%w[AW Aruba])
505
+ expect(countries.first[0]).to eq('AD')
506
+ expect(countries.first).to eq(%w[AD Andorre])
453
507
  # countries missing the desired locale will not be added to the list
454
508
  # so all 250 countries may not be returned, 'fr' returns 249, for example
455
509
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
@@ -458,8 +512,8 @@ describe ISO3166::Country do
458
512
  it 'should return an hash of all country names in English if no locale is passed' do
459
513
  countries = ISO3166::Country.translations
460
514
  expect(countries).to be_an(Hash)
461
- expect(countries.first[0]).to eq('AW')
462
- expect(countries.first).to eq(%w[AW Aruba])
515
+ expect(countries.first[0]).to eq('AD')
516
+ expect(countries.first).to eq(%w[AD Andorra])
463
517
  expect(countries.size).to eq(NUM_OF_COUNTRIES)
464
518
  end
465
519
  end
@@ -896,16 +950,6 @@ describe ISO3166::Country do
896
950
  end
897
951
  end
898
952
 
899
- describe 'names in Data' do
900
- it 'should be unique (to allow .find_by_any_name work properly)' do
901
- names = ISO3166::Data.cache.map do |_k, v|
902
- [v['iso_short_name'], v['unofficial_names']].flatten.uniq
903
- end.flatten
904
-
905
- expect(names.size).to eq(names.uniq.size)
906
- end
907
- end
908
-
909
953
  describe 'Norway' do
910
954
  let(:norway) { ISO3166::Country.search('NO') }
911
955
 
data/spec/data_spec.rb CHANGED
@@ -122,8 +122,12 @@ describe ISO3166::Data do
122
122
  expect(subject.iso_short_name).to eq 'NEW Taiwan'
123
123
  expect(subject.translations).to eq('en' => 'NEW Taiwan',
124
124
  'de' => 'NEW Taiwan')
125
- expect(subject.subdivisions).to eq('CHA' => ISO3166::Subdivision.new({ name: 'New Changhua', code: 'CHA' }),
126
- 'CYI' => ISO3166::Subdivision.new({ name: 'New Municipality', code: 'CYI' }))
125
+ expect(subject.subdivisions.keys).to eq(%w[CHA CYI])
126
+ expect(subject.subdivisions.values.map(&:name)).to eq(['New Changhua', 'New Municipality'])
127
+ end
128
+
129
+ after do
130
+ ISO3166.reset
127
131
  end
128
132
  end
129
133
 
@@ -149,8 +153,8 @@ describe ISO3166::Data do
149
153
  data = ISO3166::Data.new('LOL').call
150
154
  expect(data['iso_short_name']).to eq 'Happy Country'
151
155
  expect(subject.iso_short_name).to eq 'Happy Country'
152
- expect(subject.subdivisions).to eq('LOL1' => ISO3166::Subdivision.new({name: 'Happy sub1', code: 'LOL1'}),
153
- 'LOL2' => ISO3166::Subdivision.new({name: 'Happy sub2', code: 'LOL2'}))
156
+ expect(subject.subdivisions.keys).to eq(%w[LOL1 LOL2])
157
+ expect(subject.subdivisions.values.map(&:name)).to eq(['Happy sub1', 'Happy sub2'])
154
158
  end
155
159
 
156
160
  it 'detect a stale cache' do
@@ -181,7 +185,61 @@ describe ISO3166::Data do
181
185
  end
182
186
 
183
187
  after do
184
- ISO3166::Data.unregister('lol')
188
+ ISO3166.reset
189
+ end
190
+ end
191
+
192
+ describe 'data checks' do
193
+ context 'subdivision YAML files' do
194
+ it 'has a non-blank code for all subdivisions' do
195
+ Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
196
+ data = YAML.load_file(file)
197
+ expect(data.values.none?{|s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{file}"
198
+ end
199
+ end
200
+
201
+ it 'has a non-blank, lowercase and snake_case type for all subdivisions' do
202
+ Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
203
+ data = YAML.load_file(file)
204
+ no_type = data.select{|k,v| v['type'].nil? }
205
+ expect(no_type).to be_empty, "empty subdivision type in #{file} - #{no_type.keys}"
206
+ uppercase = data.select{|k,v| v['type'] =~ /[A-Z]/ }
207
+ expect(uppercase).to be_empty, "uppercase characters in subdivision type in #{file} - #{uppercase.keys}"
208
+ spaces = data.select{|k,v| v['type'] =~ /\s/ }
209
+ expect(spaces).to be_empty, "whitespace characters in subdivision type in #{file} - #{spaces.keys}"
210
+ end
211
+ end
212
+
213
+ it 'has a non-blank name for all subdivisions' do
214
+ Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
215
+ data = YAML.load_file(file)
216
+ expect(data.values.none?{|s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{file}"
217
+ end
218
+ end
219
+ end
220
+
221
+ context 'cached country subdivision data' do
222
+ it 'has a non-blank code for all subdivisions' do
223
+ ISO3166::Country.all.each do |country|
224
+ expect(country.subdivisions.values.none?{|s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{country}"
225
+ end
226
+ end
227
+
228
+ it 'has a non-blank name for all subdivisions' do
229
+ ISO3166::Country.all.each do |country|
230
+ expect(country.subdivisions.values.none?{|s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{country}"
231
+ end
232
+ end
233
+ end
234
+
235
+ context 'names in Data' do
236
+ it 'should be unique (to allow .find_by_any_name work properly)' do
237
+ names = ISO3166::Data.cache.map do |_k, v|
238
+ [v['iso_short_name'], v['unofficial_names']].flatten.uniq
239
+ end.flatten
240
+
241
+ expect(names.size).to eq(names.uniq.size)
242
+ end
185
243
  end
186
244
  end
187
245
  end