countries 2.0.0.pre.2 → 2.0.0.pre.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (660) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/CHANGELOG.md +9 -0
  4. data/README.markdown +116 -78
  5. data/Rakefile +37 -16
  6. data/bin/console +14 -0
  7. data/countries.gemspec +3 -2
  8. data/lib/countries.rb +3 -0
  9. data/lib/countries/cache/countries.json +1 -0
  10. data/lib/countries/cache/locales/af.json +1 -0
  11. data/lib/countries/cache/locales/am.json +1 -0
  12. data/lib/countries/cache/locales/ar.json +1 -0
  13. data/lib/countries/cache/locales/as.json +1 -0
  14. data/lib/countries/cache/locales/az.json +1 -0
  15. data/lib/countries/cache/locales/be.json +1 -0
  16. data/lib/countries/cache/locales/bg.json +1 -0
  17. data/lib/countries/cache/locales/bn.json +1 -0
  18. data/lib/countries/cache/locales/br.json +1 -0
  19. data/lib/countries/cache/locales/bs.json +1 -0
  20. data/lib/countries/cache/locales/ca.json +1 -0
  21. data/lib/countries/cache/locales/cs.json +1 -0
  22. data/lib/countries/cache/locales/cy.json +1 -0
  23. data/lib/countries/cache/locales/da.json +1 -0
  24. data/lib/countries/cache/locales/de.json +1 -0
  25. data/lib/countries/cache/locales/dz.json +1 -0
  26. data/lib/countries/cache/locales/el.json +1 -0
  27. data/lib/countries/cache/locales/en.json +1 -0
  28. data/lib/countries/cache/locales/eo.json +1 -0
  29. data/lib/countries/cache/locales/es.json +1 -0
  30. data/lib/countries/cache/locales/et.json +1 -0
  31. data/lib/countries/cache/locales/eu.json +1 -0
  32. data/lib/countries/cache/locales/fa.json +1 -0
  33. data/lib/countries/cache/locales/fi.json +1 -0
  34. data/lib/countries/cache/locales/fo.json +1 -0
  35. data/lib/countries/cache/locales/fr.json +1 -0
  36. data/lib/countries/cache/locales/ga.json +1 -0
  37. data/lib/countries/cache/locales/gl.json +1 -0
  38. data/lib/countries/cache/locales/gu.json +1 -0
  39. data/lib/countries/cache/locales/he.json +1 -0
  40. data/lib/countries/cache/locales/hi.json +1 -0
  41. data/lib/countries/cache/locales/hr.json +1 -0
  42. data/lib/countries/cache/locales/hu.json +1 -0
  43. data/lib/countries/cache/locales/hy.json +1 -0
  44. data/lib/countries/cache/locales/ia.json +1 -0
  45. data/lib/countries/cache/locales/id.json +1 -0
  46. data/lib/countries/cache/locales/is.json +1 -0
  47. data/lib/countries/cache/locales/it.json +1 -0
  48. data/lib/countries/cache/locales/ja.json +1 -0
  49. data/lib/countries/cache/locales/ka.json +1 -0
  50. data/lib/countries/cache/locales/kk.json +1 -0
  51. data/lib/countries/cache/locales/km.json +1 -0
  52. data/lib/countries/cache/locales/kn.json +1 -0
  53. data/lib/countries/cache/locales/ko.json +1 -0
  54. data/lib/countries/cache/locales/ku.json +1 -0
  55. data/lib/countries/cache/locales/lt.json +1 -0
  56. data/lib/countries/cache/locales/lv.json +1 -0
  57. data/lib/countries/cache/locales/mi.json +1 -0
  58. data/lib/countries/cache/locales/mk.json +1 -0
  59. data/lib/countries/cache/locales/ml.json +1 -0
  60. data/lib/countries/cache/locales/mn.json +1 -0
  61. data/lib/countries/cache/locales/mr.json +1 -0
  62. data/lib/countries/cache/locales/ms.json +1 -0
  63. data/lib/countries/cache/locales/mt.json +1 -0
  64. data/lib/countries/cache/locales/nb.json +1 -0
  65. data/lib/countries/cache/locales/ne.json +1 -0
  66. data/lib/countries/cache/locales/nl.json +1 -0
  67. data/lib/countries/cache/locales/nn.json +1 -0
  68. data/lib/countries/cache/locales/oc.json +1 -0
  69. data/lib/countries/cache/locales/or.json +1 -0
  70. data/lib/countries/cache/locales/pa.json +1 -0
  71. data/lib/countries/cache/locales/pl.json +1 -0
  72. data/lib/countries/cache/locales/ps.json +1 -0
  73. data/lib/countries/cache/locales/pt.json +1 -0
  74. data/lib/countries/cache/locales/ro.json +1 -0
  75. data/lib/countries/cache/locales/ru.json +1 -0
  76. data/lib/countries/cache/locales/rw.json +1 -0
  77. data/lib/countries/cache/locales/si.json +1 -0
  78. data/lib/countries/cache/locales/sk.json +1 -0
  79. data/lib/countries/cache/locales/sl.json +1 -0
  80. data/lib/countries/cache/locales/so.json +1 -0
  81. data/lib/countries/cache/locales/sq.json +1 -0
  82. data/lib/countries/cache/locales/sr.json +1 -0
  83. data/lib/countries/cache/locales/sv.json +1 -0
  84. data/lib/countries/cache/locales/sw.json +1 -0
  85. data/lib/countries/cache/locales/ta.json +1 -0
  86. data/lib/countries/cache/locales/te.json +1 -0
  87. data/lib/countries/cache/locales/th.json +1 -0
  88. data/lib/countries/cache/locales/ti.json +1 -0
  89. data/lib/countries/cache/locales/tk.json +1 -0
  90. data/lib/countries/cache/locales/tl.json +1 -0
  91. data/lib/countries/cache/locales/tr.json +1 -0
  92. data/lib/countries/cache/locales/tt.json +1 -0
  93. data/lib/countries/cache/locales/ug.json +1 -0
  94. data/lib/countries/cache/locales/uk.json +1 -0
  95. data/lib/countries/cache/locales/ve.json +1 -0
  96. data/lib/countries/cache/locales/vi.json +1 -0
  97. data/lib/countries/cache/locales/wa.json +1 -0
  98. data/lib/countries/cache/locales/wo.json +1 -0
  99. data/lib/countries/cache/locales/xh.json +1 -0
  100. data/lib/countries/cache/locales/zh.json +1 -0
  101. data/lib/countries/cache/locales/zu.json +1 -0
  102. data/lib/countries/configuration.rb +3 -1
  103. data/lib/countries/country.rb +47 -98
  104. data/lib/countries/country/class_methods.rb +100 -0
  105. data/lib/countries/data.rb +55 -19
  106. data/lib/countries/data/countries/AD.yaml +18 -15
  107. data/lib/countries/data/countries/AE.yaml +22 -19
  108. data/lib/countries/data/countries/AF.yaml +21 -16
  109. data/lib/countries/data/countries/AG.yaml +21 -18
  110. data/lib/countries/data/countries/AI.yaml +17 -14
  111. data/lib/countries/data/countries/AL.yaml +20 -17
  112. data/lib/countries/data/countries/AM.yaml +22 -18
  113. data/lib/countries/data/countries/AN.yaml +23 -19
  114. data/lib/countries/data/countries/AO.yaml +17 -14
  115. data/lib/countries/data/countries/AQ.yaml +19 -17
  116. data/lib/countries/data/countries/AR.yaml +22 -18
  117. data/lib/countries/data/countries/AS.yaml +23 -19
  118. data/lib/countries/data/countries/AT.yaml +20 -17
  119. data/lib/countries/data/countries/AU.yaml +20 -17
  120. data/lib/countries/data/countries/AW.yaml +17 -14
  121. data/lib/countries/data/countries/AX.yaml +22 -19
  122. data/lib/countries/data/countries/AZ.yaml +23 -19
  123. data/lib/countries/data/countries/BA.yaml +25 -20
  124. data/lib/countries/data/countries/BB.yaml +18 -15
  125. data/lib/countries/data/countries/BD.yaml +18 -15
  126. data/lib/countries/data/countries/BE.yaml +25 -20
  127. data/lib/countries/data/countries/BF.yaml +19 -15
  128. data/lib/countries/data/countries/BG.yaml +20 -17
  129. data/lib/countries/data/countries/BH.yaml +20 -17
  130. data/lib/countries/data/countries/BI.yaml +19 -15
  131. data/lib/countries/data/countries/BJ.yaml +18 -15
  132. data/lib/countries/data/countries/BL.yaml +18 -15
  133. data/lib/countries/data/countries/BM.yaml +19 -16
  134. data/lib/countries/data/countries/BN.yaml +17 -14
  135. data/lib/countries/data/countries/BO.yaml +22 -17
  136. data/lib/countries/data/countries/BQ.yaml +21 -17
  137. data/lib/countries/data/countries/BR.yaml +21 -18
  138. data/lib/countries/data/countries/BS.yaml +18 -15
  139. data/lib/countries/data/countries/BT.yaml +19 -16
  140. data/lib/countries/data/countries/BV.yaml +17 -15
  141. data/lib/countries/data/countries/BW.yaml +19 -15
  142. data/lib/countries/data/countries/BY.yaml +24 -20
  143. data/lib/countries/data/countries/BZ.yaml +20 -16
  144. data/lib/countries/data/countries/CA.yaml +21 -17
  145. data/lib/countries/data/countries/CC.yaml +19 -16
  146. data/lib/countries/data/countries/CD.yaml +26 -19
  147. data/lib/countries/data/countries/CF.yaml +23 -19
  148. data/lib/countries/data/countries/CG.yaml +22 -18
  149. data/lib/countries/data/countries/CH.yaml +24 -19
  150. data/lib/countries/data/countries/CI.yaml +22 -19
  151. data/lib/countries/data/countries/CK.yaml +21 -18
  152. data/lib/countries/data/countries/CL.yaml +18 -15
  153. data/lib/countries/data/countries/CM.yaml +23 -19
  154. data/lib/countries/data/countries/CN.yaml +18 -15
  155. data/lib/countries/data/countries/CO.yaml +19 -16
  156. data/lib/countries/data/countries/CR.yaml +17 -14
  157. data/lib/countries/data/countries/CU.yaml +18 -15
  158. data/lib/countries/data/countries/CV.yaml +21 -18
  159. data/lib/countries/data/countries/CW.yaml +17 -14
  160. data/lib/countries/data/countries/CX.yaml +22 -17
  161. data/lib/countries/data/countries/CY.yaml +24 -19
  162. data/lib/countries/data/countries/CZ.yaml +23 -19
  163. data/lib/countries/data/countries/DE.yaml +21 -18
  164. data/lib/countries/data/countries/DJ.yaml +21 -17
  165. data/lib/countries/data/countries/DK.yaml +21 -18
  166. data/lib/countries/data/countries/DM.yaml +17 -14
  167. data/lib/countries/data/countries/DO.yaml +21 -18
  168. data/lib/countries/data/countries/DZ.yaml +22 -19
  169. data/lib/countries/data/countries/EC.yaml +18 -15
  170. data/lib/countries/data/countries/EE.yaml +19 -16
  171. data/lib/countries/data/countries/EG.yaml +22 -19
  172. data/lib/countries/data/countries/EH.yaml +23 -19
  173. data/lib/countries/data/countries/ER.yaml +22 -17
  174. data/lib/countries/data/countries/ES.yaml +21 -18
  175. data/lib/countries/data/countries/ET.yaml +21 -18
  176. data/lib/countries/data/countries/FI.yaml +22 -18
  177. data/lib/countries/data/countries/FJ.yaml +23 -17
  178. data/lib/countries/data/countries/FK.yaml +21 -18
  179. data/lib/countries/data/countries/FM.yaml +20 -17
  180. data/lib/countries/data/countries/FO.yaml +21 -18
  181. data/lib/countries/data/countries/FR.yaml +21 -18
  182. data/lib/countries/data/countries/GA.yaml +19 -16
  183. data/lib/countries/data/countries/GB.yaml +22 -19
  184. data/lib/countries/data/countries/GD.yaml +17 -14
  185. data/lib/countries/data/countries/GE.yaml +20 -17
  186. data/lib/countries/data/countries/GF.yaml +20 -17
  187. data/lib/countries/data/countries/GG.yaml +23 -19
  188. data/lib/countries/data/countries/GH.yaml +17 -14
  189. data/lib/countries/data/countries/GI.yaml +17 -14
  190. data/lib/countries/data/countries/GL.yaml +20 -17
  191. data/lib/countries/data/countries/GM.yaml +17 -14
  192. data/lib/countries/data/countries/GN.yaml +21 -17
  193. data/lib/countries/data/countries/GP.yaml +18 -15
  194. data/lib/countries/data/countries/GQ.yaml +23 -19
  195. data/lib/countries/data/countries/GR.yaml +21 -18
  196. data/lib/countries/data/countries/GS.yaml +20 -17
  197. data/lib/countries/data/countries/GT.yaml +17 -14
  198. data/lib/countries/data/countries/GU.yaml +20 -15
  199. data/lib/countries/data/countries/GW.yaml +20 -17
  200. data/lib/countries/data/countries/GY.yaml +17 -14
  201. data/lib/countries/data/countries/HK.yaml +20 -16
  202. data/lib/countries/data/countries/HM.yaml +20 -17
  203. data/lib/countries/data/countries/HN.yaml +17 -14
  204. data/lib/countries/data/countries/HR.yaml +22 -19
  205. data/lib/countries/data/countries/HT.yaml +20 -16
  206. data/lib/countries/data/countries/HU.yaml +21 -18
  207. data/lib/countries/data/countries/ID.yaml +20 -17
  208. data/lib/countries/data/countries/IE.yaml +23 -19
  209. data/lib/countries/data/countries/IL.yaml +20 -16
  210. data/lib/countries/data/countries/IM.yaml +22 -18
  211. data/lib/countries/data/countries/IN.yaml +21 -17
  212. data/lib/countries/data/countries/IO.yaml +19 -16
  213. data/lib/countries/data/countries/IQ.yaml +19 -16
  214. data/lib/countries/data/countries/IR.yaml +20 -17
  215. data/lib/countries/data/countries/IS.yaml +21 -18
  216. data/lib/countries/data/countries/IT.yaml +21 -18
  217. data/lib/countries/data/countries/JE.yaml +19 -15
  218. data/lib/countries/data/countries/JM.yaml +19 -16
  219. data/lib/countries/data/countries/JO.yaml +22 -19
  220. data/lib/countries/data/countries/JP.yaml +19 -16
  221. data/lib/countries/data/countries/KE.yaml +20 -16
  222. data/lib/countries/data/countries/KG.yaml +24 -20
  223. data/lib/countries/data/countries/KH.yaml +21 -18
  224. data/lib/countries/data/countries/KI.yaml +17 -14
  225. data/lib/countries/data/countries/KM.yaml +22 -18
  226. data/lib/countries/data/countries/KN.yaml +23 -20
  227. data/lib/countries/data/countries/KP.yaml +23 -20
  228. data/lib/countries/data/countries/KR.yaml +23 -20
  229. data/lib/countries/data/countries/KW.yaml +20 -17
  230. data/lib/countries/data/countries/KY.yaml +21 -18
  231. data/lib/countries/data/countries/KZ.yaml +22 -18
  232. data/lib/countries/data/countries/LA.yaml +18 -15
  233. data/lib/countries/data/countries/LB.yaml +23 -19
  234. data/lib/countries/data/countries/LC.yaml +21 -18
  235. data/lib/countries/data/countries/LI.yaml +17 -14
  236. data/lib/countries/data/countries/LK.yaml +19 -15
  237. data/lib/countries/data/countries/LR.yaml +17 -14
  238. data/lib/countries/data/countries/LS.yaml +19 -15
  239. data/lib/countries/data/countries/LT.yaml +22 -19
  240. data/lib/countries/data/countries/LU.yaml +23 -18
  241. data/lib/countries/data/countries/LV.yaml +21 -18
  242. data/lib/countries/data/countries/LY.yaml +23 -20
  243. data/lib/countries/data/countries/MA.yaml +21 -18
  244. data/lib/countries/data/countries/MC.yaml +18 -15
  245. data/lib/countries/data/countries/MD.yaml +22 -19
  246. data/lib/countries/data/countries/ME.yaml +22 -16
  247. data/lib/countries/data/countries/MF.yaml +21 -16
  248. data/lib/countries/data/countries/MG.yaml +21 -17
  249. data/lib/countries/data/countries/MH.yaml +23 -19
  250. data/lib/countries/data/countries/MK.yaml +22 -19
  251. data/lib/countries/data/countries/ML.yaml +17 -14
  252. data/lib/countries/data/countries/MM.yaml +17 -14
  253. data/lib/countries/data/countries/MN.yaml +20 -17
  254. data/lib/countries/data/countries/MO.yaml +21 -17
  255. data/lib/countries/data/countries/MP.yaml +23 -19
  256. data/lib/countries/data/countries/MQ.yaml +18 -15
  257. data/lib/countries/data/countries/MR.yaml +23 -19
  258. data/lib/countries/data/countries/MS.yaml +17 -14
  259. data/lib/countries/data/countries/MT.yaml +20 -16
  260. data/lib/countries/data/countries/MU.yaml +19 -16
  261. data/lib/countries/data/countries/MV.yaml +20 -17
  262. data/lib/countries/data/countries/MW.yaml +19 -15
  263. data/lib/countries/data/countries/MX.yaml +20 -17
  264. data/lib/countries/data/countries/MY.yaml +22 -18
  265. data/lib/countries/data/countries/MZ.yaml +18 -15
  266. data/lib/countries/data/countries/NA.yaml +21 -17
  267. data/lib/countries/data/countries/NC.yaml +21 -18
  268. data/lib/countries/data/countries/NE.yaml +18 -15
  269. data/lib/countries/data/countries/NF.yaml +21 -18
  270. data/lib/countries/data/countries/NG.yaml +19 -16
  271. data/lib/countries/data/countries/NI.yaml +17 -14
  272. data/lib/countries/data/countries/NL.yaml +21 -18
  273. data/lib/countries/data/countries/NO.yaml +24 -20
  274. data/lib/countries/data/countries/NP.yaml +19 -16
  275. data/lib/countries/data/countries/NR.yaml +19 -15
  276. data/lib/countries/data/countries/NU.yaml +18 -15
  277. data/lib/countries/data/countries/NZ.yaml +21 -18
  278. data/lib/countries/data/countries/OM.yaml +19 -16
  279. data/lib/countries/data/countries/PA.yaml +18 -15
  280. data/lib/countries/data/countries/PE.yaml +19 -16
  281. data/lib/countries/data/countries/PF.yaml +21 -18
  282. data/lib/countries/data/countries/PG.yaml +21 -18
  283. data/lib/countries/data/countries/PH.yaml +22 -18
  284. data/lib/countries/data/countries/PK.yaml +20 -16
  285. data/lib/countries/data/countries/PL.yaml +20 -17
  286. data/lib/countries/data/countries/PM.yaml +21 -18
  287. data/lib/countries/data/countries/PN.yaml +18 -15
  288. data/lib/countries/data/countries/PR.yaml +19 -15
  289. data/lib/countries/data/countries/PS.yaml +28 -23
  290. data/lib/countries/data/countries/PT.yaml +17 -14
  291. data/lib/countries/data/countries/PW.yaml +17 -14
  292. data/lib/countries/data/countries/PY.yaml +19 -15
  293. data/lib/countries/data/countries/QA.yaml +19 -16
  294. data/lib/countries/data/countries/RE.yaml +19 -16
  295. data/lib/countries/data/countries/RO.yaml +21 -18
  296. data/lib/countries/data/countries/RS.yaml +20 -17
  297. data/lib/countries/data/countries/RU.yaml +23 -20
  298. data/lib/countries/data/countries/RW.yaml +21 -16
  299. data/lib/countries/data/countries/SA.yaml +22 -19
  300. data/lib/countries/data/countries/SB.yaml +21 -18
  301. data/lib/countries/data/countries/SC.yaml +20 -16
  302. data/lib/countries/data/countries/SD.yaml +23 -19
  303. data/lib/countries/data/countries/SE.yaml +21 -18
  304. data/lib/countries/data/countries/SG.yaml +22 -17
  305. data/lib/countries/data/countries/SH.yaml +21 -18
  306. data/lib/countries/data/countries/SI.yaml +21 -18
  307. data/lib/countries/data/countries/SJ.yaml +21 -18
  308. data/lib/countries/data/countries/SK.yaml +21 -18
  309. data/lib/countries/data/countries/SL.yaml +17 -14
  310. data/lib/countries/data/countries/SM.yaml +18 -15
  311. data/lib/countries/data/countries/SN.yaml +18 -15
  312. data/lib/countries/data/countries/SO.yaml +21 -17
  313. data/lib/countries/data/countries/SR.yaml +18 -15
  314. data/lib/countries/data/countries/SS.yaml +21 -17
  315. data/lib/countries/data/countries/ST.yaml +21 -18
  316. data/lib/countries/data/countries/SV.yaml +18 -15
  317. data/lib/countries/data/countries/SX.yaml +19 -15
  318. data/lib/countries/data/countries/SY.yaml +23 -20
  319. data/lib/countries/data/countries/SZ.yaml +21 -17
  320. data/lib/countries/data/countries/TC.yaml +23 -20
  321. data/lib/countries/data/countries/TD.yaml +23 -19
  322. data/lib/countries/data/countries/TF.yaml +21 -18
  323. data/lib/countries/data/countries/TG.yaml +17 -14
  324. data/lib/countries/data/countries/TH.yaml +19 -16
  325. data/lib/countries/data/countries/TJ.yaml +23 -19
  326. data/lib/countries/data/countries/TK.yaml +19 -16
  327. data/lib/countries/data/countries/TL.yaml +21 -18
  328. data/lib/countries/data/countries/TM.yaml +21 -17
  329. data/lib/countries/data/countries/TN.yaml +24 -20
  330. data/lib/countries/data/countries/TO.yaml +19 -15
  331. data/lib/countries/data/countries/TR.yaml +21 -18
  332. data/lib/countries/data/countries/TT.yaml +21 -18
  333. data/lib/countries/data/countries/TV.yaml +17 -14
  334. data/lib/countries/data/countries/TW.yaml +18 -15
  335. data/lib/countries/data/countries/TZ.yaml +22 -18
  336. data/lib/countries/data/countries/UA.yaml +22 -19
  337. data/lib/countries/data/countries/UG.yaml +20 -16
  338. data/lib/countries/data/countries/UM.yaml +21 -18
  339. data/lib/countries/data/countries/US.yaml +21 -18
  340. data/lib/countries/data/countries/UY.yaml +17 -14
  341. data/lib/countries/data/countries/UZ.yaml +23 -19
  342. data/lib/countries/data/countries/VA.yaml +24 -20
  343. data/lib/countries/data/countries/VC.yaml +23 -20
  344. data/lib/countries/data/countries/VE.yaml +17 -14
  345. data/lib/countries/data/countries/VG.yaml +22 -19
  346. data/lib/countries/data/countries/VI.yaml +22 -19
  347. data/lib/countries/data/countries/VN.yaml +18 -15
  348. data/lib/countries/data/countries/VU.yaml +20 -15
  349. data/lib/countries/data/countries/WF.yaml +21 -18
  350. data/lib/countries/data/countries/WS.yaml +19 -15
  351. data/lib/countries/data/countries/YE.yaml +20 -17
  352. data/lib/countries/data/countries/YT.yaml +17 -14
  353. data/lib/countries/data/countries/ZA.yaml +31 -19
  354. data/lib/countries/data/countries/ZM.yaml +19 -16
  355. data/lib/countries/data/countries/ZW.yaml +22 -17
  356. data/lib/countries/data/subdivisions/AD.yaml +14 -7
  357. data/lib/countries/data/subdivisions/AE.yaml +20 -13
  358. data/lib/countries/data/subdivisions/AF.yaml +72 -34
  359. data/lib/countries/data/subdivisions/AG.yaml +16 -8
  360. data/lib/countries/data/subdivisions/AL.yaml +72 -36
  361. data/lib/countries/data/subdivisions/AM.yaml +115 -70
  362. data/lib/countries/data/subdivisions/AO.yaml +185 -131
  363. data/lib/countries/data/subdivisions/AR.yaml +241 -169
  364. data/lib/countries/data/subdivisions/AT.yaml +97 -70
  365. data/lib/countries/data/subdivisions/AU.yaml +80 -56
  366. data/lib/countries/data/subdivisions/AZ.yaml +771 -536
  367. data/lib/countries/data/subdivisions/BA.yaml +20 -14
  368. data/lib/countries/data/subdivisions/BB.yaml +110 -77
  369. data/lib/countries/data/subdivisions/BD.yaml +699 -457
  370. data/lib/countries/data/subdivisions/BE.yaml +121 -88
  371. data/lib/countries/data/subdivisions/BF.yaml +453 -314
  372. data/lib/countries/data/subdivisions/BG.yaml +281 -197
  373. data/lib/countries/data/subdivisions/BH.yaml +54 -35
  374. data/lib/countries/data/subdivisions/BI.yaml +164 -116
  375. data/lib/countries/data/subdivisions/BJ.yaml +122 -86
  376. data/lib/countries/data/subdivisions/BN.yaml +40 -24
  377. data/lib/countries/data/subdivisions/BO.yaml +90 -63
  378. data/lib/countries/data/subdivisions/BQ.yaml +30 -21
  379. data/lib/countries/data/subdivisions/BR.yaml +270 -185
  380. data/lib/countries/data/subdivisions/BS.yaml +211 -144
  381. data/lib/countries/data/subdivisions/BT.yaml +218 -158
  382. data/lib/countries/data/subdivisions/BW.yaml +91 -64
  383. data/lib/countries/data/subdivisions/BY.yaml +77 -38
  384. data/lib/countries/data/subdivisions/BZ.yaml +60 -42
  385. data/lib/countries/data/subdivisions/CA.yaml +143 -104
  386. data/lib/countries/data/subdivisions/CD.yaml +114 -81
  387. data/lib/countries/data/subdivisions/CF.yaml +177 -126
  388. data/lib/countries/data/subdivisions/CG.yaml +112 -79
  389. data/lib/countries/data/subdivisions/CH.yaml +282 -204
  390. data/lib/countries/data/subdivisions/CI.yaml +190 -123
  391. data/lib/countries/data/subdivisions/CL.yaml +156 -111
  392. data/lib/countries/data/subdivisions/CM.yaml +102 -72
  393. data/lib/countries/data/subdivisions/CN.yaml +348 -240
  394. data/lib/countries/data/subdivisions/CO.yaml +331 -228
  395. data/lib/countries/data/subdivisions/CR.yaml +70 -49
  396. data/lib/countries/data/subdivisions/CU.yaml +170 -115
  397. data/lib/countries/data/subdivisions/CV.yaml +171 -120
  398. data/lib/countries/data/subdivisions/CY.yaml +60 -42
  399. data/lib/countries/data/subdivisions/CZ.yaml +148 -106
  400. data/lib/countries/data/subdivisions/DE.yaml +172 -124
  401. data/lib/countries/data/subdivisions/DJ.yaml +65 -47
  402. data/lib/countries/data/subdivisions/DK.yaml +216 -145
  403. data/lib/countries/data/subdivisions/DM.yaml +100 -70
  404. data/lib/countries/data/subdivisions/DO.yaml +311 -218
  405. data/lib/countries/data/subdivisions/DZ.yaml +528 -380
  406. data/lib/countries/data/subdivisions/EC.yaml +240 -164
  407. data/lib/countries/data/subdivisions/EE.yaml +156 -111
  408. data/lib/countries/data/subdivisions/EG.yaml +298 -217
  409. data/lib/countries/data/subdivisions/EH.yaml +44 -32
  410. data/lib/countries/data/subdivisions/ER.yaml +60 -42
  411. data/lib/countries/data/subdivisions/ES.yaml +564 -383
  412. data/lib/countries/data/subdivisions/ET.yaml +112 -79
  413. data/lib/countries/data/subdivisions/FI.yaml +64 -24
  414. data/lib/countries/data/subdivisions/FJ.yaml +50 -35
  415. data/lib/countries/data/subdivisions/FM.yaml +43 -27
  416. data/lib/countries/data/subdivisions/FR.yaml +1021 -677
  417. data/lib/countries/data/subdivisions/GA.yaml +92 -65
  418. data/lib/countries/data/subdivisions/GB.yaml +2329 -1545
  419. data/lib/countries/data/subdivisions/GD.yaml +70 -49
  420. data/lib/countries/data/subdivisions/GE.yaml +128 -92
  421. data/lib/countries/data/subdivisions/GH.yaml +101 -71
  422. data/lib/countries/data/subdivisions/GM.yaml +64 -46
  423. data/lib/countries/data/subdivisions/GN.yaml +341 -235
  424. data/lib/countries/data/subdivisions/GQ.yaml +90 -59
  425. data/lib/countries/data/subdivisions/GR.yaml +555 -395
  426. data/lib/countries/data/subdivisions/GT.yaml +221 -151
  427. data/lib/countries/data/subdivisions/GW.yaml +91 -60
  428. data/lib/countries/data/subdivisions/GY.yaml +100 -70
  429. data/lib/countries/data/subdivisions/HN.yaml +180 -126
  430. data/lib/countries/data/subdivisions/HR.yaml +232 -169
  431. data/lib/countries/data/subdivisions/HT.yaml +92 -65
  432. data/lib/countries/data/subdivisions/HU.yaml +431 -302
  433. data/lib/countries/data/subdivisions/ID.yaml +333 -234
  434. data/lib/countries/data/subdivisions/IE.yaml +286 -200
  435. data/lib/countries/data/subdivisions/IL.yaml +65 -47
  436. data/lib/countries/data/subdivisions/IN.yaml +365 -257
  437. data/lib/countries/data/subdivisions/IQ.yaml +197 -143
  438. data/lib/countries/data/subdivisions/IR.yaml +326 -229
  439. data/lib/countries/data/subdivisions/IS.yaml +90 -59
  440. data/lib/countries/data/subdivisions/IT.yaml +1100 -770
  441. data/lib/countries/data/subdivisions/JM.yaml +140 -98
  442. data/lib/countries/data/subdivisions/JO.yaml +131 -59
  443. data/lib/countries/data/subdivisions/JP.yaml +493 -348
  444. data/lib/countries/data/subdivisions/KE.yaml +80 -40
  445. data/lib/countries/data/subdivisions/KG.yaml +86 -62
  446. data/lib/countries/data/subdivisions/KH.yaml +264 -170
  447. data/lib/countries/data/subdivisions/KI.yaml +31 -18
  448. data/lib/countries/data/subdivisions/KM.yaml +33 -24
  449. data/lib/countries/data/subdivisions/KN.yaml +140 -98
  450. data/lib/countries/data/subdivisions/KP.yaml +150 -90
  451. data/lib/countries/data/subdivisions/KR.yaml +174 -102
  452. data/lib/countries/data/subdivisions/KW.yaml +65 -47
  453. data/lib/countries/data/subdivisions/KZ.yaml +186 -135
  454. data/lib/countries/data/subdivisions/Ky.yaml +60 -42
  455. data/lib/countries/data/subdivisions/LA.yaml +195 -135
  456. data/lib/countries/data/subdivisions/LB.yaml +66 -28
  457. data/lib/countries/data/subdivisions/LI.yaml +111 -38
  458. data/lib/countries/data/subdivisions/LK.yaml +266 -191
  459. data/lib/countries/data/subdivisions/LR.yaml +151 -106
  460. data/lib/countries/data/subdivisions/LS.yaml +100 -70
  461. data/lib/countries/data/subdivisions/LT.yaml +106 -76
  462. data/lib/countries/data/subdivisions/LU.yaml +31 -18
  463. data/lib/countries/data/subdivisions/LV.yaml +331 -126
  464. data/lib/countries/data/subdivisions/LY.yaml +342 -226
  465. data/lib/countries/data/subdivisions/MA.yaml +630 -437
  466. data/lib/countries/data/subdivisions/MD.yaml +130 -71
  467. data/lib/countries/data/subdivisions/ME.yaml +212 -149
  468. data/lib/countries/data/subdivisions/MG.yaml +66 -48
  469. data/lib/countries/data/subdivisions/MH.yaml +263 -164
  470. data/lib/countries/data/subdivisions/MK.yaml +854 -599
  471. data/lib/countries/data/subdivisions/ML.yaml +90 -63
  472. data/lib/countries/data/subdivisions/MM.yaml +147 -105
  473. data/lib/countries/data/subdivisions/MN.yaml +235 -169
  474. data/lib/countries/data/subdivisions/MR.yaml +141 -102
  475. data/lib/countries/data/subdivisions/MT.yaml +694 -482
  476. data/lib/countries/data/subdivisions/MU.yaml +170 -115
  477. data/lib/countries/data/subdivisions/MV.yaml +231 -168
  478. data/lib/countries/data/subdivisions/MW.yaml +270 -189
  479. data/lib/countries/data/subdivisions/MX.yaml +320 -220
  480. data/lib/countries/data/subdivisions/MY.yaml +161 -113
  481. data/lib/countries/data/subdivisions/MZ.yaml +110 -77
  482. data/lib/countries/data/subdivisions/NA.yaml +141 -99
  483. data/lib/countries/data/subdivisions/NE.yaml +81 -57
  484. data/lib/countries/data/subdivisions/NG.yaml +373 -262
  485. data/lib/countries/data/subdivisions/NI.yaml +172 -121
  486. data/lib/countries/data/subdivisions/NL.yaml +122 -86
  487. data/lib/countries/data/subdivisions/NO.yaml +212 -133
  488. data/lib/countries/data/subdivisions/NP.yaml +140 -90
  489. data/lib/countries/data/subdivisions/NR.yaml +141 -99
  490. data/lib/countries/data/subdivisions/NZ.yaml +171 -120
  491. data/lib/countries/data/subdivisions/OM.yaml +95 -68
  492. data/lib/countries/data/subdivisions/PA.yaml +101 -67
  493. data/lib/countries/data/subdivisions/PE.yaml +264 -182
  494. data/lib/countries/data/subdivisions/PG.yaml +215 -155
  495. data/lib/countries/data/subdivisions/PH.yaml +855 -596
  496. data/lib/countries/data/subdivisions/PK.yaml +80 -56
  497. data/lib/countries/data/subdivisions/PL.yaml +182 -134
  498. data/lib/countries/data/subdivisions/PT.yaml +201 -141
  499. data/lib/countries/data/subdivisions/PW.yaml +162 -110
  500. data/lib/countries/data/subdivisions/PY.yaml +182 -128
  501. data/lib/countries/data/subdivisions/QA.yaml +109 -73
  502. data/lib/countries/data/subdivisions/RO.yaml +443 -317
  503. data/lib/countries/data/subdivisions/RS.yaml +301 -193
  504. data/lib/countries/data/subdivisions/RU.yaml +839 -732
  505. data/lib/countries/data/subdivisions/RW.yaml +50 -35
  506. data/lib/countries/data/subdivisions/SA.yaml +141 -102
  507. data/lib/countries/data/subdivisions/SB.yaml +104 -74
  508. data/lib/countries/data/subdivisions/SC.yaml +230 -161
  509. data/lib/countries/data/subdivisions/SD.yaml +287 -183
  510. data/lib/countries/data/subdivisions/SE.yaml +215 -152
  511. data/lib/countries/data/subdivisions/SG.yaml +50 -31
  512. data/lib/countries/data/subdivisions/SH.yaml +30 -21
  513. data/lib/countries/data/subdivisions/SI.yaml +1950 -1367
  514. data/lib/countries/data/subdivisions/SK.yaml +81 -57
  515. data/lib/countries/data/subdivisions/SL.yaml +40 -28
  516. data/lib/countries/data/subdivisions/SM.yaml +92 -65
  517. data/lib/countries/data/subdivisions/SN.yaml +110 -77
  518. data/lib/countries/data/subdivisions/SO.yaml +180 -126
  519. data/lib/countries/data/subdivisions/SR.yaml +100 -70
  520. data/lib/countries/data/subdivisions/ST.yaml +20 -14
  521. data/lib/countries/data/subdivisions/SV.yaml +140 -98
  522. data/lib/countries/data/subdivisions/SY.yaml +153 -99
  523. data/lib/countries/data/subdivisions/SZ.yaml +41 -29
  524. data/lib/countries/data/subdivisions/TD.yaml +180 -126
  525. data/lib/countries/data/subdivisions/TF.yaml +40 -18
  526. data/lib/countries/data/subdivisions/TG.yaml +50 -35
  527. data/lib/countries/data/subdivisions/TH.yaml +775 -544
  528. data/lib/countries/data/subdivisions/TL.yaml +135 -96
  529. data/lib/countries/data/subdivisions/TM.yaml +64 -46
  530. data/lib/countries/data/subdivisions/TN.yaml +263 -191
  531. data/lib/countries/data/subdivisions/TO.yaml +52 -37
  532. data/lib/countries/data/subdivisions/TR.yaml +842 -599
  533. data/lib/countries/data/subdivisions/TT.yaml +160 -112
  534. data/lib/countries/data/subdivisions/TV.yaml +82 -46
  535. data/lib/countries/data/subdivisions/TW.yaml +235 -150
  536. data/lib/countries/data/subdivisions/TZ.yaml +265 -187
  537. data/lib/countries/data/subdivisions/Tj.yaml +33 -24
  538. data/lib/countries/data/subdivisions/UA.yaml +299 -218
  539. data/lib/countries/data/subdivisions/UG.yaml +800 -544
  540. data/lib/countries/data/subdivisions/UM.yaml +90 -59
  541. data/lib/countries/data/subdivisions/US.yaml +601 -391
  542. data/lib/countries/data/subdivisions/UY.yaml +161 -113
  543. data/lib/countries/data/subdivisions/UZ.yaml +154 -112
  544. data/lib/countries/data/subdivisions/VC.yaml +60 -38
  545. data/lib/countries/data/subdivisions/VE.yaml +250 -175
  546. data/lib/countries/data/subdivisions/VN.yaml +641 -449
  547. data/lib/countries/data/subdivisions/VU.yaml +66 -48
  548. data/lib/countries/data/subdivisions/WS.yaml +110 -77
  549. data/lib/countries/data/subdivisions/YE.yaml +203 -142
  550. data/lib/countries/data/subdivisions/ZA.yaml +95 -68
  551. data/lib/countries/data/subdivisions/ZM.yaml +90 -63
  552. data/lib/countries/data/subdivisions/ZW.yaml +100 -70
  553. data/lib/countries/iso3166.rb +5 -2
  554. data/lib/countries/kwarg_struct.rb +12 -0
  555. data/lib/countries/structure.rb +63 -0
  556. data/lib/countries/subdivision.rb +9 -0
  557. data/lib/countries/version.rb +1 -1
  558. data/spec/configuration_spec.rb +4 -1
  559. data/spec/country_spec.rb +42 -2
  560. data/spec/data_spec.rb +83 -0
  561. data/spec/global_spec.rb +2 -2
  562. data/spec/perf_spec.rb +54 -0
  563. data/spec/spec_helper.rb +3 -15
  564. data/spec/timezone_spec.rb +2 -2
  565. metadata +115 -109
  566. data/lib/countries/cache/countries +0 -0
  567. data/lib/countries/cache/locales/af +0 -0
  568. data/lib/countries/cache/locales/am +0 -0
  569. data/lib/countries/cache/locales/ar +0 -0
  570. data/lib/countries/cache/locales/as +0 -0
  571. data/lib/countries/cache/locales/az +0 -0
  572. data/lib/countries/cache/locales/be +0 -0
  573. data/lib/countries/cache/locales/bg +0 -0
  574. data/lib/countries/cache/locales/bn +0 -0
  575. data/lib/countries/cache/locales/br +0 -0
  576. data/lib/countries/cache/locales/bs +0 -0
  577. data/lib/countries/cache/locales/ca +0 -0
  578. data/lib/countries/cache/locales/cs +0 -0
  579. data/lib/countries/cache/locales/cy +0 -0
  580. data/lib/countries/cache/locales/da +0 -0
  581. data/lib/countries/cache/locales/de +0 -0
  582. data/lib/countries/cache/locales/dz +0 -0
  583. data/lib/countries/cache/locales/el +0 -0
  584. data/lib/countries/cache/locales/en +0 -0
  585. data/lib/countries/cache/locales/eo +0 -0
  586. data/lib/countries/cache/locales/es +0 -0
  587. data/lib/countries/cache/locales/et +0 -0
  588. data/lib/countries/cache/locales/eu +0 -0
  589. data/lib/countries/cache/locales/fa +0 -0
  590. data/lib/countries/cache/locales/fi +0 -0
  591. data/lib/countries/cache/locales/fo +0 -0
  592. data/lib/countries/cache/locales/fr +0 -0
  593. data/lib/countries/cache/locales/ga +0 -0
  594. data/lib/countries/cache/locales/gl +0 -0
  595. data/lib/countries/cache/locales/gu +0 -0
  596. data/lib/countries/cache/locales/he +0 -0
  597. data/lib/countries/cache/locales/hi +0 -0
  598. data/lib/countries/cache/locales/hr +0 -0
  599. data/lib/countries/cache/locales/hu +0 -0
  600. data/lib/countries/cache/locales/hy +0 -0
  601. data/lib/countries/cache/locales/ia +0 -0
  602. data/lib/countries/cache/locales/id +0 -0
  603. data/lib/countries/cache/locales/is +0 -0
  604. data/lib/countries/cache/locales/it +0 -0
  605. data/lib/countries/cache/locales/ja +0 -0
  606. data/lib/countries/cache/locales/ka +0 -0
  607. data/lib/countries/cache/locales/kk +0 -0
  608. data/lib/countries/cache/locales/km +0 -0
  609. data/lib/countries/cache/locales/kn +0 -0
  610. data/lib/countries/cache/locales/ko +0 -0
  611. data/lib/countries/cache/locales/ku +0 -0
  612. data/lib/countries/cache/locales/lt +0 -0
  613. data/lib/countries/cache/locales/lv +0 -0
  614. data/lib/countries/cache/locales/mi +0 -0
  615. data/lib/countries/cache/locales/mk +0 -0
  616. data/lib/countries/cache/locales/ml +0 -0
  617. data/lib/countries/cache/locales/mn +0 -0
  618. data/lib/countries/cache/locales/mr +0 -0
  619. data/lib/countries/cache/locales/ms +0 -0
  620. data/lib/countries/cache/locales/mt +0 -0
  621. data/lib/countries/cache/locales/nb +0 -0
  622. data/lib/countries/cache/locales/ne +0 -0
  623. data/lib/countries/cache/locales/nl +0 -0
  624. data/lib/countries/cache/locales/nn +0 -0
  625. data/lib/countries/cache/locales/oc +0 -0
  626. data/lib/countries/cache/locales/or +0 -0
  627. data/lib/countries/cache/locales/pa +0 -0
  628. data/lib/countries/cache/locales/pl +0 -0
  629. data/lib/countries/cache/locales/ps +0 -0
  630. data/lib/countries/cache/locales/pt +0 -0
  631. data/lib/countries/cache/locales/ro +0 -0
  632. data/lib/countries/cache/locales/ru +0 -0
  633. data/lib/countries/cache/locales/rw +0 -0
  634. data/lib/countries/cache/locales/si +0 -0
  635. data/lib/countries/cache/locales/sk +0 -0
  636. data/lib/countries/cache/locales/sl +0 -0
  637. data/lib/countries/cache/locales/so +0 -0
  638. data/lib/countries/cache/locales/sq +0 -0
  639. data/lib/countries/cache/locales/sr +0 -0
  640. data/lib/countries/cache/locales/sv +0 -0
  641. data/lib/countries/cache/locales/sw +0 -0
  642. data/lib/countries/cache/locales/ta +0 -0
  643. data/lib/countries/cache/locales/te +0 -0
  644. data/lib/countries/cache/locales/th +0 -0
  645. data/lib/countries/cache/locales/ti +0 -0
  646. data/lib/countries/cache/locales/tk +0 -0
  647. data/lib/countries/cache/locales/tl +0 -0
  648. data/lib/countries/cache/locales/tr +0 -0
  649. data/lib/countries/cache/locales/tt +0 -0
  650. data/lib/countries/cache/locales/ug +0 -0
  651. data/lib/countries/cache/locales/uk +0 -0
  652. data/lib/countries/cache/locales/ve +0 -0
  653. data/lib/countries/cache/locales/vi +0 -0
  654. data/lib/countries/cache/locales/wa +0 -0
  655. data/lib/countries/cache/locales/wo +0 -0
  656. data/lib/countries/cache/locales/xh +0 -0
  657. data/lib/countries/cache/locales/zh +0 -0
  658. data/lib/countries/cache/locales/zu +0 -0
  659. data/lib/countries/country/attr_readers.rb +0 -49
  660. data/lib/countries/data/countries.yaml +0 -251
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 37219d090737e0e00f5982e5655fa06622205589
4
- data.tar.gz: 07ee78ed6cb32591e38db8d459bd014f5b5ca24c
3
+ metadata.gz: 0b689d67277b1896cc6810ad8782f6f1584965ca
4
+ data.tar.gz: 49813c4c5797c0449c3adbeeef9b872288d3a387
5
5
  SHA512:
