countries 3.0.1 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/codeql-analysis.yml +70 -0
  3. data/.github/workflows/tests.yml +35 -0
  4. data/.gitignore +1 -0
  5. data/.rubocop.yml +40 -1
  6. data/.rubocop_todo.yml +8 -41
  7. data/CHANGELOG.md +218 -2
  8. data/Gemfile +9 -2
  9. data/LICENSE +3 -1
  10. data/README.markdown +120 -79
  11. data/Rakefile +21 -43
  12. data/bin/console +1 -0
  13. data/countries.gemspec +15 -8
  14. data/lib/countries/cache/countries.json +1 -1
  15. data/lib/countries/cache/locales/ab.json +1 -1
  16. data/lib/countries/cache/locales/af.json +1 -1
  17. data/lib/countries/cache/locales/ak.json +1 -1
  18. data/lib/countries/cache/locales/am.json +1 -1
  19. data/lib/countries/cache/locales/an.json +1 -1
  20. data/lib/countries/cache/locales/ar.json +1 -1
  21. data/lib/countries/cache/locales/as.json +1 -1
  22. data/lib/countries/cache/locales/ay.json +1 -1
  23. data/lib/countries/cache/locales/az.json +1 -1
  24. data/lib/countries/cache/locales/ba.json +1 -1
  25. data/lib/countries/cache/locales/be.json +1 -1
  26. data/lib/countries/cache/locales/bg.json +1 -1
  27. data/lib/countries/cache/locales/bi.json +1 -1
  28. data/lib/countries/cache/locales/bn-in.json +1 -1
  29. data/lib/countries/cache/locales/bn.json +1 -1
  30. data/lib/countries/cache/locales/br.json +1 -1
  31. data/lib/countries/cache/locales/bs.json +1 -1
  32. data/lib/countries/cache/locales/ca.json +1 -1
  33. data/lib/countries/cache/locales/ce.json +1 -1
  34. data/lib/countries/cache/locales/ch.json +1 -1
  35. data/lib/countries/cache/locales/cs.json +1 -1
  36. data/lib/countries/cache/locales/cv.json +1 -1
  37. data/lib/countries/cache/locales/cy.json +1 -1
  38. data/lib/countries/cache/locales/da.json +1 -1
  39. data/lib/countries/cache/locales/de.json +1 -1
  40. data/lib/countries/cache/locales/dv.json +1 -1
  41. data/lib/countries/cache/locales/dz.json +1 -1
  42. data/lib/countries/cache/locales/ee.json +1 -1
  43. data/lib/countries/cache/locales/el.json +1 -1
  44. data/lib/countries/cache/locales/en.json +1 -1
  45. data/lib/countries/cache/locales/eo.json +1 -1
  46. data/lib/countries/cache/locales/es.json +1 -1
  47. data/lib/countries/cache/locales/et.json +1 -1
  48. data/lib/countries/cache/locales/eu.json +1 -1
  49. data/lib/countries/cache/locales/fa.json +1 -1
  50. data/lib/countries/cache/locales/ff.json +1 -1
  51. data/lib/countries/cache/locales/fi.json +1 -1
  52. data/lib/countries/cache/locales/fo.json +1 -1
  53. data/lib/countries/cache/locales/fr.json +1 -1
  54. data/lib/countries/cache/locales/fy.json +1 -1
  55. data/lib/countries/cache/locales/ga.json +1 -1
  56. data/lib/countries/cache/locales/gl.json +1 -1
  57. data/lib/countries/cache/locales/gn.json +1 -1
  58. data/lib/countries/cache/locales/gu.json +1 -1
  59. data/lib/countries/cache/locales/gv.json +1 -1
  60. data/lib/countries/cache/locales/ha.json +1 -1
  61. data/lib/countries/cache/locales/he.json +1 -1
  62. data/lib/countries/cache/locales/hi.json +1 -1
  63. data/lib/countries/cache/locales/hr.json +1 -1
  64. data/lib/countries/cache/locales/ht.json +1 -1
  65. data/lib/countries/cache/locales/hu.json +1 -1
  66. data/lib/countries/cache/locales/hy.json +1 -1
  67. data/lib/countries/cache/locales/ia.json +1 -1
  68. data/lib/countries/cache/locales/id.json +1 -1
  69. data/lib/countries/cache/locales/io.json +1 -1
  70. data/lib/countries/cache/locales/is.json +1 -1
  71. data/lib/countries/cache/locales/it.json +1 -1
  72. data/lib/countries/cache/locales/iu.json +1 -1
  73. data/lib/countries/cache/locales/ja.json +1 -1
  74. data/lib/countries/cache/locales/ka.json +1 -1
  75. data/lib/countries/cache/locales/ki.json +1 -1
  76. data/lib/countries/cache/locales/kk.json +1 -1
  77. data/lib/countries/cache/locales/kl.json +1 -1
  78. data/lib/countries/cache/locales/km.json +1 -1
  79. data/lib/countries/cache/locales/kn.json +1 -1
  80. data/lib/countries/cache/locales/ko.json +1 -1
  81. data/lib/countries/cache/locales/ku.json +1 -1
  82. data/lib/countries/cache/locales/kv.json +1 -1
  83. data/lib/countries/cache/locales/kw.json +1 -1
  84. data/lib/countries/cache/locales/ky.json +1 -1
  85. data/lib/countries/cache/locales/lo.json +1 -1
  86. data/lib/countries/cache/locales/lt.json +1 -1
  87. data/lib/countries/cache/locales/lv.json +1 -1
  88. data/lib/countries/cache/locales/mi.json +1 -1
  89. data/lib/countries/cache/locales/mk.json +1 -1
  90. data/lib/countries/cache/locales/ml.json +1 -1
  91. data/lib/countries/cache/locales/mn.json +1 -1
  92. data/lib/countries/cache/locales/mr.json +1 -1
  93. data/lib/countries/cache/locales/ms.json +1 -1
  94. data/lib/countries/cache/locales/mt.json +1 -1
  95. data/lib/countries/cache/locales/my.json +1 -1
  96. data/lib/countries/cache/locales/na.json +1 -1
  97. data/lib/countries/cache/locales/nb.json +1 -1
  98. data/lib/countries/cache/locales/ne.json +1 -1
  99. data/lib/countries/cache/locales/nl.json +1 -1
  100. data/lib/countries/cache/locales/nn.json +1 -1
  101. data/lib/countries/cache/locales/nv.json +1 -1
  102. data/lib/countries/cache/locales/oc.json +1 -1
  103. data/lib/countries/cache/locales/or.json +1 -1
  104. data/lib/countries/cache/locales/pa.json +1 -1
  105. data/lib/countries/cache/locales/pi.json +1 -1
  106. data/lib/countries/cache/locales/pl.json +1 -1
  107. data/lib/countries/cache/locales/ps.json +1 -1
  108. data/lib/countries/cache/locales/pt-br.json +1 -1
  109. data/lib/countries/cache/locales/pt.json +1 -1
  110. data/lib/countries/cache/locales/ro.json +1 -1
  111. data/lib/countries/cache/locales/ru.json +1 -1
  112. data/lib/countries/cache/locales/rw.json +1 -1
  113. data/lib/countries/cache/locales/sc.json +1 -1
  114. data/lib/countries/cache/locales/sd.json +1 -1
  115. data/lib/countries/cache/locales/si.json +1 -1
  116. data/lib/countries/cache/locales/sk.json +1 -1
  117. data/lib/countries/cache/locales/sl.json +1 -1
  118. data/lib/countries/cache/locales/so.json +1 -1
  119. data/lib/countries/cache/locales/sq.json +1 -1
  120. data/lib/countries/cache/locales/sr.json +1 -1
  121. data/lib/countries/cache/locales/sv.json +1 -1
  122. data/lib/countries/cache/locales/sw.json +1 -1
  123. data/lib/countries/cache/locales/ta.json +1 -1
  124. data/lib/countries/cache/locales/te.json +1 -1
  125. data/lib/countries/cache/locales/tg.json +1 -1
  126. data/lib/countries/cache/locales/th.json +1 -1
  127. data/lib/countries/cache/locales/ti.json +1 -1
  128. data/lib/countries/cache/locales/tk.json +1 -1
  129. data/lib/countries/cache/locales/tl.json +1 -1
  130. data/lib/countries/cache/locales/tr.json +1 -1
  131. data/lib/countries/cache/locales/tt.json +1 -1
  132. data/lib/countries/cache/locales/ug.json +1 -1
  133. data/lib/countries/cache/locales/uk.json +1 -1
  134. data/lib/countries/cache/locales/ur.json +1 -1
  135. data/lib/countries/cache/locales/uz.json +1 -1
  136. data/lib/countries/cache/locales/ve.json +1 -1
  137. data/lib/countries/cache/locales/vi.json +1 -1
  138. data/lib/countries/cache/locales/wa.json +1 -1
  139. data/lib/countries/cache/locales/wo.json +1 -1
  140. data/lib/countries/cache/locales/xh.json +1 -1
  141. data/lib/countries/cache/locales/yo.json +1 -1
  142. data/lib/countries/cache/locales/zh-cn.json +1 -1
  143. data/lib/countries/cache/locales/zh-hk.json +1 -1
  144. data/lib/countries/cache/locales/zh-tw.json +1 -1
  145. data/lib/countries/cache/locales/zh.json +1 -1
  146. data/lib/countries/cache/locales/zu.json +1 -1
  147. data/lib/countries/configuration.rb +15 -0
  148. data/lib/countries/country/class_methods.rb +25 -83
  149. data/lib/countries/country/currency_methods.rb +6 -1
  150. data/lib/countries/country/emoji.rb +5 -3
  151. data/lib/countries/country/finder_methods.rb +81 -0
  152. data/lib/countries/country.rb +115 -7
  153. data/lib/countries/data/countries/AD.yaml +28 -28
  154. data/lib/countries/data/countries/AE.yaml +32 -33
  155. data/lib/countries/data/countries/AF.yaml +32 -32
  156. data/lib/countries/data/countries/AG.yaml +29 -30
  157. data/lib/countries/data/countries/AI.yaml +27 -27
  158. data/lib/countries/data/countries/AL.yaml +29 -29
  159. data/lib/countries/data/countries/AM.yaml +30 -30
  160. data/lib/countries/data/countries/AO.yaml +27 -28
  161. data/lib/countries/data/countries/AQ.yaml +26 -27
  162. data/lib/countries/data/countries/AR.yaml +30 -30
  163. data/lib/countries/data/countries/AS.yaml +31 -31
  164. data/lib/countries/data/countries/AT.yaml +36 -36
  165. data/lib/countries/data/countries/AU.yaml +33 -33
  166. data/lib/countries/data/countries/AW.yaml +25 -26
  167. data/lib/countries/data/countries/AX.yaml +27 -27
  168. data/lib/countries/data/countries/AZ.yaml +30 -30
  169. data/lib/countries/data/countries/BA.yaml +32 -32
  170. data/lib/countries/data/countries/BB.yaml +28 -28
  171. data/lib/countries/data/countries/BD.yaml +28 -28
  172. data/lib/countries/data/countries/BE.yaml +41 -41
  173. data/lib/countries/data/countries/BF.yaml +29 -30
  174. data/lib/countries/data/countries/BG.yaml +36 -36
  175. data/lib/countries/data/countries/BH.yaml +29 -29
  176. data/lib/countries/data/countries/BI.yaml +29 -30
  177. data/lib/countries/data/countries/BJ.yaml +27 -28
  178. data/lib/countries/data/countries/BL.yaml +25 -25
  179. data/lib/countries/data/countries/BM.yaml +29 -29
  180. data/lib/countries/data/countries/BN.yaml +26 -26
  181. data/lib/countries/data/countries/BO.yaml +31 -32
  182. data/lib/countries/data/countries/BQ.yaml +28 -29
  183. data/lib/countries/data/countries/BR.yaml +35 -35
  184. data/lib/countries/data/countries/BS.yaml +27 -28
  185. data/lib/countries/data/countries/BT.yaml +28 -28
  186. data/lib/countries/data/countries/BV.yaml +26 -27
  187. data/lib/countries/data/countries/BW.yaml +29 -30
  188. data/lib/countries/data/countries/BY.yaml +30 -30
  189. data/lib/countries/data/countries/BZ.yaml +28 -29
  190. data/lib/countries/data/countries/CA.yaml +30 -30
  191. data/lib/countries/data/countries/CC.yaml +29 -29
  192. data/lib/countries/data/countries/CD.yaml +35 -36
  193. data/lib/countries/data/countries/CF.yaml +29 -30
  194. data/lib/countries/data/countries/CG.yaml +29 -30
  195. data/lib/countries/data/countries/CH.yaml +40 -40
  196. data/lib/countries/data/countries/CI.yaml +27 -28
  197. data/lib/countries/data/countries/CK.yaml +27 -28
  198. data/lib/countries/data/countries/CL.yaml +33 -28
  199. data/lib/countries/data/countries/CM.yaml +29 -30
  200. data/lib/countries/data/countries/CN.yaml +28 -28
  201. data/lib/countries/data/countries/CO.yaml +28 -28
  202. data/lib/countries/data/countries/CR.yaml +28 -28
  203. data/lib/countries/data/countries/CU.yaml +27 -27
  204. data/lib/countries/data/countries/CV.yaml +28 -28
  205. data/lib/countries/data/countries/CW.yaml +25 -26
  206. data/lib/countries/data/countries/CX.yaml +30 -30
  207. data/lib/countries/data/countries/CY.yaml +41 -41
  208. data/lib/countries/data/countries/CZ.yaml +38 -38
  209. data/lib/countries/data/countries/DE.yaml +36 -36
  210. data/lib/countries/data/countries/DJ.yaml +29 -30
  211. data/lib/countries/data/countries/DK.yaml +35 -35
  212. data/lib/countries/data/countries/DM.yaml +26 -27
  213. data/lib/countries/data/countries/DO.yaml +28 -28
  214. data/lib/countries/data/countries/DZ.yaml +28 -28
  215. data/lib/countries/data/countries/EC.yaml +28 -28
  216. data/lib/countries/data/countries/EE.yaml +36 -36
  217. data/lib/countries/data/countries/EG.yaml +28 -28
  218. data/lib/countries/data/countries/EH.yaml +30 -30
  219. data/lib/countries/data/countries/ER.yaml +31 -32
  220. data/lib/countries/data/countries/ES.yaml +36 -36
  221. data/lib/countries/data/countries/ET.yaml +28 -28
  222. data/lib/countries/data/countries/FI.yaml +39 -39
  223. data/lib/countries/data/countries/FJ.yaml +33 -34
  224. data/lib/countries/data/countries/FK.yaml +29 -29
  225. data/lib/countries/data/countries/FM.yaml +28 -28
  226. data/lib/countries/data/countries/FO.yaml +28 -28
  227. data/lib/countries/data/countries/FR.yaml +37 -37
  228. data/lib/countries/data/countries/GA.yaml +27 -28
  229. data/lib/countries/data/countries/GB.yaml +41 -36
  230. data/lib/countries/data/countries/GD.yaml +26 -27
  231. data/lib/countries/data/countries/GE.yaml +28 -28
  232. data/lib/countries/data/countries/GF.yaml +29 -29
  233. data/lib/countries/data/countries/GG.yaml +31 -31
  234. data/lib/countries/data/countries/GH.yaml +27 -28
  235. data/lib/countries/data/countries/GI.yaml +28 -28
  236. data/lib/countries/data/countries/GL.yaml +29 -29
  237. data/lib/countries/data/countries/GM.yaml +27 -28
  238. data/lib/countries/data/countries/GN.yaml +30 -30
  239. data/lib/countries/data/countries/GP.yaml +27 -27
  240. data/lib/countries/data/countries/GQ.yaml +29 -30
  241. data/lib/countries/data/countries/GR.yaml +37 -37
  242. data/lib/countries/data/countries/GS.yaml +29 -29
  243. data/lib/countries/data/countries/GT.yaml +28 -28
  244. data/lib/countries/data/countries/GU.yaml +31 -31
  245. data/lib/countries/data/countries/GW.yaml +28 -28
  246. data/lib/countries/data/countries/GY.yaml +26 -27
  247. data/lib/countries/data/countries/HK.yaml +29 -30
  248. data/lib/countries/data/countries/HM.yaml +28 -28
  249. data/lib/countries/data/countries/HN.yaml +28 -28
  250. data/lib/countries/data/countries/HR.yaml +37 -37
  251. data/lib/countries/data/countries/HT.yaml +29 -29
  252. data/lib/countries/data/countries/HU.yaml +37 -37
  253. data/lib/countries/data/countries/ID.yaml +28 -28
  254. data/lib/countries/data/countries/IE.yaml +39 -39
  255. data/lib/countries/data/countries/IL.yaml +35 -30
  256. data/lib/countries/data/countries/IM.yaml +31 -31
  257. data/lib/countries/data/countries/IN.yaml +30 -30
  258. data/lib/countries/data/countries/IO.yaml +28 -28
  259. data/lib/countries/data/countries/IQ.yaml +28 -28
  260. data/lib/countries/data/countries/IR.yaml +28 -28
  261. data/lib/countries/data/countries/IS.yaml +35 -35
  262. data/lib/countries/data/countries/IT.yaml +36 -36
  263. data/lib/countries/data/countries/JE.yaml +26 -26
  264. data/lib/countries/data/countries/JM.yaml +28 -29
  265. data/lib/countries/data/countries/JO.yaml +28 -28
  266. data/lib/countries/data/countries/JP.yaml +28 -28
  267. data/lib/countries/data/countries/KE.yaml +30 -30
  268. data/lib/countries/data/countries/KG.yaml +30 -30
  269. data/lib/countries/data/countries/KH.yaml +28 -28
  270. data/lib/countries/data/countries/KI.yaml +27 -28
  271. data/lib/countries/data/countries/KM.yaml +29 -30
  272. data/lib/countries/data/countries/KN.yaml +28 -29
  273. data/lib/countries/data/countries/KP.yaml +28 -28
  274. data/lib/countries/data/countries/KR.yaml +28 -28
  275. data/lib/countries/data/countries/KW.yaml +28 -28
  276. data/lib/countries/data/countries/KY.yaml +29 -29
  277. data/lib/countries/data/countries/KZ.yaml +30 -30
  278. data/lib/countries/data/countries/LA.yaml +28 -28
  279. data/lib/countries/data/countries/LB.yaml +30 -30
  280. data/lib/countries/data/countries/LC.yaml +28 -29
  281. data/lib/countries/data/countries/LI.yaml +27 -27
  282. data/lib/countries/data/countries/LK.yaml +28 -28
  283. data/lib/countries/data/countries/LR.yaml +28 -28
  284. data/lib/countries/data/countries/LS.yaml +28 -28
  285. data/lib/countries/data/countries/LT.yaml +37 -37
  286. data/lib/countries/data/countries/LU.yaml +39 -39
  287. data/lib/countries/data/countries/LV.yaml +42 -36
  288. data/lib/countries/data/countries/LY.yaml +27 -28
  289. data/lib/countries/data/countries/MA.yaml +28 -28
  290. data/lib/countries/data/countries/MC.yaml +28 -28
  291. data/lib/countries/data/countries/MD.yaml +28 -28
  292. data/lib/countries/data/countries/ME.yaml +34 -34
  293. data/lib/countries/data/countries/MF.yaml +29 -29
  294. data/lib/countries/data/countries/MG.yaml +30 -30
  295. data/lib/countries/data/countries/MH.yaml +30 -30
  296. data/lib/countries/data/countries/MK.yaml +28 -28
  297. data/lib/countries/data/countries/ML.yaml +27 -28
  298. data/lib/countries/data/countries/MM.yaml +27 -27
  299. data/lib/countries/data/countries/MN.yaml +28 -28
  300. data/lib/countries/data/countries/MO.yaml +28 -29
  301. data/lib/countries/data/countries/MP.yaml +31 -31
  302. data/lib/countries/data/countries/MQ.yaml +27 -27
  303. data/lib/countries/data/countries/MR.yaml +29 -30
  304. data/lib/countries/data/countries/MS.yaml +26 -27
  305. data/lib/countries/data/countries/MT.yaml +38 -38
  306. data/lib/countries/data/countries/MU.yaml +28 -28
  307. data/lib/countries/data/countries/MV.yaml +28 -28
  308. data/lib/countries/data/countries/MW.yaml +29 -30
  309. data/lib/countries/data/countries/MX.yaml +33 -33
  310. data/lib/countries/data/countries/MY.yaml +30 -30
  311. data/lib/countries/data/countries/MZ.yaml +28 -28
  312. data/lib/countries/data/countries/NA.yaml +30 -30
  313. data/lib/countries/data/countries/NC.yaml +29 -29
  314. data/lib/countries/data/countries/NE.yaml +28 -28
  315. data/lib/countries/data/countries/NF.yaml +29 -29
  316. data/lib/countries/data/countries/NG.yaml +34 -34
  317. data/lib/countries/data/countries/NI.yaml +28 -28
  318. data/lib/countries/data/countries/NL.yaml +36 -36
  319. data/lib/countries/data/countries/NO.yaml +36 -36
  320. data/lib/countries/data/countries/NP.yaml +32 -32
  321. data/lib/countries/data/countries/NR.yaml +27 -28
  322. data/lib/countries/data/countries/NU.yaml +25 -26
  323. data/lib/countries/data/countries/NZ.yaml +35 -35
  324. data/lib/countries/data/countries/OM.yaml +28 -28
  325. data/lib/countries/data/countries/PA.yaml +27 -28
  326. data/lib/countries/data/countries/PE.yaml +28 -28
  327. data/lib/countries/data/countries/PF.yaml +29 -29
  328. data/lib/countries/data/countries/PG.yaml +28 -28
  329. data/lib/countries/data/countries/PH.yaml +35 -35
  330. data/lib/countries/data/countries/PK.yaml +30 -30
  331. data/lib/countries/data/countries/PL.yaml +37 -37
  332. data/lib/countries/data/countries/PM.yaml +29 -29
  333. data/lib/countries/data/countries/PN.yaml +27 -27
  334. data/lib/countries/data/countries/PR.yaml +30 -30
  335. data/lib/countries/data/countries/PS.yaml +31 -32
  336. data/lib/countries/data/countries/PT.yaml +34 -34
  337. data/lib/countries/data/countries/PW.yaml +26 -26
  338. data/lib/countries/data/countries/PY.yaml +30 -30
  339. data/lib/countries/data/countries/QA.yaml +27 -28
  340. data/lib/countries/data/countries/RE.yaml +28 -28
  341. data/lib/countries/data/countries/RO.yaml +37 -37
  342. data/lib/countries/data/countries/RS.yaml +28 -28
  343. data/lib/countries/data/countries/RU.yaml +28 -28
  344. data/lib/countries/data/countries/RW.yaml +31 -32
  345. data/lib/countries/data/countries/SA.yaml +33 -28
  346. data/lib/countries/data/countries/SB.yaml +28 -29
  347. data/lib/countries/data/countries/SC.yaml +29 -30
  348. data/lib/countries/data/countries/SD.yaml +30 -30
  349. data/lib/countries/data/countries/SE.yaml +37 -37
  350. data/lib/countries/data/countries/SG.yaml +32 -32
  351. data/lib/countries/data/countries/SH.yaml +29 -29
  352. data/lib/countries/data/countries/SI.yaml +36 -36
  353. data/lib/countries/data/countries/SJ.yaml +29 -29
  354. data/lib/countries/data/countries/SK.yaml +36 -36
  355. data/lib/countries/data/countries/SL.yaml +27 -28
  356. data/lib/countries/data/countries/SM.yaml +28 -28
  357. data/lib/countries/data/countries/SN.yaml +28 -28
  358. data/lib/countries/data/countries/SO.yaml +30 -30
  359. data/lib/countries/data/countries/SR.yaml +26 -27
  360. data/lib/countries/data/countries/SS.yaml +29 -30
  361. data/lib/countries/data/countries/ST.yaml +27 -28
  362. data/lib/countries/data/countries/SV.yaml +27 -27
  363. data/lib/countries/data/countries/SX.yaml +28 -29
  364. data/lib/countries/data/countries/SY.yaml +27 -28
  365. data/lib/countries/data/countries/SZ.yaml +30 -30
  366. data/lib/countries/data/countries/TC.yaml +30 -30
  367. data/lib/countries/data/countries/TD.yaml +29 -30
  368. data/lib/countries/data/countries/TF.yaml +30 -31
  369. data/lib/countries/data/countries/TG.yaml +27 -28
  370. data/lib/countries/data/countries/TH.yaml +34 -33
  371. data/lib/countries/data/countries/TJ.yaml +30 -30
  372. data/lib/countries/data/countries/TK.yaml +27 -28
  373. data/lib/countries/data/countries/TL.yaml +27 -28
  374. data/lib/countries/data/countries/TM.yaml +30 -30
  375. data/lib/countries/data/countries/TN.yaml +30 -30
  376. data/lib/countries/data/countries/TO.yaml +29 -30
  377. data/lib/countries/data/countries/TR.yaml +28 -28
  378. data/lib/countries/data/countries/TT.yaml +28 -29
  379. data/lib/countries/data/countries/TV.yaml +27 -28
  380. data/lib/countries/data/countries/TW.yaml +28 -28
  381. data/lib/countries/data/countries/TZ.yaml +30 -30
  382. data/lib/countries/data/countries/UA.yaml +34 -34
  383. data/lib/countries/data/countries/UG.yaml +29 -30
  384. data/lib/countries/data/countries/UM.yaml +29 -29
  385. data/lib/countries/data/countries/US.yaml +29 -28
  386. data/lib/countries/data/countries/UY.yaml +28 -28
  387. data/lib/countries/data/countries/UZ.yaml +30 -30
  388. data/lib/countries/data/countries/VA.yaml +31 -31
  389. data/lib/countries/data/countries/VC.yaml +29 -29
  390. data/lib/countries/data/countries/VE.yaml +28 -28
  391. data/lib/countries/data/countries/VG.yaml +30 -30
  392. data/lib/countries/data/countries/VI.yaml +28 -28
  393. data/lib/countries/data/countries/VN.yaml +34 -28
  394. data/lib/countries/data/countries/VU.yaml +31 -32
  395. data/lib/countries/data/countries/WF.yaml +29 -29
  396. data/lib/countries/data/countries/WS.yaml +29 -30
  397. data/lib/countries/data/countries/YE.yaml +27 -28
  398. data/lib/countries/data/countries/YT.yaml +26 -26
  399. data/lib/countries/data/countries/ZA.yaml +40 -40
  400. data/lib/countries/data/countries/ZM.yaml +28 -28
  401. data/lib/countries/data/countries/ZW.yaml +31 -32
  402. data/lib/countries/data/subdivisions/AD.yaml +35 -28
  403. data/lib/countries/data/subdivisions/AE.yaml +154 -63
  404. data/lib/countries/data/subdivisions/AF.yaml +605 -300
  405. data/lib/countries/data/subdivisions/AG.yaml +149 -67
  406. data/lib/countries/data/subdivisions/AI.yaml +57 -43
  407. data/lib/countries/data/subdivisions/AL.yaml +252 -468
  408. data/lib/countries/data/subdivisions/AM.yaml +236 -88
  409. data/lib/countries/data/subdivisions/AO.yaml +344 -144
  410. data/lib/countries/data/subdivisions/AR.yaml +450 -187
  411. data/lib/countries/data/subdivisions/AT.yaml +202 -72
  412. data/lib/countries/data/subdivisions/AU.yaml +212 -64
  413. data/lib/countries/data/subdivisions/AZ.yaml +1550 -592
  414. data/lib/countries/data/subdivisions/BA.yaml +189 -16
  415. data/lib/countries/data/subdivisions/BB.yaml +190 -88
  416. data/lib/countries/data/subdivisions/BD.yaml +1192 -519
  417. data/lib/countries/data/subdivisions/BE.yaml +278 -88
  418. data/lib/countries/data/subdivisions/BF.yaml +993 -366
  419. data/lib/countries/data/subdivisions/BG.yaml +600 -219
  420. data/lib/countries/data/subdivisions/BH.yaml +72 -35
  421. data/lib/countries/data/subdivisions/BI.yaml +298 -123
  422. data/lib/countries/data/subdivisions/BJ.yaml +226 -96
  423. data/lib/countries/data/subdivisions/BM.yaml +44 -33
  424. data/lib/countries/data/subdivisions/BN.yaml +63 -32
  425. data/lib/countries/data/subdivisions/BO.yaml +157 -72
  426. data/lib/countries/data/subdivisions/BQ.yaml +63 -24
  427. data/lib/countries/data/subdivisions/BR.yaml +689 -216
  428. data/lib/countries/data/subdivisions/BS.yaml +625 -108
  429. data/lib/countries/data/subdivisions/BT.yaml +346 -160
  430. data/lib/countries/data/subdivisions/BW.yaml +294 -72
  431. data/lib/countries/data/subdivisions/BY.yaml +140 -51
  432. data/lib/countries/data/subdivisions/BZ.yaml +97 -48
  433. data/lib/countries/data/subdivisions/CA.yaml +358 -105
  434. data/lib/countries/data/subdivisions/CD.yaml +451 -68
  435. data/lib/countries/data/subdivisions/CF.yaml +291 -136
  436. data/lib/countries/data/subdivisions/CG.yaml +217 -88
  437. data/lib/countries/data/subdivisions/CH.yaml +593 -208
  438. data/lib/countries/data/subdivisions/CI.yaml +431 -66
  439. data/lib/countries/data/subdivisions/CK.yaml +44 -33
  440. data/lib/countries/data/subdivisions/CL.yaml +262 -132
  441. data/lib/countries/data/subdivisions/CM.yaml +190 -80
  442. data/lib/countries/data/subdivisions/CN.yaml +618 -46
  443. data/lib/countries/data/subdivisions/CO.yaml +643 -264
  444. data/lib/countries/data/subdivisions/CR.yaml +119 -56
  445. data/lib/countries/data/subdivisions/CU.yaml +268 -128
  446. data/lib/countries/data/subdivisions/CV.yaml +414 -126
  447. data/lib/countries/data/subdivisions/CY.yaml +102 -48
  448. data/lib/countries/data/subdivisions/CZ.yaml +1035 -1349
  449. data/lib/countries/data/subdivisions/DE.yaml +484 -144
  450. data/lib/countries/data/subdivisions/DJ.yaml +110 -48
  451. data/lib/countries/data/subdivisions/DK.yaml +110 -241
  452. data/lib/countries/data/subdivisions/DM.yaml +159 -80
  453. data/lib/countries/data/subdivisions/DO.yaml +660 -248
  454. data/lib/countries/data/subdivisions/DZ.yaml +809 -384
  455. data/lib/countries/data/subdivisions/EC.yaml +391 -192
  456. data/lib/countries/data/subdivisions/EE.yaml +653 -146
  457. data/lib/countries/data/subdivisions/EG.yaml +472 -216
  458. data/lib/countries/data/subdivisions/EH.yaml +20 -12
  459. data/lib/countries/data/subdivisions/ER.yaml +109 -48
  460. data/lib/countries/data/subdivisions/ES.yaml +1738 -435
  461. data/lib/countries/data/subdivisions/ET.yaml +207 -88
  462. data/lib/countries/data/subdivisions/FI.yaml +111 -124
  463. data/lib/countries/data/subdivisions/FJ.yaml +314 -40
  464. data/lib/countries/data/subdivisions/FM.yaml +63 -32
  465. data/lib/countries/data/subdivisions/FR.yaml +2826 -1280
  466. data/lib/countries/data/subdivisions/GA.yaml +159 -72
  467. data/lib/countries/data/subdivisions/GB.yaml +4980 -1771
  468. data/lib/countries/data/subdivisions/GD.yaml +114 -56
  469. data/lib/countries/data/subdivisions/GE.yaml +238 -96
  470. data/lib/countries/data/subdivisions/GH.yaml +266 -79
  471. data/lib/countries/data/subdivisions/GL.yaml +89 -0
  472. data/lib/countries/data/subdivisions/GM.yaml +124 -48
  473. data/lib/countries/data/subdivisions/GN.yaml +711 -274
  474. data/lib/countries/data/subdivisions/GQ.yaml +144 -72
  475. data/lib/countries/data/subdivisions/GR.yaml +297 -739
  476. data/lib/countries/data/subdivisions/GT.yaml +351 -176
  477. data/lib/countries/data/subdivisions/GW.yaml +192 -72
  478. data/lib/countries/data/subdivisions/GY.yaml +163 -80
  479. data/lib/countries/data/subdivisions/HN.yaml +274 -144
  480. data/lib/countries/data/subdivisions/HR.yaml +429 -168
  481. data/lib/countries/data/subdivisions/HT.yaml +179 -72
  482. data/lib/countries/data/subdivisions/HU.yaml +855 -403
  483. data/lib/countries/data/subdivisions/ID.yaml +2377 -1859
  484. data/lib/countries/data/subdivisions/IE.yaml +831 -440
  485. data/lib/countries/data/subdivisions/IL.yaml +114 -48
  486. data/lib/countries/data/subdivisions/IN.yaml +1006 -298
  487. data/lib/countries/data/subdivisions/IQ.yaml +316 -139
  488. data/lib/countries/data/subdivisions/IR.yaml +597 -239
  489. data/lib/countries/data/subdivisions/IS.yaml +445 -67
  490. data/lib/countries/data/subdivisions/IT.yaml +3435 -2211
  491. data/lib/countries/data/subdivisions/JM.yaml +243 -112
  492. data/lib/countries/data/subdivisions/JO.yaml +193 -96
  493. data/lib/countries/data/subdivisions/JP.yaml +950 -376
  494. data/lib/countries/data/subdivisions/KE.yaml +928 -273
  495. data/lib/countries/data/subdivisions/KG.yaml +188 -64
  496. data/lib/countries/data/subdivisions/KH.yaml +437 -192
  497. data/lib/countries/data/subdivisions/KI.yaml +57 -24
  498. data/lib/countries/data/subdivisions/KM.yaml +49 -24
  499. data/lib/countries/data/subdivisions/KN.yaml +308 -112
  500. data/lib/countries/data/subdivisions/KP.yaml +365 -57
  501. data/lib/countries/data/subdivisions/KR.yaml +393 -128
  502. data/lib/countries/data/subdivisions/KW.yaml +87 -48
  503. data/lib/countries/data/subdivisions/KZ.yaml +362 -135
  504. data/lib/countries/data/subdivisions/LA.yaml +300 -145
  505. data/lib/countries/data/subdivisions/LB.yaml +134 -48
  506. data/lib/countries/data/subdivisions/LC.yaml +166 -0
  507. data/lib/countries/data/subdivisions/LI.yaml +186 -88
  508. data/lib/countries/data/subdivisions/LK.yaml +544 -200
  509. data/lib/countries/data/subdivisions/LR.yaml +252 -110
  510. data/lib/countries/data/subdivisions/LS.yaml +149 -80
  511. data/lib/countries/data/subdivisions/LT.yaml +1042 -80
  512. data/lib/countries/data/subdivisions/LU.yaml +280 -146
  513. data/lib/countries/data/subdivisions/LV.yaml +766 -3582
  514. data/lib/countries/data/subdivisions/LY.yaml +339 -162
  515. data/lib/countries/data/subdivisions/MA.yaml +1443 -484
  516. data/lib/countries/data/subdivisions/MC.yaml +250 -0
  517. data/lib/countries/data/subdivisions/MD.yaml +1103 -558
  518. data/lib/countries/data/subdivisions/ME.yaml +425 -168
  519. data/lib/countries/data/subdivisions/MG.yaml +93 -48
  520. data/lib/countries/data/subdivisions/MH.yaml +422 -199
  521. data/lib/countries/data/subdivisions/MK.yaml +3556 -3147
  522. data/lib/countries/data/subdivisions/ML.yaml +187 -71
  523. data/lib/countries/data/subdivisions/MM.yaml +287 -112
  524. data/lib/countries/data/subdivisions/MN.yaml +421 -176
  525. data/lib/countries/data/subdivisions/MR.yaml +245 -99
  526. data/lib/countries/data/subdivisions/MT.yaml +1059 -544
  527. data/lib/countries/data/subdivisions/MU.yaml +317 -131
  528. data/lib/countries/data/subdivisions/MV.yaml +457 -163
  529. data/lib/countries/data/subdivisions/MW.yaml +537 -216
  530. data/lib/countries/data/subdivisions/MX.yaml +709 -256
  531. data/lib/countries/data/subdivisions/MY.yaml +336 -128
  532. data/lib/countries/data/subdivisions/MZ.yaml +191 -83
  533. data/lib/countries/data/subdivisions/NA.yaml +220 -107
  534. data/lib/countries/data/subdivisions/NE.yaml +170 -64
  535. data/lib/countries/data/subdivisions/NG.yaml +870 -296
  536. data/lib/countries/data/subdivisions/NI.yaml +260 -136
  537. data/lib/countries/data/subdivisions/NL.yaml +381 -96
  538. data/lib/countries/data/subdivisions/NO.yaml +633 -1095
  539. data/lib/countries/data/subdivisions/NP.yaml +383 -112
  540. data/lib/countries/data/subdivisions/NR.yaml +260 -112
  541. data/lib/countries/data/subdivisions/NZ.yaml +340 -197
  542. data/lib/countries/data/subdivisions/OM.yaml +202 -52
  543. data/lib/countries/data/subdivisions/PA.yaml +203 -99
  544. data/lib/countries/data/subdivisions/PE.yaml +418 -208
  545. data/lib/countries/data/subdivisions/PG.yaml +381 -155
  546. data/lib/countries/data/subdivisions/PH.yaml +1855 -662
  547. data/lib/countries/data/subdivisions/PK.yaml +185 -54
  548. data/lib/countries/data/subdivisions/PL.yaml +83 -32
  549. data/lib/countries/data/subdivisions/PS.yaml +257 -0
  550. data/lib/countries/data/subdivisions/PT.yaml +355 -173
  551. data/lib/countries/data/subdivisions/PW.yaml +269 -128
  552. data/lib/countries/data/subdivisions/PY.yaml +321 -144
  553. data/lib/countries/data/subdivisions/QA.yaml +168 -65
  554. data/lib/countries/data/subdivisions/RO.yaml +729 -336
  555. data/lib/countries/data/subdivisions/RS.yaml +589 -240
  556. data/lib/countries/data/subdivisions/RU.yaml +1875 -665
  557. data/lib/countries/data/subdivisions/RW.yaml +102 -40
  558. data/lib/countries/data/subdivisions/SA.yaml +234 -104
  559. data/lib/countries/data/subdivisions/SB.yaml +169 -80
  560. data/lib/countries/data/subdivisions/SC.yaml +464 -184
  561. data/lib/countries/data/subdivisions/SD.yaml +163 -22
  562. data/lib/countries/data/subdivisions/SE.yaml +435 -237
  563. data/lib/countries/data/subdivisions/SG.yaml +71 -49
  564. data/lib/countries/data/subdivisions/SH.yaml +67 -14
  565. data/lib/countries/data/subdivisions/SI.yaml +3570 -1549
  566. data/lib/countries/data/subdivisions/SJ.yaml +8 -6
  567. data/lib/countries/data/subdivisions/SK.yaml +129 -64
  568. data/lib/countries/data/subdivisions/SL.yaml +80 -31
  569. data/lib/countries/data/subdivisions/SM.yaml +159 -72
  570. data/lib/countries/data/subdivisions/SN.yaml +233 -88
  571. data/lib/countries/data/subdivisions/SO.yaml +311 -144
  572. data/lib/countries/data/subdivisions/SR.yaml +158 -80
  573. data/lib/countries/data/subdivisions/SS.yaml +196 -0
  574. data/lib/countries/data/subdivisions/ST.yaml +55 -16
  575. data/lib/countries/data/subdivisions/SV.yaml +231 -112
  576. data/lib/countries/data/subdivisions/SY.yaml +220 -112
  577. data/lib/countries/data/subdivisions/SZ.yaml +65 -32
  578. data/lib/countries/data/subdivisions/TD.yaml +409 -139
  579. data/lib/countries/data/subdivisions/TG.yaml +75 -40
  580. data/lib/countries/data/subdivisions/TH.yaml +1451 -616
  581. data/lib/countries/data/subdivisions/TJ.yaml +100 -24
  582. data/lib/countries/data/subdivisions/TK.yaml +12 -9
  583. data/lib/countries/data/subdivisions/TL.yaml +209 -104
  584. data/lib/countries/data/subdivisions/TM.yaml +116 -40
  585. data/lib/countries/data/subdivisions/TN.yaml +412 -192
  586. data/lib/countries/data/subdivisions/TO.yaml +75 -40
  587. data/lib/countries/data/subdivisions/TR.yaml +1817 -648
  588. data/lib/countries/data/subdivisions/TT.yaml +296 -113
  589. data/lib/countries/data/subdivisions/TV.yaml +133 -59
  590. data/lib/countries/data/subdivisions/TW.yaml +467 -164
  591. data/lib/countries/data/subdivisions/TZ.yaml +661 -208
  592. data/lib/countries/data/subdivisions/UA.yaml +505 -216
  593. data/lib/countries/data/subdivisions/UG.yaml +2269 -640
  594. data/lib/countries/data/subdivisions/UM.yaml +207 -72
  595. data/lib/countries/data/subdivisions/US.yaml +1635 -483
  596. data/lib/countries/data/subdivisions/UY.yaml +367 -152
  597. data/lib/countries/data/subdivisions/UZ.yaml +289 -113
  598. data/lib/countries/data/subdivisions/VC.yaml +101 -48
  599. data/lib/countries/data/subdivisions/VE.yaml +456 -200
  600. data/lib/countries/data/subdivisions/VN.yaml +3664 -2996
  601. data/lib/countries/data/subdivisions/VU.yaml +98 -48
  602. data/lib/countries/data/subdivisions/WF.yaml +63 -0
  603. data/lib/countries/data/subdivisions/WS.yaml +200 -88
  604. data/lib/countries/data/subdivisions/YE.yaml +375 -152
  605. data/lib/countries/data/subdivisions/ZA.yaml +238 -72
  606. data/lib/countries/data/subdivisions/ZM.yaml +157 -72
  607. data/lib/countries/data/subdivisions/ZW.yaml +152 -73
  608. data/lib/countries/data/translation_corrections.yaml +24 -7
  609. data/lib/countries/data.rb +71 -41
  610. data/lib/countries/global.rb +15 -3
  611. data/lib/countries/iso3166.rb +3 -0
  612. data/lib/countries/kwarg_struct.rb +2 -0
  613. data/lib/countries/mongoid.rb +5 -0
  614. data/lib/countries/sources/cldr/downloader.rb +16 -14
  615. data/lib/countries/sources/cldr/subdivision.rb +4 -0
  616. data/lib/countries/sources/cldr/subdivision_updater.rb +24 -17
  617. data/lib/countries/sources/local/cached_loader.rb +5 -0
  618. data/lib/countries/sources/local/subdivision.rb +6 -2
  619. data/lib/countries/sources.rb +2 -0
  620. data/lib/countries/structure.rb +4 -6
  621. data/lib/countries/subdivision.rb +2 -0
  622. data/lib/countries/tasks/geocoding.rake +21 -19
  623. data/lib/countries/tasks/postal_codes.rake +50 -0
  624. data/lib/countries/timezones.rb +9 -4
  625. data/lib/countries/translations.rb +5 -4
  626. data/lib/countries/version.rb +3 -1
  627. data/lib/countries.rb +2 -1
  628. data/spec/00_global_spec.rb +2 -0
  629. data/spec/configuration_spec.rb +11 -5
  630. data/spec/country_spec.rb +232 -69
  631. data/spec/data_spec.rb +35 -29
  632. data/spec/mongoid_spec.rb +2 -2
  633. data/spec/perf_spec.rb +16 -16
  634. data/spec/spec_helper.rb +2 -0
  635. data/spec/subdivision_spec.rb +6 -4
  636. data/spec/thread_safety_spec.rb +47 -0
  637. data/spec/timezone_spec.rb +2 -0
  638. metadata +31 -52
  639. data/.travis.yml +0 -15
  640. data/lib/countries/data/subdivisions/AS.yaml +0 -66
  641. data/lib/countries/data/subdivisions/AX.yaml +0 -40
  642. data/lib/countries/data/subdivisions/FO.yaml +0 -79
  643. data/lib/countries/data/subdivisions/GG.yaml +0 -144
  644. data/lib/countries/data/subdivisions/GU.yaml +0 -248
  645. data/lib/countries/data/subdivisions/HK.yaml +0 -235
  646. data/lib/countries/data/subdivisions/IM.yaml +0 -313
  647. data/lib/countries/data/subdivisions/JE.yaml +0 -157
  648. data/lib/countries/data/subdivisions/KY.yaml +0 -73
  649. data/lib/countries/data/subdivisions/MP.yaml +0 -53
  650. data/lib/countries/data/subdivisions/MS.yaml +0 -40
  651. data/lib/countries/data/subdivisions/NC.yaml +0 -40
  652. data/lib/countries/data/subdivisions/PF.yaml +0 -66
  653. data/lib/countries/data/subdivisions/PM.yaml +0 -27
  654. data/lib/countries/data/subdivisions/PR.yaml +0 -1015
  655. data/lib/countries/data/subdivisions/TF.yaml +0 -49
  656. data/lib/countries/data/subdivisions/VI.yaml +0 -40
  657. data/lib/countries/data/subdivisions/YT.yaml +0 -222
  658. data/lib/countries/setup.rb +0 -18
