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.
- checksums.yaml +4 -4
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/tests.yml +35 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +40 -1
- data/.rubocop_todo.yml +8 -41
- data/CHANGELOG.md +218 -2
- data/Gemfile +9 -2
- data/LICENSE +3 -1
- data/README.markdown +120 -79
- data/Rakefile +21 -43
- data/bin/console +1 -0
- data/countries.gemspec +15 -8
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/cache/locales/ab.json +1 -1
- data/lib/countries/cache/locales/af.json +1 -1
- data/lib/countries/cache/locales/ak.json +1 -1
- data/lib/countries/cache/locales/am.json +1 -1
- data/lib/countries/cache/locales/an.json +1 -1
- data/lib/countries/cache/locales/ar.json +1 -1
- data/lib/countries/cache/locales/as.json +1 -1
- data/lib/countries/cache/locales/ay.json +1 -1
- data/lib/countries/cache/locales/az.json +1 -1
- data/lib/countries/cache/locales/ba.json +1 -1
- data/lib/countries/cache/locales/be.json +1 -1
- data/lib/countries/cache/locales/bg.json +1 -1
- data/lib/countries/cache/locales/bi.json +1 -1
- data/lib/countries/cache/locales/bn-in.json +1 -1
- data/lib/countries/cache/locales/bn.json +1 -1
- data/lib/countries/cache/locales/br.json +1 -1
- data/lib/countries/cache/locales/bs.json +1 -1
- data/lib/countries/cache/locales/ca.json +1 -1
- data/lib/countries/cache/locales/ce.json +1 -1
- data/lib/countries/cache/locales/ch.json +1 -1
- data/lib/countries/cache/locales/cs.json +1 -1
- data/lib/countries/cache/locales/cv.json +1 -1
- data/lib/countries/cache/locales/cy.json +1 -1
- data/lib/countries/cache/locales/da.json +1 -1
- data/lib/countries/cache/locales/de.json +1 -1
- data/lib/countries/cache/locales/dv.json +1 -1
- data/lib/countries/cache/locales/dz.json +1 -1
- data/lib/countries/cache/locales/ee.json +1 -1
- data/lib/countries/cache/locales/el.json +1 -1
- data/lib/countries/cache/locales/en.json +1 -1
- data/lib/countries/cache/locales/eo.json +1 -1
- data/lib/countries/cache/locales/es.json +1 -1
- data/lib/countries/cache/locales/et.json +1 -1
- data/lib/countries/cache/locales/eu.json +1 -1
- data/lib/countries/cache/locales/fa.json +1 -1
- data/lib/countries/cache/locales/ff.json +1 -1
- data/lib/countries/cache/locales/fi.json +1 -1
- data/lib/countries/cache/locales/fo.json +1 -1
- data/lib/countries/cache/locales/fr.json +1 -1
- data/lib/countries/cache/locales/fy.json +1 -1
- data/lib/countries/cache/locales/ga.json +1 -1
- data/lib/countries/cache/locales/gl.json +1 -1
- data/lib/countries/cache/locales/gn.json +1 -1
- data/lib/countries/cache/locales/gu.json +1 -1
- data/lib/countries/cache/locales/gv.json +1 -1
- data/lib/countries/cache/locales/ha.json +1 -1
- data/lib/countries/cache/locales/he.json +1 -1
- data/lib/countries/cache/locales/hi.json +1 -1
- data/lib/countries/cache/locales/hr.json +1 -1
- data/lib/countries/cache/locales/ht.json +1 -1
- data/lib/countries/cache/locales/hu.json +1 -1
- data/lib/countries/cache/locales/hy.json +1 -1
- data/lib/countries/cache/locales/ia.json +1 -1
- data/lib/countries/cache/locales/id.json +1 -1
- data/lib/countries/cache/locales/io.json +1 -1
- data/lib/countries/cache/locales/is.json +1 -1
- data/lib/countries/cache/locales/it.json +1 -1
- data/lib/countries/cache/locales/iu.json +1 -1
- data/lib/countries/cache/locales/ja.json +1 -1
- data/lib/countries/cache/locales/ka.json +1 -1
- data/lib/countries/cache/locales/ki.json +1 -1
- data/lib/countries/cache/locales/kk.json +1 -1
- data/lib/countries/cache/locales/kl.json +1 -1
- data/lib/countries/cache/locales/km.json +1 -1
- data/lib/countries/cache/locales/kn.json +1 -1
- data/lib/countries/cache/locales/ko.json +1 -1
- data/lib/countries/cache/locales/ku.json +1 -1
- data/lib/countries/cache/locales/kv.json +1 -1
- data/lib/countries/cache/locales/kw.json +1 -1
- data/lib/countries/cache/locales/ky.json +1 -1
- data/lib/countries/cache/locales/lo.json +1 -1
- data/lib/countries/cache/locales/lt.json +1 -1
- data/lib/countries/cache/locales/lv.json +1 -1
- data/lib/countries/cache/locales/mi.json +1 -1
- data/lib/countries/cache/locales/mk.json +1 -1
- data/lib/countries/cache/locales/ml.json +1 -1
- data/lib/countries/cache/locales/mn.json +1 -1
- data/lib/countries/cache/locales/mr.json +1 -1
- data/lib/countries/cache/locales/ms.json +1 -1
- data/lib/countries/cache/locales/mt.json +1 -1
- data/lib/countries/cache/locales/my.json +1 -1
- data/lib/countries/cache/locales/na.json +1 -1
- data/lib/countries/cache/locales/nb.json +1 -1
- data/lib/countries/cache/locales/ne.json +1 -1
- data/lib/countries/cache/locales/nl.json +1 -1
- data/lib/countries/cache/locales/nn.json +1 -1
- data/lib/countries/cache/locales/nv.json +1 -1
- data/lib/countries/cache/locales/oc.json +1 -1
- data/lib/countries/cache/locales/or.json +1 -1
- data/lib/countries/cache/locales/pa.json +1 -1
- data/lib/countries/cache/locales/pi.json +1 -1
- data/lib/countries/cache/locales/pl.json +1 -1
- data/lib/countries/cache/locales/ps.json +1 -1
- data/lib/countries/cache/locales/pt-br.json +1 -1
- data/lib/countries/cache/locales/pt.json +1 -1
- data/lib/countries/cache/locales/ro.json +1 -1
- data/lib/countries/cache/locales/ru.json +1 -1
- data/lib/countries/cache/locales/rw.json +1 -1
- data/lib/countries/cache/locales/sc.json +1 -1
- data/lib/countries/cache/locales/sd.json +1 -1
- data/lib/countries/cache/locales/si.json +1 -1
- data/lib/countries/cache/locales/sk.json +1 -1
- data/lib/countries/cache/locales/sl.json +1 -1
- data/lib/countries/cache/locales/so.json +1 -1
- data/lib/countries/cache/locales/sq.json +1 -1
- data/lib/countries/cache/locales/sr.json +1 -1
- data/lib/countries/cache/locales/sv.json +1 -1
- data/lib/countries/cache/locales/sw.json +1 -1
- data/lib/countries/cache/locales/ta.json +1 -1
- data/lib/countries/cache/locales/te.json +1 -1
- data/lib/countries/cache/locales/tg.json +1 -1
- data/lib/countries/cache/locales/th.json +1 -1
- data/lib/countries/cache/locales/ti.json +1 -1
- data/lib/countries/cache/locales/tk.json +1 -1
- data/lib/countries/cache/locales/tl.json +1 -1
- data/lib/countries/cache/locales/tr.json +1 -1
- data/lib/countries/cache/locales/tt.json +1 -1
- data/lib/countries/cache/locales/ug.json +1 -1
- data/lib/countries/cache/locales/uk.json +1 -1
- data/lib/countries/cache/locales/ur.json +1 -1
- data/lib/countries/cache/locales/uz.json +1 -1
- data/lib/countries/cache/locales/ve.json +1 -1
- data/lib/countries/cache/locales/vi.json +1 -1
- data/lib/countries/cache/locales/wa.json +1 -1
- data/lib/countries/cache/locales/wo.json +1 -1
- data/lib/countries/cache/locales/xh.json +1 -1
- data/lib/countries/cache/locales/yo.json +1 -1
- data/lib/countries/cache/locales/zh-cn.json +1 -1
- data/lib/countries/cache/locales/zh-hk.json +1 -1
- data/lib/countries/cache/locales/zh-tw.json +1 -1
- data/lib/countries/cache/locales/zh.json +1 -1
- data/lib/countries/cache/locales/zu.json +1 -1
- data/lib/countries/configuration.rb +15 -0
- data/lib/countries/country/class_methods.rb +25 -83
- data/lib/countries/country/currency_methods.rb +6 -1
- data/lib/countries/country/emoji.rb +5 -3
- data/lib/countries/country/finder_methods.rb +81 -0
- data/lib/countries/country.rb +115 -7
- data/lib/countries/data/countries/AD.yaml +28 -28
- data/lib/countries/data/countries/AE.yaml +32 -33
- data/lib/countries/data/countries/AF.yaml +32 -32
- data/lib/countries/data/countries/AG.yaml +29 -30
- data/lib/countries/data/countries/AI.yaml +27 -27
- data/lib/countries/data/countries/AL.yaml +29 -29
- data/lib/countries/data/countries/AM.yaml +30 -30
- data/lib/countries/data/countries/AO.yaml +27 -28
- data/lib/countries/data/countries/AQ.yaml +26 -27
- data/lib/countries/data/countries/AR.yaml +30 -30
- data/lib/countries/data/countries/AS.yaml +31 -31
- data/lib/countries/data/countries/AT.yaml +36 -36
- data/lib/countries/data/countries/AU.yaml +33 -33
- data/lib/countries/data/countries/AW.yaml +25 -26
- data/lib/countries/data/countries/AX.yaml +27 -27
- data/lib/countries/data/countries/AZ.yaml +30 -30
- data/lib/countries/data/countries/BA.yaml +32 -32
- data/lib/countries/data/countries/BB.yaml +28 -28
- data/lib/countries/data/countries/BD.yaml +28 -28
- data/lib/countries/data/countries/BE.yaml +41 -41
- data/lib/countries/data/countries/BF.yaml +29 -30
- data/lib/countries/data/countries/BG.yaml +36 -36
- data/lib/countries/data/countries/BH.yaml +29 -29
- data/lib/countries/data/countries/BI.yaml +29 -30
- data/lib/countries/data/countries/BJ.yaml +27 -28
- data/lib/countries/data/countries/BL.yaml +25 -25
- data/lib/countries/data/countries/BM.yaml +29 -29
- data/lib/countries/data/countries/BN.yaml +26 -26
- data/lib/countries/data/countries/BO.yaml +31 -32
- data/lib/countries/data/countries/BQ.yaml +28 -29
- data/lib/countries/data/countries/BR.yaml +35 -35
- data/lib/countries/data/countries/BS.yaml +27 -28
- data/lib/countries/data/countries/BT.yaml +28 -28
- data/lib/countries/data/countries/BV.yaml +26 -27
- data/lib/countries/data/countries/BW.yaml +29 -30
- data/lib/countries/data/countries/BY.yaml +30 -30
- data/lib/countries/data/countries/BZ.yaml +28 -29
- data/lib/countries/data/countries/CA.yaml +30 -30
- data/lib/countries/data/countries/CC.yaml +29 -29
- data/lib/countries/data/countries/CD.yaml +35 -36
- data/lib/countries/data/countries/CF.yaml +29 -30
- data/lib/countries/data/countries/CG.yaml +29 -30
- data/lib/countries/data/countries/CH.yaml +40 -40
- data/lib/countries/data/countries/CI.yaml +27 -28
- data/lib/countries/data/countries/CK.yaml +27 -28
- data/lib/countries/data/countries/CL.yaml +33 -28
- data/lib/countries/data/countries/CM.yaml +29 -30
- data/lib/countries/data/countries/CN.yaml +28 -28
- data/lib/countries/data/countries/CO.yaml +28 -28
- data/lib/countries/data/countries/CR.yaml +28 -28
- data/lib/countries/data/countries/CU.yaml +27 -27
- data/lib/countries/data/countries/CV.yaml +28 -28
- data/lib/countries/data/countries/CW.yaml +25 -26
- data/lib/countries/data/countries/CX.yaml +30 -30
- data/lib/countries/data/countries/CY.yaml +41 -41
- data/lib/countries/data/countries/CZ.yaml +38 -38
- data/lib/countries/data/countries/DE.yaml +36 -36
- data/lib/countries/data/countries/DJ.yaml +29 -30
- data/lib/countries/data/countries/DK.yaml +35 -35
- data/lib/countries/data/countries/DM.yaml +26 -27
- data/lib/countries/data/countries/DO.yaml +28 -28
- data/lib/countries/data/countries/DZ.yaml +28 -28
- data/lib/countries/data/countries/EC.yaml +28 -28
- data/lib/countries/data/countries/EE.yaml +36 -36
- data/lib/countries/data/countries/EG.yaml +28 -28
- data/lib/countries/data/countries/EH.yaml +30 -30
- data/lib/countries/data/countries/ER.yaml +31 -32
- data/lib/countries/data/countries/ES.yaml +36 -36
- data/lib/countries/data/countries/ET.yaml +28 -28
- data/lib/countries/data/countries/FI.yaml +39 -39
- data/lib/countries/data/countries/FJ.yaml +33 -34
- data/lib/countries/data/countries/FK.yaml +29 -29
- data/lib/countries/data/countries/FM.yaml +28 -28
- data/lib/countries/data/countries/FO.yaml +28 -28
- data/lib/countries/data/countries/FR.yaml +37 -37
- data/lib/countries/data/countries/GA.yaml +27 -28
- data/lib/countries/data/countries/GB.yaml +41 -36
- data/lib/countries/data/countries/GD.yaml +26 -27
- data/lib/countries/data/countries/GE.yaml +28 -28
- data/lib/countries/data/countries/GF.yaml +29 -29
- data/lib/countries/data/countries/GG.yaml +31 -31
- data/lib/countries/data/countries/GH.yaml +27 -28
- data/lib/countries/data/countries/GI.yaml +28 -28
- data/lib/countries/data/countries/GL.yaml +29 -29
- data/lib/countries/data/countries/GM.yaml +27 -28
- data/lib/countries/data/countries/GN.yaml +30 -30
- data/lib/countries/data/countries/GP.yaml +27 -27
- data/lib/countries/data/countries/GQ.yaml +29 -30
- data/lib/countries/data/countries/GR.yaml +37 -37
- data/lib/countries/data/countries/GS.yaml +29 -29
- data/lib/countries/data/countries/GT.yaml +28 -28
- data/lib/countries/data/countries/GU.yaml +31 -31
- data/lib/countries/data/countries/GW.yaml +28 -28
- data/lib/countries/data/countries/GY.yaml +26 -27
- data/lib/countries/data/countries/HK.yaml +29 -30
- data/lib/countries/data/countries/HM.yaml +28 -28
- data/lib/countries/data/countries/HN.yaml +28 -28
- data/lib/countries/data/countries/HR.yaml +37 -37
- data/lib/countries/data/countries/HT.yaml +29 -29
- data/lib/countries/data/countries/HU.yaml +37 -37
- data/lib/countries/data/countries/ID.yaml +28 -28
- data/lib/countries/data/countries/IE.yaml +39 -39
- data/lib/countries/data/countries/IL.yaml +35 -30
- data/lib/countries/data/countries/IM.yaml +31 -31
- data/lib/countries/data/countries/IN.yaml +30 -30
- data/lib/countries/data/countries/IO.yaml +28 -28
- data/lib/countries/data/countries/IQ.yaml +28 -28
- data/lib/countries/data/countries/IR.yaml +28 -28
- data/lib/countries/data/countries/IS.yaml +35 -35
- data/lib/countries/data/countries/IT.yaml +36 -36
- data/lib/countries/data/countries/JE.yaml +26 -26
- data/lib/countries/data/countries/JM.yaml +28 -29
- data/lib/countries/data/countries/JO.yaml +28 -28
- data/lib/countries/data/countries/JP.yaml +28 -28
- data/lib/countries/data/countries/KE.yaml +30 -30
- data/lib/countries/data/countries/KG.yaml +30 -30
- data/lib/countries/data/countries/KH.yaml +28 -28
- data/lib/countries/data/countries/KI.yaml +27 -28
- data/lib/countries/data/countries/KM.yaml +29 -30
- data/lib/countries/data/countries/KN.yaml +28 -29
- data/lib/countries/data/countries/KP.yaml +28 -28
- data/lib/countries/data/countries/KR.yaml +28 -28
- data/lib/countries/data/countries/KW.yaml +28 -28
- data/lib/countries/data/countries/KY.yaml +29 -29
- data/lib/countries/data/countries/KZ.yaml +30 -30
- data/lib/countries/data/countries/LA.yaml +28 -28
- data/lib/countries/data/countries/LB.yaml +30 -30
- data/lib/countries/data/countries/LC.yaml +28 -29
- data/lib/countries/data/countries/LI.yaml +27 -27
- data/lib/countries/data/countries/LK.yaml +28 -28
- data/lib/countries/data/countries/LR.yaml +28 -28
- data/lib/countries/data/countries/LS.yaml +28 -28
- data/lib/countries/data/countries/LT.yaml +37 -37
- data/lib/countries/data/countries/LU.yaml +39 -39
- data/lib/countries/data/countries/LV.yaml +42 -36
- data/lib/countries/data/countries/LY.yaml +27 -28
- data/lib/countries/data/countries/MA.yaml +28 -28
- data/lib/countries/data/countries/MC.yaml +28 -28
- data/lib/countries/data/countries/MD.yaml +28 -28
- data/lib/countries/data/countries/ME.yaml +34 -34
- data/lib/countries/data/countries/MF.yaml +29 -29
- data/lib/countries/data/countries/MG.yaml +30 -30
- data/lib/countries/data/countries/MH.yaml +30 -30
- data/lib/countries/data/countries/MK.yaml +28 -28
- data/lib/countries/data/countries/ML.yaml +27 -28
- data/lib/countries/data/countries/MM.yaml +27 -27
- data/lib/countries/data/countries/MN.yaml +28 -28
- data/lib/countries/data/countries/MO.yaml +28 -29
- data/lib/countries/data/countries/MP.yaml +31 -31
- data/lib/countries/data/countries/MQ.yaml +27 -27
- data/lib/countries/data/countries/MR.yaml +29 -30
- data/lib/countries/data/countries/MS.yaml +26 -27
- data/lib/countries/data/countries/MT.yaml +38 -38
- data/lib/countries/data/countries/MU.yaml +28 -28
- data/lib/countries/data/countries/MV.yaml +28 -28
- data/lib/countries/data/countries/MW.yaml +29 -30
- data/lib/countries/data/countries/MX.yaml +33 -33
- data/lib/countries/data/countries/MY.yaml +30 -30
- data/lib/countries/data/countries/MZ.yaml +28 -28
- data/lib/countries/data/countries/NA.yaml +30 -30
- data/lib/countries/data/countries/NC.yaml +29 -29
- data/lib/countries/data/countries/NE.yaml +28 -28
- data/lib/countries/data/countries/NF.yaml +29 -29
- data/lib/countries/data/countries/NG.yaml +34 -34
- data/lib/countries/data/countries/NI.yaml +28 -28
- data/lib/countries/data/countries/NL.yaml +36 -36
- data/lib/countries/data/countries/NO.yaml +36 -36
- data/lib/countries/data/countries/NP.yaml +32 -32
- data/lib/countries/data/countries/NR.yaml +27 -28
- data/lib/countries/data/countries/NU.yaml +25 -26
- data/lib/countries/data/countries/NZ.yaml +35 -35
- data/lib/countries/data/countries/OM.yaml +28 -28
- data/lib/countries/data/countries/PA.yaml +27 -28
- data/lib/countries/data/countries/PE.yaml +28 -28
- data/lib/countries/data/countries/PF.yaml +29 -29
- data/lib/countries/data/countries/PG.yaml +28 -28
- data/lib/countries/data/countries/PH.yaml +35 -35
- data/lib/countries/data/countries/PK.yaml +30 -30
- data/lib/countries/data/countries/PL.yaml +37 -37
- data/lib/countries/data/countries/PM.yaml +29 -29
- data/lib/countries/data/countries/PN.yaml +27 -27
- data/lib/countries/data/countries/PR.yaml +30 -30
- data/lib/countries/data/countries/PS.yaml +31 -32
- data/lib/countries/data/countries/PT.yaml +34 -34
- data/lib/countries/data/countries/PW.yaml +26 -26
- data/lib/countries/data/countries/PY.yaml +30 -30
- data/lib/countries/data/countries/QA.yaml +27 -28
- data/lib/countries/data/countries/RE.yaml +28 -28
- data/lib/countries/data/countries/RO.yaml +37 -37
- data/lib/countries/data/countries/RS.yaml +28 -28
- data/lib/countries/data/countries/RU.yaml +28 -28
- data/lib/countries/data/countries/RW.yaml +31 -32
- data/lib/countries/data/countries/SA.yaml +33 -28
- data/lib/countries/data/countries/SB.yaml +28 -29
- data/lib/countries/data/countries/SC.yaml +29 -30
- data/lib/countries/data/countries/SD.yaml +30 -30
- data/lib/countries/data/countries/SE.yaml +37 -37
- data/lib/countries/data/countries/SG.yaml +32 -32
- data/lib/countries/data/countries/SH.yaml +29 -29
- data/lib/countries/data/countries/SI.yaml +36 -36
- data/lib/countries/data/countries/SJ.yaml +29 -29
- data/lib/countries/data/countries/SK.yaml +36 -36
- data/lib/countries/data/countries/SL.yaml +27 -28
- data/lib/countries/data/countries/SM.yaml +28 -28
- data/lib/countries/data/countries/SN.yaml +28 -28
- data/lib/countries/data/countries/SO.yaml +30 -30
- data/lib/countries/data/countries/SR.yaml +26 -27
- data/lib/countries/data/countries/SS.yaml +29 -30
- data/lib/countries/data/countries/ST.yaml +27 -28
- data/lib/countries/data/countries/SV.yaml +27 -27
- data/lib/countries/data/countries/SX.yaml +28 -29
- data/lib/countries/data/countries/SY.yaml +27 -28
- data/lib/countries/data/countries/SZ.yaml +30 -30
- data/lib/countries/data/countries/TC.yaml +30 -30
- data/lib/countries/data/countries/TD.yaml +29 -30
- data/lib/countries/data/countries/TF.yaml +30 -31
- data/lib/countries/data/countries/TG.yaml +27 -28
- data/lib/countries/data/countries/TH.yaml +34 -33
- data/lib/countries/data/countries/TJ.yaml +30 -30
- data/lib/countries/data/countries/TK.yaml +27 -28
- data/lib/countries/data/countries/TL.yaml +27 -28
- data/lib/countries/data/countries/TM.yaml +30 -30
- data/lib/countries/data/countries/TN.yaml +30 -30
- data/lib/countries/data/countries/TO.yaml +29 -30
- data/lib/countries/data/countries/TR.yaml +28 -28
- data/lib/countries/data/countries/TT.yaml +28 -29
- data/lib/countries/data/countries/TV.yaml +27 -28
- data/lib/countries/data/countries/TW.yaml +28 -28
- data/lib/countries/data/countries/TZ.yaml +30 -30
- data/lib/countries/data/countries/UA.yaml +34 -34
- data/lib/countries/data/countries/UG.yaml +29 -30
- data/lib/countries/data/countries/UM.yaml +29 -29
- data/lib/countries/data/countries/US.yaml +29 -28
- data/lib/countries/data/countries/UY.yaml +28 -28
- data/lib/countries/data/countries/UZ.yaml +30 -30
- data/lib/countries/data/countries/VA.yaml +31 -31
- data/lib/countries/data/countries/VC.yaml +29 -29
- data/lib/countries/data/countries/VE.yaml +28 -28
- data/lib/countries/data/countries/VG.yaml +30 -30
- data/lib/countries/data/countries/VI.yaml +28 -28
- data/lib/countries/data/countries/VN.yaml +34 -28
- data/lib/countries/data/countries/VU.yaml +31 -32
- data/lib/countries/data/countries/WF.yaml +29 -29
- data/lib/countries/data/countries/WS.yaml +29 -30
- data/lib/countries/data/countries/YE.yaml +27 -28
- data/lib/countries/data/countries/YT.yaml +26 -26
- data/lib/countries/data/countries/ZA.yaml +40 -40
- data/lib/countries/data/countries/ZM.yaml +28 -28
- data/lib/countries/data/countries/ZW.yaml +31 -32
- data/lib/countries/data/subdivisions/AD.yaml +35 -28
- data/lib/countries/data/subdivisions/AE.yaml +154 -63
- data/lib/countries/data/subdivisions/AF.yaml +605 -300
- data/lib/countries/data/subdivisions/AG.yaml +149 -67
- data/lib/countries/data/subdivisions/AI.yaml +57 -43
- data/lib/countries/data/subdivisions/AL.yaml +252 -468
- data/lib/countries/data/subdivisions/AM.yaml +236 -88
- data/lib/countries/data/subdivisions/AO.yaml +344 -144
- data/lib/countries/data/subdivisions/AR.yaml +450 -187
- data/lib/countries/data/subdivisions/AT.yaml +202 -72
- data/lib/countries/data/subdivisions/AU.yaml +212 -64
- data/lib/countries/data/subdivisions/AZ.yaml +1550 -592
- data/lib/countries/data/subdivisions/BA.yaml +189 -16
- data/lib/countries/data/subdivisions/BB.yaml +190 -88
- data/lib/countries/data/subdivisions/BD.yaml +1192 -519
- data/lib/countries/data/subdivisions/BE.yaml +278 -88
- data/lib/countries/data/subdivisions/BF.yaml +993 -366
- data/lib/countries/data/subdivisions/BG.yaml +600 -219
- data/lib/countries/data/subdivisions/BH.yaml +72 -35
- data/lib/countries/data/subdivisions/BI.yaml +298 -123
- data/lib/countries/data/subdivisions/BJ.yaml +226 -96
- data/lib/countries/data/subdivisions/BM.yaml +44 -33
- data/lib/countries/data/subdivisions/BN.yaml +63 -32
- data/lib/countries/data/subdivisions/BO.yaml +157 -72
- data/lib/countries/data/subdivisions/BQ.yaml +63 -24
- data/lib/countries/data/subdivisions/BR.yaml +689 -216
- data/lib/countries/data/subdivisions/BS.yaml +625 -108
- data/lib/countries/data/subdivisions/BT.yaml +346 -160
- data/lib/countries/data/subdivisions/BW.yaml +294 -72
- data/lib/countries/data/subdivisions/BY.yaml +140 -51
- data/lib/countries/data/subdivisions/BZ.yaml +97 -48
- data/lib/countries/data/subdivisions/CA.yaml +358 -105
- data/lib/countries/data/subdivisions/CD.yaml +451 -68
- data/lib/countries/data/subdivisions/CF.yaml +291 -136
- data/lib/countries/data/subdivisions/CG.yaml +217 -88
- data/lib/countries/data/subdivisions/CH.yaml +593 -208
- data/lib/countries/data/subdivisions/CI.yaml +431 -66
- data/lib/countries/data/subdivisions/CK.yaml +44 -33
- data/lib/countries/data/subdivisions/CL.yaml +262 -132
- data/lib/countries/data/subdivisions/CM.yaml +190 -80
- data/lib/countries/data/subdivisions/CN.yaml +618 -46
- data/lib/countries/data/subdivisions/CO.yaml +643 -264
- data/lib/countries/data/subdivisions/CR.yaml +119 -56
- data/lib/countries/data/subdivisions/CU.yaml +268 -128
- data/lib/countries/data/subdivisions/CV.yaml +414 -126
- data/lib/countries/data/subdivisions/CY.yaml +102 -48
- data/lib/countries/data/subdivisions/CZ.yaml +1035 -1349
- data/lib/countries/data/subdivisions/DE.yaml +484 -144
- data/lib/countries/data/subdivisions/DJ.yaml +110 -48
- data/lib/countries/data/subdivisions/DK.yaml +110 -241
- data/lib/countries/data/subdivisions/DM.yaml +159 -80
- data/lib/countries/data/subdivisions/DO.yaml +660 -248
- data/lib/countries/data/subdivisions/DZ.yaml +809 -384
- data/lib/countries/data/subdivisions/EC.yaml +391 -192
- data/lib/countries/data/subdivisions/EE.yaml +653 -146
- data/lib/countries/data/subdivisions/EG.yaml +472 -216
- data/lib/countries/data/subdivisions/EH.yaml +20 -12
- data/lib/countries/data/subdivisions/ER.yaml +109 -48
- data/lib/countries/data/subdivisions/ES.yaml +1738 -435
- data/lib/countries/data/subdivisions/ET.yaml +207 -88
- data/lib/countries/data/subdivisions/FI.yaml +111 -124
- data/lib/countries/data/subdivisions/FJ.yaml +314 -40
- data/lib/countries/data/subdivisions/FM.yaml +63 -32
- data/lib/countries/data/subdivisions/FR.yaml +2826 -1280
- data/lib/countries/data/subdivisions/GA.yaml +159 -72
- data/lib/countries/data/subdivisions/GB.yaml +4980 -1771
- data/lib/countries/data/subdivisions/GD.yaml +114 -56
- data/lib/countries/data/subdivisions/GE.yaml +238 -96
- data/lib/countries/data/subdivisions/GH.yaml +266 -79
- data/lib/countries/data/subdivisions/GL.yaml +89 -0
- data/lib/countries/data/subdivisions/GM.yaml +124 -48
- data/lib/countries/data/subdivisions/GN.yaml +711 -274
- data/lib/countries/data/subdivisions/GQ.yaml +144 -72
- data/lib/countries/data/subdivisions/GR.yaml +297 -739
- data/lib/countries/data/subdivisions/GT.yaml +351 -176
- data/lib/countries/data/subdivisions/GW.yaml +192 -72
- data/lib/countries/data/subdivisions/GY.yaml +163 -80
- data/lib/countries/data/subdivisions/HN.yaml +274 -144
- data/lib/countries/data/subdivisions/HR.yaml +429 -168
- data/lib/countries/data/subdivisions/HT.yaml +179 -72
- data/lib/countries/data/subdivisions/HU.yaml +855 -403
- data/lib/countries/data/subdivisions/ID.yaml +2377 -1859
- data/lib/countries/data/subdivisions/IE.yaml +831 -440
- data/lib/countries/data/subdivisions/IL.yaml +114 -48
- data/lib/countries/data/subdivisions/IN.yaml +1006 -298
- data/lib/countries/data/subdivisions/IQ.yaml +316 -139
- data/lib/countries/data/subdivisions/IR.yaml +597 -239
- data/lib/countries/data/subdivisions/IS.yaml +445 -67
- data/lib/countries/data/subdivisions/IT.yaml +3435 -2211
- data/lib/countries/data/subdivisions/JM.yaml +243 -112
- data/lib/countries/data/subdivisions/JO.yaml +193 -96
- data/lib/countries/data/subdivisions/JP.yaml +950 -376
- data/lib/countries/data/subdivisions/KE.yaml +928 -273
- data/lib/countries/data/subdivisions/KG.yaml +188 -64
- data/lib/countries/data/subdivisions/KH.yaml +437 -192
- data/lib/countries/data/subdivisions/KI.yaml +57 -24
- data/lib/countries/data/subdivisions/KM.yaml +49 -24
- data/lib/countries/data/subdivisions/KN.yaml +308 -112
- data/lib/countries/data/subdivisions/KP.yaml +365 -57
- data/lib/countries/data/subdivisions/KR.yaml +393 -128
- data/lib/countries/data/subdivisions/KW.yaml +87 -48
- data/lib/countries/data/subdivisions/KZ.yaml +362 -135
- data/lib/countries/data/subdivisions/LA.yaml +300 -145
- data/lib/countries/data/subdivisions/LB.yaml +134 -48
- data/lib/countries/data/subdivisions/LC.yaml +166 -0
- data/lib/countries/data/subdivisions/LI.yaml +186 -88
- data/lib/countries/data/subdivisions/LK.yaml +544 -200
- data/lib/countries/data/subdivisions/LR.yaml +252 -110
- data/lib/countries/data/subdivisions/LS.yaml +149 -80
- data/lib/countries/data/subdivisions/LT.yaml +1042 -80
- data/lib/countries/data/subdivisions/LU.yaml +280 -146
- data/lib/countries/data/subdivisions/LV.yaml +766 -3582
- data/lib/countries/data/subdivisions/LY.yaml +339 -162
- data/lib/countries/data/subdivisions/MA.yaml +1443 -484
- data/lib/countries/data/subdivisions/MC.yaml +250 -0
- data/lib/countries/data/subdivisions/MD.yaml +1103 -558
- data/lib/countries/data/subdivisions/ME.yaml +425 -168
- data/lib/countries/data/subdivisions/MG.yaml +93 -48
- data/lib/countries/data/subdivisions/MH.yaml +422 -199
- data/lib/countries/data/subdivisions/MK.yaml +3556 -3147
- data/lib/countries/data/subdivisions/ML.yaml +187 -71
- data/lib/countries/data/subdivisions/MM.yaml +287 -112
- data/lib/countries/data/subdivisions/MN.yaml +421 -176
- data/lib/countries/data/subdivisions/MR.yaml +245 -99
- data/lib/countries/data/subdivisions/MT.yaml +1059 -544
- data/lib/countries/data/subdivisions/MU.yaml +317 -131
- data/lib/countries/data/subdivisions/MV.yaml +457 -163
- data/lib/countries/data/subdivisions/MW.yaml +537 -216
- data/lib/countries/data/subdivisions/MX.yaml +709 -256
- data/lib/countries/data/subdivisions/MY.yaml +336 -128
- data/lib/countries/data/subdivisions/MZ.yaml +191 -83
- data/lib/countries/data/subdivisions/NA.yaml +220 -107
- data/lib/countries/data/subdivisions/NE.yaml +170 -64
- data/lib/countries/data/subdivisions/NG.yaml +870 -296
- data/lib/countries/data/subdivisions/NI.yaml +260 -136
- data/lib/countries/data/subdivisions/NL.yaml +381 -96
- data/lib/countries/data/subdivisions/NO.yaml +633 -1095
- data/lib/countries/data/subdivisions/NP.yaml +383 -112
- data/lib/countries/data/subdivisions/NR.yaml +260 -112
- data/lib/countries/data/subdivisions/NZ.yaml +340 -197
- data/lib/countries/data/subdivisions/OM.yaml +202 -52
- data/lib/countries/data/subdivisions/PA.yaml +203 -99
- data/lib/countries/data/subdivisions/PE.yaml +418 -208
- data/lib/countries/data/subdivisions/PG.yaml +381 -155
- data/lib/countries/data/subdivisions/PH.yaml +1855 -662
- data/lib/countries/data/subdivisions/PK.yaml +185 -54
- data/lib/countries/data/subdivisions/PL.yaml +83 -32
- data/lib/countries/data/subdivisions/PS.yaml +257 -0
- data/lib/countries/data/subdivisions/PT.yaml +355 -173
- data/lib/countries/data/subdivisions/PW.yaml +269 -128
- data/lib/countries/data/subdivisions/PY.yaml +321 -144
- data/lib/countries/data/subdivisions/QA.yaml +168 -65
- data/lib/countries/data/subdivisions/RO.yaml +729 -336
- data/lib/countries/data/subdivisions/RS.yaml +589 -240
- data/lib/countries/data/subdivisions/RU.yaml +1875 -665
- data/lib/countries/data/subdivisions/RW.yaml +102 -40
- data/lib/countries/data/subdivisions/SA.yaml +234 -104
- data/lib/countries/data/subdivisions/SB.yaml +169 -80
- data/lib/countries/data/subdivisions/SC.yaml +464 -184
- data/lib/countries/data/subdivisions/SD.yaml +163 -22
- data/lib/countries/data/subdivisions/SE.yaml +435 -237
- data/lib/countries/data/subdivisions/SG.yaml +71 -49
- data/lib/countries/data/subdivisions/SH.yaml +67 -14
- data/lib/countries/data/subdivisions/SI.yaml +3570 -1549
- data/lib/countries/data/subdivisions/SJ.yaml +8 -6
- data/lib/countries/data/subdivisions/SK.yaml +129 -64
- data/lib/countries/data/subdivisions/SL.yaml +80 -31
- data/lib/countries/data/subdivisions/SM.yaml +159 -72
- data/lib/countries/data/subdivisions/SN.yaml +233 -88
- data/lib/countries/data/subdivisions/SO.yaml +311 -144
- data/lib/countries/data/subdivisions/SR.yaml +158 -80
- data/lib/countries/data/subdivisions/SS.yaml +196 -0
- data/lib/countries/data/subdivisions/ST.yaml +55 -16
- data/lib/countries/data/subdivisions/SV.yaml +231 -112
- data/lib/countries/data/subdivisions/SY.yaml +220 -112
- data/lib/countries/data/subdivisions/SZ.yaml +65 -32
- data/lib/countries/data/subdivisions/TD.yaml +409 -139
- data/lib/countries/data/subdivisions/TG.yaml +75 -40
- data/lib/countries/data/subdivisions/TH.yaml +1451 -616
- data/lib/countries/data/subdivisions/TJ.yaml +100 -24
- data/lib/countries/data/subdivisions/TK.yaml +12 -9
- data/lib/countries/data/subdivisions/TL.yaml +209 -104
- data/lib/countries/data/subdivisions/TM.yaml +116 -40
- data/lib/countries/data/subdivisions/TN.yaml +412 -192
- data/lib/countries/data/subdivisions/TO.yaml +75 -40
- data/lib/countries/data/subdivisions/TR.yaml +1817 -648
- data/lib/countries/data/subdivisions/TT.yaml +296 -113
- data/lib/countries/data/subdivisions/TV.yaml +133 -59
- data/lib/countries/data/subdivisions/TW.yaml +467 -164
- data/lib/countries/data/subdivisions/TZ.yaml +661 -208
- data/lib/countries/data/subdivisions/UA.yaml +505 -216
- data/lib/countries/data/subdivisions/UG.yaml +2269 -640
- data/lib/countries/data/subdivisions/UM.yaml +207 -72
- data/lib/countries/data/subdivisions/US.yaml +1635 -483
- data/lib/countries/data/subdivisions/UY.yaml +367 -152
- data/lib/countries/data/subdivisions/UZ.yaml +289 -113
- data/lib/countries/data/subdivisions/VC.yaml +101 -48
- data/lib/countries/data/subdivisions/VE.yaml +456 -200
- data/lib/countries/data/subdivisions/VN.yaml +3664 -2996
- data/lib/countries/data/subdivisions/VU.yaml +98 -48
- data/lib/countries/data/subdivisions/WF.yaml +63 -0
- data/lib/countries/data/subdivisions/WS.yaml +200 -88
- data/lib/countries/data/subdivisions/YE.yaml +375 -152
- data/lib/countries/data/subdivisions/ZA.yaml +238 -72
- data/lib/countries/data/subdivisions/ZM.yaml +157 -72
- data/lib/countries/data/subdivisions/ZW.yaml +152 -73
- data/lib/countries/data/translation_corrections.yaml +24 -7
- data/lib/countries/data.rb +71 -41
- data/lib/countries/global.rb +15 -3
- data/lib/countries/iso3166.rb +3 -0
- data/lib/countries/kwarg_struct.rb +2 -0
- data/lib/countries/mongoid.rb +5 -0
- data/lib/countries/sources/cldr/downloader.rb +16 -14
- data/lib/countries/sources/cldr/subdivision.rb +4 -0
- data/lib/countries/sources/cldr/subdivision_updater.rb +24 -17
- data/lib/countries/sources/local/cached_loader.rb +5 -0
- data/lib/countries/sources/local/subdivision.rb +6 -2
- data/lib/countries/sources.rb +2 -0
- data/lib/countries/structure.rb +4 -6
- data/lib/countries/subdivision.rb +2 -0
- data/lib/countries/tasks/geocoding.rake +21 -19
- data/lib/countries/tasks/postal_codes.rake +50 -0
- data/lib/countries/timezones.rb +9 -4
- data/lib/countries/translations.rb +5 -4
- data/lib/countries/version.rb +3 -1
- data/lib/countries.rb +2 -1
- data/spec/00_global_spec.rb +2 -0
- data/spec/configuration_spec.rb +11 -5
- data/spec/country_spec.rb +232 -69
- data/spec/data_spec.rb +35 -29
- data/spec/mongoid_spec.rb +2 -2
- data/spec/perf_spec.rb +16 -16
- data/spec/spec_helper.rb +2 -0
- data/spec/subdivision_spec.rb +6 -4
- data/spec/thread_safety_spec.rb +47 -0
- data/spec/timezone_spec.rb +2 -0
- metadata +31 -52
- data/.travis.yml +0 -15
- data/lib/countries/data/subdivisions/AS.yaml +0 -66
- data/lib/countries/data/subdivisions/AX.yaml +0 -40
- data/lib/countries/data/subdivisions/FO.yaml +0 -79
- data/lib/countries/data/subdivisions/GG.yaml +0 -144
- data/lib/countries/data/subdivisions/GU.yaml +0 -248
- data/lib/countries/data/subdivisions/HK.yaml +0 -235
- data/lib/countries/data/subdivisions/IM.yaml +0 -313
- data/lib/countries/data/subdivisions/JE.yaml +0 -157
- data/lib/countries/data/subdivisions/KY.yaml +0 -73
- data/lib/countries/data/subdivisions/MP.yaml +0 -53
- data/lib/countries/data/subdivisions/MS.yaml +0 -40
- data/lib/countries/data/subdivisions/NC.yaml +0 -40
- data/lib/countries/data/subdivisions/PF.yaml +0 -66
- data/lib/countries/data/subdivisions/PM.yaml +0 -27
- data/lib/countries/data/subdivisions/PR.yaml +0 -1015
- data/lib/countries/data/subdivisions/TF.yaml +0 -49
- data/lib/countries/data/subdivisions/VI.yaml +0 -40
- data/lib/countries/data/subdivisions/YT.yaml +0 -222
- 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
|
-
[](https://badge.fury.io/rb/countries) [](https://badge.fury.io/rb/countries) [](https://github.com/countries/countries/actions/workflows/tests.yml) [](https://codeclimate.com/github/countries/countries)
|
6
|
+
[](https://github.com/countries/countries/actions/workflows/codeql-analysis.yml)
|
7
|
+
|
6
8
|
|
7
9
|
## Installation
|
8
10
|
|
9
|
-
```
|
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
|
15
|
+
Or you can install via Bundler if you are using Rails:
|
14
16
|
|
15
|
-
```
|
16
|
-
|
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
|
-
```
|
25
|
+
```ruby
|
28
26
|
c = ISO3166::Country.new('US')
|
29
27
|
```
|
30
28
|
|
31
29
|
## Configuration
|
32
30
|
|
33
|
-
|
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
|
-
```
|
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
|
-
```
|
45
|
+
```ruby
|
47
46
|
gem 'countries', require: 'countries/global'
|
48
47
|
```
|
49
48
|
|
50
|
-
## Upgrading to
|
49
|
+
## Upgrading to 4.2 and 5.x
|
51
50
|
|
52
|
-
|
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
|
-
|
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
|
60
|
-
|
61
|
-
|
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]
|
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
|
-
```
|
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
|
-
```
|
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
|
-
```
|
90
|
-
c = ISO3166::Country.
|
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
|
-
###
|
125
|
+
### Names & Translations
|
110
126
|
|
111
127
|
```ruby
|
112
|
-
c.
|
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
|
-
```
|
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
|
-
```
|
140
|
-
c.latitude # => "
|
141
|
-
c.longitude # => "
|
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
|
-
```
|
182
|
+
```ruby
|
158
183
|
c.timezones.zone_identifiers # => ["America/New_York", "America/Detroit", "America/Kentucky/Louisville", ...]
|
159
|
-
c.timezones.zone_info # see [tzinfo docs](
|
160
|
-
c.timezones # see [tzinfo docs](
|
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
|
-
```
|
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
|
-
```
|
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
|
-
```
|
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
|
-
```
|
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
|
-
```
|
244
|
+
```ruby
|
199
245
|
gem "money", "~> 6.9"
|
200
246
|
```
|
201
247
|
|
202
|
-
|
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
|
-
```
|
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]
|
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
|
-
```
|
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
|
-
```
|
271
|
+
```ruby
|
228
272
|
ISO3166::Data.register(
|
229
273
|
alpha2: 'LOL',
|
230
|
-
|
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').
|
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
|
-
|
257
|
-
|
300
|
+
spanish_things = Things.where(country: 'ES')
|
301
|
+
spanish_things.first.country.iso_short_name # => "Spain"
|
258
302
|
|
259
303
|
# By object
|
260
|
-
|
261
|
-
|
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
|
-
|
268
|
-
|
269
|
-
|
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
|
-
|
273
|
-
|
274
|
-
|
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
|
-
```
|
324
|
+
```ruby
|
280
325
|
def country
|
281
|
-
super.
|
326
|
+
super.iso_short_name
|
282
327
|
end
|
283
328
|
```
|
284
329
|
|
285
330
|
## Country Code in Emoji
|
286
331
|
|
287
|
-
```
|
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
|
-
|
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
|
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)
|
368
|
+
Copyright (c) 2012-2015 hexorx
|
369
|
+
Copyright (c) 2015-2021 hexorx, rposborne
|
370
|
+
Copyright (c) 2022 hexorx, rposborne, pmor
|
324
371
|
|
325
|
-
|
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
|
-
|
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 + [
|
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
|
-
|
78
|
-
|
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.
|
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
|
-
|
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.
|
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
data/countries.gemspec
CHANGED
@@ -1,12 +1,18 @@
|
|
1
|
-
#
|
2
|
-
|
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 = '
|
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.
|
19
|
-
|
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
|