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
data/spec/country_spec.rb
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
NUM_OF_COUNTRIES = 249
|
|
5
5
|
describe ISO3166::Country do
|
|
6
|
-
before
|
|
6
|
+
before do
|
|
7
|
+
ISO3166::Data.reset
|
|
8
|
+
ISO3166.configuration.enable_currency_extension!
|
|
9
|
+
end
|
|
10
|
+
|
|
7
11
|
let(:country) { ISO3166::Country.search('US') }
|
|
8
12
|
|
|
9
13
|
it 'allows to create a country object from a symbol representation of the alpha2 code' do
|
|
@@ -48,9 +52,11 @@ describe ISO3166::Country do
|
|
|
48
52
|
end
|
|
49
53
|
|
|
50
54
|
it 'should return alternate names' do
|
|
51
|
-
expect(country.unofficial_names).to eq(['United States', 'USA',
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
expect(country.unofficial_names).to eq(['United States', 'USA',
|
|
56
|
+
'Vereinigte Staaten von Amerika',
|
|
57
|
+
'États-Unis', 'Estados Unidos',
|
|
58
|
+
'アメリカ合衆国', 'Verenigde Staten',
|
|
59
|
+
'Соединенные Штаты Америки'])
|
|
54
60
|
end
|
|
55
61
|
|
|
56
62
|
it 'should return translations' do
|
|
@@ -74,6 +80,10 @@ describe ISO3166::Country do
|
|
|
74
80
|
expect(country.continent).to eq('North America')
|
|
75
81
|
end
|
|
76
82
|
|
|
83
|
+
it 'should return distance unit' do
|
|
84
|
+
expect(country.distance_unit).to eq('MI')
|
|
85
|
+
end
|
|
86
|
+
|
|
77
87
|
it 'knows about whether or not the country uses postal codes' do
|
|
78
88
|
expect(country.zip).to be_truthy
|
|
79
89
|
end
|
|
@@ -88,6 +98,7 @@ describe ISO3166::Country do
|
|
|
88
98
|
|
|
89
99
|
regex = Regexp.new(country.postal_code_format)
|
|
90
100
|
expect(regex).to match('12345-6789')
|
|
101
|
+
expect(regex).not_to match('12345-67890')
|
|
91
102
|
|
|
92
103
|
antarctica = ISO3166::Country.search('AQ')
|
|
93
104
|
expect(antarctica.postal_code_format).to be_nil
|
|
@@ -105,12 +116,20 @@ describe ISO3166::Country do
|
|
|
105
116
|
expect(country.world_region).to eq('AMER')
|
|
106
117
|
end
|
|
107
118
|
|
|
108
|
-
context 'with
|
|
119
|
+
context 'with Türkiye' do
|
|
109
120
|
let(:country) { ISO3166::Country.search('TR') }
|
|
110
121
|
|
|
111
122
|
it 'should indicate EMEA as the world region' do
|
|
112
123
|
expect(country.world_region).to eq('EMEA')
|
|
113
124
|
end
|
|
125
|
+
|
|
126
|
+
it 'has iso_short_name Türkiye' do
|
|
127
|
+
expect(country.iso_short_name).to eq('Türkiye')
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it 'has iso_long_name Republic of Türkiye' do
|
|
131
|
+
expect(country.iso_long_name).to eq('The Republic of Türkiye')
|
|
132
|
+
end
|
|
114
133
|
end
|
|
115
134
|
|
|
116
135
|
context 'with Japan' do
|
|
@@ -139,7 +158,7 @@ describe ISO3166::Country do
|
|
|
139
158
|
ISO3166::Data.register(
|
|
140
159
|
alpha2: 'BR2',
|
|
141
160
|
iso_short_name: 'Brazil',
|
|
142
|
-
languages_official: %w
|
|
161
|
+
languages_official: %w[pt-BR],
|
|
143
162
|
translations: {
|
|
144
163
|
'pt-BR' => 'Translation for pt-BR',
|
|
145
164
|
'pt' => 'Translation for pt'
|
|
@@ -163,7 +182,7 @@ describe ISO3166::Country do
|
|
|
163
182
|
ISO3166::Data.register(
|
|
164
183
|
alpha2: 'BR2',
|
|
165
184
|
iso_short_name: 'Brazil',
|
|
166
|
-
languages_official: %w
|
|
185
|
+
languages_official: %w[pt-BR],
|
|
167
186
|
translations: {
|
|
168
187
|
'pt' => 'Translation for pt'
|
|
169
188
|
}
|
|
@@ -231,7 +250,7 @@ describe ISO3166::Country do
|
|
|
231
250
|
end
|
|
232
251
|
|
|
233
252
|
it '#states should be deprecated' do
|
|
234
|
-
expect {country.states}.to output.to_stderr
|
|
253
|
+
expect { country.states }.to output.to_stderr
|
|
235
254
|
end
|
|
236
255
|
|
|
237
256
|
it 'should be a subdivision object' do
|
|
@@ -252,54 +271,54 @@ describe ISO3166::Country do
|
|
|
252
271
|
end
|
|
253
272
|
|
|
254
273
|
describe 'subdivision_types' do
|
|
255
|
-
it
|
|
274
|
+
it 'should return an array of subdivision types' do
|
|
256
275
|
expect(country.subdivision_types).to contain_exactly('district', 'state', 'outlying_area')
|
|
257
276
|
end
|
|
258
277
|
|
|
259
|
-
it
|
|
278
|
+
it 'should return an array of subdivision types even if there is only a single type' do
|
|
260
279
|
expect(ISO3166::Country['LI'].subdivision_types).to contain_exactly('commune')
|
|
261
280
|
end
|
|
262
281
|
|
|
263
|
-
it
|
|
282
|
+
it 'should return an empty array if country has no subdivisions' do
|
|
264
283
|
expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
|
|
265
284
|
expect(ISO3166::Country['AS'].subdivision_types).to eq([])
|
|
266
285
|
end
|
|
267
286
|
end
|
|
268
287
|
|
|
269
288
|
describe 'subdivisions_of_types' do
|
|
270
|
-
it
|
|
289
|
+
it 'given a single type, should return an array of subdivisions that match the type' do
|
|
271
290
|
us_states = country.subdivisions_of_types(%w[state])
|
|
272
291
|
expect(us_states.size).to eq(50)
|
|
273
292
|
dc = country.subdivisions_of_types(%w[district])
|
|
274
293
|
expect(dc.size).to eq(1)
|
|
275
294
|
end
|
|
276
295
|
|
|
277
|
-
it
|
|
296
|
+
it 'given multiple types, should return an array of subdivisions matching the types' do
|
|
278
297
|
us_states_plus_dc = country.subdivisions_of_types(%w[state district])
|
|
279
298
|
expect(us_states_plus_dc.size).to eq(51)
|
|
280
299
|
end
|
|
281
300
|
|
|
282
|
-
it
|
|
301
|
+
it 'given multiple types where at least one does not exist for that country, should work without issue' do
|
|
283
302
|
us_states_plus_dc = country.subdivisions_of_types(%w[state district governorate])
|
|
284
303
|
expect(us_states_plus_dc.size).to eq(51)
|
|
285
304
|
end
|
|
286
305
|
|
|
287
|
-
it
|
|
306
|
+
it 'given only types that do not exist for that country, should return an empty collection' do
|
|
288
307
|
should_be_empty = ISO3166::Country['PT'].subdivisions_of_types(%w[state county])
|
|
289
308
|
expect(should_be_empty).to be_empty
|
|
290
309
|
end
|
|
291
310
|
end
|
|
292
311
|
|
|
293
312
|
describe 'humanized_subdivision_types' do
|
|
294
|
-
it
|
|
313
|
+
it 'should return an array of humanized subdivision types' do
|
|
295
314
|
expect(country.humanized_subdivision_types).to contain_exactly('District', 'State', 'Outlying area')
|
|
296
315
|
end
|
|
297
316
|
|
|
298
|
-
it
|
|
317
|
+
it 'should return an array of subdivision types even if there is only a single type' do
|
|
299
318
|
expect(ISO3166::Country['LI'].humanized_subdivision_types).to contain_exactly('Commune')
|
|
300
319
|
end
|
|
301
320
|
|
|
302
|
-
it
|
|
321
|
+
it 'should return an empty array if country has no subdivisions' do
|
|
303
322
|
expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
|
|
304
323
|
expect(ISO3166::Country['AS'].humanized_subdivision_types).to eq([])
|
|
305
324
|
end
|
|
@@ -325,6 +344,26 @@ describe ISO3166::Country do
|
|
|
325
344
|
end
|
|
326
345
|
end
|
|
327
346
|
|
|
347
|
+
describe 'subdivision_names' do
|
|
348
|
+
it 'should return an alphabetized list of all subdivisions names' do
|
|
349
|
+
subdivisions = ISO3166::Country.search('EG').subdivision_names
|
|
350
|
+
expect(subdivisions).to be_an(Array)
|
|
351
|
+
expect(subdivisions.first).to be_a(String)
|
|
352
|
+
expect(subdivisions.size).to eq(27)
|
|
353
|
+
expect(subdivisions.first).to eq('Alexandria')
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
it 'should return an alphabetized list of subdivision names translated to current locale with codes' do
|
|
357
|
+
ISO3166.configuration.locales = %i[es de en]
|
|
358
|
+
|
|
359
|
+
subdivisions = ISO3166::Country.search('EG').subdivision_names(:es)
|
|
360
|
+
expect(subdivisions).to be_an(Array)
|
|
361
|
+
expect(subdivisions.first).to be_a(String)
|
|
362
|
+
expect(subdivisions.size).to eq(27)
|
|
363
|
+
expect(subdivisions.first).to eq('Al Iskandariyah')
|
|
364
|
+
end
|
|
365
|
+
end
|
|
366
|
+
|
|
328
367
|
describe 'valid?' do
|
|
329
368
|
it 'should return true if country is valid' do
|
|
330
369
|
expect(ISO3166::Country.new('US')).to be_valid
|
|
@@ -602,6 +641,12 @@ describe ISO3166::Country do
|
|
|
602
641
|
expect(spain_data.keys).to eq(['ES'])
|
|
603
642
|
end
|
|
604
643
|
|
|
644
|
+
it 'finds country from a subdivision name' do
|
|
645
|
+
gb_data = ISO3166::Country.find_all_by(:subdivision_names, 'Scotland')
|
|
646
|
+
expect(gb_data).to be_a Hash
|
|
647
|
+
expect(gb_data.keys).to eq(['GB'])
|
|
648
|
+
end
|
|
649
|
+
|
|
605
650
|
it 'performs reasonably' do
|
|
606
651
|
start = Time.now
|
|
607
652
|
250.times do
|
|
@@ -690,6 +735,13 @@ describe ISO3166::Country do
|
|
|
690
735
|
end
|
|
691
736
|
end
|
|
692
737
|
|
|
738
|
+
context "when search name in 'subdivision_names'" do
|
|
739
|
+
subject { ISO3166::Country.find_by_subdivision_names('Scotland') }
|
|
740
|
+
it 'should return' do
|
|
741
|
+
expect(subject.first).to eq('GB')
|
|
742
|
+
end
|
|
743
|
+
end
|
|
744
|
+
|
|
693
745
|
context "when search name in 'translated_names'" do
|
|
694
746
|
before do
|
|
695
747
|
ISO3166.configure do |config|
|
|
@@ -814,13 +866,48 @@ describe ISO3166::Country do
|
|
|
814
866
|
end
|
|
815
867
|
end
|
|
816
868
|
|
|
817
|
-
context '
|
|
818
|
-
let(:
|
|
869
|
+
context 'sanity check for #771' do
|
|
870
|
+
let(:turkey) { ISO3166::Country.find_country_by_any_name('Turkey') }
|
|
819
871
|
|
|
820
872
|
it 'should be a country instance' do
|
|
873
|
+
expect(turkey).to be_a(ISO3166::Country)
|
|
874
|
+
expect(turkey.alpha2).to eq('TR')
|
|
875
|
+
end
|
|
876
|
+
end
|
|
877
|
+
|
|
878
|
+
context 'regression test for #746' do
|
|
879
|
+
let(:no_country) { ISO3166::Country.find_country_by_any_name(nil) }
|
|
880
|
+
|
|
881
|
+
it 'should not be a country instance' do
|
|
882
|
+
expect(no_country).to_not be_a(ISO3166::Country)
|
|
883
|
+
expect(no_country).to eq nil
|
|
884
|
+
end
|
|
885
|
+
end
|
|
886
|
+
|
|
887
|
+
context 'regression test for #388/#746/#776' do
|
|
888
|
+
before do
|
|
889
|
+
ISO3166.configure do |config|
|
|
890
|
+
config.locales = %i[af am ar as az be bg bn br bs ca cs cy da de dz el en
|
|
891
|
+
eo es et eu fa fi fo fr ga gl gu he hi hr hu hy ia id
|
|
892
|
+
is it ja ka kk km kn ko ku lt lv mi mk ml mn mr ms mt
|
|
893
|
+
nb ne nl nn oc or pa pl ps pt ro ru rw si sk sl so sq
|
|
894
|
+
sr sv sw ta te th ti tk tl tr tt ug uk ve vi wa wo xh
|
|
895
|
+
zh zu]
|
|
896
|
+
end
|
|
897
|
+
end
|
|
898
|
+
|
|
899
|
+
let(:no_country) { ISO3166::Country.find_country_by_translated_names(nil) }
|
|
900
|
+
let(:zimbabwe) { ISO3166::Country['ZW'] }
|
|
901
|
+
|
|
902
|
+
it 'should not be a country instance' do
|
|
821
903
|
expect(no_country).to_not be_a(ISO3166::Country)
|
|
822
904
|
expect(no_country).to eq nil
|
|
823
905
|
end
|
|
906
|
+
|
|
907
|
+
it 'translated_names should not include nil values' do
|
|
908
|
+
expect(zimbabwe.translation('no')).to be_nil
|
|
909
|
+
expect(zimbabwe.translated_names).not_to include(nil)
|
|
910
|
+
end
|
|
824
911
|
end
|
|
825
912
|
|
|
826
913
|
context 'when attempting to search by translations hash' do
|
|
@@ -998,6 +1085,24 @@ describe ISO3166::Country do
|
|
|
998
1085
|
end
|
|
999
1086
|
end
|
|
1000
1087
|
|
|
1088
|
+
describe 'gdpr_compliant?' do
|
|
1089
|
+
let(:united_kigndom) { ISO3166::Country.search('GB') }
|
|
1090
|
+
let(:france) { ISO3166::Country.search('FR') }
|
|
1091
|
+
let(:mexico) { ISO3166::Country.search('MX') }
|
|
1092
|
+
|
|
1093
|
+
it 'should return false for countries without eea_member flag' do
|
|
1094
|
+
expect(mexico.gdpr_compliant?).to be_falsey
|
|
1095
|
+
end
|
|
1096
|
+
|
|
1097
|
+
it 'should return true for countries with eea_member flag set to true' do
|
|
1098
|
+
expect(france.gdpr_compliant?).to be_truthy
|
|
1099
|
+
end
|
|
1100
|
+
|
|
1101
|
+
it 'should return true for UK' do
|
|
1102
|
+
expect(united_kigndom.gdpr_compliant?).to be_truthy
|
|
1103
|
+
end
|
|
1104
|
+
end
|
|
1105
|
+
|
|
1001
1106
|
describe 'in_esm?' do
|
|
1002
1107
|
let(:netherlands) { ISO3166::Country.search('NL') }
|
|
1003
1108
|
let(:switzerland) { ISO3166::Country.search('CH') }
|
|
@@ -1015,6 +1120,28 @@ describe ISO3166::Country do
|
|
|
1015
1120
|
end
|
|
1016
1121
|
end
|
|
1017
1122
|
|
|
1123
|
+
describe 'in_eu_vat?' do
|
|
1124
|
+
let(:netherlands) { ISO3166::Country.search('NL') }
|
|
1125
|
+
let(:guadeloupe) { ISO3166::Country.search('GP') }
|
|
1126
|
+
let(:monaco) { ISO3166::Country.search('MC') }
|
|
1127
|
+
|
|
1128
|
+
it 'should return false for countries without euvat_member or eu_member flag' do
|
|
1129
|
+
expect(country.in_eu_vat?).to be_falsey
|
|
1130
|
+
end
|
|
1131
|
+
|
|
1132
|
+
it 'should return true for countries with eu_member flag set to true' do
|
|
1133
|
+
expect(netherlands.in_eu_vat?).to be_truthy
|
|
1134
|
+
end
|
|
1135
|
+
|
|
1136
|
+
it 'should return false for countries with euvat_member flag set to false' do
|
|
1137
|
+
expect(guadeloupe.in_eu_vat?).to be_falsey
|
|
1138
|
+
end
|
|
1139
|
+
|
|
1140
|
+
it 'should return true for countries with euvat_member flag set to true' do
|
|
1141
|
+
expect(monaco.in_eu_vat?).to be_truthy
|
|
1142
|
+
end
|
|
1143
|
+
end
|
|
1144
|
+
|
|
1018
1145
|
describe 'gec' do
|
|
1019
1146
|
it 'should return the country\'s GEC code' do
|
|
1020
1147
|
expect(ISO3166::Country.new('NA').gec).to eql 'WA'
|
|
@@ -1119,13 +1246,82 @@ describe ISO3166::Country do
|
|
|
1119
1246
|
expect(subject.last).to be_empty
|
|
1120
1247
|
end
|
|
1121
1248
|
|
|
1122
|
-
context
|
|
1123
|
-
let(:args) { [
|
|
1249
|
+
context 'when asking for alpha2, alpha3 and iso_short_name' do
|
|
1250
|
+
let(:args) { %i[alpha2 alpha3 iso_short_name] }
|
|
1124
1251
|
|
|
1125
1252
|
it 'returns the correct values' do
|
|
1126
1253
|
expect(subject.first).to eq(%w[AD AND Andorra])
|
|
1127
1254
|
expect(subject.last).to eq(%w[ZW ZWE Zimbabwe])
|
|
1128
1255
|
end
|
|
1129
1256
|
end
|
|
1257
|
+
|
|
1258
|
+
context 'with invalid attributes' do
|
|
1259
|
+
let(:args) { %i[alpha2 bad_attribute] }
|
|
1260
|
+
|
|
1261
|
+
it 'should raise an error' do
|
|
1262
|
+
expect { subject }.to(
|
|
1263
|
+
raise_error(KeyError, 'key not found: "bad_attribute"')
|
|
1264
|
+
)
|
|
1265
|
+
end
|
|
1266
|
+
end
|
|
1267
|
+
end
|
|
1268
|
+
|
|
1269
|
+
describe 'find_subdivision_by_name' do
|
|
1270
|
+
let(:italy) { ISO3166::Country.new('IT') }
|
|
1271
|
+
let(:napoli) { italy.subdivisions['NA'] }
|
|
1272
|
+
|
|
1273
|
+
before do
|
|
1274
|
+
ISO3166.configuration.locales = %i[pt]
|
|
1275
|
+
end
|
|
1276
|
+
|
|
1277
|
+
it 'should find a subdivision using the official name' do
|
|
1278
|
+
expect(ISO3166::Country.new('IT').find_subdivision_by_name('Napoli')).to eq napoli
|
|
1279
|
+
end
|
|
1280
|
+
|
|
1281
|
+
it 'should find a subdivision using the code' do
|
|
1282
|
+
expect(ISO3166::Country.new('IT').find_subdivision_by_name('NA')).to eq napoli
|
|
1283
|
+
end
|
|
1284
|
+
|
|
1285
|
+
it 'should find a subdivision using a translated name' do
|
|
1286
|
+
expect(ISO3166::Country.new('IT').find_subdivision_by_name('Nápoles')).to eq napoli
|
|
1287
|
+
end
|
|
1288
|
+
end
|
|
1289
|
+
|
|
1290
|
+
describe 'collect_countries_with' do
|
|
1291
|
+
let(:italy) { ISO3166::Country.new('IT') }
|
|
1292
|
+
let(:vatican) { ISO3166::Country.new('VA') }
|
|
1293
|
+
let(:san_marino) { ISO3166::Country.new('SM') }
|
|
1294
|
+
let(:switzerland) { ISO3166::Country.new('CH') }
|
|
1295
|
+
let(:seychelles) { ISO3166::Country.new('SC') }
|
|
1296
|
+
|
|
1297
|
+
it 'defaults to querying alpha2 and returning the countries' do
|
|
1298
|
+
expect(ISO3166::Country.collect_countries_with('IT')).to eq [italy]
|
|
1299
|
+
end
|
|
1300
|
+
|
|
1301
|
+
it 'allows querying by other attributes' do
|
|
1302
|
+
expect(ISO3166::Country.collect_countries_with('🇸🇨', :emoji_flag)).to eq [seychelles]
|
|
1303
|
+
expect(ISO3166::Country.collect_countries_with('it',
|
|
1304
|
+
:languages_spoken)).to eq [switzerland, italy, san_marino, vatican]
|
|
1305
|
+
end
|
|
1306
|
+
|
|
1307
|
+
it 'allows applying a method to the result set' do
|
|
1308
|
+
expect(ISO3166::Country.collect_countries_with('Caribbean', :subregion,
|
|
1309
|
+
:languages_spoken).flatten.uniq).to eq %w[en nl fr es ht]
|
|
1310
|
+
end
|
|
1311
|
+
end
|
|
1312
|
+
|
|
1313
|
+
describe 'collect_likely_countries_by_subdivision_name' do
|
|
1314
|
+
let(:costa_rica) { ISO3166::Country.new('CR') }
|
|
1315
|
+
let(:uruguay) { ISO3166::Country.new('UY') }
|
|
1316
|
+
|
|
1317
|
+
it 'defaults to returning the countries' do
|
|
1318
|
+
expect(ISO3166::Country.collect_likely_countries_by_subdivision_name('San José')).to eq [costa_rica, uruguay]
|
|
1319
|
+
end
|
|
1320
|
+
|
|
1321
|
+
it 'allows applying a method to the result set' do
|
|
1322
|
+
expect(ISO3166::Country.collect_likely_countries_by_subdivision_name('San José',
|
|
1323
|
+
:iso_short_name)).to eq ['Costa Rica',
|
|
1324
|
+
'Uruguay']
|
|
1325
|
+
end
|
|
1130
1326
|
end
|
|
1131
1327
|
end
|
data/spec/data_spec.rb
CHANGED
|
@@ -128,7 +128,7 @@ describe ISO3166::Data do
|
|
|
128
128
|
|
|
129
129
|
it 'can be done' do
|
|
130
130
|
data = ISO3166::Data.new('TW').call
|
|
131
|
-
ISO3166.configuration.locales = [
|
|
131
|
+
ISO3166.configuration.locales = %i[es de de]
|
|
132
132
|
expect(data['iso_short_name']).to eq 'NEW Taiwan'
|
|
133
133
|
expect(subject.iso_short_name).to eq 'NEW Taiwan'
|
|
134
134
|
expect(subject.translations).to eq('en' => 'NEW Taiwan',
|
|
@@ -205,18 +205,18 @@ describe ISO3166::Data do
|
|
|
205
205
|
it 'has a non-blank code for all subdivisions' do
|
|
206
206
|
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
207
207
|
data = YAML.load_file(file)
|
|
208
|
-
expect(data.values.none?{|s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{file}"
|
|
208
|
+
expect(data.values.none? { |s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{file}"
|
|
209
209
|
end
|
|
210
210
|
end
|
|
211
211
|
|
|
212
212
|
it 'has a non-blank, lowercase and snake_case type for all subdivisions' do
|
|
213
213
|
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
214
214
|
data = YAML.load_file(file)
|
|
215
|
-
no_type = data.select{|
|
|
215
|
+
no_type = data.select { |_k, v| v['type'].nil? }
|
|
216
216
|
expect(no_type).to be_empty, "empty subdivision type in #{file} - #{no_type.keys}"
|
|
217
|
-
uppercase = data.select{|
|
|
217
|
+
uppercase = data.select { |_k, v| v['type'] =~ /[A-Z]/ }
|
|
218
218
|
expect(uppercase).to be_empty, "uppercase characters in subdivision type in #{file} - #{uppercase.keys}"
|
|
219
|
-
spaces = data.select{|
|
|
219
|
+
spaces = data.select { |_k, v| v['type'] =~ /\s/ }
|
|
220
220
|
expect(spaces).to be_empty, "whitespace characters in subdivision type in #{file} - #{spaces.keys}"
|
|
221
221
|
end
|
|
222
222
|
end
|
|
@@ -224,7 +224,7 @@ describe ISO3166::Data do
|
|
|
224
224
|
it 'has a non-blank name for all subdivisions' do
|
|
225
225
|
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
226
226
|
data = YAML.load_file(file)
|
|
227
|
-
expect(data.values.none?{|s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{file}"
|
|
227
|
+
expect(data.values.none? { |s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{file}"
|
|
228
228
|
end
|
|
229
229
|
end
|
|
230
230
|
end
|
|
@@ -232,13 +232,17 @@ describe ISO3166::Data do
|
|
|
232
232
|
context 'cached country subdivision data' do
|
|
233
233
|
it 'has a non-blank code for all subdivisions' do
|
|
234
234
|
ISO3166::Country.all.each do |country|
|
|
235
|
-
expect(country.subdivisions.values.none?
|
|
235
|
+
expect(country.subdivisions.values.none? do |s|
|
|
236
|
+
s['code'].nil?
|
|
237
|
+
end).to be_truthy, "empty subdivision code in #{country}"
|
|
236
238
|
end
|
|
237
239
|
end
|
|
238
240
|
|
|
239
241
|
it 'has a non-blank name for all subdivisions' do
|
|
240
242
|
ISO3166::Country.all.each do |country|
|
|
241
|
-
expect(country.subdivisions.values.none?
|
|
243
|
+
expect(country.subdivisions.values.none? do |s|
|
|
244
|
+
s['name'].nil?
|
|
245
|
+
end).to be_truthy, "empty subdivision name in #{country}"
|
|
242
246
|
end
|
|
243
247
|
end
|
|
244
248
|
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/subdivision_spec.rb
CHANGED
|
@@ -31,4 +31,12 @@ describe ISO3166::Subdivision do
|
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
|
+
|
|
35
|
+
describe 'code_with_translations' do
|
|
36
|
+
before { ISO3166.configuration.locales = %i[en pt] }
|
|
37
|
+
it 'returns a hash' do
|
|
38
|
+
expect(ISO3166::Country.new('IT').subdivisions['NA'].code_with_translations).to eq({ 'NA' => { 'en' => 'Naples',
|
|
39
|
+
'pt' => 'Nápoles' } })
|
|
40
|
+
end
|
|
41
|
+
end
|
|
34
42
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: countries
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Josh Robinson
|
|
@@ -11,22 +11,22 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date:
|
|
14
|
+
date: 2023-10-07 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
|
-
name:
|
|
17
|
+
name: unaccent
|
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
|
19
19
|
requirements:
|
|
20
20
|
- - "~>"
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version: '
|
|
22
|
+
version: '0.3'
|
|
23
23
|
type: :runtime
|
|
24
24
|
prerelease: false
|
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
26
|
requirements:
|
|
27
27
|
- - "~>"
|
|
28
28
|
- !ruby/object:Gem::Version
|
|
29
|
-
version: '
|
|
29
|
+
version: '0.3'
|
|
30
30
|
- !ruby/object:Gem::Dependency
|
|
31
31
|
name: activesupport
|
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -69,6 +69,20 @@ dependencies:
|
|
|
69
69
|
- - ">="
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
71
|
version: '3'
|
|
72
|
+
- !ruby/object:Gem::Dependency
|
|
73
|
+
name: simplecov
|
|
74
|
+
requirement: !ruby/object:Gem::Requirement
|
|
75
|
+
requirements:
|
|
76
|
+
- - "~>"
|
|
77
|
+
- !ruby/object:Gem::Version
|
|
78
|
+
version: '0.22'
|
|
79
|
+
type: :development
|
|
80
|
+
prerelease: false
|
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
82
|
+
requirements:
|
|
83
|
+
- - "~>"
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '0.22'
|
|
72
86
|
description: All sorts of useful information about every country packaged as pretty
|
|
73
87
|
little country objects. It includes data from ISO 3166
|
|
74
88
|
email:
|
|
@@ -79,16 +93,18 @@ executables: []
|
|
|
79
93
|
extensions: []
|
|
80
94
|
extra_rdoc_files: []
|
|
81
95
|
files:
|
|
96
|
+
- ".codeclimate.yml"
|
|
97
|
+
- ".github/FUNDING.yml"
|
|
82
98
|
- ".github/workflows/codeql-analysis.yml"
|
|
83
99
|
- ".github/workflows/tests.yml"
|
|
84
100
|
- ".gitignore"
|
|
85
101
|
- ".rspec"
|
|
86
102
|
- ".rubocop.yml"
|
|
87
|
-
- ".rubocop_todo.yml"
|
|
88
103
|
- CHANGELOG.md
|
|
89
104
|
- Gemfile
|
|
105
|
+
- Gemfile.lock
|
|
90
106
|
- LICENSE
|
|
91
|
-
- README.
|
|
107
|
+
- README.md
|
|
92
108
|
- Rakefile
|
|
93
109
|
- UPGRADE.md
|
|
94
110
|
- bin/console
|
|
@@ -229,6 +245,7 @@ files:
|
|
|
229
245
|
- lib/countries/configuration.rb
|
|
230
246
|
- lib/countries/country.rb
|
|
231
247
|
- lib/countries/country/class_methods.rb
|
|
248
|
+
- lib/countries/country/country_subdivision_methods.rb
|
|
232
249
|
- lib/countries/country/currency_methods.rb
|
|
233
250
|
- lib/countries/country/emoji.rb
|
|
234
251
|
- lib/countries/country/finder_methods.rb
|
|
@@ -482,6 +499,8 @@ files:
|
|
|
482
499
|
- lib/countries/data/countries/ZA.yaml
|
|
483
500
|
- lib/countries/data/countries/ZM.yaml
|
|
484
501
|
- lib/countries/data/countries/ZW.yaml
|
|
502
|
+
- lib/countries/data/locales_methods.rb
|
|
503
|
+
- lib/countries/data/subdivision_methods.rb
|
|
485
504
|
- lib/countries/data/subdivisions/AD.yaml
|
|
486
505
|
- lib/countries/data/subdivisions/AE.yaml
|
|
487
506
|
- lib/countries/data/subdivisions/AF.yaml
|
|
@@ -815,7 +834,6 @@ files:
|
|
|
815
834
|
- lib/countries/data/translations/countries-zu.yaml
|
|
816
835
|
- lib/countries/global.rb
|
|
817
836
|
- lib/countries/iso3166.rb
|
|
818
|
-
- lib/countries/kwarg_struct.rb
|
|
819
837
|
- lib/countries/mongoid.rb
|
|
820
838
|
- lib/countries/sources.rb
|
|
821
839
|
- lib/countries/sources/cldr/downloader.rb
|
|
@@ -825,7 +843,6 @@ files:
|
|
|
825
843
|
- lib/countries/sources/local/subdivision.rb
|
|
826
844
|
- lib/countries/structure.rb
|
|
827
845
|
- lib/countries/subdivision.rb
|
|
828
|
-
- lib/countries/tasks/geocoding.rake
|
|
829
846
|
- lib/countries/tasks/postal_codes.rake
|
|
830
847
|
- lib/countries/timezones.rb
|
|
831
848
|
- lib/countries/translations.rb
|
|
@@ -864,18 +881,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
864
881
|
- !ruby/object:Gem::Version
|
|
865
882
|
version: '0'
|
|
866
883
|
requirements: []
|
|
867
|
-
rubygems_version: 3.
|
|
884
|
+
rubygems_version: 3.4.19
|
|
868
885
|
signing_key:
|
|
869
886
|
specification_version: 4
|
|
870
887
|
summary: Gives you a country object full of all sorts of useful information.
|
|
871
|
-
test_files:
|
|
872
|
-
- spec/00_global_spec.rb
|
|
873
|
-
- spec/configuration_spec.rb
|
|
874
|
-
- spec/country_spec.rb
|
|
875
|
-
- spec/data_spec.rb
|
|
876
|
-
- spec/mongoid_spec.rb
|
|
877
|
-
- spec/perf_spec.rb
|
|
878
|
-
- spec/spec_helper.rb
|
|
879
|
-
- spec/subdivision_spec.rb
|
|
880
|
-
- spec/thread_safety_spec.rb
|
|
881
|
-
- spec/timezone_spec.rb
|
|
888
|
+
test_files: []
|
data/.rubocop_todo.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# This configuration was generated by
|
|
2
|
-
# `rubocop --auto-gen-config`
|
|
3
|
-
# on 2022-01-07 11:03:11 UTC using RuboCop version 1.24.1.
|
|
4
|
-
# The point is for the user to remove these configuration records
|
|
5
|
-
# one by one as the offenses are removed from the code base.
|
|
6
|
-
# Note that changes in the inspected code, or installation of new
|
|
7
|
-
# versions of RuboCop, may require this file to be generated again.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Offense count: 3
|
|
11
|
-
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
|
12
|
-
Metrics/AbcSize:
|
|
13
|
-
Max: 33
|
|
14
|
-
|
|
15
|
-
# Enable after the doc branch is merged
|
|
16
|
-
Style/Documentation:
|
|
17
|
-
Enabled: false
|
|
18
|
-
# Exclude:
|
|
19
|
-
# - 'spec/**/*'
|
|
@@ -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
|