data/README.markdown CHANGED
@@ -2,39 +2,38 @@
2
2
 
3
3
  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.
4
4
 
5
- [![Gem Version](https://badge.fury.io/rb/countries.svg)](https://badge.fury.io/rb/countries) [![Build Status](https://travis-ci.org/hexorx/countries.svg)](https://travis-ci.org/hexorx/countries) [![Code Climate](https://codeclimate.com/github/hexorx/countries.svg)](https://codeclimate.com/github/hexorx/countries)
5
+ [![Gem Version](https://badge.fury.io/rb/countries.svg)](https://badge.fury.io/rb/countries) [![Tests](https://github.com/countries/countries/actions/workflows/tests.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/tests.yml) [![Code Climate](https://codeclimate.com/github/countries/countries.svg)](https://codeclimate.com/github/countries/countries)
6
+ [![CodeQL](https://github.com/countries/countries/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/codeql-analysis.yml)
7
+
6
8
 
7
9
  ## Installation
8
10
 
9
- ``` bash
10
- gem install countries
11
- ```
11
+ ```bash
12
+ gem install countries
13
+ ```
12
14
 
13
- Or you can install via Bundler if you are using Rails. Add this line to your application's Gemfile:
15
+ Or you can install via Bundler if you are using Rails:
14
16
 
15
- ```ruby
16
- gem 'countries'
17
+ ```bash
18
+ bundle add countries
17
19
  ```
18
20
 
19
- And then execute:
20
-
21
- $ bundle
22
-
23
21
  ## Basic Usage
24
22
 
25
23
  Simply load a new country object using Country.new(*alpha2*) or the shortcut Country[*alpha2*]. An example works best.
26
24
 
27
- ``` ruby
25
+ ```ruby
28
26
  c = ISO3166::Country.new('US')
29
27
  ```
30
28
 
31
29
  ## Configuration
32
30
 
33
- #### Country Helper
31
+ ### Country Helper
32
+
34
33
  Some apps might not want to constantly call `ISO3166::Country` this gem has a
35
34
  helper that can provide a `Country` class
36
35
 
37
- ``` ruby
36
+ ```ruby
38
37
  # With global Country Helper
39
38
  c = Country['US']
40
39
  ```
@@ -43,40 +42,53 @@ c = Country['US']
43
42
 
44
43
  To Use
45
44
 
46
- ``` ruby
45
+ ```ruby
47
46
  gem 'countries', require: 'countries/global'
48
47
  ```
49
48
 
50
- ## Upgrading to 3.x
49
+ ## Upgrading to 4.2 and 5.x
51
50
 
52
- We dropped currency support via money by default, see [instructions](README.markdown#Currencies) if you are using currency featues
51
+ In release 4.2 the `#name` attribute was deprecated in favour of `#iso_short_name` and we added the `#iso_long_name` attribute, to make it clear that these attributes use the ISO3166 names, and are not the "common names" most people might expect, eg: The ISO name for "United Kingdom" is "United Kingdom of Great Britain and Northern Ireland", but if you're building a dropdown box to select a country, you're likely expecting to see "United Kingdom" instead.
53
52
 
54
- ## Upgrading Country Helper to > 1.2.0
55
- ``` ruby
56
- gem 'countries', require: 'global'
57
- ```
53
+ "Common names" in English have been available in the translation data, via `#translation('en')`. As of release 4.2, a shortcut method has been added for simplicity, `#common_name`, which delegates to `#translation('en')`.
58
54
 
59
- has become
60
- ``` ruby
61
- gem 'countries', require: 'countries/global'
62
- ```
55
+ For additional clarity, the `#names` method, which was an alias to `#unofficial_names` has also been deprecated, together with the finder methods that use `name` or `names` attributes.
56
+
57
+ The `#name` and `#names` attributes, and corresponding finder methods were removed in 5.0.
58
+
59
+ The replacement finders added in 5.0 are:
60
+
61
+ - `#find_by_name` => `#find_by_any_name` - Searches all the name attributes, same as before
62
+ - `#find_by_names` => `#find_by_unofficial_names`
63
+ - `#find_*_by_name` => `#find_*_by_any_name`
64
+ - `#find_*_by_names` => `#find_*_by_unofficial_names`
65
+
66
+ With the addition of the new name attributes, there are now also the following finders:
67
+
68
+ - `#find_by_common_name`/`#find_*_by_common_name`
69
+ - `#find_by_iso_short_name`/`#find_*_by_iso_short_name`
70
+ - `#find_by_iso_long_name`/`#find_*_by_iso_long_name`
71
+
72
+ For translated country names, we use data from [pkg-isocodes](https://salsa.debian.org/iso-codes-team/iso-codes), via the [i18n_data](https://github.com/grosser/i18n_data) gem, and these generally correspond to the expected "common names". These names and the corresponding methods have not been changed.
73
+
74
+ The 5.0 release removed support for Ruby 2.5 (EOL 2021-03-01) and 2.6 (EOL 2022-03-31)
63
75
 
64
76
  ## Selective Loading of Locales
65
77
 
66
78
  As of 2.0 you can selectively load locales to reduce memory usage in production.
67
79
 
68
- By default we load I18n.available_locales if I18n is present, otherwise only [:en]. This means almost any rails environment will only bring in its supported translations.
80
+ By default we load `I18n.available_locales` if I18n is present, otherwise only `[:en]`. This means almost any Rails environment will only bring in its supported translations.
69
81
 
70
82
  You can add all the locales like this.
71
83
 
72
- ``` ruby
84
+ ```ruby
73
85
  ISO3166.configure do |config|
74
86
  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]
75
87
  end
76
88
  ```
77
89
 
78
90
  or something a bit more simple
79
- ``` ruby
91
+ ```ruby
80
92
  ISO3166.configure do |config|
81
93
  config.locales = [:en, :de, :fr, :es]
82
94
  end
@@ -86,15 +98,19 @@ end
86
98
 
87
99
  You can lookup a country or an array of countries using any of the data attributes via the find\_country\_by_*attribute* dynamic methods:
88
100
 
89
- ``` ruby
90
- c = ISO3166::Country.find_country_by_name('united states')
101
+ ```ruby
102
+ c = ISO3166::Country.find_country_by_iso_short_name('italy')
103
+ c = ISO3166::Country.find_country_by_any_name('united states')
104
+ h = ISO3166::Country.find_all_by(:translated_names, 'França')
91
105
  list = ISO3166::Country.find_all_countries_by_region('Americas')
92
106
  c = ISO3166::Country.find_country_by_alpha3('can')
93
107
  ```
94
108
 
95
- For a list of available attributes please see ISO3166::DEFAULT_COUNTRY_HASH.
109
+ For a list of available attributes please see `ISO3166::DEFAULT_COUNTRY_HASH`.
96
110
  Note: searches are *case insensitive and ignore accents*.
97
111
 
112
+ _Please note that `find_by_name`, `find_by_names`, `find_*_by_name` and `find_*_by_names` methods were removed in 5.0. See [Upgrading to 4.2 and 5.x](#upgrading-to-4-2-and-5-x) above for the new methods_
113
+
98
114
  ## Country Info
99
115
 
100
116
  ### Identification Codes
@@ -106,10 +122,12 @@ c.alpha3 # => "USA"
106
122
  c.gec # => "US"
107
123
  ```
108
124
 
109
- ### Names & Translations
125
+ ### Names & Translations
110
126
 
111
127
  ```ruby
112
- c.name # => "United States"
128
+ c.iso_long_name # => "The United States of America"
129
+ c.iso_short_name # => "United States of America"
130
+ c.common_name # => "United States" (This is a shortcut for c.translations('en'))
113
131
  c.unofficial_names # => ["United States of America", "Vereinigte Staaten von Amerika", "États-Unis", "Estados Unidos"]
114
132
 
115
133
  # Get the names for a country translated to its local languages
@@ -125,27 +143,34 @@ ISO3166::Country.translations # {"DE"=>"Germany",...}
125
143
  ISO3166::Country.translations('DE') # {"DE"=>"Deutschland",...}
126
144
  ISO3166::Country.all_translated # ['Germany', ...]
127
145
  ISO3166::Country.all_translated('DE') # ['Deutschland', ...]
146
+
147
+ # Nationality
148
+ c.nationality # => "American"
128
149
  ```
129
150
 
130
151
  ### Subdivisions & States
131
152
 
132
- ``` ruby
153
+ ```ruby
133
154
  c.subdivisions # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
134
155
  c.states # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
156
+
157
+ # Get specific translations for the country subdivisions
158
+ c.subdivision_names_with_codes('es') #=> [ ..., ["Nuevo Hampshire", "NH"], ["Nueva Jersey", "NJ"], ... ]
135
159
  ```
136
160
 
137
161
  ### Location
138
162
 
139
- ``` ruby
140
- c.latitude # => "38 00 N"
141
- c.longitude # => "97 00 W"
142
- c.latitude_dec # => 39.44325637817383
143
- c.longitude_dec # => -98.95733642578125
163
+ ```ruby
164
+ c.latitude # => "37.09024"
165
+ c.longitude # => "-95.712891"
144
166
 
167
+ c.world_region # => "AMER"
145
168
  c.region # => "Americas"
146
169
  c.subregion # => "Northern America"
147
170
  ```
148
171
 
172
+ Please note that `latitude_dec` and `longitude_dec` were deprecated on release 4.2 and removed in 5.0. These attributes have been redundant for several years, since the `latitude` and `longitude` fields have been switched decimal coordinates.
173
+
149
174
  ### Timezones **(optional)**
150
175
 
151
176
  Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do this for you.
@@ -154,15 +179,15 @@ Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do thi
154
179
  gem 'tzinfo', '~> 1.2', '>= 1.2.2'
155
180
  ```
156
181
 
157
- ``` ruby
182
+ ```ruby
158
183
  c.timezones.zone_identifiers # => ["America/New_York", "America/Detroit", "America/Kentucky/Louisville", ...]
159
- c.timezones.zone_info # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/CountryInfo)
160
- c.timezones # see [tzinfo docs]( http://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
184
+ c.timezones.zone_info # see [tzinfo docs](https://www.rubydoc.info/gems/tzinfo/TZInfo/CountryTimezone)
185
+ c.timezones # see [tzinfo docs](https://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
161
186
  ```
162
187
 
163
188
  ### Telephone Routing (E164)
164
189
 
165
- ``` ruby
190
+ ```ruby
166
191
  c.country_code # => "1"
167
192
  c.national_destination_code_lengths # => 3
168
193
  c.national_number_lengths # => 10
@@ -172,38 +197,57 @@ c.national_prefix # => "1"
172
197
 
173
198
  ### Boundary Boxes
174
199
 
175
- ``` ruby
200
+ ```ruby
176
201
  c.min_longitude # => '45'
177
202
  c.min_latitude # => '22.166667'
178
203
  c.max_longitude # => '58'
179
204
  c.max_latitude # => '26.133333'
205
+
206
+ c.bounds #> {"northeast"=>{"lat"=>22.166667, "lng"=>58}, "southwest"=>{"lat"=>26.133333, "lng"=>45}}
180
207
  ```
181
208
 
182
209
  ### European Union Membership
183
210
 
184
- ``` ruby
211
+ ```ruby
185
212
  c.in_eu? # => false
186
213
  ```
187
214
 
215
+ ### European Economic Area Membership
216
+
217
+ ```ruby
218
+ c.in_eea? # => false
219
+ ```
220
+
221
+
222
+ ### European Single Market Membership
223
+
224
+ ```ruby
225
+ c.in_esm? # => false
226
+ ```
227
+
228
+ ### Plucking multiple attributes
229
+
230
+ ```ruby
231
+ ISO3166::Country.pluck(:alpha2, :iso_short_name) # => [["AD", "Andorra"], ["AE", "United Arab Emirates"], ...
232
+ ```
233
+
188
234
  ## Currencies
189
235
 
190
236
  To enable currencies extension please add the following to countries initializer.
191
237
 
192
- ``` ruby
238
+ ```ruby
193
239
  ISO3166.configuration.enable_currency_extension!
194
240
  ```
195
241
 
196
242
  Please note that it requires you to add "money" dependency to your gemfile.
197
243
 
198
- ``` ruby
244
+ ```ruby
199
245
  gem "money", "~> 6.9"
200
246
  ```
201
247
 
202
- **WARNING** if you have a top level class named `Money` you will conflict with this gem. If this is a large issue we will add a feature to turn currency features off.
203
-
204
- 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.
248
+ 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.
205
249
 
206
- ``` ruby
250
+ ```ruby
207
251
  c = ISO3166::Country['us']
208
252
  c.currency.iso_code # => 'USD'
209
253
  c.currency.name # => 'United States Dollar'
@@ -212,9 +256,9 @@ c.currency.symbol # => '$'
212
256
 
213
257
  ## Address Formatting
214
258
 
215
- A template for formatting addresses is available through the address_format method. These templates are compatible with the [Liquid][] template system.
259
+ A template for formatting addresses is available through the address_format method. These templates are compatible with the [Liquid](https://shopify.github.io/liquid/) template system.
216
260
 
217
- ``` ruby
261
+ ```ruby
218
262
  c.address_format # => "{{recipient}}\n{{street}}\n{{city}} {{region}} {{postalcode}}\n{{country}}"
219
263
  ```
220
264
 
@@ -224,17 +268,17 @@ As of 2.0 countries supports loading custom countries / overriding data in its d
224
268
 
225
269
  Any country registered this way will have its 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__.
226
270
 
227
- ``` ruby
271
+ ```ruby
228
272
  ISO3166::Data.register(
229
273
  alpha2: 'LOL',
230
- name: 'Happy Country',
274
+ iso_short_name: 'Happy Country',
231
275
  translations: {
232
276
  'en' => 'Happy Country',
233
277
  'de' => 'glückliches Land'
234
278
  }
235
279
  )
236
280
 
237
- ISO3166::Country.new('LOL').name == 'Happy Country'
281
+ ISO3166::Country.new('LOL').iso_short_name == 'Happy Country'
238
282
  ```
239
283
 
240
284
  ## Mongoid
@@ -253,38 +297,39 @@ Searching:
253
297
 
254
298
  ```ruby
255
299
  # By alpha2
256
- british_things = Things.where(country: 'GB')
257
- british_things.first.country.name # => "United Kingdom"
300
+ spanish_things = Things.where(country: 'ES')
301
+ spanish_things.first.country.iso_short_name # => "Spain"
258
302
 
259
303
  # By object
260
- british_things = Things.where(country: Country.find_by_name('United Kingdom')[1])
261
- british_things.first.country.name # => "United Kingdom"
304
+ spanish_things = Things.where(country: Country.find_by_iso_short_name('Spain')[1])
305
+ spanish_things.first.country.iso_short_name # => "Spain"
262
306
  ```
307
+
263
308
  Saving:
264
309
 
265
310
  ```ruby
266
311
  # By alpha2
267
- british_thing = Thing.new(country: 'GB')
268
- british_thing.save!
269
- british_thing.country.name # => "United Kingdom"
312
+ spanish_things = Thing.new(country: 'ES')
313
+ spanish_things.save!
314
+ spanish_things.country.iso_short_name # => "Spain"
270
315
 
271
316
  # By object
272
- british_thing = Thing.new(country: Country.find_by_name('United Kingdom')[1])
273
- british_thing.save!
274
- british_thing.country.name # => "United Kingdom"
317
+ spanish_things = Thing.new(country: Country.find_by_iso_short_name('Spain')[1])
318
+ spanish_things.save!
319
+ spanish_things.country.iso_short_name # => "Spain"
275
320
  ```
276
321
 
277
322
  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:
278
323
 
279
- ``` ruby
324
+ ```ruby
280
325
  def country
281
- super.name
326
+ super.iso_short_name
282
327
  end
283
328
  ```
284
329
 
285
330
  ## Country Code in Emoji
286
331
 
287
- ``` ruby
332
+ ```ruby
288
333
  c = Country['MY']
289
334
  c.emoji_flag # => "🇲🇾"
290
335
  ```
@@ -295,7 +340,7 @@ c.emoji_flag # => "🇲🇾"
295
340
 
296
341
  Any additions should be directed upstream to [pkg-isocodes](https://salsa.debian.org/iso-codes-team/iso-codes)
297
342
 
298
- New Bugs can be filed upstream here https://salsa.debian.org/iso-codes-team/iso-codes/issues
343
+ Localized country name data is sourced from https://github.com/grosser/i18n_data (which is based on https://salsa.debian.org/iso-codes-team/iso-codes/). Issues regarding localized country names can be reported to https://github.com/grosser/i18n_data/issues or https://salsa.debian.org/iso-codes-team/iso-codes/issues
299
344
  If you need to correct an upstream translation please add it to the lib/countries/data/translations_corrections.yaml
300
345
 
301
346
  ```
@@ -307,7 +352,7 @@ If you need to correct an upstream translation please add it to the lib/countrie
307
352
  ```
308
353
 
309
354
  Any corrections can be applied in translations_corrections.yaml these will be injected during
310
- the next ```rake update_cache```
355
+ the next `rake update_cache`.
311
356
 
312
357
  * Fork the project.
313
358
  * Make your feature addition or bug fix.
@@ -320,12 +365,8 @@ the next ```rake update_cache```
320
365
 
321
366
  ## Copyright
322
367
 
323
- Copyright (c) 2016 hexorx. See LICENSE for details.
368
+ Copyright (c) 2012-2015 hexorx
369
+ Copyright (c) 2015-2021 hexorx, rposborne
370
+ Copyright (c) 2022 hexorx, rposborne, pmor
324
371
 
325
- [Teliax]: http://teliax.com
326
- [Centrex]: http://en.wikipedia.org/wiki/Centrex
327
- [CommonDataHub]: http://commondatahub.com
328
- [Currencies]: http://gemcutter.org/gems/currencies
329
- [Money]: http://gemcutter.org/gems/money
330
- [Liquid]: http://www.liquidmarkup.org/
331
- [country_select]: https://github.com/stefanpenner/country_select
372
+ See LICENSE for details.
data/Rakefile CHANGED
@@ -1,10 +1,17 @@
1
1
  #!/usr/bin/env rake
2
+ # frozen_string_literal: true
3
+
2
4
  require 'bundler/gem_tasks'
3
5
 
4
6
  require 'rake'
5
7
  require 'rspec/core/rake_task'
8
+ require 'yaml'
6
9
 
7
10
  ISO3166_ROOT_PATH = File.dirname(__FILE__)
11
+
12
+ # Enter your API Key enabled for Geocoding API and Places API
13
+ GOOGLE_API_KEY = 'ENTER API KEY'
14
+
8
15
  Dir.glob('lib/countries/tasks/*.rake').each { |r| load r }
9
16
 
10
17
  desc 'Run all examples'
@@ -14,39 +21,6 @@ end
14
21
 
15
22
  task default: [:spec]
16
23
 
17
- task :update_yaml_structure do
18
- require 'yaml'
19
-
20
- require 'pry'
21
-
22
- d = Dir['lib/countries/data/subdivisions/*.yaml']
23
- d.each do |file|
24
- puts "checking : #{file}"
25
- data = YAML.load_file(file)
26
-
27
- data = data.each_with_object({}) do |(k, subd), a|
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
- end
42
- File.open(file, 'w') { |f| f.write data.to_yaml }
43
- begin
44
- rescue
45
- puts "failed to read #{file}: #{$ERROR_INFO}"
46
- end
47
- end
48
- end
49
-
50
24
  desc 'Update CLDR subdivison data set'
51
25
  task :update_cldr_subdivison_data do
52
26
  require_relative './lib/countries/sources'
@@ -59,12 +33,15 @@ task :update_cache do
59
33
  require 'yaml'
60
34
  require 'i18n_data'
61
35
 
62
- codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
36
+ codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq.sort
63
37
  data = {}
64
38
 
65
- corrections = YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'translation_corrections.yaml')) || {}
39
+ corrections_file = File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'translation_corrections.yaml')
40
+ corrections = YAML.load_file(corrections_file) || {}
66
41
 
67
- language_keys = I18nData.languages.keys + ['zh_CN', 'zh_TW', 'zh_HK','bn_IN','pt_BR']
42
+ language_keys = I18nData.languages.keys + %w[zh_CN zh_TW zh_HK bn_IN pt_BR]
43
+ # Ignore locales that have bad data in i18n_data 0.16.0
44
+ language_keys -= %w[AY AM BA]
68
45
  language_keys.each do |locale|
69
46
  locale = locale.downcase
70
47
  begin
@@ -74,18 +51,19 @@ task :update_cache do
74
51
  end
75
52
 
76
53
  # Apply any known corrections to i18n_data
77
- unless corrections[locale].nil?
78
- corrections[locale].each do |alpha2, localized_name|
79
- local_names[alpha2] = localized_name
80
- end
54
+ corrections[locale]&.each do |alpha2, localized_name|
55
+ local_names[alpha2] = localized_name
81
56
  end
82
57
 
83
- File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', "#{locale.gsub(/_/, '-')}.json"), 'wb') { |f| f.write(local_names.to_json) }
58
+ out = File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', "#{locale.gsub(/_/, '-')}.json")
59
+ File.binwrite(out, local_names.to_json)
84
60
  end
85
61
 
86
62
  codes.each do |alpha2|
87
- data[alpha2] ||= YAML.load_file(File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml"))[alpha2]
63
+ country_file = File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml")
64
+ data[alpha2] ||= YAML.load_file(country_file)[alpha2]
88
65
  end
89
66
 
90
- File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries.json'), 'wb') { |f| f.write(data.to_json) }
67
+ out_file = File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries.json')
68
+ File.binwrite(out_file, data.to_json)
91
69
  end
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'countries'
data/countries.gemspec CHANGED
@@ -1,12 +1,18 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/countries/version', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('lib/countries/version', __dir__)
3
4
 
4
5
  Gem::Specification.new do |gem|
5
- gem.authors = ['Josh Robinson', 'Joe Corcoran', 'Russell Osborne']
6
- gem.email = ['hexorx@gmail.com', 'russell@burningpony.com']
6
+ gem.authors = ['Josh Robinson', 'Joe Corcoran', 'Russell Osborne', 'Pedro Moreira']
7
+ gem.email = ['hexorx@gmail.com', 'russell@burningpony.com', 'pedro@codecreations.tech']
7
8
  gem.description = 'All sorts of useful information about every country packaged as pretty little country objects. It includes data from ISO 3166'
8
9
  gem.summary = 'Gives you a country object full of all sorts of useful information.'
9
- gem.homepage = 'http://github.com/hexorx/countries'
10
+ gem.homepage = 'https://github.com/countries/countries'
11
+ gem.metadata = { 'bug_tracker_uri' => 'https://github.com/countries/countries/issues',
12
+ 'changelog_uri' => 'https://github.com/countries/countries/blob/master/CHANGELOG.md',
13
+ 'source_code_uri' => 'https://github.com/countries/countries',
14
+ 'wiki_uri' => 'https://github.com/countries/countries/wiki',
15
+ 'rubygems_mfa_required' => 'true' }
10
16
 
11
17
  gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
12
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
@@ -15,10 +21,11 @@ Gem::Specification.new do |gem|
15
21
  gem.version = Countries::VERSION.dup
16
22
  gem.license = 'MIT'
17
23
 
18
- gem.add_dependency('i18n_data', '~> 0.10.0')
19
- gem.add_dependency('unicode_utils', '~> 1.4')
24
+ gem.required_ruby_version = '>= 2.7'
25
+
26
+ gem.add_dependency('i18n_data', '~> 0.16.0')
20
27
  gem.add_dependency('sixarm_ruby_unaccent', '~> 1.1')
21
- gem.add_development_dependency('rspec', '>= 3')
22
28
  gem.add_development_dependency('activesupport', '>= 3')
23
29
  gem.add_development_dependency('nokogiri', '>= 1.8')
30
+ gem.add_development_dependency('rspec', '>= 3')
24
31
  end