countries 5.1.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/cache/locales/ab.json +1 -1
- data/lib/countries/cache/locales/ak.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/ay.json +1 -1
- data/lib/countries/cache/locales/ba.json +1 -1
- data/lib/countries/cache/locales/bi.json +1 -1
- data/lib/countries/cache/locales/ch.json +1 -1
- data/lib/countries/cache/locales/de.json +1 -1
- data/lib/countries/cache/locales/ee.json +1 -1
- data/lib/countries/cache/locales/en.json +1 -1
- data/lib/countries/cache/locales/fr.json +1 -1
- data/lib/countries/cache/locales/gn.json +1 -1
- data/lib/countries/cache/locales/ja.json +1 -1
- data/lib/countries/cache/locales/ki.json +1 -1
- data/lib/countries/cache/locales/kl.json +1 -1
- data/lib/countries/cache/locales/lt.json +1 -1
- data/lib/countries/cache/locales/pt-br.json +1 -1
- data/lib/countries/cache/locales/sd.json +1 -1
- data/lib/countries/cache/locales/sw.json +1 -1
- data/lib/countries/cache/locales/th.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/ve.json +1 -1
- data/lib/countries/cache/locales/xh.json +1 -1
- data/lib/countries/configuration.rb +1 -1
- data/lib/countries/country/class_methods.rb +22 -23
- data/lib/countries/country/country_subdivision_methods.rb +82 -0
- data/lib/countries/country/currency_methods.rb +0 -1
- data/lib/countries/country/emoji.rb +1 -1
- data/lib/countries/country/finder_methods.rb +5 -7
- data/lib/countries/country.rb +27 -51
- data/lib/countries/data/countries/AD.yaml +1 -0
- data/lib/countries/data/countries/AE.yaml +1 -0
- data/lib/countries/data/countries/AF.yaml +1 -0
- data/lib/countries/data/countries/AG.yaml +1 -0
- data/lib/countries/data/countries/AI.yaml +1 -0
- data/lib/countries/data/countries/AL.yaml +1 -0
- data/lib/countries/data/countries/AM.yaml +1 -0
- data/lib/countries/data/countries/AO.yaml +1 -0
- data/lib/countries/data/countries/AQ.yaml +1 -0
- data/lib/countries/data/countries/AR.yaml +2 -0
- data/lib/countries/data/countries/AS.yaml +1 -0
- data/lib/countries/data/countries/AT.yaml +1 -0
- data/lib/countries/data/countries/AU.yaml +3 -0
- data/lib/countries/data/countries/AW.yaml +1 -0
- data/lib/countries/data/countries/AX.yaml +3 -0
- data/lib/countries/data/countries/AZ.yaml +1 -0
- data/lib/countries/data/countries/BA.yaml +1 -0
- data/lib/countries/data/countries/BB.yaml +1 -0
- data/lib/countries/data/countries/BD.yaml +1 -0
- data/lib/countries/data/countries/BE.yaml +1 -0
- data/lib/countries/data/countries/BF.yaml +1 -0
- data/lib/countries/data/countries/BG.yaml +1 -0
- data/lib/countries/data/countries/BH.yaml +1 -0
- data/lib/countries/data/countries/BI.yaml +1 -0
- data/lib/countries/data/countries/BJ.yaml +1 -0
- data/lib/countries/data/countries/BL.yaml +1 -0
- data/lib/countries/data/countries/BM.yaml +1 -0
- data/lib/countries/data/countries/BN.yaml +1 -0
- data/lib/countries/data/countries/BO.yaml +1 -0
- data/lib/countries/data/countries/BQ.yaml +1 -0
- data/lib/countries/data/countries/BR.yaml +2 -0
- data/lib/countries/data/countries/BS.yaml +2 -2
- data/lib/countries/data/countries/BT.yaml +1 -0
- data/lib/countries/data/countries/BV.yaml +1 -0
- data/lib/countries/data/countries/BW.yaml +1 -0
- data/lib/countries/data/countries/BY.yaml +1 -0
- data/lib/countries/data/countries/BZ.yaml +1 -0
- data/lib/countries/data/countries/CA.yaml +3 -0
- data/lib/countries/data/countries/CC.yaml +1 -0
- data/lib/countries/data/countries/CD.yaml +1 -0
- data/lib/countries/data/countries/CF.yaml +1 -0
- data/lib/countries/data/countries/CG.yaml +1 -0
- data/lib/countries/data/countries/CH.yaml +1 -0
- data/lib/countries/data/countries/CI.yaml +1 -0
- data/lib/countries/data/countries/CK.yaml +1 -0
- data/lib/countries/data/countries/CL.yaml +1 -0
- data/lib/countries/data/countries/CM.yaml +1 -0
- data/lib/countries/data/countries/CN.yaml +2 -0
- data/lib/countries/data/countries/CO.yaml +1 -0
- data/lib/countries/data/countries/CR.yaml +1 -0
- data/lib/countries/data/countries/CU.yaml +1 -0
- data/lib/countries/data/countries/CV.yaml +1 -0
- data/lib/countries/data/countries/CW.yaml +1 -0
- data/lib/countries/data/countries/CX.yaml +1 -0
- data/lib/countries/data/countries/CY.yaml +1 -0
- data/lib/countries/data/countries/CZ.yaml +3 -3
- data/lib/countries/data/countries/DE.yaml +3 -0
- data/lib/countries/data/countries/DJ.yaml +1 -0
- data/lib/countries/data/countries/DK.yaml +1 -0
- data/lib/countries/data/countries/DM.yaml +1 -0
- data/lib/countries/data/countries/DO.yaml +1 -0
- data/lib/countries/data/countries/DZ.yaml +1 -0
- data/lib/countries/data/countries/EC.yaml +1 -0
- data/lib/countries/data/countries/EE.yaml +1 -0
- data/lib/countries/data/countries/EG.yaml +1 -0
- data/lib/countries/data/countries/EH.yaml +1 -0
- data/lib/countries/data/countries/ER.yaml +1 -0
- data/lib/countries/data/countries/ES.yaml +1 -0
- data/lib/countries/data/countries/ET.yaml +1 -0
- data/lib/countries/data/countries/FI.yaml +1 -0
- data/lib/countries/data/countries/FJ.yaml +1 -0
- data/lib/countries/data/countries/FK.yaml +1 -0
- data/lib/countries/data/countries/FM.yaml +1 -0
- data/lib/countries/data/countries/FO.yaml +1 -0
- data/lib/countries/data/countries/FR.yaml +3 -0
- data/lib/countries/data/countries/GA.yaml +1 -0
- data/lib/countries/data/countries/GB.yaml +6 -0
- data/lib/countries/data/countries/GD.yaml +1 -0
- data/lib/countries/data/countries/GE.yaml +1 -0
- data/lib/countries/data/countries/GF.yaml +3 -0
- data/lib/countries/data/countries/GG.yaml +1 -0
- data/lib/countries/data/countries/GH.yaml +1 -0
- data/lib/countries/data/countries/GI.yaml +1 -0
- data/lib/countries/data/countries/GL.yaml +1 -0
- data/lib/countries/data/countries/GM.yaml +2 -1
- data/lib/countries/data/countries/GN.yaml +1 -0
- data/lib/countries/data/countries/GP.yaml +4 -1
- data/lib/countries/data/countries/GQ.yaml +1 -0
- data/lib/countries/data/countries/GR.yaml +1 -0
- data/lib/countries/data/countries/GS.yaml +1 -0
- data/lib/countries/data/countries/GT.yaml +1 -0
- data/lib/countries/data/countries/GU.yaml +1 -0
- data/lib/countries/data/countries/GW.yaml +1 -0
- data/lib/countries/data/countries/GY.yaml +1 -0
- data/lib/countries/data/countries/HK.yaml +1 -0
- data/lib/countries/data/countries/HM.yaml +1 -0
- data/lib/countries/data/countries/HN.yaml +1 -0
- data/lib/countries/data/countries/HR.yaml +2 -1
- data/lib/countries/data/countries/HT.yaml +1 -0
- data/lib/countries/data/countries/HU.yaml +1 -0
- data/lib/countries/data/countries/ID.yaml +2 -0
- data/lib/countries/data/countries/IE.yaml +1 -0
- data/lib/countries/data/countries/IL.yaml +1 -0
- data/lib/countries/data/countries/IM.yaml +1 -0
- data/lib/countries/data/countries/IN.yaml +2 -0
- data/lib/countries/data/countries/IO.yaml +1 -0
- data/lib/countries/data/countries/IQ.yaml +1 -0
- data/lib/countries/data/countries/IR.yaml +1 -0
- data/lib/countries/data/countries/IS.yaml +1 -0
- data/lib/countries/data/countries/IT.yaml +3 -0
- data/lib/countries/data/countries/JE.yaml +1 -0
- data/lib/countries/data/countries/JM.yaml +1 -0
- data/lib/countries/data/countries/JO.yaml +1 -0
- data/lib/countries/data/countries/JP.yaml +3 -0
- data/lib/countries/data/countries/KE.yaml +1 -0
- data/lib/countries/data/countries/KG.yaml +1 -0
- data/lib/countries/data/countries/KH.yaml +1 -0
- data/lib/countries/data/countries/KI.yaml +1 -0
- data/lib/countries/data/countries/KM.yaml +1 -0
- data/lib/countries/data/countries/KN.yaml +1 -0
- data/lib/countries/data/countries/KP.yaml +1 -0
- data/lib/countries/data/countries/KR.yaml +2 -0
- data/lib/countries/data/countries/KW.yaml +1 -0
- data/lib/countries/data/countries/KY.yaml +1 -0
- data/lib/countries/data/countries/KZ.yaml +1 -0
- data/lib/countries/data/countries/LA.yaml +1 -0
- data/lib/countries/data/countries/LB.yaml +2 -1
- data/lib/countries/data/countries/LC.yaml +1 -0
- data/lib/countries/data/countries/LI.yaml +3 -0
- data/lib/countries/data/countries/LK.yaml +1 -0
- data/lib/countries/data/countries/LR.yaml +1 -0
- data/lib/countries/data/countries/LS.yaml +1 -0
- data/lib/countries/data/countries/LT.yaml +1 -0
- data/lib/countries/data/countries/LU.yaml +1 -0
- data/lib/countries/data/countries/LV.yaml +1 -0
- data/lib/countries/data/countries/LY.yaml +1 -0
- data/lib/countries/data/countries/MA.yaml +1 -0
- data/lib/countries/data/countries/MC.yaml +3 -0
- data/lib/countries/data/countries/MD.yaml +1 -0
- data/lib/countries/data/countries/ME.yaml +1 -0
- data/lib/countries/data/countries/MF.yaml +4 -1
- data/lib/countries/data/countries/MG.yaml +1 -0
- data/lib/countries/data/countries/MH.yaml +1 -0
- data/lib/countries/data/countries/MK.yaml +2 -0
- data/lib/countries/data/countries/ML.yaml +1 -0
- data/lib/countries/data/countries/MM.yaml +2 -1
- data/lib/countries/data/countries/MN.yaml +1 -0
- data/lib/countries/data/countries/MO.yaml +1 -0
- data/lib/countries/data/countries/MP.yaml +1 -0
- data/lib/countries/data/countries/MQ.yaml +3 -0
- data/lib/countries/data/countries/MR.yaml +1 -0
- data/lib/countries/data/countries/MS.yaml +1 -0
- data/lib/countries/data/countries/MT.yaml +1 -0
- data/lib/countries/data/countries/MU.yaml +1 -0
- data/lib/countries/data/countries/MV.yaml +1 -0
- data/lib/countries/data/countries/MW.yaml +1 -0
- data/lib/countries/data/countries/MX.yaml +2 -0
- data/lib/countries/data/countries/MY.yaml +1 -0
- data/lib/countries/data/countries/MZ.yaml +1 -0
- data/lib/countries/data/countries/NA.yaml +1 -0
- data/lib/countries/data/countries/NC.yaml +1 -0
- data/lib/countries/data/countries/NE.yaml +1 -0
- data/lib/countries/data/countries/NF.yaml +1 -0
- data/lib/countries/data/countries/NG.yaml +1 -0
- data/lib/countries/data/countries/NI.yaml +1 -0
- data/lib/countries/data/countries/NL.yaml +2 -0
- data/lib/countries/data/countries/NO.yaml +1 -0
- data/lib/countries/data/countries/NP.yaml +1 -0
- data/lib/countries/data/countries/NR.yaml +1 -0
- data/lib/countries/data/countries/NU.yaml +1 -0
- data/lib/countries/data/countries/NZ.yaml +1 -0
- data/lib/countries/data/countries/OM.yaml +1 -0
- data/lib/countries/data/countries/PA.yaml +1 -0
- data/lib/countries/data/countries/PE.yaml +1 -0
- data/lib/countries/data/countries/PF.yaml +1 -0
- data/lib/countries/data/countries/PG.yaml +1 -0
- data/lib/countries/data/countries/PH.yaml +1 -0
- data/lib/countries/data/countries/PK.yaml +1 -0
- data/lib/countries/data/countries/PL.yaml +1 -0
- data/lib/countries/data/countries/PM.yaml +1 -0
- data/lib/countries/data/countries/PN.yaml +1 -0
- data/lib/countries/data/countries/PR.yaml +1 -0
- data/lib/countries/data/countries/PS.yaml +3 -0
- data/lib/countries/data/countries/PT.yaml +1 -0
- data/lib/countries/data/countries/PW.yaml +1 -0
- data/lib/countries/data/countries/PY.yaml +1 -0
- data/lib/countries/data/countries/QA.yaml +1 -0
- data/lib/countries/data/countries/RE.yaml +3 -0
- data/lib/countries/data/countries/RO.yaml +1 -0
- data/lib/countries/data/countries/RS.yaml +1 -0
- data/lib/countries/data/countries/RU.yaml +2 -0
- data/lib/countries/data/countries/RW.yaml +1 -0
- data/lib/countries/data/countries/SA.yaml +2 -0
- data/lib/countries/data/countries/SB.yaml +1 -0
- data/lib/countries/data/countries/SC.yaml +1 -0
- data/lib/countries/data/countries/SD.yaml +1 -0
- data/lib/countries/data/countries/SE.yaml +1 -0
- data/lib/countries/data/countries/SG.yaml +1 -0
- data/lib/countries/data/countries/SH.yaml +1 -0
- data/lib/countries/data/countries/SI.yaml +1 -0
- data/lib/countries/data/countries/SJ.yaml +1 -0
- data/lib/countries/data/countries/SK.yaml +1 -0
- data/lib/countries/data/countries/SL.yaml +1 -0
- data/lib/countries/data/countries/SM.yaml +1 -0
- data/lib/countries/data/countries/SN.yaml +1 -0
- data/lib/countries/data/countries/SO.yaml +1 -0
- data/lib/countries/data/countries/SR.yaml +1 -0
- data/lib/countries/data/countries/SS.yaml +1 -0
- data/lib/countries/data/countries/ST.yaml +1 -0
- data/lib/countries/data/countries/SV.yaml +1 -0
- data/lib/countries/data/countries/SX.yaml +1 -0
- data/lib/countries/data/countries/SY.yaml +1 -0
- data/lib/countries/data/countries/SZ.yaml +1 -0
- data/lib/countries/data/countries/TC.yaml +1 -0
- data/lib/countries/data/countries/TD.yaml +1 -0
- data/lib/countries/data/countries/TF.yaml +1 -0
- data/lib/countries/data/countries/TG.yaml +1 -0
- data/lib/countries/data/countries/TH.yaml +2 -0
- data/lib/countries/data/countries/TJ.yaml +1 -0
- data/lib/countries/data/countries/TK.yaml +1 -0
- data/lib/countries/data/countries/TL.yaml +1 -0
- data/lib/countries/data/countries/TM.yaml +2 -1
- data/lib/countries/data/countries/TN.yaml +1 -0
- data/lib/countries/data/countries/TO.yaml +1 -0
- data/lib/countries/data/countries/TR.yaml +4 -2
- data/lib/countries/data/countries/TT.yaml +1 -0
- data/lib/countries/data/countries/TV.yaml +1 -0
- data/lib/countries/data/countries/TW.yaml +16 -13
- data/lib/countries/data/countries/TZ.yaml +1 -0
- data/lib/countries/data/countries/UA.yaml +1 -0
- data/lib/countries/data/countries/UG.yaml +1 -0
- data/lib/countries/data/countries/UM.yaml +1 -0
- data/lib/countries/data/countries/US.yaml +4 -1
- data/lib/countries/data/countries/UY.yaml +1 -0
- data/lib/countries/data/countries/UZ.yaml +1 -0
- data/lib/countries/data/countries/VA.yaml +1 -0
- data/lib/countries/data/countries/VC.yaml +1 -0
- data/lib/countries/data/countries/VE.yaml +1 -0
- data/lib/countries/data/countries/VG.yaml +1 -0
- data/lib/countries/data/countries/VI.yaml +2 -0
- data/lib/countries/data/countries/VN.yaml +1 -0
- data/lib/countries/data/countries/VU.yaml +1 -0
- data/lib/countries/data/countries/WF.yaml +1 -0
- data/lib/countries/data/countries/WS.yaml +1 -0
- data/lib/countries/data/countries/YE.yaml +1 -0
- data/lib/countries/data/countries/YT.yaml +3 -0
- data/lib/countries/data/countries/ZA.yaml +2 -0
- data/lib/countries/data/countries/ZM.yaml +1 -0
- data/lib/countries/data/countries/ZW.yaml +1 -0
- data/lib/countries/data/locales_methods.rb +23 -0
- data/lib/countries/data/subdivision_methods.rb +30 -0
- data/lib/countries/data/subdivisions/AD.yaml +7 -0
- data/lib/countries/data/subdivisions/AE.yaml +24 -0
- data/lib/countries/data/subdivisions/AF.yaml +200 -1
- data/lib/countries/data/subdivisions/AG.yaml +17 -0
- data/lib/countries/data/subdivisions/AL.yaml +69 -0
- data/lib/countries/data/subdivisions/AM.yaml +44 -0
- data/lib/countries/data/subdivisions/AO.yaml +54 -0
- data/lib/countries/data/subdivisions/AR.yaml +69 -0
- data/lib/countries/data/subdivisions/AT.yaml +35 -0
- data/lib/countries/data/subdivisions/AU.yaml +37 -0
- data/lib/countries/data/subdivisions/AZ.yaml +316 -2
- data/lib/countries/data/subdivisions/BA.yaml +8 -0
- data/lib/countries/data/subdivisions/BB.yaml +15 -0
- data/lib/countries/data/subdivisions/BD.yaml +211 -0
- data/lib/countries/data/subdivisions/BE.yaml +34 -0
- data/lib/countries/data/subdivisions/BF.yaml +56 -0
- data/lib/countries/data/subdivisions/BG.yaml +30 -0
- data/lib/countries/data/subdivisions/BH.yaml +13 -0
- data/lib/countries/data/subdivisions/BI.yaml +54 -0
- data/lib/countries/data/subdivisions/BJ.yaml +22 -0
- data/lib/countries/data/subdivisions/BN.yaml +9 -0
- data/lib/countries/data/subdivisions/BO.yaml +35 -0
- data/lib/countries/data/subdivisions/BQ.yaml +4 -0
- data/lib/countries/data/subdivisions/BR.yaml +14 -0
- data/lib/countries/data/subdivisions/BS.yaml +24 -0
- data/lib/countries/data/subdivisions/BT.yaml +24 -0
- data/lib/countries/data/subdivisions/BW.yaml +24 -0
- data/lib/countries/data/subdivisions/BY.yaml +5 -0
- data/lib/countries/data/subdivisions/BZ.yaml +3 -0
- data/lib/countries/data/subdivisions/CA.yaml +24 -0
- data/lib/countries/data/subdivisions/CD.yaml +77 -0
- data/lib/countries/data/subdivisions/CF.yaml +15 -0
- data/lib/countries/data/subdivisions/CG.yaml +18 -0
- data/lib/countries/data/subdivisions/CH.yaml +92 -0
- data/lib/countries/data/subdivisions/CI.yaml +65 -0
- data/lib/countries/data/subdivisions/CL.yaml +45 -2
- data/lib/countries/data/subdivisions/CM.yaml +22 -0
- data/lib/countries/data/subdivisions/CN.yaml +98 -0
- data/lib/countries/data/subdivisions/CO.yaml +68 -0
- data/lib/countries/data/subdivisions/CR.yaml +14 -0
- data/lib/countries/data/subdivisions/CU.yaml +42 -0
- data/lib/countries/data/subdivisions/CV.yaml +32 -0
- data/lib/countries/data/subdivisions/CY.yaml +18 -0
- data/lib/countries/data/subdivisions/CZ.yaml +227 -0
- data/lib/countries/data/subdivisions/DE.yaml +31 -0
- data/lib/countries/data/subdivisions/DJ.yaml +16 -0
- data/lib/countries/data/subdivisions/DK.yaml +13 -0
- data/lib/countries/data/subdivisions/DM.yaml +1 -0
- data/lib/countries/data/subdivisions/DO.yaml +102 -0
- data/lib/countries/data/subdivisions/DZ.yaml +104 -0
- data/lib/countries/data/subdivisions/EC.yaml +72 -0
- data/lib/countries/data/subdivisions/EE.yaml +6 -0
- data/lib/countries/data/subdivisions/EG.yaml +54 -0
- data/lib/countries/data/subdivisions/ER.yaml +2 -0
- data/lib/countries/data/subdivisions/ES.yaml +252 -0
- data/lib/countries/data/subdivisions/ET.yaml +27 -0
- data/lib/countries/data/subdivisions/FI.yaml +78 -0
- data/lib/countries/data/subdivisions/FJ.yaml +30 -0
- data/lib/countries/data/subdivisions/FM.yaml +11 -0
- data/lib/countries/data/subdivisions/FR.yaml +332 -1
- data/lib/countries/data/subdivisions/GA.yaml +24 -0
- data/lib/countries/data/subdivisions/GB.yaml +488 -0
- data/lib/countries/data/subdivisions/GD.yaml +10 -0
- data/lib/countries/data/subdivisions/GE.yaml +34 -0
- data/lib/countries/data/subdivisions/GH.yaml +79 -0
- data/lib/countries/data/subdivisions/GL.yaml +58 -0
- data/lib/countries/data/subdivisions/GM.yaml +10 -0
- data/lib/countries/data/subdivisions/GN.yaml +65 -0
- data/lib/countries/data/subdivisions/GQ.yaml +36 -0
- data/lib/countries/data/subdivisions/GR.yaml +41 -0
- data/lib/countries/data/subdivisions/GW.yaml +24 -0
- data/lib/countries/data/subdivisions/GY.yaml +31 -0
- data/lib/countries/data/subdivisions/HN.yaml +21 -0
- data/lib/countries/data/subdivisions/HR.yaml +82 -0
- data/lib/countries/data/subdivisions/HT.yaml +14 -0
- data/lib/countries/data/subdivisions/HU.yaml +94 -0
- data/lib/countries/data/subdivisions/ID.yaml +99 -0
- data/lib/countries/data/subdivisions/IE.yaml +39 -0
- data/lib/countries/data/subdivisions/IL.yaml +15 -0
- data/lib/countries/data/subdivisions/IN.yaml +219 -9
- data/lib/countries/data/subdivisions/IQ.yaml +59 -0
- data/lib/countries/data/subdivisions/IR.yaml +34 -2
- data/lib/countries/data/subdivisions/IS.yaml +560 -0
- data/lib/countries/data/subdivisions/IT.yaml +321 -0
- data/lib/countries/data/subdivisions/JM.yaml +22 -0
- data/lib/countries/data/subdivisions/JO.yaml +16 -0
- data/lib/countries/data/subdivisions/JP.yaml +42 -0
- data/lib/countries/data/subdivisions/KE.yaml +298 -0
- data/lib/countries/data/subdivisions/KG.yaml +28 -0
- data/lib/countries/data/subdivisions/KH.yaml +108 -0
- data/lib/countries/data/subdivisions/KI.yaml +6 -0
- data/lib/countries/data/subdivisions/KM.yaml +4 -0
- data/lib/countries/data/subdivisions/KN.yaml +6 -0
- data/lib/countries/data/subdivisions/KP.yaml +42 -0
- data/lib/countries/data/subdivisions/KR.yaml +36 -0
- data/lib/countries/data/subdivisions/KW.yaml +5 -0
- data/lib/countries/data/subdivisions/KZ.yaml +127 -0
- data/lib/countries/data/subdivisions/LA.yaml +49 -0
- data/lib/countries/data/subdivisions/LB.yaml +28 -0
- data/lib/countries/data/subdivisions/LC.yaml +6 -0
- data/lib/countries/data/subdivisions/LI.yaml +37 -0
- data/lib/countries/data/subdivisions/LK.yaml +67 -0
- data/lib/countries/data/subdivisions/LR.yaml +16 -0
- data/lib/countries/data/subdivisions/LS.yaml +23 -0
- data/lib/countries/data/subdivisions/LT.yaml +315 -0
- data/lib/countries/data/subdivisions/LU.yaml +31 -0
- data/lib/countries/data/subdivisions/LV.yaml +83 -0
- data/lib/countries/data/subdivisions/LY.yaml +16 -0
- data/lib/countries/data/subdivisions/MA.yaml +827 -12
- data/lib/countries/data/subdivisions/MC.yaml +47 -0
- data/lib/countries/data/subdivisions/MD.yaml +41 -0
- data/lib/countries/data/subdivisions/ME.yaml +83 -0
- data/lib/countries/data/subdivisions/MG.yaml +21 -0
- data/lib/countries/data/subdivisions/MH.yaml +70 -0
- data/lib/countries/data/subdivisions/MK.yaml +505 -0
- data/lib/countries/data/subdivisions/ML.yaml +33 -0
- data/lib/countries/data/subdivisions/MM.yaml +51 -0
- data/lib/countries/data/subdivisions/MN.yaml +94 -0
- data/lib/countries/data/subdivisions/MR.yaml +32 -0
- data/lib/countries/data/subdivisions/MT.yaml +126 -0
- data/lib/countries/data/subdivisions/MU.yaml +21 -0
- data/lib/countries/data/subdivisions/MV.yaml +20 -0
- data/lib/countries/data/subdivisions/MW.yaml +52 -0
- data/lib/countries/data/subdivisions/MX.yaml +23 -0
- data/lib/countries/data/subdivisions/MY.yaml +24 -0
- data/lib/countries/data/subdivisions/MZ.yaml +20 -0
- data/lib/countries/data/subdivisions/NA.yaml +28 -0
- data/lib/countries/data/subdivisions/NE.yaml +9 -0
- data/lib/countries/data/subdivisions/NG.yaml +89 -0
- data/lib/countries/data/subdivisions/NI.yaml +25 -0
- data/lib/countries/data/subdivisions/NL.yaml +24 -0
- data/lib/countries/data/subdivisions/NO.yaml +138 -1
- data/lib/countries/data/subdivisions/NP.yaml +9 -0
- data/lib/countries/data/subdivisions/NR.yaml +19 -0
- data/lib/countries/data/subdivisions/NZ.yaml +34 -0
- data/lib/countries/data/subdivisions/OM.yaml +10 -0
- data/lib/countries/data/subdivisions/PA.yaml +27 -0
- data/lib/countries/data/subdivisions/PE.yaml +24 -0
- data/lib/countries/data/subdivisions/PG.yaml +46 -0
- data/lib/countries/data/subdivisions/PH.yaml +293 -0
- data/lib/countries/data/subdivisions/PK.yaml +22 -0
- data/lib/countries/data/subdivisions/PL.yaml +141 -0
- data/lib/countries/data/subdivisions/PS.yaml +41 -0
- data/lib/countries/data/subdivisions/PT.yaml +36 -0
- data/lib/countries/data/subdivisions/PW.yaml +24 -0
- data/lib/countries/data/subdivisions/PY.yaml +22 -1
- data/lib/countries/data/subdivisions/QA.yaml +26 -0
- data/lib/countries/data/subdivisions/RO.yaml +189 -0
- data/lib/countries/data/subdivisions/RS.yaml +112 -0
- data/lib/countries/data/subdivisions/RU.yaml +123 -0
- data/lib/countries/data/subdivisions/RW.yaml +7 -0
- data/lib/countries/data/subdivisions/SA.yaml +38 -0
- data/lib/countries/data/subdivisions/SB.yaml +11 -0
- data/lib/countries/data/subdivisions/SC.yaml +45 -0
- data/lib/countries/data/subdivisions/SD.yaml +15 -0
- data/lib/countries/data/subdivisions/SE.yaml +42 -0
- data/lib/countries/data/subdivisions/SG.yaml +8 -0
- data/lib/countries/data/subdivisions/SH.yaml +6 -0
- data/lib/countries/data/subdivisions/SI.yaml +735 -0
- data/lib/countries/data/subdivisions/SK.yaml +22 -0
- data/lib/countries/data/subdivisions/SL.yaml +7 -0
- data/lib/countries/data/subdivisions/SM.yaml +19 -0
- data/lib/countries/data/subdivisions/SN.yaml +43 -0
- data/lib/countries/data/subdivisions/SO.yaml +71 -0
- data/lib/countries/data/subdivisions/SR.yaml +17 -0
- data/lib/countries/data/subdivisions/SS.yaml +4 -0
- data/lib/countries/data/subdivisions/ST.yaml +127 -0
- data/lib/countries/data/subdivisions/SV.yaml +20 -0
- data/lib/countries/data/subdivisions/SY.yaml +53 -0
- data/lib/countries/data/subdivisions/SZ.yaml +18 -0
- data/lib/countries/data/subdivisions/TD.yaml +51 -0
- data/lib/countries/data/subdivisions/TG.yaml +13 -0
- data/lib/countries/data/subdivisions/TH.yaml +231 -0
- data/lib/countries/data/subdivisions/TJ.yaml +16 -1
- data/lib/countries/data/subdivisions/TL.yaml +38 -0
- data/lib/countries/data/subdivisions/TM.yaml +16 -1
- data/lib/countries/data/subdivisions/TN.yaml +25 -0
- data/lib/countries/data/subdivisions/TO.yaml +1 -0
- data/lib/countries/data/subdivisions/TR.yaml +93 -0
- data/lib/countries/data/subdivisions/TT.yaml +25 -0
- data/lib/countries/data/subdivisions/TV.yaml +25 -0
- data/lib/countries/data/subdivisions/TW.yaml +106 -0
- data/lib/countries/data/subdivisions/TZ.yaml +38 -0
- data/lib/countries/data/subdivisions/UA.yaml +108 -1
- data/lib/countries/data/subdivisions/UG.yaml +262 -0
- data/lib/countries/data/subdivisions/UM.yaml +4 -0
- data/lib/countries/data/subdivisions/US.yaml +166 -4
- data/lib/countries/data/subdivisions/UY.yaml +27 -0
- data/lib/countries/data/subdivisions/UZ.yaml +78 -1
- data/lib/countries/data/subdivisions/VC.yaml +6 -0
- data/lib/countries/data/subdivisions/VE.yaml +33 -0
- data/lib/countries/data/subdivisions/VN.yaml +131 -0
- data/lib/countries/data/subdivisions/VU.yaml +8 -0
- data/lib/countries/data/subdivisions/WS.yaml +18 -0
- data/lib/countries/data/subdivisions/YE.yaml +16 -0
- data/lib/countries/data/subdivisions/ZA.yaml +5 -0
- data/lib/countries/data/subdivisions/ZM.yaml +24 -0
- data/lib/countries/data/subdivisions/ZW.yaml +21 -0
- data/lib/countries/data/translations/countries-ab.yaml +1 -1
- data/lib/countries/data/translations/countries-ak.yaml +1 -1
- data/lib/countries/data/translations/countries-an.yaml +1 -1
- data/lib/countries/data/translations/countries-ar.yaml +1 -1
- data/lib/countries/data/translations/countries-ay.yaml +1 -1
- data/lib/countries/data/translations/countries-ba.yaml +1 -1
- data/lib/countries/data/translations/countries-bi.yaml +1 -1
- data/lib/countries/data/translations/countries-ch.yaml +1 -1
- data/lib/countries/data/translations/countries-de.yaml +2 -2
- data/lib/countries/data/translations/countries-ee.yaml +1 -1
- data/lib/countries/data/translations/countries-en.yaml +1 -1
- data/lib/countries/data/translations/countries-fr.yaml +7 -7
- data/lib/countries/data/translations/countries-gn.yaml +2 -2
- data/lib/countries/data/translations/countries-ja.yaml +4 -4
- data/lib/countries/data/translations/countries-ki.yaml +1 -1
- data/lib/countries/data/translations/countries-kl.yaml +1 -1
- data/lib/countries/data/translations/countries-lt.yaml +2 -2
- data/lib/countries/data/translations/countries-pt_BR.yaml +1 -1
- data/lib/countries/data/translations/countries-sd.yaml +1 -1
- data/lib/countries/data/translations/countries-sw.yaml +1 -1
- data/lib/countries/data/translations/countries-th.yaml +2 -2
- data/lib/countries/data/translations/countries-tk.yaml +88 -88
- data/lib/countries/data/translations/countries-tl.yaml +1 -1
- data/lib/countries/data/translations/countries-ve.yaml +1 -1
- data/lib/countries/data/translations/countries-xh.yaml +1 -1
- data/lib/countries/data.rb +31 -43
- data/lib/countries/global.rb +0 -1
- data/lib/countries/iso3166.rb +3 -1
- data/lib/countries/sources/cldr/subdivision.rb +1 -1
- data/lib/countries/structure.rb +1 -0
- data/lib/countries/subdivision.rb +5 -0
- data/lib/countries/tasks/postal_codes.rake +6 -2
- data/lib/countries/version.rb +1 -1
- data/lib/countries.rb +0 -2
- metadata +25 -44
- data/.github/workflows/codeql-analysis.yml +0 -70
- data/.github/workflows/tests.yml +0 -35
- data/.gitignore +0 -26
- data/.rspec +0 -2
- data/.rubocop.yml +0 -40
- data/.rubocop_todo.yml +0 -19
- data/CHANGELOG.md +0 -663
- data/Gemfile +0 -16
- data/LICENSE +0 -24
- data/README.markdown +0 -346
- data/Rakefile +0 -63
- data/UPGRADE.md +0 -39
- data/bin/console +0 -15
- data/countries.gemspec +0 -30
- data/lib/countries/kwarg_struct.rb +0 -14
- data/lib/countries/tasks/geocoding.rake +0 -106
- data/spec/00_global_spec.rb +0 -58
- data/spec/configuration_spec.rb +0 -60
- data/spec/country_spec.rb +0 -1131
- data/spec/data_spec.rb +0 -245
- data/spec/mongoid_spec.rb +0 -61
- data/spec/perf_spec.rb +0 -74
- data/spec/spec_helper.rb +0 -15
- data/spec/subdivision_spec.rb +0 -34
- data/spec/thread_safety_spec.rb +0 -47
- data/spec/timezone_spec.rb +0 -34
data/Gemfile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
source 'https://rubygems.org'
|
4
|
-
gem 'geocoder'
|
5
|
-
gem 'money'
|
6
|
-
gem 'rake'
|
7
|
-
gem 'retryable'
|
8
|
-
gem 'tzinfo'
|
9
|
-
|
10
|
-
# Specify your gem's dependencies in countries.gemspec
|
11
|
-
gemspec
|
12
|
-
|
13
|
-
group :development, :test do
|
14
|
-
gem 'pry'
|
15
|
-
gem 'yaml'
|
16
|
-
end
|
data/LICENSE
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
Copyright (c) 2012-2015 hexorx
|
2
|
-
Copyright (c) 2015-2021 hexorx, rposborne
|
3
|
-
Copyright (c) 2022 hexorx, rposborne, pmor
|
4
|
-
|
5
|
-
MIT License
|
6
|
-
|
7
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
8
|
-
a copy of this software and associated documentation files (the
|
9
|
-
"Software"), to deal in the Software without restriction, including
|
10
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
11
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
12
|
-
permit persons to whom the Software is furnished to do so, subject to
|
13
|
-
the following conditions:
|
14
|
-
|
15
|
-
The above copyright notice and this permission notice shall be
|
16
|
-
included in all copies or substantial portions of the Software.
|
17
|
-
|
18
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
19
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
20
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
21
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
22
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
23
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
24
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.markdown
DELETED
@@ -1,346 +0,0 @@
|
|
1
|
-
# Countries
|
2
|
-
|
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
|
-
|
5
|
-
[![Gem Version](https://badge.fury.io/rb/countries.svg)](https://badge.fury.io/rb/countries) [![Tests](https://github.com/countries/countries/actions/workflows/tests.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/tests.yml) [![Code Climate](https://codeclimate.com/github/countries/countries.svg)](https://codeclimate.com/github/countries/countries)
|
6
|
-
[![CodeQL](https://github.com/countries/countries/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/countries/countries/actions/workflows/codeql-analysis.yml)
|
7
|
-
|
8
|
-
|
9
|
-
## Installation
|
10
|
-
|
11
|
-
```bash
|
12
|
-
gem install countries
|
13
|
-
```
|
14
|
-
|
15
|
-
Or you can install via Bundler if you are using Rails:
|
16
|
-
|
17
|
-
```bash
|
18
|
-
bundle add countries
|
19
|
-
```
|
20
|
-
|
21
|
-
## Basic Usage
|
22
|
-
|
23
|
-
Simply load a new country object using Country.new(*alpha2*) or the shortcut Country[*alpha2*]. An example works best.
|
24
|
-
|
25
|
-
```ruby
|
26
|
-
c = ISO3166::Country.new('US')
|
27
|
-
```
|
28
|
-
|
29
|
-
## Configuration
|
30
|
-
|
31
|
-
### Country Helper
|
32
|
-
|
33
|
-
Some apps might not want to constantly call `ISO3166::Country` this gem has a
|
34
|
-
helper that can provide a `Country` class
|
35
|
-
|
36
|
-
```ruby
|
37
|
-
# With global Country Helper
|
38
|
-
c = Country['US']
|
39
|
-
```
|
40
|
-
|
41
|
-
**This will conflict with any existing `Country` constant**
|
42
|
-
|
43
|
-
To Use
|
44
|
-
|
45
|
-
```ruby
|
46
|
-
gem 'countries', require: 'countries/global'
|
47
|
-
```
|
48
|
-
|
49
|
-
## Upgrading to 4.2 and 5.x
|
50
|
-
|
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.
|
52
|
-
|
53
|
-
The 5.0 release removed these deprecated methods and also removed support for Ruby 2.5 and 2.6
|
54
|
-
|
55
|
-
Plase see [UPGRADE.md](../master/UPGRADE.md) for more information
|
56
|
-
|
57
|
-
## Attribute-Based Finder Methods
|
58
|
-
|
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:
|
60
|
-
|
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')
|
65
|
-
list = ISO3166::Country.find_all_countries_by_region('Americas')
|
66
|
-
c = ISO3166::Country.find_country_by_alpha2("FR")
|
67
|
-
```
|
68
|
-
|
69
|
-
For a list of available attributes please see `ISO3166::DEFAULT_COUNTRY_HASH`.
|
70
|
-
Note: searches are *case insensitive and ignore accents*.
|
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](../blob/master/UPGRADE.md) for more information_
|
73
|
-
|
74
|
-
## Country Info
|
75
|
-
|
76
|
-
### Identification Codes
|
77
|
-
|
78
|
-
```ruby
|
79
|
-
c.number # => "840"
|
80
|
-
c.alpha2 # => "US"
|
81
|
-
c.alpha3 # => "USA"
|
82
|
-
c.gec # => "US"
|
83
|
-
```
|
84
|
-
|
85
|
-
### Names & Translations
|
86
|
-
|
87
|
-
```ruby
|
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'))
|
91
|
-
c.unofficial_names # => ["United States of America", "Vereinigte Staaten von Amerika", "États-Unis", "Estados Unidos"]
|
92
|
-
|
93
|
-
# Get the names for a country translated to its local languages
|
94
|
-
c = Country[:BE]
|
95
|
-
c.local_names # => ["België", "Belgique", "Belgien"]
|
96
|
-
c.local_name # => "België"
|
97
|
-
|
98
|
-
# Get a specific translation
|
99
|
-
c.translation('de') # => 'Vereinigte Staaten von Amerika'
|
100
|
-
c.translations['fr'] # => "États-Unis"
|
101
|
-
|
102
|
-
# Get all translations for a locale, defaults to 'en'
|
103
|
-
ISO3166::Country.translations # {"DE"=>"Germany",...}
|
104
|
-
ISO3166::Country.translations('de') # {"DE"=>"Deutschland",...}
|
105
|
-
ISO3166::Country.all_translated # ['Germany', ...]
|
106
|
-
ISO3166::Country.all_translated('de') # ['Deutschland', ...]
|
107
|
-
|
108
|
-
# Nationality
|
109
|
-
c.nationality # => "American"
|
110
|
-
```
|
111
|
-
|
112
|
-
### Subdivisions & States
|
113
|
-
|
114
|
-
```ruby
|
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
|
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"], ... ]
|
126
|
-
```
|
127
|
-
|
128
|
-
### Location
|
129
|
-
|
130
|
-
```ruby
|
131
|
-
c.latitude # => "37.09024"
|
132
|
-
c.longitude # => "-95.712891"
|
133
|
-
|
134
|
-
c.world_region # => "AMER"
|
135
|
-
c.region # => "Americas"
|
136
|
-
c.subregion # => "Northern America"
|
137
|
-
```
|
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
|
-
|
141
|
-
### Timezones **(optional)**
|
142
|
-
|
143
|
-
Add `tzinfo` to your Gemfile and ensure it's required, Countries will not do this for you.
|
144
|
-
|
145
|
-
```ruby
|
146
|
-
gem 'tzinfo', '~> 1.2', '>= 1.2.2'
|
147
|
-
```
|
148
|
-
|
149
|
-
```ruby
|
150
|
-
c.timezones.zone_identifiers # => ["America/New_York", "America/Detroit", "America/Kentucky/Louisville", ...]
|
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)
|
153
|
-
```
|
154
|
-
|
155
|
-
### Telephone Routing (E164)
|
156
|
-
|
157
|
-
```ruby
|
158
|
-
c.country_code # => "1"
|
159
|
-
c.national_destination_code_lengths # => 3
|
160
|
-
c.national_number_lengths # => 10
|
161
|
-
c.international_prefix # => "011"
|
162
|
-
c.national_prefix # => "1"
|
163
|
-
```
|
164
|
-
|
165
|
-
### Boundary Boxes
|
166
|
-
|
167
|
-
```ruby
|
168
|
-
c.min_longitude # => '45'
|
169
|
-
c.min_latitude # => '22.166667'
|
170
|
-
c.max_longitude # => '58'
|
171
|
-
c.max_latitude # => '26.133333'
|
172
|
-
|
173
|
-
c.bounds #> {"northeast"=>{"lat"=>22.166667, "lng"=>58}, "southwest"=>{"lat"=>26.133333, "lng"=>45}}
|
174
|
-
```
|
175
|
-
|
176
|
-
### European Union Membership
|
177
|
-
|
178
|
-
```ruby
|
179
|
-
c.in_eu? # => false
|
180
|
-
```
|
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
|
-
|
207
|
-
## Currencies
|
208
|
-
|
209
|
-
To enable currencies extension please add the following to countries initializer.
|
210
|
-
|
211
|
-
```ruby
|
212
|
-
ISO3166.configuration.enable_currency_extension!
|
213
|
-
```
|
214
|
-
|
215
|
-
Please note that it requires you to add "money" dependency to your gemfile.
|
216
|
-
|
217
|
-
```ruby
|
218
|
-
gem "money", "~> 6.9"
|
219
|
-
```
|
220
|
-
|
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.
|
222
|
-
|
223
|
-
```ruby
|
224
|
-
c = ISO3166::Country['us']
|
225
|
-
c.currency.iso_code # => 'USD'
|
226
|
-
c.currency.name # => 'United States Dollar'
|
227
|
-
c.currency.symbol # => '$'
|
228
|
-
```
|
229
|
-
|
230
|
-
## Address Formatting
|
231
|
-
|
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.
|
233
|
-
|
234
|
-
```ruby
|
235
|
-
c.address_format # => "{{recipient}}\n{{street}}\n{{city}} {{region}} {{postalcode}}\n{{country}}"
|
236
|
-
```
|
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
|
-
## Loading Custom Data
|
260
|
-
|
261
|
-
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!
|
262
|
-
|
263
|
-
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__.
|
264
|
-
|
265
|
-
```ruby
|
266
|
-
ISO3166::Data.register(
|
267
|
-
alpha2: 'LOL',
|
268
|
-
iso_short_name: 'Happy Country',
|
269
|
-
translations: {
|
270
|
-
'en' => 'Happy Country',
|
271
|
-
'de' => 'glückliches Land'
|
272
|
-
}
|
273
|
-
)
|
274
|
-
|
275
|
-
ISO3166::Country.new('LOL').iso_short_name == 'Happy Country'
|
276
|
-
```
|
277
|
-
|
278
|
-
## Mongoid
|
279
|
-
|
280
|
-
Mongoid support has been added. It is required automatically if Mongoid is defined in your project.
|
281
|
-
|
282
|
-
Use native country fields in your model:
|
283
|
-
|
284
|
-
```ruby
|
285
|
-
field :country, type: Country
|
286
|
-
```
|
287
|
-
|
288
|
-
Adds native support for searching/saving by a country object or alpha2 code.
|
289
|
-
|
290
|
-
Searching:
|
291
|
-
|
292
|
-
```ruby
|
293
|
-
# By alpha2
|
294
|
-
spanish_things = Things.where(country: 'ES')
|
295
|
-
spanish_things.first.country.iso_short_name # => "Spain"
|
296
|
-
|
297
|
-
# By object
|
298
|
-
spanish_things = Things.where(country: Country.find_by_iso_short_name('Spain')[1])
|
299
|
-
spanish_things.first.country.iso_short_name # => "Spain"
|
300
|
-
```
|
301
|
-
|
302
|
-
Saving:
|
303
|
-
|
304
|
-
```ruby
|
305
|
-
# By alpha2
|
306
|
-
spanish_things = Thing.new(country: 'ES')
|
307
|
-
spanish_things.save!
|
308
|
-
spanish_things.country.iso_short_name # => "Spain"
|
309
|
-
|
310
|
-
# By object
|
311
|
-
spanish_things = Thing.new(country: Country.find_by_iso_short_name('Spain')[1])
|
312
|
-
spanish_things.save!
|
313
|
-
spanish_things.country.iso_short_name # => "Spain"
|
314
|
-
```
|
315
|
-
|
316
|
-
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:
|
317
|
-
|
318
|
-
```ruby
|
319
|
-
def country
|
320
|
-
super.iso_short_name
|
321
|
-
end
|
322
|
-
```
|
323
|
-
|
324
|
-
## Note on Patches/Pull Requests
|
325
|
-
|
326
|
-
**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.
|
327
|
-
|
328
|
-
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`.
|
329
|
-
|
330
|
-
* Fork the project.
|
331
|
-
* Make your feature addition or bug fix.
|
332
|
-
* Add tests for it. This is important so I don't break it in a
|
333
|
-
future version unintentionally.
|
334
|
-
* Commit, do not mess with rakefile, version, or history.
|
335
|
-
(if you want to have your own version, that is fine but
|
336
|
-
bump version in a commit by itself I can ignore when I pull)
|
337
|
-
* Make sure your you haven't made changes to `cache/**/*`
|
338
|
-
* Submit a pull request. Bonus points for topic branches.
|
339
|
-
|
340
|
-
## Copyright
|
341
|
-
|
342
|
-
Copyright (c) 2012-2015 hexorx \
|
343
|
-
Copyright (c) 2015-2021 hexorx, rposborne \
|
344
|
-
Copyright (c) 2022 hexorx, rposborne, pmor
|
345
|
-
|
346
|
-
See LICENSE for details.
|
data/Rakefile
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'bundler/gem_tasks'
|
5
|
-
|
6
|
-
require 'rake'
|
7
|
-
require 'rspec/core/rake_task'
|
8
|
-
require 'yaml'
|
9
|
-
|
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
|
-
|
15
|
-
Dir.glob('lib/countries/tasks/*.rake').each { |r| load r }
|
16
|
-
|
17
|
-
desc 'Run all examples'
|
18
|
-
RSpec::Core::RakeTask.new(:spec) do |t|
|
19
|
-
t.rspec_opts = %w[--color --warnings]
|
20
|
-
end
|
21
|
-
|
22
|
-
task default: [:spec]
|
23
|
-
|
24
|
-
desc 'Update CLDR subdivison data set'
|
25
|
-
task :update_cldr_subdivison_data do
|
26
|
-
require_relative './lib/countries/sources'
|
27
|
-
Sources::CLDR::Downloader.subdivisions
|
28
|
-
Sources::CLDR::SubdivisionUpdater.new.call
|
29
|
-
end
|
30
|
-
|
31
|
-
desc 'Update Cache'
|
32
|
-
task :update_cache do
|
33
|
-
codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq.sort
|
34
|
-
data = {}
|
35
|
-
|
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)
|
39
|
-
|
40
|
-
out = File.join(File.dirname(__FILE__), 'lib', 'countries', 'cache', 'locales', "#{locale.gsub(/_/, '-')}.json")
|
41
|
-
File.binwrite(out, local_names.to_json)
|
42
|
-
end
|
43
|
-
|
44
|
-
codes.each do |alpha2|
|
45
|
-
country_file = File.join(File.dirname(__FILE__), 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml")
|
46
|
-
data[alpha2] ||= YAML.load_file(country_file)[alpha2]
|
47
|
-
end
|
48
|
-
|
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
|
63
|
-
end
|
data/UPGRADE.md
DELETED
@@ -1,39 +0,0 @@
|
|
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
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'bundler/setup'
|
5
|
-
require 'countries'
|
6
|
-
|
7
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
-
# with your gem easier. You can also use a different console, if you like.
|
9
|
-
|
10
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
-
# require "pry"
|
12
|
-
# Pry.start
|
13
|
-
|
14
|
-
require 'irb'
|
15
|
-
IRB.start
|
data/countries.gemspec
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require File.expand_path('lib/countries/version', __dir__)
|
4
|
-
|
5
|
-
Gem::Specification.new do |gem|
|
6
|
-
gem.authors = ['Josh Robinson', 'Joe Corcoran', 'Russell Osborne', 'Pedro Moreira']
|
7
|
-
gem.email = ['hexorx@gmail.com', 'russell@burningpony.com', 'pedro@codecreations.tech']
|
8
|
-
gem.description = 'All sorts of useful information about every country packaged as pretty little country objects. It includes data from ISO 3166'
|
9
|
-
gem.summary = 'Gives you a country object full of all sorts of useful information.'
|
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' }
|
16
|
-
|
17
|
-
gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
|
18
|
-
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
|
-
gem.name = 'countries'
|
20
|
-
gem.require_paths = ['lib']
|
21
|
-
gem.version = Countries::VERSION.dup
|
22
|
-
gem.license = 'MIT'
|
23
|
-
|
24
|
-
gem.required_ruby_version = '>= 2.7'
|
25
|
-
|
26
|
-
gem.add_dependency('sixarm_ruby_unaccent', '~> 1.1')
|
27
|
-
gem.add_development_dependency('activesupport', '>= 3')
|
28
|
-
gem.add_development_dependency('nokogiri', '>= 1.8')
|
29
|
-
gem.add_development_dependency('rspec', '>= 3')
|
30
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ISO3166
|
4
|
-
class KwargStruct < Struct
|
5
|
-
# Override the initialize to handle hashes of named parameters
|
6
|
-
def initialize(*args)
|
7
|
-
opts = args.last.is_a?(Hash) ? args.pop : {}
|
8
|
-
super(*args)
|
9
|
-
opts.each_pair do |k, v|
|
10
|
-
send "#{k}=", v
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,106 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'geocoder'
|
4
|
-
require 'retryable'
|
5
|
-
|
6
|
-
Geocoder.configure(
|
7
|
-
lookup: :google,
|
8
|
-
timeout: 10,
|
9
|
-
api_key: GOOGLE_API_KEY
|
10
|
-
)
|
11
|
-
|
12
|
-
# raise on geocoding errors such as query limit exceeded
|
13
|
-
Geocoder.configure(always_raise: :all)
|
14
|
-
# Try to geocode a given query, on exceptions it retries up to 3 times then gives up.
|
15
|
-
# @param [String] query string to geocode
|
16
|
-
# @return [Hash] first valid result or nil
|
17
|
-
def geocode(query, params)
|
18
|
-
Retryable.retryable(tries: 3, sleep: ->(n) { 2**n }) do
|
19
|
-
Geocoder.search(query, params: params).first
|
20
|
-
end
|
21
|
-
rescue Geocoder::Error, Geocoder::LookupTimeout => e
|
22
|
-
warn "Attempts exceeded for query #{query}, last error was #{e.message}"
|
23
|
-
nil
|
24
|
-
end
|
25
|
-
|
26
|
-
def load_country_yaml(alpha2)
|
27
|
-
YAML.load_file(File.join(ISO3166_ROOT_PATH, 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml"))
|
28
|
-
end
|
29
|
-
|
30
|
-
def save_country_yaml(alpha2, data)
|
31
|
-
File.write(File.join(ISO3166_ROOT_PATH, 'lib', 'countries', 'data', 'countries', "#{alpha2}.yaml"), data.to_yaml)
|
32
|
-
end
|
33
|
-
|
34
|
-
def country_codes
|
35
|
-
@country_codes ||= Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
|
36
|
-
end
|
37
|
-
|
38
|
-
namespace :geocode do
|
39
|
-
desc 'Retrieve and store countries coordinates'
|
40
|
-
task :fetch_countries do
|
41
|
-
require 'countries'
|
42
|
-
# Iterate over countries
|
43
|
-
ISO3166::Country.all.each do |country|
|
44
|
-
code = country.alpha2
|
45
|
-
# Load unmutated yaml file.
|
46
|
-
data = load_country_yaml(country.alpha2)
|
47
|
-
|
48
|
-
next unless (result = geocode(country.iso_short_name, {region: country.alpha2}))
|
49
|
-
|
50
|
-
unless result.types.include?('country')
|
51
|
-
puts "WARNING:: Geocoder returned something that was not a country for #{country.alpha2}"
|
52
|
-
end
|
53
|
-
geometry = result.geometry
|
54
|
-
|
55
|
-
# Extract center point data
|
56
|
-
if geometry['location']
|
57
|
-
data[code]['geo']['latitude'] = geometry['location']['lat']
|
58
|
-
data[code]['geo']['longitude'] = geometry['location']['lng']
|
59
|
-
end
|
60
|
-
|
61
|
-
# Extract bounding box data
|
62
|
-
next unless geometry['bounds']
|
63
|
-
|
64
|
-
data[code]['geo']['bounds'] = geometry['bounds']
|
65
|
-
data[code]['geo']['min_latitude'] = geometry['bounds']['southwest']['lat']
|
66
|
-
data[code]['geo']['min_longitude'] = geometry['bounds']['southwest']['lng']
|
67
|
-
data[code]['geo']['max_latitude'] = geometry['bounds']['northeast']['lat']
|
68
|
-
data[code]['geo']['max_longitude'] = geometry['bounds']['northeast']['lng']
|
69
|
-
|
70
|
-
# Persist
|
71
|
-
save_country_yaml(code, data)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
desc 'Retrieve and store subdivisions coordinates'
|
76
|
-
task :fetch_subdivisions do
|
77
|
-
require_relative '../../countries'
|
78
|
-
# Iterate all countries with subdivisions
|
79
|
-
ISO3166::Country.all.select(&:subdivisions?).each do |c|
|
80
|
-
# Iterate subdivisions
|
81
|
-
state_data = c.subdivisions.dup
|
82
|
-
state_data.reject { |_, data| data['geo'] }.each do |code, _|
|
83
|
-
location = "#{c.alpha2}-#{code}"
|
84
|
-
|
85
|
-
next unless (result = geocode(location, { region: c.alpha2 }))
|
86
|
-
|
87
|
-
geometry = result.geometry
|
88
|
-
if geometry['location']
|
89
|
-
state_data[code]['geo'] ||= {}
|
90
|
-
state_data[code]['geo']['latitude'] = geometry['location']['lat']
|
91
|
-
state_data[code]['geo']['longitude'] = geometry['location']['lng']
|
92
|
-
end
|
93
|
-
|
94
|
-
next unless geometry['bounds']
|
95
|
-
|
96
|
-
state_data[code]['geo']['min_latitude'] = geometry['bounds']['southwest']['lat']
|
97
|
-
state_data[code]['geo']['min_longitude'] = geometry['bounds']['southwest']['lng']
|
98
|
-
state_data[code]['geo']['max_latitude'] = geometry['bounds']['northeast']['lat']
|
99
|
-
state_data[code]['geo']['max_longitude'] = geometry['bounds']['northeast']['lng']
|
100
|
-
end
|
101
|
-
# Write updated YAML for current country
|
102
|
-
out = File.join(ISO3166_ROOT_PATH, 'lib', 'countries', 'data', 'subdivisions', "#{c.alpha2}.yaml")
|
103
|
-
File.write(out, state_data.to_yaml)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|