countries 3.0.0 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +315 -1
- data/Gemfile +9 -2
- data/LICENSE +3 -1
- data/README.markdown +141 -123
- data/Rakefile +29 -56
- data/UPGRADE.md +39 -0
- data/bin/console +1 -0
- data/countries.gemspec +15 -10
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/cache/locales/ab.json +1 -0
- data/lib/countries/cache/locales/af.json +1 -1
- data/lib/countries/cache/locales/ak.json +1 -0
- data/lib/countries/cache/locales/am.json +1 -1
- data/lib/countries/cache/locales/an.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/az.json +1 -1
- data/lib/countries/cache/locales/ba.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/bn-in.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/ch.json +1 -0
- data/lib/countries/cache/locales/cs.json +1 -1
- data/lib/countries/cache/locales/cv.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/dz.json +1 -1
- data/lib/countries/cache/locales/ee.json +1 -0
- 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 -0
- 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 -0
- 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 -0
- data/lib/countries/cache/locales/gu.json +1 -1
- data/lib/countries/cache/locales/gv.json +1 -0
- data/lib/countries/cache/locales/ha.json +1 -0
- 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 -0
- 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 -0
- 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 -0
- 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 -0
- data/lib/countries/cache/locales/kk.json +1 -1
- data/lib/countries/cache/locales/kl.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/kw.json +1 -0
- data/lib/countries/cache/locales/ky.json +1 -0
- data/lib/countries/cache/locales/lo.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/na.json +1 -0
- 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 -0
- 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 -0
- 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 -0
- 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 -0
- data/lib/countries/cache/locales/sd.json +1 -0
- 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 -0
- 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 -0
- data/lib/countries/cache/locales/uz.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/zh-cn.json +1 -0
- data/lib/countries/cache/locales/zh-hk.json +1 -0
- data/lib/countries/cache/locales/zh-tw.json +1 -0
- data/lib/countries/cache/locales/zu.json +1 -1
- data/lib/countries/configuration.rb +15 -0
- data/lib/countries/country/class_methods.rb +41 -97
- 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 +145 -11
- 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 +34 -34
- 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 +26 -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 +40 -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 +44 -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 +28 -29
- 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 +30 -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 +38 -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 +35 -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 +31 -29
- 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 +30 -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 +29 -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 +42 -28
- data/lib/countries/data/subdivisions/AE.yaml +161 -63
- data/lib/countries/data/subdivisions/AF.yaml +719 -419
- data/lib/countries/data/subdivisions/AG.yaml +152 -76
- data/lib/countries/data/subdivisions/AL.yaml +264 -468
- data/lib/countries/data/subdivisions/AM.yaml +247 -88
- data/lib/countries/data/subdivisions/AO.yaml +362 -144
- data/lib/countries/data/subdivisions/AR.yaml +474 -187
- data/lib/countries/data/subdivisions/AT.yaml +211 -72
- data/lib/countries/data/subdivisions/AU.yaml +220 -64
- data/lib/countries/data/subdivisions/AZ.yaml +1783 -803
- data/lib/countries/data/subdivisions/BA.yaml +120 -95
- data/lib/countries/data/subdivisions/BB.yaml +201 -88
- data/lib/countries/data/subdivisions/BD.yaml +1288 -543
- data/lib/countries/data/subdivisions/BE.yaml +369 -166
- data/lib/countries/data/subdivisions/BF.yaml +2976 -2291
- data/lib/countries/data/subdivisions/BG.yaml +628 -219
- data/lib/countries/data/subdivisions/BH.yaml +70 -46
- data/lib/countries/data/subdivisions/BI.yaml +407 -213
- data/lib/countries/data/subdivisions/BJ.yaml +238 -96
- data/lib/countries/data/subdivisions/BN.yaml +67 -32
- data/lib/countries/data/subdivisions/BO.yaml +166 -72
- data/lib/countries/data/subdivisions/BQ.yaml +66 -24
- data/lib/countries/data/subdivisions/BR.yaml +716 -216
- data/lib/countries/data/subdivisions/BS.yaml +961 -566
- data/lib/countries/data/subdivisions/BT.yaml +366 -160
- data/lib/countries/data/subdivisions/BW.yaml +499 -261
- data/lib/countries/data/subdivisions/BY.yaml +205 -126
- data/lib/countries/data/subdivisions/BZ.yaml +103 -48
- data/lib/countries/data/subdivisions/CA.yaml +371 -105
- data/lib/countries/data/subdivisions/CD.yaml +752 -406
- data/lib/countries/data/subdivisions/CF.yaml +308 -136
- data/lib/countries/data/subdivisions/CG.yaml +231 -90
- data/lib/countries/data/subdivisions/CH.yaml +619 -208
- data/lib/countries/data/subdivisions/CI.yaml +415 -322
- data/lib/countries/data/subdivisions/CL.yaml +336 -153
- data/lib/countries/data/subdivisions/CM.yaml +200 -80
- data/lib/countries/data/subdivisions/CN.yaml +2290 -1650
- data/lib/countries/data/subdivisions/CO.yaml +676 -264
- data/lib/countries/data/subdivisions/CR.yaml +126 -56
- data/lib/countries/data/subdivisions/CU.yaml +284 -128
- data/lib/countries/data/subdivisions/CV.yaml +677 -363
- data/lib/countries/data/subdivisions/CY.yaml +108 -48
- data/lib/countries/data/subdivisions/CZ.yaml +2064 -1347
- data/lib/countries/data/subdivisions/DE.yaml +500 -144
- data/lib/countries/data/subdivisions/DJ.yaml +116 -48
- data/lib/countries/data/subdivisions/DK.yaml +113 -236
- data/lib/countries/data/subdivisions/DM.yaml +169 -80
- data/lib/countries/data/subdivisions/DO.yaml +702 -248
- data/lib/countries/data/subdivisions/DZ.yaml +857 -384
- data/lib/countries/data/subdivisions/EC.yaml +499 -276
- data/lib/countries/data/subdivisions/EE.yaml +826 -152
- data/lib/countries/data/subdivisions/EG.yaml +499 -216
- data/lib/countries/data/subdivisions/ER.yaml +115 -48
- data/lib/countries/data/subdivisions/ES.yaml +2773 -1401
- data/lib/countries/data/subdivisions/ET.yaml +218 -88
- data/lib/countries/data/subdivisions/FI.yaml +294 -123
- data/lib/countries/data/subdivisions/FJ.yaml +557 -264
- data/lib/countries/data/subdivisions/FM.yaml +67 -32
- data/lib/countries/data/subdivisions/FR.yaml +2967 -1258
- data/lib/countries/data/subdivisions/GA.yaml +168 -72
- data/lib/countries/data/subdivisions/GB.yaml +5311 -2625
- data/lib/countries/data/subdivisions/GD.yaml +121 -56
- data/lib/countries/data/subdivisions/GE.yaml +250 -96
- data/lib/countries/data/subdivisions/GH.yaml +259 -113
- data/lib/countries/data/subdivisions/GL.yaml +77 -43
- data/lib/countries/data/subdivisions/GM.yaml +130 -48
- data/lib/countries/data/subdivisions/GN.yaml +981 -503
- data/lib/countries/data/subdivisions/GQ.yaml +155 -72
- data/lib/countries/data/subdivisions/GR.yaml +276 -677
- data/lib/countries/data/subdivisions/GT.yaml +373 -176
- data/lib/countries/data/subdivisions/GW.yaml +211 -79
- data/lib/countries/data/subdivisions/GY.yaml +173 -80
- data/lib/countries/data/subdivisions/HN.yaml +292 -144
- data/lib/countries/data/subdivisions/HR.yaml +450 -168
- data/lib/countries/data/subdivisions/HT.yaml +223 -106
- data/lib/countries/data/subdivisions/HU.yaml +876 -381
- data/lib/countries/data/subdivisions/ID.yaml +2417 -1858
- data/lib/countries/data/subdivisions/IE.yaml +886 -429
- data/lib/countries/data/subdivisions/IL.yaml +120 -48
- data/lib/countries/data/subdivisions/IN.yaml +1092 -535
- data/lib/countries/data/subdivisions/IQ.yaml +388 -191
- data/lib/countries/data/subdivisions/IR.yaml +1675 -1305
- data/lib/countries/data/subdivisions/IS.yaml +580 -67
- data/lib/countries/data/subdivisions/IT.yaml +8979 -7307
- data/lib/countries/data/subdivisions/JM.yaml +257 -112
- data/lib/countries/data/subdivisions/JO.yaml +205 -96
- data/lib/countries/data/subdivisions/JP.yaml +997 -376
- data/lib/countries/data/subdivisions/KE.yaml +975 -273
- data/lib/countries/data/subdivisions/KG.yaml +251 -118
- data/lib/countries/data/subdivisions/KH.yaml +464 -194
- data/lib/countries/data/subdivisions/KI.yaml +60 -24
- data/lib/countries/data/subdivisions/KM.yaml +52 -24
- data/lib/countries/data/subdivisions/KN.yaml +324 -112
- data/lib/countries/data/subdivisions/KP.yaml +291 -186
- data/lib/countries/data/subdivisions/KR.yaml +410 -128
- data/lib/countries/data/subdivisions/KW.yaml +93 -48
- data/lib/countries/data/subdivisions/KZ.yaml +361 -189
- data/lib/countries/data/subdivisions/LA.yaml +306 -149
- data/lib/countries/data/subdivisions/LB.yaml +156 -62
- data/lib/countries/data/subdivisions/LC.yaml +231 -55
- data/lib/countries/data/subdivisions/LI.yaml +197 -88
- data/lib/countries/data/subdivisions/LK.yaml +809 -431
- data/lib/countries/data/subdivisions/LR.yaml +346 -187
- data/lib/countries/data/subdivisions/LS.yaml +159 -80
- data/lib/countries/data/subdivisions/LT.yaml +2146 -1114
- data/lib/countries/data/subdivisions/LU.yaml +292 -146
- data/lib/countries/data/subdivisions/LV.yaml +2447 -5217
- data/lib/countries/data/subdivisions/LY.yaml +361 -162
- data/lib/countries/data/subdivisions/MA.yaml +1604 -1424
- data/lib/countries/data/subdivisions/MC.yaml +396 -129
- data/lib/countries/data/subdivisions/MD.yaml +1130 -590
- data/lib/countries/data/subdivisions/ME.yaml +465 -186
- data/lib/countries/data/subdivisions/MG.yaml +99 -48
- data/lib/countries/data/subdivisions/MH.yaml +526 -276
- data/lib/countries/data/subdivisions/MK.yaml +3636 -3147
- data/lib/countries/data/subdivisions/ML.yaml +197 -70
- data/lib/countries/data/subdivisions/MM.yaml +302 -112
- data/lib/countries/data/subdivisions/MN.yaml +443 -176
- data/lib/countries/data/subdivisions/MR.yaml +253 -111
- data/lib/countries/data/subdivisions/MT.yaml +1127 -544
- data/lib/countries/data/subdivisions/MU.yaml +241 -293
- data/lib/countries/data/subdivisions/MV.yaml +464 -263
- data/lib/countries/data/subdivisions/MW.yaml +689 -337
- data/lib/countries/data/subdivisions/MX.yaml +733 -260
- data/lib/countries/data/subdivisions/MY.yaml +352 -128
- data/lib/countries/data/subdivisions/MZ.yaml +202 -83
- data/lib/countries/data/subdivisions/NA.yaml +256 -129
- data/lib/countries/data/subdivisions/NE.yaml +178 -64
- data/lib/countries/data/subdivisions/NG.yaml +907 -296
- data/lib/countries/data/subdivisions/NI.yaml +277 -136
- data/lib/countries/data/subdivisions/NL.yaml +566 -263
- data/lib/countries/data/subdivisions/NO.yaml +653 -1093
- data/lib/countries/data/subdivisions/NP.yaml +525 -228
- data/lib/countries/data/subdivisions/NR.yaml +274 -112
- data/lib/countries/data/subdivisions/NZ.yaml +357 -197
- data/lib/countries/data/subdivisions/OM.yaml +345 -246
- data/lib/countries/data/subdivisions/PA.yaml +230 -113
- data/lib/countries/data/subdivisions/PE.yaml +478 -242
- data/lib/countries/data/subdivisions/PG.yaml +468 -237
- data/lib/countries/data/subdivisions/PH.yaml +5157 -3894
- data/lib/countries/data/subdivisions/PK.yaml +245 -204
- data/lib/countries/data/subdivisions/PL.yaml +131 -32
- data/lib/countries/data/subdivisions/PS.yaml +273 -0
- data/lib/countries/data/subdivisions/PT.yaml +375 -173
- data/lib/countries/data/subdivisions/PW.yaml +285 -128
- data/lib/countries/data/subdivisions/PY.yaml +339 -144
- data/lib/countries/data/subdivisions/QA.yaml +149 -97
- data/lib/countries/data/subdivisions/RO.yaml +771 -336
- data/lib/countries/data/subdivisions/RS.yaml +642 -261
- data/lib/countries/data/subdivisions/RU.yaml +1958 -665
- data/lib/countries/data/subdivisions/RW.yaml +107 -40
- data/lib/countries/data/subdivisions/SA.yaml +247 -104
- data/lib/countries/data/subdivisions/SB.yaml +179 -80
- data/lib/countries/data/subdivisions/SC.yaml +493 -184
- data/lib/countries/data/subdivisions/SD.yaml +832 -673
- data/lib/countries/data/subdivisions/SE.yaml +456 -237
- data/lib/countries/data/subdivisions/SG.yaml +81 -54
- data/lib/countries/data/subdivisions/SH.yaml +73 -31
- data/lib/countries/data/subdivisions/SI.yaml +3823 -1590
- data/lib/countries/data/subdivisions/SK.yaml +137 -64
- data/lib/countries/data/subdivisions/SL.yaml +85 -31
- data/lib/countries/data/subdivisions/SM.yaml +168 -72
- data/lib/countries/data/subdivisions/SN.yaml +352 -193
- data/lib/countries/data/subdivisions/SO.yaml +329 -144
- data/lib/countries/data/subdivisions/SR.yaml +168 -80
- data/lib/countries/data/subdivisions/SS.yaml +206 -0
- data/lib/countries/data/subdivisions/ST.yaml +51 -26
- data/lib/countries/data/subdivisions/SV.yaml +245 -112
- data/lib/countries/data/subdivisions/SY.yaml +234 -112
- data/lib/countries/data/subdivisions/SZ.yaml +69 -32
- data/lib/countries/data/subdivisions/TD.yaml +591 -312
- data/lib/countries/data/subdivisions/TG.yaml +80 -40
- data/lib/countries/data/subdivisions/TH.yaml +1565 -652
- data/lib/countries/data/subdivisions/TJ.yaml +209 -128
- data/lib/countries/data/subdivisions/TL.yaml +222 -104
- data/lib/countries/data/subdivisions/TM.yaml +122 -40
- data/lib/countries/data/subdivisions/TN.yaml +436 -192
- data/lib/countries/data/subdivisions/TO.yaml +80 -40
- data/lib/countries/data/subdivisions/TR.yaml +1898 -648
- data/lib/countries/data/subdivisions/TT.yaml +355 -204
- data/lib/countries/data/subdivisions/TV.yaml +162 -94
- data/lib/countries/data/subdivisions/TW.yaml +514 -251
- data/lib/countries/data/subdivisions/TZ.yaml +692 -208
- data/lib/countries/data/subdivisions/UA.yaml +533 -217
- data/lib/countries/data/subdivisions/UG.yaml +5416 -3641
- data/lib/countries/data/subdivisions/UM.yaml +216 -72
- data/lib/countries/data/subdivisions/US.yaml +1692 -483
- data/lib/countries/data/subdivisions/UY.yaml +429 -195
- data/lib/countries/data/subdivisions/UZ.yaml +303 -113
- data/lib/countries/data/subdivisions/VC.yaml +107 -48
- data/lib/countries/data/subdivisions/VE.yaml +481 -200
- data/lib/countries/data/subdivisions/VN.yaml +1274 -543
- data/lib/countries/data/subdivisions/VU.yaml +104 -48
- data/lib/countries/data/subdivisions/WF.yaml +66 -0
- data/lib/countries/data/subdivisions/WS.yaml +211 -88
- data/lib/countries/data/subdivisions/YE.yaml +534 -289
- data/lib/countries/data/subdivisions/ZA.yaml +283 -131
- data/lib/countries/data/subdivisions/ZM.yaml +167 -72
- data/lib/countries/data/subdivisions/ZW.yaml +162 -73
- data/lib/countries/data/translations/countries-ab.yaml +254 -0
- data/lib/countries/data/translations/countries-af.yaml +254 -0
- data/lib/countries/data/translations/countries-ak.yaml +254 -0
- data/lib/countries/data/translations/countries-am.yaml +254 -0
- data/lib/countries/data/translations/countries-an.yaml +254 -0
- data/lib/countries/data/translations/countries-ar.yaml +254 -0
- data/lib/countries/data/translations/countries-as.yaml +254 -0
- data/lib/countries/data/translations/countries-ay.yaml +254 -0
- data/lib/countries/data/translations/countries-az.yaml +254 -0
- data/lib/countries/data/translations/countries-ba.yaml +254 -0
- data/lib/countries/data/translations/countries-be.yaml +254 -0
- data/lib/countries/data/translations/countries-bg.yaml +254 -0
- data/lib/countries/data/translations/countries-bi.yaml +254 -0
- data/lib/countries/data/translations/countries-bn.yaml +254 -0
- data/lib/countries/data/translations/countries-bn_IN.yaml +254 -0
- data/lib/countries/data/translations/countries-br.yaml +254 -0
- data/lib/countries/data/translations/countries-bs.yaml +254 -0
- data/lib/countries/data/translations/countries-ca.yaml +254 -0
- data/lib/countries/data/translations/countries-ce.yaml +254 -0
- data/lib/countries/data/translations/countries-ch.yaml +254 -0
- data/lib/countries/data/translations/countries-cs.yaml +254 -0
- data/lib/countries/data/translations/countries-cv.yaml +254 -0
- data/lib/countries/data/translations/countries-cy.yaml +254 -0
- data/lib/countries/data/translations/countries-da.yaml +254 -0
- data/lib/countries/data/translations/countries-de.yaml +254 -0
- data/lib/countries/data/translations/countries-dv.yaml +254 -0
- data/lib/countries/data/translations/countries-dz.yaml +254 -0
- data/lib/countries/data/translations/countries-ee.yaml +254 -0
- data/lib/countries/data/translations/countries-el.yaml +254 -0
- data/lib/countries/data/translations/countries-en.yaml +254 -0
- data/lib/countries/data/translations/countries-eo.yaml +254 -0
- data/lib/countries/data/translations/countries-es.yaml +254 -0
- data/lib/countries/data/translations/countries-et.yaml +254 -0
- data/lib/countries/data/translations/countries-eu.yaml +254 -0
- data/lib/countries/data/translations/countries-fa.yaml +254 -0
- data/lib/countries/data/translations/countries-ff.yaml +254 -0
- data/lib/countries/data/translations/countries-fi.yaml +254 -0
- data/lib/countries/data/translations/countries-fo.yaml +254 -0
- data/lib/countries/data/translations/countries-fr.yaml +254 -0
- data/lib/countries/data/translations/countries-fy.yaml +254 -0
- data/lib/countries/data/translations/countries-ga.yaml +254 -0
- data/lib/countries/data/translations/countries-gl.yaml +254 -0
- data/lib/countries/data/translations/countries-gn.yaml +254 -0
- data/lib/countries/data/translations/countries-gu.yaml +254 -0
- data/lib/countries/data/translations/countries-gv.yaml +254 -0
- data/lib/countries/data/translations/countries-ha.yaml +254 -0
- data/lib/countries/data/translations/countries-he.yaml +254 -0
- data/lib/countries/data/translations/countries-hi.yaml +254 -0
- data/lib/countries/data/translations/countries-hr.yaml +254 -0
- data/lib/countries/data/translations/countries-ht.yaml +254 -0
- data/lib/countries/data/translations/countries-hu.yaml +254 -0
- data/lib/countries/data/translations/countries-hy.yaml +254 -0
- data/lib/countries/data/translations/countries-ia.yaml +254 -0
- data/lib/countries/data/translations/countries-id.yaml +254 -0
- data/lib/countries/data/translations/countries-io.yaml +254 -0
- data/lib/countries/data/translations/countries-is.yaml +254 -0
- data/lib/countries/data/translations/countries-it.yaml +254 -0
- data/lib/countries/data/translations/countries-iu.yaml +254 -0
- data/lib/countries/data/translations/countries-ja.yaml +254 -0
- data/lib/countries/data/translations/countries-ka.yaml +254 -0
- data/lib/countries/data/translations/countries-ki.yaml +254 -0
- data/lib/countries/data/translations/countries-kk.yaml +254 -0
- data/lib/countries/data/translations/countries-kl.yaml +254 -0
- data/lib/countries/data/translations/countries-km.yaml +254 -0
- data/lib/countries/data/translations/countries-kn.yaml +254 -0
- data/lib/countries/data/translations/countries-ko.yaml +254 -0
- data/lib/countries/data/translations/countries-ku.yaml +254 -0
- data/lib/countries/data/translations/countries-kv.yaml +254 -0
- data/lib/countries/data/translations/countries-kw.yaml +254 -0
- data/lib/countries/data/translations/countries-ky.yaml +254 -0
- data/lib/countries/data/translations/countries-lo.yaml +254 -0
- data/lib/countries/data/translations/countries-lt.yaml +254 -0
- data/lib/countries/data/translations/countries-lv.yaml +254 -0
- data/lib/countries/data/translations/countries-mi.yaml +254 -0
- data/lib/countries/data/translations/countries-mk.yaml +254 -0
- data/lib/countries/data/translations/countries-ml.yaml +254 -0
- data/lib/countries/data/translations/countries-mn.yaml +254 -0
- data/lib/countries/data/translations/countries-mr.yaml +254 -0
- data/lib/countries/data/translations/countries-ms.yaml +254 -0
- data/lib/countries/data/translations/countries-mt.yaml +254 -0
- data/lib/countries/data/translations/countries-my.yaml +254 -0
- data/lib/countries/data/translations/countries-na.yaml +254 -0
- data/lib/countries/data/translations/countries-nb.yaml +254 -0
- data/lib/countries/data/translations/countries-ne.yaml +254 -0
- data/lib/countries/data/translations/countries-nl.yaml +254 -0
- data/lib/countries/data/translations/countries-nn.yaml +254 -0
- data/lib/countries/data/translations/countries-nv.yaml +254 -0
- data/lib/countries/data/translations/countries-oc.yaml +254 -0
- data/lib/countries/data/translations/countries-or.yaml +254 -0
- data/lib/countries/data/translations/countries-pa.yaml +254 -0
- data/lib/countries/data/translations/countries-pi.yaml +254 -0
- data/lib/countries/data/translations/countries-pl.yaml +254 -0
- data/lib/countries/data/translations/countries-ps.yaml +254 -0
- data/lib/countries/data/translations/countries-pt.yaml +254 -0
- data/lib/countries/data/translations/countries-pt_BR.yaml +254 -0
- data/lib/countries/data/translations/countries-ro.yaml +254 -0
- data/lib/countries/data/translations/countries-ru.yaml +254 -0
- data/lib/countries/data/translations/countries-rw.yaml +254 -0
- data/lib/countries/data/translations/countries-sc.yaml +254 -0
- data/lib/countries/data/translations/countries-sd.yaml +254 -0
- data/lib/countries/data/translations/countries-si.yaml +254 -0
- data/lib/countries/data/translations/countries-sk.yaml +254 -0
- data/lib/countries/data/translations/countries-sl.yaml +254 -0
- data/lib/countries/data/translations/countries-so.yaml +254 -0
- data/lib/countries/data/translations/countries-sq.yaml +254 -0
- data/lib/countries/data/translations/countries-sr.yaml +254 -0
- data/lib/countries/data/translations/countries-sv.yaml +254 -0
- data/lib/countries/data/translations/countries-sw.yaml +254 -0
- data/lib/countries/data/translations/countries-ta.yaml +254 -0
- data/lib/countries/data/translations/countries-te.yaml +254 -0
- data/lib/countries/data/translations/countries-tg.yaml +254 -0
- data/lib/countries/data/translations/countries-th.yaml +254 -0
- data/lib/countries/data/translations/countries-ti.yaml +254 -0
- data/lib/countries/data/translations/countries-tk.yaml +254 -0
- data/lib/countries/data/translations/countries-tl.yaml +254 -0
- data/lib/countries/data/translations/countries-tr.yaml +254 -0
- data/lib/countries/data/translations/countries-tt.yaml +254 -0
- data/lib/countries/data/translations/countries-ug.yaml +254 -0
- data/lib/countries/data/translations/countries-uk.yaml +254 -0
- data/lib/countries/data/translations/countries-ur.yaml +254 -0
- data/lib/countries/data/translations/countries-uz.yaml +254 -0
- data/lib/countries/data/translations/countries-ve.yaml +254 -0
- data/lib/countries/data/translations/countries-vi.yaml +254 -0
- data/lib/countries/data/translations/countries-wa.yaml +254 -0
- data/lib/countries/data/translations/countries-wo.yaml +254 -0
- data/lib/countries/data/translations/countries-xh.yaml +254 -0
- data/lib/countries/data/translations/countries-yo.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_CN.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_HK.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_TW.yaml +254 -0
- data/lib/countries/data/translations/countries-zu.yaml +254 -0
- data/lib/countries/data.rb +106 -44
- data/lib/countries/global.rb +15 -3
- data/lib/countries/iso3166.rb +3 -1
- 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 +21 -8
- 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 +1 -2
- data/spec/00_global_spec.rb +2 -0
- data/spec/configuration_spec.rb +11 -5
- data/spec/country_spec.rb +356 -79
- data/spec/data_spec.rb +105 -30
- 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 +17 -1
- data/spec/thread_safety_spec.rb +47 -0
- data/spec/timezone_spec.rb +2 -0
- metadata +205 -78
- data/.travis.yml +0 -16
- data/lib/countries/cache/locales/zh.json +0 -1
- data/lib/countries/data/subdivisions/AI.yaml +0 -183
- data/lib/countries/data/subdivisions/AS.yaml +0 -66
- data/lib/countries/data/subdivisions/AX.yaml +0 -40
- data/lib/countries/data/subdivisions/BM.yaml +0 -144
- data/lib/countries/data/subdivisions/CK.yaml +0 -144
- data/lib/countries/data/subdivisions/EH.yaml +0 -72
- 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/SJ.yaml +0 -27
- data/lib/countries/data/subdivisions/TF.yaml +0 -49
- data/lib/countries/data/subdivisions/TK.yaml +0 -40
- data/lib/countries/data/subdivisions/VI.yaml +0 -40
- data/lib/countries/data/subdivisions/YT.yaml +0 -222
- data/lib/countries/data/translation_corrections.yaml +0 -32
- 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,58 +42,35 @@ c = Country['US']
|
|
|
43
42
|
|
|
44
43
|
To Use
|
|
45
44
|
|
|
46
|
-
```
|
|
47
|
-
gem 'countries', require: 'countries/global'
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Upgrading to 3.x
|
|
51
|
-
|
|
52
|
-
We dropped currency support via money by default, see [instructions](README.markdown#Currencies) if you are using currency featues
|
|
53
|
-
|
|
54
|
-
## Upgrading Country Helper to > 1.2.0
|
|
55
|
-
``` ruby
|
|
56
|
-
gem 'countries', require: 'global'
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
has become
|
|
60
|
-
``` ruby
|
|
45
|
+
```ruby
|
|
61
46
|
gem 'countries', require: 'countries/global'
|
|
62
47
|
```
|
|
63
48
|
|
|
64
|
-
##
|
|
49
|
+
## Upgrading to 4.2 and 5.x
|
|
65
50
|
|
|
66
|
-
|
|
67
|
-
|
|
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 it's supported translations.
|
|
51
|
+
Release 4.2.0 introduced changes to name attributes and finders and deprecated several methods to resolve some existing confusion regardign official ISO country names vs. the "common names" that are commonly used.
|
|
69
52
|
|
|
70
|
-
|
|
53
|
+
The 5.0 release removed these deprecated methods and also removed support for Ruby 2.5 and 2.6
|
|
71
54
|
|
|
72
|
-
|
|
73
|
-
ISO3166.configure do |config|
|
|
74
|
-
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
|
-
end
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
or something a bit more simple
|
|
79
|
-
``` ruby
|
|
80
|
-
ISO3166.configure do |config|
|
|
81
|
-
config.locales = [:en, :de, :fr, :es]
|
|
82
|
-
end
|
|
83
|
-
```
|
|
55
|
+
Plase see [UPGRADE.md](../master/UPGRADE.md) for more information
|
|
84
56
|
|
|
85
57
|
## Attribute-Based Finder Methods
|
|
86
58
|
|
|
87
59
|
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
60
|
|
|
89
|
-
```
|
|
90
|
-
c = ISO3166::Country.
|
|
61
|
+
```ruby
|
|
62
|
+
c = ISO3166::Country.find_country_by_iso_short_name('italy')
|
|
63
|
+
c = ISO3166::Country.find_country_by_any_name('united states')
|
|
64
|
+
h = ISO3166::Country.find_all_by(:translated_names, 'França')
|
|
91
65
|
list = ISO3166::Country.find_all_countries_by_region('Americas')
|
|
92
|
-
c = ISO3166::Country.
|
|
66
|
+
c = ISO3166::Country.find_country_by_alpha2("FR")
|
|
93
67
|
```
|
|
94
68
|
|
|
95
|
-
For a list of available attributes please see ISO3166::DEFAULT_COUNTRY_HASH
|
|
69
|
+
For a list of available attributes please see `ISO3166::DEFAULT_COUNTRY_HASH`.
|
|
96
70
|
Note: searches are *case insensitive and ignore accents*.
|
|
97
71
|
|
|
72
|
+
_Please note that `find_by_name`, `find_by_names`, `find_*_by_name` and `find_*_by_names` methods were removed in 5.0. See [UPGRADE.md](../master/UPGRADE.md) for more information_
|
|
73
|
+
|
|
98
74
|
## Country Info
|
|
99
75
|
|
|
100
76
|
### Identification Codes
|
|
@@ -106,10 +82,12 @@ c.alpha3 # => "USA"
|
|
|
106
82
|
c.gec # => "US"
|
|
107
83
|
```
|
|
108
84
|
|
|
109
|
-
###
|
|
85
|
+
### Names & Translations
|
|
110
86
|
|
|
111
87
|
```ruby
|
|
112
|
-
c.
|
|
88
|
+
c.iso_long_name # => "The United States of America"
|
|
89
|
+
c.iso_short_name # => "United States of America"
|
|
90
|
+
c.common_name # => "United States" (This is a shortcut for c.translations('en'))
|
|
113
91
|
c.unofficial_names # => ["United States of America", "Vereinigte Staaten von Amerika", "États-Unis", "Estados Unidos"]
|
|
114
92
|
|
|
115
93
|
# Get the names for a country translated to its local languages
|
|
@@ -121,31 +99,45 @@ c.local_name # => "België"
|
|
|
121
99
|
c.translation('de') # => 'Vereinigte Staaten von Amerika'
|
|
122
100
|
c.translations['fr'] # => "États-Unis"
|
|
123
101
|
|
|
102
|
+
# Get all translations for a locale, defaults to 'en'
|
|
124
103
|
ISO3166::Country.translations # {"DE"=>"Germany",...}
|
|
125
|
-
ISO3166::Country.translations('
|
|
104
|
+
ISO3166::Country.translations('de') # {"DE"=>"Deutschland",...}
|
|
126
105
|
ISO3166::Country.all_translated # ['Germany', ...]
|
|
127
|
-
ISO3166::Country.all_translated('
|
|
106
|
+
ISO3166::Country.all_translated('de') # ['Deutschland', ...]
|
|
107
|
+
|
|
108
|
+
# Nationality
|
|
109
|
+
c.nationality # => "American"
|
|
128
110
|
```
|
|
129
111
|
|
|
130
112
|
### Subdivisions & States
|
|
131
113
|
|
|
132
|
-
```
|
|
114
|
+
```ruby
|
|
133
115
|
c.subdivisions # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
|
|
116
|
+
c.subdivision_types # => ["state", "outlying_area", "district"]
|
|
117
|
+
c.subdivisions_of_types(['state']) # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
|
|
118
|
+
c.humanized_subdivision_types # => ["State", "Outlying area", "District"]
|
|
119
|
+
|
|
120
|
+
# This is now deprecated. #states is an alias of #subdivisions and returns all subdivisions regardless of type
|
|
134
121
|
c.states # => {"CO" => {"name" => "Colorado", "names" => "Colorado"}, ... }
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
# Get specific translations for the country subdivisions
|
|
125
|
+
c.subdivision_names_with_codes('es') #=> [ ..., ["Nuevo Hampshire", "NH"], ["Nueva Jersey", "NJ"], ... ]
|
|
135
126
|
```
|
|
136
127
|
|
|
137
128
|
### Location
|
|
138
129
|
|
|
139
|
-
```
|
|
140
|
-
c.latitude # => "
|
|
141
|
-
c.longitude # => "
|
|
142
|
-
c.latitude_dec # => 39.44325637817383
|
|
143
|
-
c.longitude_dec # => -98.95733642578125
|
|
130
|
+
```ruby
|
|
131
|
+
c.latitude # => "37.09024"
|
|
132
|
+
c.longitude # => "-95.712891"
|
|
144
133
|
|
|
134
|
+
c.world_region # => "AMER"
|
|
145
135
|
c.region # => "Americas"
|
|
146
136
|
c.subregion # => "Northern America"
|
|
147
137
|
```
|
|
148
138
|
|
|
139
|
+
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.
|
|
140
|
+
|
|
149
141
|
### Timezones **(optional)**
|
|
150
142
|
|
|
151
143
|
Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do this for you.
|
|
@@ -154,15 +146,15 @@ Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do thi
|
|
|
154
146
|
gem 'tzinfo', '~> 1.2', '>= 1.2.2'
|
|
155
147
|
```
|
|
156
148
|
|
|
157
|
-
```
|
|
149
|
+
```ruby
|
|
158
150
|
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](
|
|
151
|
+
c.timezones.zone_info # see [tzinfo docs](https://www.rubydoc.info/gems/tzinfo/TZInfo/CountryTimezone)
|
|
152
|
+
c.timezones # see [tzinfo docs](https://www.rubydoc.info/gems/tzinfo/TZInfo/Country)
|
|
161
153
|
```
|
|
162
154
|
|
|
163
155
|
### Telephone Routing (E164)
|
|
164
156
|
|
|
165
|
-
```
|
|
157
|
+
```ruby
|
|
166
158
|
c.country_code # => "1"
|
|
167
159
|
c.national_destination_code_lengths # => 3
|
|
168
160
|
c.national_number_lengths # => 10
|
|
@@ -172,38 +164,63 @@ c.national_prefix # => "1"
|
|
|
172
164
|
|
|
173
165
|
### Boundary Boxes
|
|
174
166
|
|
|
175
|
-
```
|
|
167
|
+
```ruby
|
|
176
168
|
c.min_longitude # => '45'
|
|
177
169
|
c.min_latitude # => '22.166667'
|
|
178
170
|
c.max_longitude # => '58'
|
|
179
171
|
c.max_latitude # => '26.133333'
|
|
172
|
+
|
|
173
|
+
c.bounds #> {"northeast"=>{"lat"=>22.166667, "lng"=>58}, "southwest"=>{"lat"=>26.133333, "lng"=>45}}
|
|
180
174
|
```
|
|
181
175
|
|
|
182
176
|
### European Union Membership
|
|
183
177
|
|
|
184
|
-
```
|
|
178
|
+
```ruby
|
|
185
179
|
c.in_eu? # => false
|
|
186
180
|
```
|
|
187
181
|
|
|
182
|
+
### European Economic Area Membership
|
|
183
|
+
|
|
184
|
+
```ruby
|
|
185
|
+
c.in_eea? # => false
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### European Single Market Membership
|
|
189
|
+
|
|
190
|
+
```ruby
|
|
191
|
+
c.in_esm? # => false
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
## Country Code in Emoji
|
|
195
|
+
|
|
196
|
+
```ruby
|
|
197
|
+
c = Country['MY']
|
|
198
|
+
c.emoji_flag # => "🇲🇾"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### Plucking multiple attributes
|
|
202
|
+
|
|
203
|
+
```ruby
|
|
204
|
+
ISO3166::Country.pluck(:alpha2, :iso_short_name) # => [["AD", "Andorra"], ["AE", "United Arab Emirates"], ...
|
|
205
|
+
```
|
|
206
|
+
|
|
188
207
|
## Currencies
|
|
189
208
|
|
|
190
209
|
To enable currencies extension please add the following to countries initializer.
|
|
191
210
|
|
|
192
|
-
```
|
|
211
|
+
```ruby
|
|
193
212
|
ISO3166.configuration.enable_currency_extension!
|
|
194
213
|
```
|
|
195
214
|
|
|
196
215
|
Please note that it requires you to add "money" dependency to your gemfile.
|
|
197
216
|
|
|
198
|
-
```
|
|
217
|
+
```ruby
|
|
199
218
|
gem "money", "~> 6.9"
|
|
200
219
|
```
|
|
201
220
|
|
|
202
|
-
|
|
221
|
+
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.
|
|
203
222
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
``` ruby
|
|
223
|
+
```ruby
|
|
207
224
|
c = ISO3166::Country['us']
|
|
208
225
|
c.currency.iso_code # => 'USD'
|
|
209
226
|
c.currency.name # => 'United States Dollar'
|
|
@@ -212,29 +229,53 @@ c.currency.symbol # => '$'
|
|
|
212
229
|
|
|
213
230
|
## Address Formatting
|
|
214
231
|
|
|
215
|
-
A template for formatting addresses is available through the address_format method. These templates are compatible with the [Liquid]
|
|
232
|
+
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
233
|
|
|
217
|
-
```
|
|
234
|
+
```ruby
|
|
218
235
|
c.address_format # => "{{recipient}}\n{{street}}\n{{city}} {{region}} {{postalcode}}\n{{country}}"
|
|
219
236
|
```
|
|
220
237
|
|
|
238
|
+
## Selective Loading of Locales
|
|
239
|
+
|
|
240
|
+
As of 2.0 you can selectively load locales to reduce memory usage in production.
|
|
241
|
+
|
|
242
|
+
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.
|
|
243
|
+
|
|
244
|
+
You can add all the locales like this.
|
|
245
|
+
|
|
246
|
+
```ruby
|
|
247
|
+
ISO3166.configure do |config|
|
|
248
|
+
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]
|
|
249
|
+
end
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
or something a bit more simple
|
|
253
|
+
```ruby
|
|
254
|
+
ISO3166.configure do |config|
|
|
255
|
+
config.locales = [:en, :de, :fr, :es]
|
|
256
|
+
end
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
If you change the value of `ISO3166.configuration.locales` after initialization, you should call `ISO3166::Data.reset` to reset the data cache, or you may end up with inconsistently loaded locales.
|
|
260
|
+
As of 5.1.1, subdivision translations also respect this and will only load the selected locales.
|
|
261
|
+
|
|
221
262
|
## Loading Custom Data
|
|
222
263
|
|
|
223
|
-
As of 2.0 countries supports loading custom countries / overriding data in
|
|
264
|
+
As of 2.0 countries supports loading custom countries / overriding data in its data set, though if you choose to do this please contribute back to the upstream repo!
|
|
224
265
|
|
|
225
|
-
Any country registered this way will have
|
|
266
|
+
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
267
|
|
|
227
|
-
```
|
|
268
|
+
```ruby
|
|
228
269
|
ISO3166::Data.register(
|
|
229
270
|
alpha2: 'LOL',
|
|
230
|
-
|
|
271
|
+
iso_short_name: 'Happy Country',
|
|
231
272
|
translations: {
|
|
232
273
|
'en' => 'Happy Country',
|
|
233
274
|
'de' => 'glückliches Land'
|
|
234
275
|
}
|
|
235
276
|
)
|
|
236
277
|
|
|
237
|
-
ISO3166::Country.new('LOL').
|
|
278
|
+
ISO3166::Country.new('LOL').iso_short_name == 'Happy Country'
|
|
238
279
|
```
|
|
239
280
|
|
|
240
281
|
## Mongoid
|
|
@@ -253,61 +294,41 @@ Searching:
|
|
|
253
294
|
|
|
254
295
|
```ruby
|
|
255
296
|
# By alpha2
|
|
256
|
-
|
|
257
|
-
|
|
297
|
+
spanish_things = Things.where(country: 'ES')
|
|
298
|
+
spanish_things.first.country.iso_short_name # => "Spain"
|
|
258
299
|
|
|
259
300
|
# By object
|
|
260
|
-
|
|
261
|
-
|
|
301
|
+
spanish_things = Things.where(country: Country.find_by_iso_short_name('Spain')[1])
|
|
302
|
+
spanish_things.first.country.iso_short_name # => "Spain"
|
|
262
303
|
```
|
|
304
|
+
|
|
263
305
|
Saving:
|
|
264
306
|
|
|
265
307
|
```ruby
|
|
266
308
|
# By alpha2
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
309
|
+
spanish_things = Thing.new(country: 'ES')
|
|
310
|
+
spanish_things.save!
|
|
311
|
+
spanish_things.country.iso_short_name # => "Spain"
|
|
270
312
|
|
|
271
313
|
# By object
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
314
|
+
spanish_things = Thing.new(country: Country.find_by_iso_short_name('Spain')[1])
|
|
315
|
+
spanish_things.save!
|
|
316
|
+
spanish_things.country.iso_short_name # => "Spain"
|
|
275
317
|
```
|
|
276
318
|
|
|
277
319
|
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
320
|
|
|
279
|
-
```
|
|
321
|
+
```ruby
|
|
280
322
|
def country
|
|
281
|
-
super.
|
|
323
|
+
super.iso_short_name
|
|
282
324
|
end
|
|
283
325
|
```
|
|
284
326
|
|
|
285
|
-
## Country Code in Emoji
|
|
286
|
-
|
|
287
|
-
``` ruby
|
|
288
|
-
c = Country['MY']
|
|
289
|
-
c.emoji_flag # => "🇲🇾"
|
|
290
|
-
```
|
|
291
|
-
|
|
292
327
|
## Note on Patches/Pull Requests
|
|
293
328
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
Any additions should be directed upstream to [pkg-isocodes](http://anonscm.debian.org/cgit/pkg-isocodes/iso-codes.git/)
|
|
297
|
-
|
|
298
|
-
New Bugs can be filed upstream here https://alioth.debian.org/projects/pkg-iso-codes/
|
|
299
|
-
If you need to correct an upstream translation please add it to the lib/countries/data/translations_corrections.yaml
|
|
300
|
-
|
|
301
|
-
```
|
|
302
|
-
# Ex:
|
|
303
|
-
#
|
|
304
|
-
# locale:
|
|
305
|
-
# alpha2: localized_name
|
|
306
|
-
#
|
|
307
|
-
```
|
|
329
|
+
**Please do not submit pull requests on `cache/**/*`**. These files generated by a rake task when preparing new releases and are not meant to be manually updated.
|
|
308
330
|
|
|
309
|
-
|
|
310
|
-
the next ```rake update_cache```
|
|
331
|
+
If you with to submit a PR to correct an translation, please edit the `lib/countries/data/translations/countries-<locale>.yaml` file. Changes to the locale YAML files will be injected during the next `rake update_cache`.
|
|
311
332
|
|
|
312
333
|
* Fork the project.
|
|
313
334
|
* Make your feature addition or bug fix.
|
|
@@ -316,16 +337,13 @@ the next ```rake update_cache```
|
|
|
316
337
|
* Commit, do not mess with rakefile, version, or history.
|
|
317
338
|
(if you want to have your own version, that is fine but
|
|
318
339
|
bump version in a commit by itself I can ignore when I pull)
|
|
319
|
-
*
|
|
340
|
+
* Make sure your you haven't made changes to `cache/**/*`
|
|
341
|
+
* Submit a pull request. Bonus points for topic branches.
|
|
320
342
|
|
|
321
343
|
## Copyright
|
|
322
344
|
|
|
323
|
-
Copyright (c)
|
|
345
|
+
Copyright (c) 2012-2015 hexorx \
|
|
346
|
+
Copyright (c) 2015-2021 hexorx, rposborne \
|
|
347
|
+
Copyright (c) 2022 hexorx, rposborne, pmor
|
|
324
348
|
|
|
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
|
|
349
|
+
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'
|
|
@@ -56,35 +30,34 @@ end
|
|
|
56
30
|
|
|
57
31
|
desc 'Update Cache'
|
|
58
32
|
task :update_cache do
|
|
59
|
-
|
|
60
|
-
require 'i18n_data'
|
|
61
|
-
|
|
62
|
-
codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
|
|
33
|
+
codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq.sort
|
|
63
34
|
data = {}
|
|
64
35
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
locale = locale.downcase
|
|
69
|
-
begin
|
|
70
|
-
local_names = I18nData.countries(locale)
|
|
71
|
-
rescue I18nData::NoTranslationAvailable
|
|
72
|
-
next
|
|
73
|
-
end
|
|
36
|
+
Dir['lib/countries/data/translations/countries-*.yaml'].each do |locale_file|
|
|
37
|
+
locale = locale_file.split('-').last.split('.').first.downcase
|
|
38
|
+
local_names = YAML.load_file(locale_file)
|
|
74
39
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
corrections[locale].each do |alpha2, localized_name|
|
|
78
|
-
local_names[alpha2] = localized_name
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
|
|
82
|
-
File.open(File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', "#{locale}.json"), 'wb') { |f| f.write(local_names.to_json) }
|
|
40
|
+
out = File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', "#{locale.gsub(/_/, '-')}.json")
|
|
41
|
+
File.binwrite(out, local_names.to_json)
|
|
83
42
|
end
|
|
84
43
|
|
|
85
44
|
codes.each do |alpha2|
|
|
86
|
-
|
|
45
|
+
country_file = File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml")
|
|
46
|
+
data[alpha2] ||= YAML.load_file(country_file)[alpha2]
|
|
87
47
|
end
|
|
88
48
|
|
|
89
|
-
File.
|
|
49
|
+
out_file = File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'countries.json')
|
|
50
|
+
File.binwrite(out_file, data.to_json)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
desc 'Sort subdivision YAML by code and translations by locale'
|
|
54
|
+
task :cleanup_subdivision_yaml do
|
|
55
|
+
ISO3166::Country.codes.each do |c_code|
|
|
56
|
+
sd = Sources::Local::Subdivision.new(c_code)
|
|
57
|
+
data = sd.load
|
|
58
|
+
next if data.nil? || data == {}
|
|
59
|
+
data = data.sort.to_h
|
|
60
|
+
data['translations'] = data['translations'].sort.to_h unless data['translations'].nil?
|
|
61
|
+
sd.save(data)
|
|
62
|
+
end
|
|
90
63
|
end
|
data/UPGRADE.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Upgrading to 4.2 and 5.x
|
|
2
|
+
|
|
3
|
+
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.
|
|
4
|
+
|
|
5
|
+
"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')`.
|
|
6
|
+
|
|
7
|
+
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.
|
|
8
|
+
|
|
9
|
+
The `#name` and `#names` attributes, and corresponding finder methods were removed in 5.0.
|
|
10
|
+
|
|
11
|
+
The replacement finders added in 5.0 are:
|
|
12
|
+
|
|
13
|
+
- `#find_by_name` => `#find_by_any_name` - Searches all the name attributes, same as before
|
|
14
|
+
- `#find_by_names` => `#find_by_unofficial_names`
|
|
15
|
+
- `#find_*_by_name` => `#find_*_by_any_name`
|
|
16
|
+
- `#find_*_by_names` => `#find_*_by_unofficial_names`
|
|
17
|
+
|
|
18
|
+
With the addition of the new name attributes, there are now also the following finders:
|
|
19
|
+
|
|
20
|
+
- `#find_by_common_name`/`#find_*_by_common_name`
|
|
21
|
+
- `#find_by_iso_short_name`/`#find_*_by_iso_short_name`
|
|
22
|
+
- `#find_by_iso_long_name`/`#find_*_by_iso_long_name`
|
|
23
|
+
|
|
24
|
+
For translated country names, we use data originally sourced 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". Some corrections have been applied to these localized names. The methods to access translated names have not been changed.
|
|
25
|
+
|
|
26
|
+
The 5.0 release removed support for Ruby 2.5 (EOL 2021-03-01) and 2.6 (EOL 2022-03-31)
|
|
27
|
+
|
|
28
|
+
# Upgrading to 5.1
|
|
29
|
+
|
|
30
|
+
In release 5.1 a `type` attribute was added to the subdivisions object, to allow filtering the collection of subdivisions.
|
|
31
|
+
|
|
32
|
+
- `Country#subdivision_types` returns a list of subdivision types for that country (lowercase, snake_cased)
|
|
33
|
+
- `#subdivisions_of_types(types)` accepts an array of subdivision types and returns the subdivisions for those types
|
|
34
|
+
|
|
35
|
+
The `#states` method is deprecated to avoid confusion, as this method is an alias to `#subdivisions` and returns all subdivisions, regardless of type.
|
|
36
|
+
|
|
37
|
+
To get a list of `state` subdivisions (something that was not possible before 5.1), use `subdivisions_of_types(['state'])`
|
|
38
|
+
|
|
39
|
+
Please note that the subdivision types are obtained from ISO data, and each country defines its own subdivision types, eg: `state`, `district`, `region`, `municipality` and many others types exist.
|
data/bin/console
CHANGED
data/countries.gemspec
CHANGED
|
@@ -1,25 +1,30 @@
|
|
|
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
|
-
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
|
|
13
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
14
19
|
gem.name = 'countries'
|
|
15
20
|
gem.require_paths = ['lib']
|
|
16
21
|
gem.version = Countries::VERSION.dup
|
|
17
22
|
gem.license = 'MIT'
|
|
18
23
|
|
|
19
|
-
gem.
|
|
20
|
-
|
|
21
|
-
gem.add_dependency('
|
|
22
|
-
gem.add_development_dependency('rspec', '>= 3')
|
|
24
|
+
gem.required_ruby_version = '>= 2.7'
|
|
25
|
+
|
|
26
|
+
gem.add_dependency('unaccent', '~> 0.3')
|
|
23
27
|
gem.add_development_dependency('activesupport', '>= 3')
|
|
24
28
|
gem.add_development_dependency('nokogiri', '>= 1.8')
|
|
29
|
+
gem.add_development_dependency('rspec', '>= 3')
|
|
25
30
|
end
|