6
- metadata.gz: fd08605ecead0f13f013d6158a80e8290d6f9012aa38b7c97eaa3718769aaa344897fe5bfd6cd585d07f838c2722fdd9db6cbaa5c3a437eb7042b82056653277
7
- data.tar.gz: 1f0a831b563b757f17e547e3f5f3b3ed125b479fad07d2dae412e033bbce731d3520c8678e25c1e0d9e2139ad4091a06bc25350e8a8519736e8c8411c66c8a79
6
+ metadata.gz: 989a54adf89519d22899fec6d74fc0ba7296fee1c8797676a88095aee3fd6132f2edd9355e23733d5127f9fbf9320033950d4e6706e13f9e02b32d17a3c3bef7
7
+ data.tar.gz: 33fe7849f6b2d03e358a56e1228d1b43282d3e87cd6bfc273526f4dd308bdb8b3acb7c35aef115930551c5f619243e894ad6ce0917a2ef53d5eb2ec7fea21499
data/.travis.yml CHANGED
@@ -6,6 +6,9 @@ rvm:
6
6
  - 2.0.0
7
7
  - 2.2.3
8
8
  - ruby-head
9
+ before_install:
10
+ - gem update --system
11
+ - gem install bundler --pre
9
12
  matrix:
10
13
  allow_failures:
