countries 5.1.2 → 5.7.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/.codeclimate.yml +61 -0
- data/.github/FUNDING.yml +1 -0
- data/.github/workflows/codeql-analysis.yml +3 -3
- data/.github/workflows/tests.yml +10 -13
- data/.gitignore +0 -1
- data/.rubocop.yml +17 -8
- data/CHANGELOG.md +97 -2
- data/Gemfile +1 -2
- data/Gemfile.lock +102 -0
- data/{README.markdown → README.md} +69 -14
- data/Rakefile +2 -3
- data/countries.gemspec +6 -5
- 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/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 +25 -6
- data/lib/countries/country/country_subdivision_methods.rb +82 -0
- data/lib/countries/country/currency_methods.rb +0 -1
- data/lib/countries/country/finder_methods.rb +2 -4
- 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 +1 -0
- 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 +1 -0
- 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 +3 -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 +1 -0
- 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 +1 -0
- 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 +1 -0
- data/lib/countries/data/countries/ML.yaml +1 -0
- data/lib/countries/data/countries/MM.yaml +1 -0
- 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 +1 -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 +1 -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 +1 -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 +3 -0
- 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 +1 -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 +210 -0
- data/lib/countries/data/subdivisions/IQ.yaml +59 -0
- data/lib/countries/data/subdivisions/IR.yaml +33 -1
- 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-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 +3 -3
- 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 +19 -50
- 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 +5 -1
- data/lib/countries/version.rb +1 -1
- data/lib/countries.rb +0 -2
- data/spec/country_spec.rb +218 -22
- data/spec/data_spec.rb +12 -8
- data/spec/spec_helper.rb +4 -0
- data/spec/subdivision_spec.rb +8 -0
- metadata +28 -21
- data/.rubocop_todo.yml +0 -19
- data/lib/countries/kwarg_struct.rb +0 -14
- data/lib/countries/tasks/geocoding.rake +0 -106
|
@@ -1 +1 @@
|
|
|
1
|
-
{"AD":"Andorra","AE":"United Arab Emirates","AF":"Afghanistan","AG":"Antigua no Barbuda","AI":"Anguilla","AL":"Albania","AM":"Armenia","AO":"Angola","AQ":"Antarctica","AR":"Argentina","AS":"American Samoa","AT":"Austria","AU":"Australiya","AW":"Aruba","AX":"Åland Islands","AZ":"Azerbaijan","BA":"Bosnia and Herzegovina","BB":"Barbados","BD":"Bangladesh","BE":"Belgium","BF":"Burkina Faso","BG":"Bulgaria","BH":"Bahrain","BI":"Burundi","BJ":"Benin","BL":"Saint Barthélemy","BM":"Bermuda","BN":"Brunei Darussalam","BO":"Bolivia","BQ":"Bonaire, Sint Eustatius and Saba","BR":"Brazil","BS":"Bahamas","BT":"Bhutan","BV":"Bouvet Island","BW":"Botswana","BY":"Belarus","BZ":"Belize","CA":"Canada","CC":"Cocos (Keeling) Islands","CD":"Congo, The Democratic Republic of the","CF":"Central African Republic","CG":"Congo","CH":"Switzerland","CI":"Côte d'Ivoire","CK":"Cook Islands","CL":"Chile","CM":"Cameroon","CN":"Tshayina","CO":"Colombia","CR":"Costa Rica","CU":"Cuba","CV":"Cabo Verde","CW":"Curaçao","CX":"Christmas Island","CY":"Cyprus","CZ":"Czechia","DE":"Jamani","DJ":"Djibouti","DK":"Denmark","DM":"Dominica","DO":"Ulawulo lokuziphatha kwe Dominican","DZ":"Algeria","EC":"Ecuador","EE":"Estonia","EG":"Egypt","EH":"Western Sahara","ER":"Eritrea","ES":"Spain","ET":"Ethiopia","FI":"Finland","FJ":"Fiji","FK":"Falkland Islands (Malvinas)","FM":"Micronesia, Federated States of","FO":"Faroe Islands","FR":"Franisi","GA":"Gabon","GB":"United Kingdom","GD":"Grenada","GE":"Georgia","GF":"French Guiana","GG":"Guernsey","GH":"Ghana","GI":"Gibraltar","GL":"Greenland","GM":"Gambia","GN":"Guinea","GP":"Guadeloupe","GQ":"Equatorial Guinea","GR":"Greece","GS":"South Georgia and the South Sandwich Islands","GT":"Guatemala","GU":"Guam","GW":"Guinea-Bissau","GY":"Guyana","HK":"Hong Kong","HM":"Heard Island and McDonald Islands","HN":"Honduras","HR":"Croatia","HT":"Haiti","HU":"Hungary","ID":"Indonesia","IE":"Ireland","IL":"Sirayeli","IM":"Isle of Man","IN":"India","IO":"British Indian Ocean Territory","IQ":"Iraq","IR":"Iran, Islamic Republic of","IS":"Iceland","IT":"Ithali","JE":"Jersey","JM":"Jamaica","JO":"Jordan","JP":"Japhani","KE":"Kenya","KG":"Kyrgyzstan","KH":"Cambodia","KI":"Kiribati","KM":"Comoros","KN":"Saint Kitts and Nevis","KP":"North Korea","KR":"South Korea","KW":"Kuwait","KY":"Cayman Islands","KZ":"Kazakhstan","LA":"Lao People's Democratic Republic","LB":"Lebanon","LC":"Saint Lucia","LI":"Liechtenstein","LK":"Sri Lanka","LR":"Liberia","LS":"Lesotho","LT":"Lithuania","LU":"Luxembourg","LV":"Latvia","LY":"Libya","MA":"Morocco","MC":"Monaco","MD":"Moldova","ME":"Montenegro","MF":"Saint Martin (French part)","MG":"Madagascar","MH":"Marshall Islands","MK":"North Macedonia","ML":"Mali","MM":"Myanmar","MN":"Mongolia","MO":"Macao","MP":"Northern Mariana Islands","MQ":"Martinique","MR":"Mauritania","MS":"Montserrat","MT":"Malta","MU":"Mauritius","MV":"Maldives","MW":"Malawi","MX":"Mexico","MY":"Malaysia","MZ":"Mozambique","NA":"Namibia","NC":"New Caledonia","NE":"Niger","NF":"Norfolk Island","NG":"Nigeria","NI":"Nicaragua","NL":"Netherlands","NO":"Norway","NP":"Nepal","NR":"Nauru","NU":"Niue","NZ":"New Zealand (izealand entsha)","OM":"Oman","PA":"Panama","PE":"Peru","PF":"French Polynesia","PG":"Papua New Guinea","PH":"Philippines","PK":"Pakistan","PL":"Poland","PM":"Saint Pierre and Miquelon","PN":"Pitcairn","PR":"Puerto Rico","PS":"Palestine, State of","PT":"Portugal","PW":"Palau","PY":"Paraguay","QA":"Qatar","RE":"Réunion","RO":"Romania","RS":"Serbia","RU":"Russian Federation","RW":"Rwanda","SA":"Saudi Arabia","SB":"Solomon Islands","SC":"Seychelles","SD":"Sudan","SE":"Sweden","SG":"Singapore","SH":"Saint Helena, Ascension and Tristan da Cunha","SI":"Slovenia","SJ":"Svalbard and Jan Mayen","SK":"Slovakia","SL":"Sierra Leone","SM":"San Marino","SN":"Senegal","SO":"Somalia","SR":"Suriname","SS":"South Sudan","ST":"Sao Tome and Principe","SV":"El Salvador","SX":"Sint Maarten (Dutch part)","SY":"Syrian Arab Republic","SZ":"Eswatini","TC":"Turks and Caicos Islands","TD":"Chad","TF":"French Southern Territories","TG":"Togo","TH":"Thailand","TJ":"Tajikistan","TK":"Tokelau","TL":"Timor-Leste","TM":"Turkmenistan","TN":"Tunisia","TO":"Tonga","TR":"
|
|
1
|
+
{"AD":"Andorra","AE":"United Arab Emirates","AF":"Afghanistan","AG":"Antigua no Barbuda","AI":"Anguilla","AL":"Albania","AM":"Armenia","AO":"Angola","AQ":"Antarctica","AR":"Argentina","AS":"American Samoa","AT":"Austria","AU":"Australiya","AW":"Aruba","AX":"Åland Islands","AZ":"Azerbaijan","BA":"Bosnia and Herzegovina","BB":"Barbados","BD":"Bangladesh","BE":"Belgium","BF":"Burkina Faso","BG":"Bulgaria","BH":"Bahrain","BI":"Burundi","BJ":"Benin","BL":"Saint Barthélemy","BM":"Bermuda","BN":"Brunei Darussalam","BO":"Bolivia","BQ":"Bonaire, Sint Eustatius and Saba","BR":"Brazil","BS":"Bahamas","BT":"Bhutan","BV":"Bouvet Island","BW":"Botswana","BY":"Belarus","BZ":"Belize","CA":"Canada","CC":"Cocos (Keeling) Islands","CD":"Congo, The Democratic Republic of the","CF":"Central African Republic","CG":"Congo","CH":"Switzerland","CI":"Côte d'Ivoire","CK":"Cook Islands","CL":"Chile","CM":"Cameroon","CN":"Tshayina","CO":"Colombia","CR":"Costa Rica","CU":"Cuba","CV":"Cabo Verde","CW":"Curaçao","CX":"Christmas Island","CY":"Cyprus","CZ":"Czechia","DE":"Jamani","DJ":"Djibouti","DK":"Denmark","DM":"Dominica","DO":"Ulawulo lokuziphatha kwe Dominican","DZ":"Algeria","EC":"Ecuador","EE":"Estonia","EG":"Egypt","EH":"Western Sahara","ER":"Eritrea","ES":"Spain","ET":"Ethiopia","FI":"Finland","FJ":"Fiji","FK":"Falkland Islands (Malvinas)","FM":"Micronesia, Federated States of","FO":"Faroe Islands","FR":"Franisi","GA":"Gabon","GB":"United Kingdom","GD":"Grenada","GE":"Georgia","GF":"French Guiana","GG":"Guernsey","GH":"Ghana","GI":"Gibraltar","GL":"Greenland","GM":"Gambia","GN":"Guinea","GP":"Guadeloupe","GQ":"Equatorial Guinea","GR":"Greece","GS":"South Georgia and the South Sandwich Islands","GT":"Guatemala","GU":"Guam","GW":"Guinea-Bissau","GY":"Guyana","HK":"Hong Kong","HM":"Heard Island and McDonald Islands","HN":"Honduras","HR":"Croatia","HT":"Haiti","HU":"Hungary","ID":"Indonesia","IE":"Ireland","IL":"Sirayeli","IM":"Isle of Man","IN":"India","IO":"British Indian Ocean Territory","IQ":"Iraq","IR":"Iran, Islamic Republic of","IS":"Iceland","IT":"Ithali","JE":"Jersey","JM":"Jamaica","JO":"Jordan","JP":"Japhani","KE":"Kenya","KG":"Kyrgyzstan","KH":"Cambodia","KI":"Kiribati","KM":"Comoros","KN":"Saint Kitts and Nevis","KP":"North Korea","KR":"South Korea","KW":"Kuwait","KY":"Cayman Islands","KZ":"Kazakhstan","LA":"Lao People's Democratic Republic","LB":"Lebanon","LC":"Saint Lucia","LI":"Liechtenstein","LK":"Sri Lanka","LR":"Liberia","LS":"Lesotho","LT":"Lithuania","LU":"Luxembourg","LV":"Latvia","LY":"Libya","MA":"Morocco","MC":"Monaco","MD":"Moldova","ME":"Montenegro","MF":"Saint Martin (French part)","MG":"Madagascar","MH":"Marshall Islands","MK":"North Macedonia","ML":"Mali","MM":"Myanmar","MN":"Mongolia","MO":"Macao","MP":"Northern Mariana Islands","MQ":"Martinique","MR":"Mauritania","MS":"Montserrat","MT":"Malta","MU":"Mauritius","MV":"Maldives","MW":"Malawi","MX":"Mexico","MY":"Malaysia","MZ":"Mozambique","NA":"Namibia","NC":"New Caledonia","NE":"Niger","NF":"Norfolk Island","NG":"Nigeria","NI":"Nicaragua","NL":"Netherlands","NO":"Norway","NP":"Nepal","NR":"Nauru","NU":"Niue","NZ":"New Zealand (izealand entsha)","OM":"Oman","PA":"Panama","PE":"Peru","PF":"French Polynesia","PG":"Papua New Guinea","PH":"Philippines","PK":"Pakistan","PL":"Poland","PM":"Saint Pierre and Miquelon","PN":"Pitcairn","PR":"Puerto Rico","PS":"Palestine, State of","PT":"Portugal","PW":"Palau","PY":"Paraguay","QA":"Qatar","RE":"Réunion","RO":"Romania","RS":"Serbia","RU":"Russian Federation","RW":"Rwanda","SA":"Saudi Arabia","SB":"Solomon Islands","SC":"Seychelles","SD":"Sudan","SE":"Sweden","SG":"Singapore","SH":"Saint Helena, Ascension and Tristan da Cunha","SI":"Slovenia","SJ":"Svalbard and Jan Mayen","SK":"Slovakia","SL":"Sierra Leone","SM":"San Marino","SN":"Senegal","SO":"Somalia","SR":"Suriname","SS":"South Sudan","ST":"Sao Tome and Principe","SV":"El Salvador","SX":"Sint Maarten (Dutch part)","SY":"Syrian Arab Republic","SZ":"Eswatini","TC":"Turks and Caicos Islands","TD":"Chad","TF":"French Southern Territories","TG":"Togo","TH":"Thailand","TJ":"Tajikistan","TK":"Tokelau","TL":"Timor-Leste","TM":"Turkmenistan","TN":"Tunisia","TO":"Tonga","TR":"Türkiye","TT":"Trinidad ne Tobago","TV":"Tuvalu","TW":"Taiwan","TZ":"Tanzania","UA":"Ukraine","UG":"Uganda","UM":"United States Minor Outlying Islands","US":"United States","UY":"Uruguay","UZ":"Uzbekistan","VA":"Holy See (Vatican City State)","VC":"Saint Vincent and the Grenadines","VE":"Venezuela","VG":"Virgin Islands, British","VI":"Virgin Islands, U.S.","VN":"Vietnam","VU":"Vanuatu","WF":"Wallis and Futuna","WS":"Samoa","YE":"Yemen","YT":"Mayotte","ZA":"Mzantsi Afrika","ZM":"Zambia","ZW":"Zimbabwe"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require '
|
|
3
|
+
require 'unaccent'
|
|
4
4
|
|
|
5
5
|
module ISO3166
|
|
6
6
|
UNSEARCHABLE_METHODS = [:translations].freeze
|
|
@@ -40,9 +40,7 @@ module ISO3166
|
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
def pluck(*attributes)
|
|
43
|
-
all.map
|
|
44
|
-
attributes.map { |attribute| country.data.fetch(attribute.to_s) }
|
|
45
|
-
end
|
|
43
|
+
all.map { |country| country.data.fetch_values(*attributes.map(&:to_s)) }
|
|
46
44
|
end
|
|
47
45
|
|
|
48
46
|
def all_translated(locale = 'en')
|
|
@@ -64,13 +62,34 @@ module ISO3166
|
|
|
64
62
|
translations.merge(custom_countries)
|
|
65
63
|
end
|
|
66
64
|
|
|
65
|
+
# @param query_val [String] A value to query using `query_method`
|
|
66
|
+
# @param query_method [Symbol] An optional query method, defaults to Country#alpha2
|
|
67
|
+
# @param result_method [Symbol] An optional method of `Country` to apply to the result set.
|
|
68
|
+
# @return [Array] An array of countries matching the provided query, or the result of applying `result_method` to the array of `Country` objects
|
|
69
|
+
def collect_countries_with(query_val, query_method = :alpha2, result_method = :itself)
|
|
70
|
+
return nil unless [query_method, result_method].map { |e| method_defined? e }.all?
|
|
71
|
+
|
|
72
|
+
all.select { |country| country.send(query_method).include? query_val }
|
|
73
|
+
.map { |country| country.send(result_method) }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# @param subdivision_str [String] A subdivision name or code to search for. Search includes translated subdivision names.
|
|
77
|
+
# @param result_method [Symbol] An optional method of `Country` to apply to the result set.
|
|
78
|
+
# @return [Array] An array of countries with subdivisions matching the provided name, or the result of applying `result_method` to the array of `Country` objects
|
|
79
|
+
def collect_likely_countries_by_subdivision_name(subdivision_str, result_method = :itself)
|
|
80
|
+
return nil unless method_defined? result_method
|
|
81
|
+
|
|
82
|
+
all.select { |country| country.subdivision_for_string?(subdivision_str) }
|
|
83
|
+
.map { |country| country.send(result_method) }
|
|
84
|
+
end
|
|
85
|
+
|
|
67
86
|
protected
|
|
68
87
|
|
|
69
88
|
def strip_accents(string)
|
|
70
89
|
if string.is_a?(Regexp)
|
|
71
|
-
Regexp.new(string.source
|
|
90
|
+
Regexp.new(Unaccent.unaccent(string.source), 'i')
|
|
72
91
|
else
|
|
73
|
-
string.to_s.
|
|
92
|
+
Unaccent.unaccent(string.to_s).downcase
|
|
74
93
|
end
|
|
75
94
|
end
|
|
76
95
|
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ISO3166
|
|
4
|
+
module CountrySubdivisionMethods
|
|
5
|
+
# @param subdivision_str [String] A subdivision name or code to search for. Search includes translated subdivision names.
|
|
6
|
+
# @return [Subdivision] The first subdivision matching the provided string
|
|
7
|
+
def find_subdivision_by_name(subdivision_str)
|
|
8
|
+
subdivisions.select do |k, v|
|
|
9
|
+
subdivision_str == k || v.name == subdivision_str || v.translations.values.include?(subdivision_str)
|
|
10
|
+
end.values.first
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def subdivision_for_string?(subdivision_str)
|
|
14
|
+
!subdivisions.transform_values(&:translations)
|
|
15
|
+
.select { |k, v| subdivision_str == k || v.values.include?(subdivision_str) }.empty?
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
# +true+ if this Country has any Subdivisions.
|
|
19
|
+
def subdivisions?
|
|
20
|
+
!subdivisions.empty?
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# @return [Array<ISO3166::Subdivision>] the list of subdivisions for this Country.
|
|
24
|
+
def subdivisions
|
|
25
|
+
@subdivisions ||= if data['subdivisions']
|
|
26
|
+
ISO3166::Data.create_subdivisions(data['subdivisions'])
|
|
27
|
+
else
|
|
28
|
+
ISO3166::Data.subdivisions(alpha2)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# @param types [Array<String>] The locale to use for translations.
|
|
33
|
+
# @return [Array<ISO3166::Subdivision>] the list of subdivisions of the given type(s) for this Country.
|
|
34
|
+
def subdivisions_of_types(types)
|
|
35
|
+
subdivisions.select { |_k, v| types.include?(v.type) }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# @return [Array<String>] the list of subdivision types for this country
|
|
39
|
+
def subdivision_types
|
|
40
|
+
subdivisions.map { |_k, v| v['type'] }.uniq
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @return [Array<String>] the list of humanized subdivision types for this country. Uses ActiveSupport's `#humanize` if available
|
|
44
|
+
def humanized_subdivision_types
|
|
45
|
+
if String.instance_methods.include?(:humanize)
|
|
46
|
+
subdivisions.map { |_k, v| v['type'].humanize }.uniq
|
|
47
|
+
else
|
|
48
|
+
subdivisions.map { |_k, v| humanize_string(v['type']) }.uniq
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# @param locale [String] The locale to use for translations.
|
|
53
|
+
# @return [Array<Array>] This Country's subdivision pairs of names and codes.
|
|
54
|
+
def subdivision_names_with_codes(locale = 'en')
|
|
55
|
+
subdivisions.map { |k, v| [v.translations[locale] || v.name, k] }
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# @param locale [String] The locale to use for translations.
|
|
59
|
+
# @return [Array<String>] A list of subdivision names for this country.
|
|
60
|
+
def subdivision_names(locale = 'en')
|
|
61
|
+
subdivisions.map { |_k, v| v.translations[locale] || v.name }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def states
|
|
65
|
+
if RUBY_VERSION =~ /^3\.\d\.\d/
|
|
66
|
+
warn 'DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.',
|
|
67
|
+
uplevel: 1, category: :deprecated
|
|
68
|
+
else
|
|
69
|
+
warn 'DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.',
|
|
70
|
+
uplevel: 1
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
subdivisions
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
private
|
|
77
|
+
|
|
78
|
+
def humanize_string(str)
|
|
79
|
+
str[0].upcase + str.tr('_', ' ')[1..]
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
@@ -6,7 +6,6 @@ module ISO3166
|
|
|
6
6
|
# Optional extension which allows you to get back a +Money::Currency+ object with all the currency info.
|
|
7
7
|
# This requires enabling the integration with the {Money}[https://github.com/RubyMoney/money] gem (See {ISO3166::Configuration#enable_currency_extension!})
|
|
8
8
|
module CountryCurrencyMethods
|
|
9
|
-
|
|
10
9
|
# @return [Money::Currency] The currency data for this Country's +currency_code+
|
|
11
10
|
def currency
|
|
12
11
|
Money::Currency.find(data['currency_code'])
|
|
@@ -57,9 +57,7 @@ module ISO3166
|
|
|
57
57
|
raise "Invalid attribute name '#{attribute}'" unless searchable_attribute?(attribute.to_sym)
|
|
58
58
|
|
|
59
59
|
attributes = Array(attribute.to_s)
|
|
60
|
-
if attribute.to_s == 'any_name'
|
|
61
|
-
attributes = %w[iso_long_name iso_short_name unofficial_names translated_names]
|
|
62
|
-
end
|
|
60
|
+
attributes = %w[iso_long_name iso_short_name unofficial_names translated_names] if attribute.to_s == 'any_name'
|
|
63
61
|
|
|
64
62
|
[attributes, parse_value(val)]
|
|
65
63
|
end
|
|
@@ -75,7 +73,7 @@ module ISO3166
|
|
|
75
73
|
|
|
76
74
|
def searchable_attributes
|
|
77
75
|
# Add name and names until we complete the deprecation of the finders
|
|
78
|
-
instance_methods - UNSEARCHABLE_METHODS + [
|
|
76
|
+
instance_methods - UNSEARCHABLE_METHODS + %i[name names any_name]
|
|
79
77
|
end
|
|
80
78
|
end
|
|
81
79
|
end
|
data/lib/countries/country.rb
CHANGED
|
@@ -5,6 +5,7 @@ module ISO3166
|
|
|
5
5
|
extend CountryClassMethods
|
|
6
6
|
extend CountryFinderMethods
|
|
7
7
|
include Emoji
|
|
8
|
+
include CountrySubdivisionMethods
|
|
8
9
|
attr_reader :data
|
|
9
10
|
|
|
10
11
|
ISO3166::DEFAULT_COUNTRY_HASH.each do |method_name, _type|
|
|
@@ -50,59 +51,24 @@ module ISO3166
|
|
|
50
51
|
to_s <=> other.to_s
|
|
51
52
|
end
|
|
52
53
|
|
|
53
|
-
#
|
|
54
|
-
def
|
|
55
|
-
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
# @return [Array<ISO3166::Subdivision>] the list of subdivisions for this Country.
|
|
59
|
-
def subdivisions
|
|
60
|
-
@subdivisions ||= if data['subdivisions']
|
|
61
|
-
ISO3166::Data.create_subdivisions(data['subdivisions'])
|
|
62
|
-
else
|
|
63
|
-
ISO3166::Data.subdivisions(alpha2)
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
# @param types [Array<String>] The locale to use for translations.
|
|
68
|
-
# @return [Array<ISO3166::Subdivision>] the list of subdivisions of the given type(s) for this Country.
|
|
69
|
-
def subdivisions_of_types(types)
|
|
70
|
-
subdivisions.select{|k,v| types.include?(v.type)}
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
# @return [Array<String>] the list of subdivision types for this country
|
|
74
|
-
def subdivision_types
|
|
75
|
-
subdivisions.map{|k,v| v['type']}.uniq
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# @return [Array<String>] the list of humanized subdivision types for this country. Uses ActiveSupport's `#humanize` if available
|
|
79
|
-
def humanized_subdivision_types
|
|
80
|
-
if String.instance_methods.include?(:humanize)
|
|
81
|
-
subdivisions.map{|k,v| v['type'].humanize}.uniq
|
|
82
|
-
else
|
|
83
|
-
subdivisions.map{|k,v| v['type'][0].upcase + v['type'].tr('_', ' ')[1..-1]}.uniq
|
|
84
|
-
end
|
|
54
|
+
# +true+ if this country is a member of the European Union.
|
|
55
|
+
def in_eu?
|
|
56
|
+
data['eu_member'].nil? ? false : data['eu_member']
|
|
85
57
|
end
|
|
86
58
|
|
|
87
|
-
#
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
subdivisions.map { |k, v| [v.translations[locale] || v.name, k] }
|
|
59
|
+
# +true+ if this country is a member of the G7.
|
|
60
|
+
def in_g7?
|
|
61
|
+
data['g7_member'].nil? ? false : data['g7_member']
|
|
91
62
|
end
|
|
92
63
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
else
|
|
97
|
-
warn "DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.", uplevel: 1
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
subdivisions
|
|
64
|
+
# +true+ if this country is a member of the G20.
|
|
65
|
+
def in_g20?
|
|
66
|
+
data['g20_member'].nil? ? false : data['g20_member']
|
|
101
67
|
end
|
|
102
68
|
|
|
103
|
-
# +true+ if this country is a member of the European
|
|
104
|
-
def
|
|
105
|
-
data['
|
|
69
|
+
# +true+ if this country is a member of the European Economic Area or it is UK
|
|
70
|
+
def gdpr_compliant?
|
|
71
|
+
data['eea_member'] || alpha2 == 'GB'
|
|
106
72
|
end
|
|
107
73
|
|
|
108
74
|
# +true+ if this country is a member of the European Economic Area.
|
|
@@ -115,13 +81,23 @@ module ISO3166
|
|
|
115
81
|
data['esm_member'].nil? ? in_eea? : data['esm_member']
|
|
116
82
|
end
|
|
117
83
|
|
|
84
|
+
# +true+ if this country is a member of the EU VAT Area.
|
|
85
|
+
def in_eu_vat?
|
|
86
|
+
data['euvat_member'].nil? ? in_eu? : data['euvat_member']
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# @return [String] The regex for valid postal codes in this Country
|
|
90
|
+
def postal_code_format
|
|
91
|
+
"\\A#{data['postal_code_format']}\\Z" if postal_code
|
|
92
|
+
end
|
|
93
|
+
|
|
118
94
|
def to_s
|
|
119
95
|
data['iso_short_name']
|
|
120
96
|
end
|
|
121
97
|
|
|
122
98
|
# @return [Array<String>] the list of names for this Country in all loaded locales.
|
|
123
99
|
def translated_names
|
|
124
|
-
data['translations'].values
|
|
100
|
+
data['translations'].values.compact
|
|
125
101
|
end
|
|
126
102
|
|
|
127
103
|
# @param locale [String] The locale to use for translations.
|
|
@@ -167,6 +143,9 @@ module ISO3166
|
|
|
167
143
|
# @!attribute currency_code
|
|
168
144
|
# @return [String] the ISO 4217 currency code for this Country
|
|
169
145
|
#
|
|
146
|
+
# @!attribute distance_unit
|
|
147
|
+
# @return [String] the unit for roading distance and speed for this Country
|
|
148
|
+
#
|
|
170
149
|
# @!attribute gec
|
|
171
150
|
# @return [String] the "Geopolitical Entities and Codes", formerly FIPS 10-4 code for this Country
|
|
172
151
|
#
|
|
@@ -209,9 +188,6 @@ module ISO3166
|
|
|
209
188
|
# @!attribute postal_code
|
|
210
189
|
# @return [Boolean] Does this Country uses postal codes in addresses
|
|
211
190
|
#
|
|
212
|
-
# @!attribute postal_code_format
|
|
213
|
-
# @return [String] The regex for valid postal codes in this Country
|
|
214
|
-
#
|
|
215
191
|
# @!attribute region
|
|
216
192
|
# @return [String] The Region this country is in. Approximately matches the United Nations geoscheme
|
|
217
193
|
#
|
|
@@ -10,6 +10,8 @@ AU:
|
|
|
10
10
|
continent: Australia
|
|
11
11
|
country_code: '61'
|
|
12
12
|
currency_code: AUD
|
|
13
|
+
distance_unit: KM
|
|
14
|
+
g20_member: true
|
|
13
15
|
gec: AS
|
|
14
16
|
geo:
|
|
15
17
|
latitude: -25.274398
|
|
@@ -47,6 +49,7 @@ AU:
|
|
|
47
49
|
subregion: Australia and New Zealand
|
|
48
50
|
un_locode: AU
|
|
49
51
|
unofficial_names:
|
|
52
|
+
- Australia
|
|
50
53
|
- Australien
|
|
51
54
|
- Australie
|
|
52
55
|
- オーストラリア
|