11
14
  - rvm: ruby-head
data/CHANGELOG.md CHANGED
@@ -11,6 +11,15 @@ This project adheres to [Semantic Versioning](http://semver.org/).
11
11
  - Add Configuration methods to force locales to load
12
12
  - Dropped currencies gem in favor of money
13
13
  - Add Time Zone Support
14
+ - DATA STRUCTURE CHANGES
15
+ -COUNTRY
16
+ - BREAKING CHANGES
17
+ - names: => unofficial_names
18
+ - languages: => official_languages
19
+ - lat/lng fields are nested under a "geo" key
20
+ - + spoken_languages
21
+ - +
22
+
14
23
 
15
24
  ## 1.2.5 @ 2016-01-22
16
25
  - Rebuilding cache
data/README.markdown CHANGED
@@ -4,16 +4,19 @@ Countries
4
4
  Countries is a collection of all sorts of useful information for every country in the ISO 3166 standard. It contains info for the following standards ISO3166-1(countries), ISO3166-2(states/subdivisions), ISO4217(currency) and E.164(phone numbers). I will add any country based data I can get access to. I hope this to be a repository for all country based information.
5
5
 
6
6
  [![Gem Version](https://badge.fury.io/rb/countries.svg)](https://badge.fury.io/rb/countries)
7
- [![Build Status](https://travis-ci.org/hexorx/countries.svg)](https://travis-ci.org/hexorx/countries) [![Dependency Status](https://gemnasium.com/hexorx/countries.svg)](https://gemnasium.com/hexorx/countries) [![Code Climate](https://codeclimate.com/github/hexorx/countries.svg)](https://codeclimate.com/github/hexorx/countries)
8
-
7
+ [![Build Status](https://travis-ci.org/hexorx/countries.svg)](https://travis-ci.org/hexorx/countries) [![Dependency Status](https://gemnasium.com/hexorx/countries.svg)](https://gemnasium.com/hexorx/countries) [![Code Climate](https://codeclimate.com/github/hexorx/countries.svg)](https://codeclimate.com/github/hexorx/countries)[![Test Coverage](https://codeclimate.com/github/hexorx/countries/badges/coverage.svg)](https://codeclimate.com/github/hexorx/countries/coverage)
9
8
  Installation
10
9
  ------------
11
10
 
11
+ ``` bash
12
12
  gem install countries
13
+ ```
13
14
 
14
15
  If you’re in Rails 2.3 or earlier, place this in your environment.rb:
15
16
 
17
+ ``` ruby
16
18
  config.gem 'countries'
19
+ ```
17
20
 
18
21
  Or you can install via bundler Gemfile if you are using Rails 3:
19
22
 
@@ -38,10 +41,12 @@ Basic Usage
38
41
 
39
42
  Simply load a new country object using Country.new(*alpha2*) or the shortcut Country[*alpha2*]. An example works best.
40
43
 
41
- c = ISO3166::Country.new('US')
44
+ ``` ruby
45
+ c = ISO3166::Country.new('US')
42
46
 
43
- # with global Country Helper
44
- c = Country['US']
47
+ # with global Country Helper
48
+ c = Country['US']
49
+ ```
45
50
 
46
51
  Configuration
47
52
 
@@ -51,27 +56,32 @@ By default we load I18n.available_locales if I18n is present, otherwise only [:e
51
56
 
52
57
  You can add all the locales like this.
53
58
 
54
- ISO3166.configure do |config|
55
- config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
56
- end
59
+ ``` ruby
60
+ ISO3166.configure do |config|
61
+ config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
62
+ end
63
+ ```
57
64
 
58
65
  or something a bit more simple
59
-
60
- ISO3166.configure do |config|
61
- config.locales = [:en, :de, :fr, :es]
62
- end
66
+ ``` ruby
67
+ ISO3166.configure do |config|
68
+ config.locales = [:en, :de, :fr, :es]
69
+ end
70
+ ```
63
71
 
64
72
  Attribute-Based Finder Methods
65
73
  ------------
66
74
 
67
75
  You can lookup a country or an array of countries using any of the data attributes via the find\_country\_by_*attribute* dynamic methods:
68
76
 
69
- c = ISO3166::Country.find_country_by_name('united states')
70
- list = ISO3166::Country.find_all_countries_by_region('Americas')
71
- c = ISO3166::Country.find_country_by_alpha3('can')
77
+ ``` ruby
78
+ c = ISO3166::Country.find_country_by_name('united states')
79
+ list = ISO3166::Country.find_all_countries_by_region('Americas')
80
+ c = ISO3166::Country.find_country_by_alpha3('can')
81
+ ```
72
82
 
73
- For a list of available attributes please see ISO3166::Country::AttrReaders.
74
- Note: searches are *case insensitive*.
83
+ For a list of available attributes please see ISO3166::DEFAULT_COUNTRY_HASH.
84
+ Note: searches are *case insensitive and ignore accents*.
75
85
 
76
86
  Country Info
77
87
  ------------
@@ -86,7 +96,7 @@ Country Info
86
96
  Names & Translations
87
97
 
88
98
  c.name #=> "United States"
89
- c.names #=> ["United States of America", "Vereinigte Staaten von Amerika", "États-Unis", "Estados Unidos"]
99
+ c.unofficial_names #=> ["United States of America", "Vereinigte Staaten von Amerika", "États-Unis", "Estados Unidos"]
90
100
 
91
101
  # Get the names for a country translated to its local languages
92
102
  c = Country[:BE]
@@ -104,64 +114,97 @@ Country Info
104
114
 
105
115
  Subdivisions & States
106
116
 
107
- c.subdivisions #=> {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
108
- c.states #=> {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
109
-
117
+ ``` ruby
118
+ c.subdivisions #=> {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
119
+ c.states #=> {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
120
+ ```
110
121
  Location
111
122
 
112
- c.latitude #=> "38 00 N"
113
- c.longitude #=> "97 00 W"
114
- c.latitude_dec #=> 39.44325637817383
115
- c.longitude_dec #=> -98.95733642578125
123
+ ``` ruby
124
+ c.latitude #=> "38 00 N"
125
+ c.longitude #=> "97 00 W"
126
+ c.latitude_dec #=> 39.44325637817383
127
+ c.longitude_dec #=> -98.95733642578125
116
128
 
117
- c.region #=> "Americas"
118
- c.subregion #=> "Northern America"
129
+ c.region #=> "Americas"
130
+ c.subregion #=> "Northern America"
131
+ ```
119
132
 
120
- Timezones **(optional)**
133
+ Timezones **(optional)**
121
134
 
122
- Add tzinfo to your gemfile, ensure it's required, Countries will not do this for you.
135
+ Add tzinfo to your gemfile, ensure it's required, Countries will not do this for you.
123
136
 
124
137
  gem 'tzinfo', '~> 1.2', '>= 1.2.2'
125
138
 
126
- c.timezones.zone_identifiers #=> ["America/New_York", "America/Detroit", "America/Kentucky/Louisville", ...]
127
- ```c.timezones.zone_info``` # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/CountryInfo)
139
+ ``` ruby
140
+ c.timezones.zone_identifiers #=> ["America/New_York", "America/Detroit", "America/Kentucky/Louisville", ...]
141
+ c.timezones.zone_info # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/CountryInfo)
142
+ c.timezones # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
143
+ ```
128
144
 
129
- ```c.timezones``` # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
145
+ Telephone Routing (E164)
130
146
 
131
- Telephone Routing (E164)
147
+ ``` ruby
148
+ c.country_code #=> "1"
149
+ c.national_destination_code_lengths #=> 3
150
+ c.national_number_lengths #=> 10
151
+ c.international_prefix #=> "011"
152
+ c.national_prefix #=> "1"
153
+ ```
132
154
 
133
- c.country_code #=> "1"
134
- c.national_destination_code_lengths #=> 3
135
- c.national_number_lengths #=> 10
136
- c.international_prefix #=> "011"
137
- c.national_prefix #=> "1"
155
+ Boundry Boxes
138
156
 
139
- Boundry Boxes
140
-
141
- c.min_longitude #=> '45'
142
- c.min_latitude #=> '22.166667'
143
- c.max_longitude #=> '58'
144
- c.max_latitude #=> '26.133333'
157
+ ``` ruby
158
+ c.min_longitude #=> '45'
159
+ c.min_latitude #=> '22.166667'
160
+ c.max_longitude #=> '58'
161
+ c.max_latitude #=> '26.133333'
162
+ ```
145
163
 
146
164
  European Union Membership
147
165
 
148
- c.in_eu? #=> false
166
+ ``` ruby
167
+ c.in_eu? #=> false
168
+ ```
149
169
 
150
170
  Currencies
151
171
  ----------
152
172
 
153
173
  Countries now uses the [Money](https://github.com/RubyMoney/money) gem. What this means is you now get back a Money::Currency object that gives you access to all the currency information.
154
174
 
155
- c.currency.iso_code #=> 'USD'
156
- c.currency.name #=> 'Dollars'
157
- c.currency.symbol #=> '$'
175
+ ``` ruby
176
+ c.currency.iso_code #=> 'USD'
177
+ c.currency.name #=> 'Dollars'
178
+ c.currency.symbol #=> '$'
179
+ ```
158
180
 
159
181
  Address Formatting
160
182
  ------------------
161
183
 
162
184
  A template for formatting addresses is available through the address_format method. These templates are compatible with the [Liquid][] template system.
163
185
 
164
- c.address_format #=> "{{recipient}}\n{{street}}\n{{city}} {{region}} {{postalcode}}\n{{country}}"
186
+ ``` ruby
187
+ c.address_format #=> "{{recipient}}\n{{street}}\n{{city}} {{region}} {{postalcode}}\n{{country}}"
188
+ ```
189
+
190
+ Loading Custom Data
191
+ -------
192
+ As of 2.0 countries supports loading custom countries / overriding data in it's data set, though if you choose to do this please contribute back to the upstream repo!
193
+
194
+ Any country registered this way will have it's data available for searching etc... If you are overriding an existing country, for cultural reasons, our code uses a simple merge, not a deep merge so you will need to __bring in all data you wish to be available__. Bringing in an existing country will also remove it from the internal management of translations, __all registered countries will remain in memory__.
195
+
196
+ ``` ruby
197
+ ISO3166::Data.register(
198
+ alpha2: "LOL",
199
+ name: 'Happy Country'
200
+ translations: {
201
+ 'EN' => "Happy Country",
202
+ 'DE' => "glückliches Land"
203
+ }
204
+ )
205
+
206
+ ISO3166::Country.new('LOL').name = 'Happy Country'
207
+ ```
165
208
 
166
209
  Mongoid
167
210
  -------
@@ -176,41 +219,36 @@ Adds native support for searching/saving by a country object or alpha2 code.
176
219
 
177
220
  Searching:
178
221
 
179
- # By alpha2
180
- british_things = Things.where(country: 'GB')
181
- british_things.first.country.name # => "United Kingdom"
182
-
183
- # By object
184
- british_things = Things.where(country: Country.find_by_name('United Kingdom')[1])
185
- british_things.first.country.name # => "United Kingdom"
222
+ ```ruby
223
+ # By alpha2
224
+ british_things = Things.where(country: 'GB')
225
+ british_things.first.country.name # => "United Kingdom"
186
226
 
227
+ # By object
228
+ british_things = Things.where(country: Country.find_by_name('United Kingdom')[1])
229
+ british_things.first.country.name # => "United Kingdom"
230
+ ```
187
231
  Saving:
188
232
 
189
- # By alpha2
190
- british_thing = Thing.new(country: 'GB')
191
- british_thing.save!
192
- british_thing.country.name # => "United Kingdom"
233
+ ```ruby
234
+ # By alpha2
235
+ british_thing = Thing.new(country: 'GB')
236
+ british_thing.save!
237
+ british_thing.country.name # => "United Kingdom"
193
238
 
194
- # By object
195
- british_thing = Thing.new(country: Country.find_by_name('United Kingdom')[1])
196
- british_thing.save!
197
- british_thing.country.name # => "United Kingdom"
239
+ # By object
240
+ british_thing = Thing.new(country: Country.find_by_name('United Kingdom')[1])
241
+ british_thing.save!
242
+ british_thing.country.name # => "United Kingdom"
243
+ ```
198
244
 
199
245
  Note that the database stores only the alpha2 code and rebuilds the object when queried. To return the country name by default you can override the reader method in your model:
200
246
 
201
- def country
202
- super.name
203
- end
204
-
205
- ToDo
206
- ----
207
-
208
- * State select
209
- * Class methods for looking up information
210
- * Default country
211
- * Exclude countries
212
- * Preferred countries
213
- * Whitelist countries
247
+ ``` ruby
248
+ def country
249
+ super.name
250
+ end
251
+ ```
214
252
 
215
253
  Note on Patches/Pull Requests
216
254
  -----------------------------
@@ -235,7 +273,7 @@ the next ```rake update_cache```
235
273
  Copyright
236
274
  ---------
237
275
 
238
- Copyright (c) 2015 hexorx. See LICENSE for details.
276
+ Copyright (c) 2016 hexorx. See LICENSE for details.
239
277
 
240
278
 
241
279
  [Teliax]: http://teliax.com
data/Rakefile CHANGED
@@ -11,16 +11,37 @@ end
11
11
 
12
12
  task default: [:spec]
13
13
 
14
- desc 'Test and Clean YAML files'
15
- task :clean_yaml do
14
+ task :update_yaml_structure do
16
15
  require 'yaml'
17
16
 
18
- d = Dir['**/*.yaml']
17
+ require 'pry'
18
+
19
+ d = Dir['lib/countries/data/subdivisions/*.yaml']
19
20
  d.each do |file|
20
- begin
21
- puts "checking : #{file}"
22
- data = YAML.load_file(file)
21
+
22
+ puts "checking : #{file}"
23
+ data = YAML.load_file(file)
24
+ country_key = File.basename(file, ".yaml")
25
+
26
+
27
+ data = data.inject({}) do |a, (k,subd)|
28
+ a[k] ||= {}
29
+ a[k]["unofficial_names"] = subd.delete("names")
30
+ a[k]["translations"] = {'en' => subd['name']}
31
+ a[k]["geo"] = {
32
+ "latitude" => subd.delete("latitude"),
33
+ "longitude" => subd.delete("longitude"),
34
+ "min_latitude" => subd.delete("min_latitude"),
35
+ "min_longitude" => subd.delete("min_longitude"),
36
+ "max_latitude" => subd.delete("max_latitude"),
37
+ "max_longitude" => subd.delete("max_longitude")
38
+ }
39
+
40
+ a[k] = a[k].merge(subd)
41
+ a
42
+ end
23
43
  File.open(file, 'w') { |f| f.write data.to_yaml }
44
+ begin
24
45
  rescue
25
46
  puts "failed to read #{file}: #{$ERROR_INFO}"
26
47
  end
@@ -32,7 +53,7 @@ task :update_cache do
32
53
  require 'yaml'
33
54
  require 'i18n_data'
34
55
 
35
- codes = YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'countries.yaml')) || {}
56
+ codes = Dir['lib/countries/data/countries/*.yaml'].map {|x| File.basename(x, File.extname(x))}.uniq
36
57
  data = {}
37
58
  empty_translations_hash = {}
38
59
  corrections = YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'translation_corrections.yaml')) || {}
@@ -52,14 +73,14 @@ task :update_cache do
52
73
  end
53
74
  end
54
75
 
55
- File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', locale), 'wb') { |f| f.write(Marshal.dump(local_names)) }
76
+ File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', "#{locale}.json"), 'wb') { |f| f.write(local_names.to_json) }
56
77
  end
57
78
 
58
79
  codes.each do |alpha2|
59
80
  data[alpha2] ||= YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml"))[alpha2]
60
81
  end
61
82
 
62
- File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries'), 'wb') { |f| f.write(Marshal.dump(data)) }
83
+ File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries.json'), 'wb') { |f| f.write(data.to_json) }
63
84
  end
64
85
 
65
86
  require 'geocoder'
@@ -97,16 +118,16 @@ task :fetch_subdivisions do
97
118
  next unless (result = geocode(location))
98
119
  geometry = result.geometry
99
120
  if geometry['location']
100
- state_data[code]['latitude'] = geometry['location']['lat']
101
- state_data[code]['longitude'] = geometry['location']['lng']
121
+ state_data[code]['geo']['latitude'] = geometry['location']['lat']
122
+ state_data[code]['geo']['longitude'] = geometry['location']['lng']
102
123
  end
103
124
  next unless geometry['bounds']
104
- state_data[code]['min_latitude'] = geometry['bounds']['southwest']['lat']
105
- state_data[code]['min_longitude'] = geometry['bounds']['southwest']['lng']
106
- state_data[code]['max_latitude'] = geometry['bounds']['northeast']['lat']
107
- state_data[code]['max_longitude'] = geometry['bounds']['northeast']['lng']
125
+ state_data[code]['geo']['min_latitude'] = geometry['bounds']['southwest']['lat']
126
+ state_data[code]['geo']['min_longitude'] = geometry['bounds']['southwest']['lng']
127
+ state_data[code]['geo']['max_latitude'] = geometry['bounds']['northeast']['lat']
128
+ state_data[code]['geo']['max_longitude'] = geometry['bounds']['northeast']['lng']
108
129
  end
109
130
  # Write updated YAML for current country
110
- File.open(File.join(File.dirname(__FILE__), 'lib', 'data', 'subdivisions', "#{c.alpha2}.yaml"), 'w+') { |f| f.write state_data.to_yaml }
131
+ File.open(File.join(File.dirname(__FILE__), 'lib','countries', 'data', 'subdivisions', "#{c.alpha2}.yaml"), 'w+') { |f| f.write state_data.to_yaml }
111
132
  end
112
133
  end
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "countries"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/countries.gemspec CHANGED
@@ -17,7 +17,8 @@ Gem::Specification.new do |gem|
17
17
 
18
18
  gem.add_dependency('i18n_data', '~> 0.7.0')
19
19
  gem.add_dependency('money', '~> 6.0')
20
+ gem.add_dependency('unicode_utils', '~> 1.4')
20
21
  gem.add_development_dependency('rspec', '>= 3')
21
- gem.add_development_dependency('actionview', '>= 3')
22
- gem.add_development_dependency 'yard'
22
+ gem.add_development_dependency('activesupport', '>= 3')
23
+
23
24
  end