countries 3.0.0 → 5.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/codeql-analysis.yml +70 -0
- data/.github/workflows/tests.yml +35 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +40 -1
- data/.rubocop_todo.yml +8 -41
- data/CHANGELOG.md +315 -1
- data/Gemfile +9 -2
- data/LICENSE +3 -1
- data/README.markdown +141 -123
- data/Rakefile +29 -56
- data/UPGRADE.md +39 -0
- data/bin/console +1 -0
- data/countries.gemspec +15 -10
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/cache/locales/ab.json +1 -0
- data/lib/countries/cache/locales/af.json +1 -1
- data/lib/countries/cache/locales/ak.json +1 -0
- data/lib/countries/cache/locales/am.json +1 -1
- data/lib/countries/cache/locales/an.json +1 -0
- data/lib/countries/cache/locales/ar.json +1 -1
- data/lib/countries/cache/locales/as.json +1 -1
- data/lib/countries/cache/locales/ay.json +1 -0
- data/lib/countries/cache/locales/az.json +1 -1
- data/lib/countries/cache/locales/ba.json +1 -0
- data/lib/countries/cache/locales/be.json +1 -1
- data/lib/countries/cache/locales/bg.json +1 -1
- data/lib/countries/cache/locales/bi.json +1 -0
- data/lib/countries/cache/locales/bn-in.json +1 -0
- data/lib/countries/cache/locales/bn.json +1 -1
- data/lib/countries/cache/locales/br.json +1 -1
- data/lib/countries/cache/locales/bs.json +1 -1
- data/lib/countries/cache/locales/ca.json +1 -1
- data/lib/countries/cache/locales/ce.json +1 -0
- data/lib/countries/cache/locales/ch.json +1 -0
- data/lib/countries/cache/locales/cs.json +1 -1
- data/lib/countries/cache/locales/cv.json +1 -0
- data/lib/countries/cache/locales/cy.json +1 -1
- data/lib/countries/cache/locales/da.json +1 -1
- data/lib/countries/cache/locales/de.json +1 -1
- data/lib/countries/cache/locales/dv.json +1 -0
- data/lib/countries/cache/locales/dz.json +1 -1
- data/lib/countries/cache/locales/ee.json +1 -0
- data/lib/countries/cache/locales/el.json +1 -1
- data/lib/countries/cache/locales/en.json +1 -1
- data/lib/countries/cache/locales/eo.json +1 -1
- data/lib/countries/cache/locales/es.json +1 -1
- data/lib/countries/cache/locales/et.json +1 -1
- data/lib/countries/cache/locales/eu.json +1 -1
- data/lib/countries/cache/locales/fa.json +1 -1
- data/lib/countries/cache/locales/ff.json +1 -0
- data/lib/countries/cache/locales/fi.json +1 -1
- data/lib/countries/cache/locales/fo.json +1 -1
- data/lib/countries/cache/locales/fr.json +1 -1
- data/lib/countries/cache/locales/fy.json +1 -0
- data/lib/countries/cache/locales/ga.json +1 -1
- data/lib/countries/cache/locales/gl.json +1 -1
- data/lib/countries/cache/locales/gn.json +1 -0
- data/lib/countries/cache/locales/gu.json +1 -1
- data/lib/countries/cache/locales/gv.json +1 -0
- data/lib/countries/cache/locales/ha.json +1 -0
- data/lib/countries/cache/locales/he.json +1 -1
- data/lib/countries/cache/locales/hi.json +1 -1
- data/lib/countries/cache/locales/hr.json +1 -1
- data/lib/countries/cache/locales/ht.json +1 -0
- data/lib/countries/cache/locales/hu.json +1 -1
- data/lib/countries/cache/locales/hy.json +1 -1
- data/lib/countries/cache/locales/ia.json +1 -1
- data/lib/countries/cache/locales/id.json +1 -1
- data/lib/countries/cache/locales/io.json +1 -0
- data/lib/countries/cache/locales/is.json +1 -1
- data/lib/countries/cache/locales/it.json +1 -1
- data/lib/countries/cache/locales/iu.json +1 -0
- data/lib/countries/cache/locales/ja.json +1 -1
- data/lib/countries/cache/locales/ka.json +1 -1
- data/lib/countries/cache/locales/ki.json +1 -0
- data/lib/countries/cache/locales/kk.json +1 -1
- data/lib/countries/cache/locales/kl.json +1 -0
- data/lib/countries/cache/locales/km.json +1 -1
- data/lib/countries/cache/locales/kn.json +1 -1
- data/lib/countries/cache/locales/ko.json +1 -1
- data/lib/countries/cache/locales/ku.json +1 -1
- data/lib/countries/cache/locales/kv.json +1 -0
- data/lib/countries/cache/locales/kw.json +1 -0
- data/lib/countries/cache/locales/ky.json +1 -0
- data/lib/countries/cache/locales/lo.json +1 -0
- data/lib/countries/cache/locales/lt.json +1 -1
- data/lib/countries/cache/locales/lv.json +1 -1
- data/lib/countries/cache/locales/mi.json +1 -1
- data/lib/countries/cache/locales/mk.json +1 -1
- data/lib/countries/cache/locales/ml.json +1 -1
- data/lib/countries/cache/locales/mn.json +1 -1
- data/lib/countries/cache/locales/mr.json +1 -1
- data/lib/countries/cache/locales/ms.json +1 -1
- data/lib/countries/cache/locales/mt.json +1 -1
- data/lib/countries/cache/locales/my.json +1 -0
- data/lib/countries/cache/locales/na.json +1 -0
- data/lib/countries/cache/locales/nb.json +1 -1
- data/lib/countries/cache/locales/ne.json +1 -1
- data/lib/countries/cache/locales/nl.json +1 -1
- data/lib/countries/cache/locales/nn.json +1 -1
- data/lib/countries/cache/locales/nv.json +1 -0
- data/lib/countries/cache/locales/oc.json +1 -1
- data/lib/countries/cache/locales/or.json +1 -1
- data/lib/countries/cache/locales/pa.json +1 -1
- data/lib/countries/cache/locales/pi.json +1 -0
- data/lib/countries/cache/locales/pl.json +1 -1
- data/lib/countries/cache/locales/ps.json +1 -1
- data/lib/countries/cache/locales/pt-br.json +1 -0
- data/lib/countries/cache/locales/pt.json +1 -1
- data/lib/countries/cache/locales/ro.json +1 -1
- data/lib/countries/cache/locales/ru.json +1 -1
- data/lib/countries/cache/locales/rw.json +1 -1
- data/lib/countries/cache/locales/sc.json +1 -0
- data/lib/countries/cache/locales/sd.json +1 -0
- data/lib/countries/cache/locales/si.json +1 -1
- data/lib/countries/cache/locales/sk.json +1 -1
- data/lib/countries/cache/locales/sl.json +1 -1
- data/lib/countries/cache/locales/so.json +1 -1
- data/lib/countries/cache/locales/sq.json +1 -1
- data/lib/countries/cache/locales/sr.json +1 -1
- data/lib/countries/cache/locales/sv.json +1 -1
- data/lib/countries/cache/locales/sw.json +1 -1
- data/lib/countries/cache/locales/ta.json +1 -1
- data/lib/countries/cache/locales/te.json +1 -1
- data/lib/countries/cache/locales/tg.json +1 -0
- data/lib/countries/cache/locales/th.json +1 -1
- data/lib/countries/cache/locales/ti.json +1 -1
- data/lib/countries/cache/locales/tk.json +1 -1
- data/lib/countries/cache/locales/tl.json +1 -1
- data/lib/countries/cache/locales/tr.json +1 -1
- data/lib/countries/cache/locales/tt.json +1 -1
- data/lib/countries/cache/locales/ug.json +1 -1
- data/lib/countries/cache/locales/uk.json +1 -1
- data/lib/countries/cache/locales/ur.json +1 -0
- data/lib/countries/cache/locales/uz.json +1 -0
- data/lib/countries/cache/locales/ve.json +1 -1
- data/lib/countries/cache/locales/vi.json +1 -1
- data/lib/countries/cache/locales/wa.json +1 -1
- data/lib/countries/cache/locales/wo.json +1 -1
- data/lib/countries/cache/locales/xh.json +1 -1
- data/lib/countries/cache/locales/yo.json +1 -0
- data/lib/countries/cache/locales/zh-cn.json +1 -0
- data/lib/countries/cache/locales/zh-hk.json +1 -0
- data/lib/countries/cache/locales/zh-tw.json +1 -0
- data/lib/countries/cache/locales/zu.json +1 -1
- data/lib/countries/configuration.rb +15 -0
- data/lib/countries/country/class_methods.rb +41 -97
- data/lib/countries/country/currency_methods.rb +6 -1
- data/lib/countries/country/emoji.rb +5 -3
- data/lib/countries/country/finder_methods.rb +81 -0
- data/lib/countries/country.rb +145 -11
- data/lib/countries/data/countries/AD.yaml +28 -28
- data/lib/countries/data/countries/AE.yaml +32 -33
- data/lib/countries/data/countries/AF.yaml +32 -32
- data/lib/countries/data/countries/AG.yaml +29 -30
- data/lib/countries/data/countries/AI.yaml +27 -27
- data/lib/countries/data/countries/AL.yaml +29 -29
- data/lib/countries/data/countries/AM.yaml +30 -30
- data/lib/countries/data/countries/AO.yaml +27 -28
- data/lib/countries/data/countries/AQ.yaml +26 -27
- data/lib/countries/data/countries/AR.yaml +30 -30
- data/lib/countries/data/countries/AS.yaml +31 -31
- data/lib/countries/data/countries/AT.yaml +36 -36
- data/lib/countries/data/countries/AU.yaml +34 -34
- data/lib/countries/data/countries/AW.yaml +25 -26
- data/lib/countries/data/countries/AX.yaml +27 -27
- data/lib/countries/data/countries/AZ.yaml +30 -30
- data/lib/countries/data/countries/BA.yaml +32 -32
- data/lib/countries/data/countries/BB.yaml +28 -28
- data/lib/countries/data/countries/BD.yaml +28 -28
- data/lib/countries/data/countries/BE.yaml +41 -41
- data/lib/countries/data/countries/BF.yaml +29 -30
- data/lib/countries/data/countries/BG.yaml +36 -36
- data/lib/countries/data/countries/BH.yaml +29 -29
- data/lib/countries/data/countries/BI.yaml +29 -30
- data/lib/countries/data/countries/BJ.yaml +27 -28
- data/lib/countries/data/countries/BL.yaml +25 -25
- data/lib/countries/data/countries/BM.yaml +29 -29
- data/lib/countries/data/countries/BN.yaml +26 -26
- data/lib/countries/data/countries/BO.yaml +31 -32
- data/lib/countries/data/countries/BQ.yaml +28 -29
- data/lib/countries/data/countries/BR.yaml +35 -35
- data/lib/countries/data/countries/BS.yaml +26 -28
- data/lib/countries/data/countries/BT.yaml +28 -28
- data/lib/countries/data/countries/BV.yaml +26 -27
- data/lib/countries/data/countries/BW.yaml +29 -30
- data/lib/countries/data/countries/BY.yaml +30 -30
- data/lib/countries/data/countries/BZ.yaml +28 -29
- data/lib/countries/data/countries/CA.yaml +30 -30
- data/lib/countries/data/countries/CC.yaml +29 -29
- data/lib/countries/data/countries/CD.yaml +35 -36
- data/lib/countries/data/countries/CF.yaml +29 -30
- data/lib/countries/data/countries/CG.yaml +29 -30
- data/lib/countries/data/countries/CH.yaml +40 -40
- data/lib/countries/data/countries/CI.yaml +27 -28
- data/lib/countries/data/countries/CK.yaml +27 -28
- data/lib/countries/data/countries/CL.yaml +33 -28
- data/lib/countries/data/countries/CM.yaml +29 -30
- data/lib/countries/data/countries/CN.yaml +28 -28
- data/lib/countries/data/countries/CO.yaml +28 -28
- data/lib/countries/data/countries/CR.yaml +28 -28
- data/lib/countries/data/countries/CU.yaml +27 -27
- data/lib/countries/data/countries/CV.yaml +28 -28
- data/lib/countries/data/countries/CW.yaml +25 -26
- data/lib/countries/data/countries/CX.yaml +30 -30
- data/lib/countries/data/countries/CY.yaml +41 -41
- data/lib/countries/data/countries/CZ.yaml +40 -38
- data/lib/countries/data/countries/DE.yaml +36 -36
- data/lib/countries/data/countries/DJ.yaml +29 -30
- data/lib/countries/data/countries/DK.yaml +35 -35
- data/lib/countries/data/countries/DM.yaml +26 -27
- data/lib/countries/data/countries/DO.yaml +28 -28
- data/lib/countries/data/countries/DZ.yaml +28 -28
- data/lib/countries/data/countries/EC.yaml +28 -28
- data/lib/countries/data/countries/EE.yaml +36 -36
- data/lib/countries/data/countries/EG.yaml +28 -28
- data/lib/countries/data/countries/EH.yaml +30 -30
- data/lib/countries/data/countries/ER.yaml +31 -32
- data/lib/countries/data/countries/ES.yaml +36 -36
- data/lib/countries/data/countries/ET.yaml +28 -28
- data/lib/countries/data/countries/FI.yaml +39 -39
- data/lib/countries/data/countries/FJ.yaml +33 -34
- data/lib/countries/data/countries/FK.yaml +29 -29
- data/lib/countries/data/countries/FM.yaml +28 -28
- data/lib/countries/data/countries/FO.yaml +28 -28
- data/lib/countries/data/countries/FR.yaml +37 -37
- data/lib/countries/data/countries/GA.yaml +27 -28
- data/lib/countries/data/countries/GB.yaml +44 -36
- data/lib/countries/data/countries/GD.yaml +26 -27
- data/lib/countries/data/countries/GE.yaml +28 -28
- data/lib/countries/data/countries/GF.yaml +29 -29
- data/lib/countries/data/countries/GG.yaml +31 -31
- data/lib/countries/data/countries/GH.yaml +27 -28
- data/lib/countries/data/countries/GI.yaml +28 -28
- data/lib/countries/data/countries/GL.yaml +29 -29
- data/lib/countries/data/countries/GM.yaml +28 -29
- data/lib/countries/data/countries/GN.yaml +30 -30
- data/lib/countries/data/countries/GP.yaml +27 -27
- data/lib/countries/data/countries/GQ.yaml +29 -30
- data/lib/countries/data/countries/GR.yaml +37 -37
- data/lib/countries/data/countries/GS.yaml +29 -29
- data/lib/countries/data/countries/GT.yaml +28 -28
- data/lib/countries/data/countries/GU.yaml +31 -31
- data/lib/countries/data/countries/GW.yaml +28 -28
- data/lib/countries/data/countries/GY.yaml +26 -27
- data/lib/countries/data/countries/HK.yaml +29 -30
- data/lib/countries/data/countries/HM.yaml +28 -28
- data/lib/countries/data/countries/HN.yaml +28 -28
- data/lib/countries/data/countries/HR.yaml +37 -37
- data/lib/countries/data/countries/HT.yaml +29 -29
- data/lib/countries/data/countries/HU.yaml +37 -37
- data/lib/countries/data/countries/ID.yaml +28 -28
- data/lib/countries/data/countries/IE.yaml +39 -39
- data/lib/countries/data/countries/IL.yaml +35 -30
- data/lib/countries/data/countries/IM.yaml +31 -31
- data/lib/countries/data/countries/IN.yaml +30 -30
- data/lib/countries/data/countries/IO.yaml +28 -28
- data/lib/countries/data/countries/IQ.yaml +28 -28
- data/lib/countries/data/countries/IR.yaml +28 -28
- data/lib/countries/data/countries/IS.yaml +35 -35
- data/lib/countries/data/countries/IT.yaml +36 -36
- data/lib/countries/data/countries/JE.yaml +26 -26
- data/lib/countries/data/countries/JM.yaml +28 -29
- data/lib/countries/data/countries/JO.yaml +28 -28
- data/lib/countries/data/countries/JP.yaml +28 -28
- data/lib/countries/data/countries/KE.yaml +30 -30
- data/lib/countries/data/countries/KG.yaml +30 -30
- data/lib/countries/data/countries/KH.yaml +28 -28
- data/lib/countries/data/countries/KI.yaml +27 -28
- data/lib/countries/data/countries/KM.yaml +29 -30
- data/lib/countries/data/countries/KN.yaml +28 -29
- data/lib/countries/data/countries/KP.yaml +28 -28
- data/lib/countries/data/countries/KR.yaml +28 -28
- data/lib/countries/data/countries/KW.yaml +28 -28
- data/lib/countries/data/countries/KY.yaml +29 -29
- data/lib/countries/data/countries/KZ.yaml +30 -30
- data/lib/countries/data/countries/LA.yaml +28 -28
- data/lib/countries/data/countries/LB.yaml +30 -30
- data/lib/countries/data/countries/LC.yaml +28 -29
- data/lib/countries/data/countries/LI.yaml +27 -27
- data/lib/countries/data/countries/LK.yaml +28 -28
- data/lib/countries/data/countries/LR.yaml +28 -28
- data/lib/countries/data/countries/LS.yaml +28 -28
- data/lib/countries/data/countries/LT.yaml +37 -37
- data/lib/countries/data/countries/LU.yaml +39 -39
- data/lib/countries/data/countries/LV.yaml +42 -36
- data/lib/countries/data/countries/LY.yaml +27 -28
- data/lib/countries/data/countries/MA.yaml +28 -28
- data/lib/countries/data/countries/MC.yaml +28 -28
- data/lib/countries/data/countries/MD.yaml +28 -28
- data/lib/countries/data/countries/ME.yaml +34 -34
- data/lib/countries/data/countries/MF.yaml +29 -29
- data/lib/countries/data/countries/MG.yaml +30 -30
- data/lib/countries/data/countries/MH.yaml +30 -30
- data/lib/countries/data/countries/MK.yaml +30 -28
- data/lib/countries/data/countries/ML.yaml +27 -28
- data/lib/countries/data/countries/MM.yaml +27 -27
- data/lib/countries/data/countries/MN.yaml +28 -28
- data/lib/countries/data/countries/MO.yaml +28 -29
- data/lib/countries/data/countries/MP.yaml +31 -31
- data/lib/countries/data/countries/MQ.yaml +27 -27
- data/lib/countries/data/countries/MR.yaml +29 -30
- data/lib/countries/data/countries/MS.yaml +26 -27
- data/lib/countries/data/countries/MT.yaml +38 -38
- data/lib/countries/data/countries/MU.yaml +28 -28
- data/lib/countries/data/countries/MV.yaml +28 -28
- data/lib/countries/data/countries/MW.yaml +29 -30
- data/lib/countries/data/countries/MX.yaml +33 -33
- data/lib/countries/data/countries/MY.yaml +30 -30
- data/lib/countries/data/countries/MZ.yaml +28 -28
- data/lib/countries/data/countries/NA.yaml +30 -30
- data/lib/countries/data/countries/NC.yaml +29 -29
- data/lib/countries/data/countries/NE.yaml +28 -28
- data/lib/countries/data/countries/NF.yaml +29 -29
- data/lib/countries/data/countries/NG.yaml +34 -34
- data/lib/countries/data/countries/NI.yaml +28 -28
- data/lib/countries/data/countries/NL.yaml +38 -36
- data/lib/countries/data/countries/NO.yaml +36 -36
- data/lib/countries/data/countries/NP.yaml +32 -32
- data/lib/countries/data/countries/NR.yaml +27 -28
- data/lib/countries/data/countries/NU.yaml +25 -26
- data/lib/countries/data/countries/NZ.yaml +35 -35
- data/lib/countries/data/countries/OM.yaml +28 -28
- data/lib/countries/data/countries/PA.yaml +27 -28
- data/lib/countries/data/countries/PE.yaml +28 -28
- data/lib/countries/data/countries/PF.yaml +29 -29
- data/lib/countries/data/countries/PG.yaml +28 -28
- data/lib/countries/data/countries/PH.yaml +35 -35
- data/lib/countries/data/countries/PK.yaml +30 -30
- data/lib/countries/data/countries/PL.yaml +37 -37
- data/lib/countries/data/countries/PM.yaml +29 -29
- data/lib/countries/data/countries/PN.yaml +27 -27
- data/lib/countries/data/countries/PR.yaml +30 -30
- data/lib/countries/data/countries/PS.yaml +31 -32
- data/lib/countries/data/countries/PT.yaml +34 -34
- data/lib/countries/data/countries/PW.yaml +26 -26
- data/lib/countries/data/countries/PY.yaml +30 -30
- data/lib/countries/data/countries/QA.yaml +27 -28
- data/lib/countries/data/countries/RE.yaml +28 -28
- data/lib/countries/data/countries/RO.yaml +37 -37
- data/lib/countries/data/countries/RS.yaml +28 -28
- data/lib/countries/data/countries/RU.yaml +28 -28
- data/lib/countries/data/countries/RW.yaml +31 -32
- data/lib/countries/data/countries/SA.yaml +33 -28
- data/lib/countries/data/countries/SB.yaml +28 -29
- data/lib/countries/data/countries/SC.yaml +29 -30
- data/lib/countries/data/countries/SD.yaml +30 -30
- data/lib/countries/data/countries/SE.yaml +37 -37
- data/lib/countries/data/countries/SG.yaml +32 -32
- data/lib/countries/data/countries/SH.yaml +29 -29
- data/lib/countries/data/countries/SI.yaml +36 -36
- data/lib/countries/data/countries/SJ.yaml +29 -29
- data/lib/countries/data/countries/SK.yaml +36 -36
- data/lib/countries/data/countries/SL.yaml +27 -28
- data/lib/countries/data/countries/SM.yaml +28 -28
- data/lib/countries/data/countries/SN.yaml +28 -28
- data/lib/countries/data/countries/SO.yaml +30 -30
- data/lib/countries/data/countries/SR.yaml +26 -27
- data/lib/countries/data/countries/SS.yaml +29 -30
- data/lib/countries/data/countries/ST.yaml +27 -28
- data/lib/countries/data/countries/SV.yaml +27 -27
- data/lib/countries/data/countries/SX.yaml +28 -29
- data/lib/countries/data/countries/SY.yaml +27 -28
- data/lib/countries/data/countries/SZ.yaml +30 -30
- data/lib/countries/data/countries/TC.yaml +30 -30
- data/lib/countries/data/countries/TD.yaml +29 -30
- data/lib/countries/data/countries/TF.yaml +30 -31
- data/lib/countries/data/countries/TG.yaml +27 -28
- data/lib/countries/data/countries/TH.yaml +35 -33
- data/lib/countries/data/countries/TJ.yaml +30 -30
- data/lib/countries/data/countries/TK.yaml +27 -28
- data/lib/countries/data/countries/TL.yaml +27 -28
- data/lib/countries/data/countries/TM.yaml +30 -30
- data/lib/countries/data/countries/TN.yaml +30 -30
- data/lib/countries/data/countries/TO.yaml +29 -30
- data/lib/countries/data/countries/TR.yaml +28 -28
- data/lib/countries/data/countries/TT.yaml +28 -29
- data/lib/countries/data/countries/TV.yaml +27 -28
- data/lib/countries/data/countries/TW.yaml +31 -29
- data/lib/countries/data/countries/TZ.yaml +30 -30
- data/lib/countries/data/countries/UA.yaml +34 -34
- data/lib/countries/data/countries/UG.yaml +29 -30
- data/lib/countries/data/countries/UM.yaml +29 -29
- data/lib/countries/data/countries/US.yaml +30 -28
- data/lib/countries/data/countries/UY.yaml +28 -28
- data/lib/countries/data/countries/UZ.yaml +30 -30
- data/lib/countries/data/countries/VA.yaml +31 -31
- data/lib/countries/data/countries/VC.yaml +29 -29
- data/lib/countries/data/countries/VE.yaml +28 -28
- data/lib/countries/data/countries/VG.yaml +30 -30
- data/lib/countries/data/countries/VI.yaml +29 -28
- data/lib/countries/data/countries/VN.yaml +34 -28
- data/lib/countries/data/countries/VU.yaml +31 -32
- data/lib/countries/data/countries/WF.yaml +29 -29
- data/lib/countries/data/countries/WS.yaml +29 -30
- data/lib/countries/data/countries/YE.yaml +27 -28
- data/lib/countries/data/countries/YT.yaml +26 -26
- data/lib/countries/data/countries/ZA.yaml +40 -40
- data/lib/countries/data/countries/ZM.yaml +28 -28
- data/lib/countries/data/countries/ZW.yaml +31 -32
- data/lib/countries/data/subdivisions/AD.yaml +42 -28
- data/lib/countries/data/subdivisions/AE.yaml +161 -63
- data/lib/countries/data/subdivisions/AF.yaml +719 -419
- data/lib/countries/data/subdivisions/AG.yaml +152 -76
- data/lib/countries/data/subdivisions/AL.yaml +264 -468
- data/lib/countries/data/subdivisions/AM.yaml +247 -88
- data/lib/countries/data/subdivisions/AO.yaml +362 -144
- data/lib/countries/data/subdivisions/AR.yaml +474 -187
- data/lib/countries/data/subdivisions/AT.yaml +211 -72
- data/lib/countries/data/subdivisions/AU.yaml +220 -64
- data/lib/countries/data/subdivisions/AZ.yaml +1783 -803
- data/lib/countries/data/subdivisions/BA.yaml +120 -95
- data/lib/countries/data/subdivisions/BB.yaml +201 -88
- data/lib/countries/data/subdivisions/BD.yaml +1288 -543
- data/lib/countries/data/subdivisions/BE.yaml +369 -166
- data/lib/countries/data/subdivisions/BF.yaml +2976 -2291
- data/lib/countries/data/subdivisions/BG.yaml +628 -219
- data/lib/countries/data/subdivisions/BH.yaml +70 -46
- data/lib/countries/data/subdivisions/BI.yaml +407 -213
- data/lib/countries/data/subdivisions/BJ.yaml +238 -96
- data/lib/countries/data/subdivisions/BN.yaml +67 -32
- data/lib/countries/data/subdivisions/BO.yaml +166 -72
- data/lib/countries/data/subdivisions/BQ.yaml +66 -24
- data/lib/countries/data/subdivisions/BR.yaml +716 -216
- data/lib/countries/data/subdivisions/BS.yaml +961 -566
- data/lib/countries/data/subdivisions/BT.yaml +366 -160
- data/lib/countries/data/subdivisions/BW.yaml +499 -261
- data/lib/countries/data/subdivisions/BY.yaml +205 -126
- data/lib/countries/data/subdivisions/BZ.yaml +103 -48
- data/lib/countries/data/subdivisions/CA.yaml +371 -105
- data/lib/countries/data/subdivisions/CD.yaml +752 -406
- data/lib/countries/data/subdivisions/CF.yaml +308 -136
- data/lib/countries/data/subdivisions/CG.yaml +231 -90
- data/lib/countries/data/subdivisions/CH.yaml +619 -208
- data/lib/countries/data/subdivisions/CI.yaml +415 -322
- data/lib/countries/data/subdivisions/CL.yaml +336 -153
- data/lib/countries/data/subdivisions/CM.yaml +200 -80
- data/lib/countries/data/subdivisions/CN.yaml +2290 -1650
- data/lib/countries/data/subdivisions/CO.yaml +676 -264
- data/lib/countries/data/subdivisions/CR.yaml +126 -56
- data/lib/countries/data/subdivisions/CU.yaml +284 -128
- data/lib/countries/data/subdivisions/CV.yaml +677 -363
- data/lib/countries/data/subdivisions/CY.yaml +108 -48
- data/lib/countries/data/subdivisions/CZ.yaml +2064 -1347
- data/lib/countries/data/subdivisions/DE.yaml +500 -144
- data/lib/countries/data/subdivisions/DJ.yaml +116 -48
- data/lib/countries/data/subdivisions/DK.yaml +113 -236
- data/lib/countries/data/subdivisions/DM.yaml +169 -80
- data/lib/countries/data/subdivisions/DO.yaml +702 -248
- data/lib/countries/data/subdivisions/DZ.yaml +857 -384
- data/lib/countries/data/subdivisions/EC.yaml +499 -276
- data/lib/countries/data/subdivisions/EE.yaml +826 -152
- data/lib/countries/data/subdivisions/EG.yaml +499 -216
- data/lib/countries/data/subdivisions/ER.yaml +115 -48
- data/lib/countries/data/subdivisions/ES.yaml +2773 -1401
- data/lib/countries/data/subdivisions/ET.yaml +218 -88
- data/lib/countries/data/subdivisions/FI.yaml +294 -123
- data/lib/countries/data/subdivisions/FJ.yaml +557 -264
- data/lib/countries/data/subdivisions/FM.yaml +67 -32
- data/lib/countries/data/subdivisions/FR.yaml +2967 -1258
- data/lib/countries/data/subdivisions/GA.yaml +168 -72
- data/lib/countries/data/subdivisions/GB.yaml +5311 -2625
- data/lib/countries/data/subdivisions/GD.yaml +121 -56
- data/lib/countries/data/subdivisions/GE.yaml +250 -96
- data/lib/countries/data/subdivisions/GH.yaml +259 -113
- data/lib/countries/data/subdivisions/GL.yaml +77 -43
- data/lib/countries/data/subdivisions/GM.yaml +130 -48
- data/lib/countries/data/subdivisions/GN.yaml +981 -503
- data/lib/countries/data/subdivisions/GQ.yaml +155 -72
- data/lib/countries/data/subdivisions/GR.yaml +276 -677
- data/lib/countries/data/subdivisions/GT.yaml +373 -176
- data/lib/countries/data/subdivisions/GW.yaml +211 -79
- data/lib/countries/data/subdivisions/GY.yaml +173 -80
- data/lib/countries/data/subdivisions/HN.yaml +292 -144
- data/lib/countries/data/subdivisions/HR.yaml +450 -168
- data/lib/countries/data/subdivisions/HT.yaml +223 -106
- data/lib/countries/data/subdivisions/HU.yaml +876 -381
- data/lib/countries/data/subdivisions/ID.yaml +2417 -1858
- data/lib/countries/data/subdivisions/IE.yaml +886 -429
- data/lib/countries/data/subdivisions/IL.yaml +120 -48
- data/lib/countries/data/subdivisions/IN.yaml +1092 -535
- data/lib/countries/data/subdivisions/IQ.yaml +388 -191
- data/lib/countries/data/subdivisions/IR.yaml +1675 -1305
- data/lib/countries/data/subdivisions/IS.yaml +580 -67
- data/lib/countries/data/subdivisions/IT.yaml +8979 -7307
- data/lib/countries/data/subdivisions/JM.yaml +257 -112
- data/lib/countries/data/subdivisions/JO.yaml +205 -96
- data/lib/countries/data/subdivisions/JP.yaml +997 -376
- data/lib/countries/data/subdivisions/KE.yaml +975 -273
- data/lib/countries/data/subdivisions/KG.yaml +251 -118
- data/lib/countries/data/subdivisions/KH.yaml +464 -194
- data/lib/countries/data/subdivisions/KI.yaml +60 -24
- data/lib/countries/data/subdivisions/KM.yaml +52 -24
- data/lib/countries/data/subdivisions/KN.yaml +324 -112
- data/lib/countries/data/subdivisions/KP.yaml +291 -186
- data/lib/countries/data/subdivisions/KR.yaml +410 -128
- data/lib/countries/data/subdivisions/KW.yaml +93 -48
- data/lib/countries/data/subdivisions/KZ.yaml +361 -189
- data/lib/countries/data/subdivisions/LA.yaml +306 -149
- data/lib/countries/data/subdivisions/LB.yaml +156 -62
- data/lib/countries/data/subdivisions/LC.yaml +231 -55
- data/lib/countries/data/subdivisions/LI.yaml +197 -88
- data/lib/countries/data/subdivisions/LK.yaml +809 -431
- data/lib/countries/data/subdivisions/LR.yaml +346 -187
- data/lib/countries/data/subdivisions/LS.yaml +159 -80
- data/lib/countries/data/subdivisions/LT.yaml +2146 -1114
- data/lib/countries/data/subdivisions/LU.yaml +292 -146
- data/lib/countries/data/subdivisions/LV.yaml +2447 -5217
- data/lib/countries/data/subdivisions/LY.yaml +361 -162
- data/lib/countries/data/subdivisions/MA.yaml +1604 -1424
- data/lib/countries/data/subdivisions/MC.yaml +396 -129
- data/lib/countries/data/subdivisions/MD.yaml +1130 -590
- data/lib/countries/data/subdivisions/ME.yaml +465 -186
- data/lib/countries/data/subdivisions/MG.yaml +99 -48
- data/lib/countries/data/subdivisions/MH.yaml +526 -276
- data/lib/countries/data/subdivisions/MK.yaml +3636 -3147
- data/lib/countries/data/subdivisions/ML.yaml +197 -70
- data/lib/countries/data/subdivisions/MM.yaml +302 -112
- data/lib/countries/data/subdivisions/MN.yaml +443 -176
- data/lib/countries/data/subdivisions/MR.yaml +253 -111
- data/lib/countries/data/subdivisions/MT.yaml +1127 -544
- data/lib/countries/data/subdivisions/MU.yaml +241 -293
- data/lib/countries/data/subdivisions/MV.yaml +464 -263
- data/lib/countries/data/subdivisions/MW.yaml +689 -337
- data/lib/countries/data/subdivisions/MX.yaml +733 -260
- data/lib/countries/data/subdivisions/MY.yaml +352 -128
- data/lib/countries/data/subdivisions/MZ.yaml +202 -83
- data/lib/countries/data/subdivisions/NA.yaml +256 -129
- data/lib/countries/data/subdivisions/NE.yaml +178 -64
- data/lib/countries/data/subdivisions/NG.yaml +907 -296
- data/lib/countries/data/subdivisions/NI.yaml +277 -136
- data/lib/countries/data/subdivisions/NL.yaml +566 -263
- data/lib/countries/data/subdivisions/NO.yaml +653 -1093
- data/lib/countries/data/subdivisions/NP.yaml +525 -228
- data/lib/countries/data/subdivisions/NR.yaml +274 -112
- data/lib/countries/data/subdivisions/NZ.yaml +357 -197
- data/lib/countries/data/subdivisions/OM.yaml +345 -246
- data/lib/countries/data/subdivisions/PA.yaml +230 -113
- data/lib/countries/data/subdivisions/PE.yaml +478 -242
- data/lib/countries/data/subdivisions/PG.yaml +468 -237
- data/lib/countries/data/subdivisions/PH.yaml +5157 -3894
- data/lib/countries/data/subdivisions/PK.yaml +245 -204
- data/lib/countries/data/subdivisions/PL.yaml +131 -32
- data/lib/countries/data/subdivisions/PS.yaml +273 -0
- data/lib/countries/data/subdivisions/PT.yaml +375 -173
- data/lib/countries/data/subdivisions/PW.yaml +285 -128
- data/lib/countries/data/subdivisions/PY.yaml +339 -144
- data/lib/countries/data/subdivisions/QA.yaml +149 -97
- data/lib/countries/data/subdivisions/RO.yaml +771 -336
- data/lib/countries/data/subdivisions/RS.yaml +642 -261
- data/lib/countries/data/subdivisions/RU.yaml +1958 -665
- data/lib/countries/data/subdivisions/RW.yaml +107 -40
- data/lib/countries/data/subdivisions/SA.yaml +247 -104
- data/lib/countries/data/subdivisions/SB.yaml +179 -80
- data/lib/countries/data/subdivisions/SC.yaml +493 -184
- data/lib/countries/data/subdivisions/SD.yaml +832 -673
- data/lib/countries/data/subdivisions/SE.yaml +456 -237
- data/lib/countries/data/subdivisions/SG.yaml +81 -54
- data/lib/countries/data/subdivisions/SH.yaml +73 -31
- data/lib/countries/data/subdivisions/SI.yaml +3823 -1590
- data/lib/countries/data/subdivisions/SK.yaml +137 -64
- data/lib/countries/data/subdivisions/SL.yaml +85 -31
- data/lib/countries/data/subdivisions/SM.yaml +168 -72
- data/lib/countries/data/subdivisions/SN.yaml +352 -193
- data/lib/countries/data/subdivisions/SO.yaml +329 -144
- data/lib/countries/data/subdivisions/SR.yaml +168 -80
- data/lib/countries/data/subdivisions/SS.yaml +206 -0
- data/lib/countries/data/subdivisions/ST.yaml +51 -26
- data/lib/countries/data/subdivisions/SV.yaml +245 -112
- data/lib/countries/data/subdivisions/SY.yaml +234 -112
- data/lib/countries/data/subdivisions/SZ.yaml +69 -32
- data/lib/countries/data/subdivisions/TD.yaml +591 -312
- data/lib/countries/data/subdivisions/TG.yaml +80 -40
- data/lib/countries/data/subdivisions/TH.yaml +1565 -652
- data/lib/countries/data/subdivisions/TJ.yaml +209 -128
- data/lib/countries/data/subdivisions/TL.yaml +222 -104
- data/lib/countries/data/subdivisions/TM.yaml +122 -40
- data/lib/countries/data/subdivisions/TN.yaml +436 -192
- data/lib/countries/data/subdivisions/TO.yaml +80 -40
- data/lib/countries/data/subdivisions/TR.yaml +1898 -648
- data/lib/countries/data/subdivisions/TT.yaml +355 -204
- data/lib/countries/data/subdivisions/TV.yaml +162 -94
- data/lib/countries/data/subdivisions/TW.yaml +514 -251
- data/lib/countries/data/subdivisions/TZ.yaml +692 -208
- data/lib/countries/data/subdivisions/UA.yaml +533 -217
- data/lib/countries/data/subdivisions/UG.yaml +5416 -3641
- data/lib/countries/data/subdivisions/UM.yaml +216 -72
- data/lib/countries/data/subdivisions/US.yaml +1692 -483
- data/lib/countries/data/subdivisions/UY.yaml +429 -195
- data/lib/countries/data/subdivisions/UZ.yaml +303 -113
- data/lib/countries/data/subdivisions/VC.yaml +107 -48
- data/lib/countries/data/subdivisions/VE.yaml +481 -200
- data/lib/countries/data/subdivisions/VN.yaml +1274 -543
- data/lib/countries/data/subdivisions/VU.yaml +104 -48
- data/lib/countries/data/subdivisions/WF.yaml +66 -0
- data/lib/countries/data/subdivisions/WS.yaml +211 -88
- data/lib/countries/data/subdivisions/YE.yaml +534 -289
- data/lib/countries/data/subdivisions/ZA.yaml +283 -131
- data/lib/countries/data/subdivisions/ZM.yaml +167 -72
- data/lib/countries/data/subdivisions/ZW.yaml +162 -73
- data/lib/countries/data/translations/countries-ab.yaml +254 -0
- data/lib/countries/data/translations/countries-af.yaml +254 -0
- data/lib/countries/data/translations/countries-ak.yaml +254 -0
- data/lib/countries/data/translations/countries-am.yaml +254 -0
- data/lib/countries/data/translations/countries-an.yaml +254 -0
- data/lib/countries/data/translations/countries-ar.yaml +254 -0
- data/lib/countries/data/translations/countries-as.yaml +254 -0
- data/lib/countries/data/translations/countries-ay.yaml +254 -0
- data/lib/countries/data/translations/countries-az.yaml +254 -0
- data/lib/countries/data/translations/countries-ba.yaml +254 -0
- data/lib/countries/data/translations/countries-be.yaml +254 -0
- data/lib/countries/data/translations/countries-bg.yaml +254 -0
- data/lib/countries/data/translations/countries-bi.yaml +254 -0
- data/lib/countries/data/translations/countries-bn.yaml +254 -0
- data/lib/countries/data/translations/countries-bn_IN.yaml +254 -0
- data/lib/countries/data/translations/countries-br.yaml +254 -0
- data/lib/countries/data/translations/countries-bs.yaml +254 -0
- data/lib/countries/data/translations/countries-ca.yaml +254 -0
- data/lib/countries/data/translations/countries-ce.yaml +254 -0
- data/lib/countries/data/translations/countries-ch.yaml +254 -0
- data/lib/countries/data/translations/countries-cs.yaml +254 -0
- data/lib/countries/data/translations/countries-cv.yaml +254 -0
- data/lib/countries/data/translations/countries-cy.yaml +254 -0
- data/lib/countries/data/translations/countries-da.yaml +254 -0
- data/lib/countries/data/translations/countries-de.yaml +254 -0
- data/lib/countries/data/translations/countries-dv.yaml +254 -0
- data/lib/countries/data/translations/countries-dz.yaml +254 -0
- data/lib/countries/data/translations/countries-ee.yaml +254 -0
- data/lib/countries/data/translations/countries-el.yaml +254 -0
- data/lib/countries/data/translations/countries-en.yaml +254 -0
- data/lib/countries/data/translations/countries-eo.yaml +254 -0
- data/lib/countries/data/translations/countries-es.yaml +254 -0
- data/lib/countries/data/translations/countries-et.yaml +254 -0
- data/lib/countries/data/translations/countries-eu.yaml +254 -0
- data/lib/countries/data/translations/countries-fa.yaml +254 -0
- data/lib/countries/data/translations/countries-ff.yaml +254 -0
- data/lib/countries/data/translations/countries-fi.yaml +254 -0
- data/lib/countries/data/translations/countries-fo.yaml +254 -0
- data/lib/countries/data/translations/countries-fr.yaml +254 -0
- data/lib/countries/data/translations/countries-fy.yaml +254 -0
- data/lib/countries/data/translations/countries-ga.yaml +254 -0
- data/lib/countries/data/translations/countries-gl.yaml +254 -0
- data/lib/countries/data/translations/countries-gn.yaml +254 -0
- data/lib/countries/data/translations/countries-gu.yaml +254 -0
- data/lib/countries/data/translations/countries-gv.yaml +254 -0
- data/lib/countries/data/translations/countries-ha.yaml +254 -0
- data/lib/countries/data/translations/countries-he.yaml +254 -0
- data/lib/countries/data/translations/countries-hi.yaml +254 -0
- data/lib/countries/data/translations/countries-hr.yaml +254 -0
- data/lib/countries/data/translations/countries-ht.yaml +254 -0
- data/lib/countries/data/translations/countries-hu.yaml +254 -0
- data/lib/countries/data/translations/countries-hy.yaml +254 -0
- data/lib/countries/data/translations/countries-ia.yaml +254 -0
- data/lib/countries/data/translations/countries-id.yaml +254 -0
- data/lib/countries/data/translations/countries-io.yaml +254 -0
- data/lib/countries/data/translations/countries-is.yaml +254 -0
- data/lib/countries/data/translations/countries-it.yaml +254 -0
- data/lib/countries/data/translations/countries-iu.yaml +254 -0
- data/lib/countries/data/translations/countries-ja.yaml +254 -0
- data/lib/countries/data/translations/countries-ka.yaml +254 -0
- data/lib/countries/data/translations/countries-ki.yaml +254 -0
- data/lib/countries/data/translations/countries-kk.yaml +254 -0
- data/lib/countries/data/translations/countries-kl.yaml +254 -0
- data/lib/countries/data/translations/countries-km.yaml +254 -0
- data/lib/countries/data/translations/countries-kn.yaml +254 -0
- data/lib/countries/data/translations/countries-ko.yaml +254 -0
- data/lib/countries/data/translations/countries-ku.yaml +254 -0
- data/lib/countries/data/translations/countries-kv.yaml +254 -0
- data/lib/countries/data/translations/countries-kw.yaml +254 -0
- data/lib/countries/data/translations/countries-ky.yaml +254 -0
- data/lib/countries/data/translations/countries-lo.yaml +254 -0
- data/lib/countries/data/translations/countries-lt.yaml +254 -0
- data/lib/countries/data/translations/countries-lv.yaml +254 -0
- data/lib/countries/data/translations/countries-mi.yaml +254 -0
- data/lib/countries/data/translations/countries-mk.yaml +254 -0
- data/lib/countries/data/translations/countries-ml.yaml +254 -0
- data/lib/countries/data/translations/countries-mn.yaml +254 -0
- data/lib/countries/data/translations/countries-mr.yaml +254 -0
- data/lib/countries/data/translations/countries-ms.yaml +254 -0
- data/lib/countries/data/translations/countries-mt.yaml +254 -0
- data/lib/countries/data/translations/countries-my.yaml +254 -0
- data/lib/countries/data/translations/countries-na.yaml +254 -0
- data/lib/countries/data/translations/countries-nb.yaml +254 -0
- data/lib/countries/data/translations/countries-ne.yaml +254 -0
- data/lib/countries/data/translations/countries-nl.yaml +254 -0
- data/lib/countries/data/translations/countries-nn.yaml +254 -0
- data/lib/countries/data/translations/countries-nv.yaml +254 -0
- data/lib/countries/data/translations/countries-oc.yaml +254 -0
- data/lib/countries/data/translations/countries-or.yaml +254 -0
- data/lib/countries/data/translations/countries-pa.yaml +254 -0
- data/lib/countries/data/translations/countries-pi.yaml +254 -0
- data/lib/countries/data/translations/countries-pl.yaml +254 -0
- data/lib/countries/data/translations/countries-ps.yaml +254 -0
- data/lib/countries/data/translations/countries-pt.yaml +254 -0
- data/lib/countries/data/translations/countries-pt_BR.yaml +254 -0
- data/lib/countries/data/translations/countries-ro.yaml +254 -0
- data/lib/countries/data/translations/countries-ru.yaml +254 -0
- data/lib/countries/data/translations/countries-rw.yaml +254 -0
- data/lib/countries/data/translations/countries-sc.yaml +254 -0
- data/lib/countries/data/translations/countries-sd.yaml +254 -0
- data/lib/countries/data/translations/countries-si.yaml +254 -0
- data/lib/countries/data/translations/countries-sk.yaml +254 -0
- data/lib/countries/data/translations/countries-sl.yaml +254 -0
- data/lib/countries/data/translations/countries-so.yaml +254 -0
- data/lib/countries/data/translations/countries-sq.yaml +254 -0
- data/lib/countries/data/translations/countries-sr.yaml +254 -0
- data/lib/countries/data/translations/countries-sv.yaml +254 -0
- data/lib/countries/data/translations/countries-sw.yaml +254 -0
- data/lib/countries/data/translations/countries-ta.yaml +254 -0
- data/lib/countries/data/translations/countries-te.yaml +254 -0
- data/lib/countries/data/translations/countries-tg.yaml +254 -0
- data/lib/countries/data/translations/countries-th.yaml +254 -0
- data/lib/countries/data/translations/countries-ti.yaml +254 -0
- data/lib/countries/data/translations/countries-tk.yaml +254 -0
- data/lib/countries/data/translations/countries-tl.yaml +254 -0
- data/lib/countries/data/translations/countries-tr.yaml +254 -0
- data/lib/countries/data/translations/countries-tt.yaml +254 -0
- data/lib/countries/data/translations/countries-ug.yaml +254 -0
- data/lib/countries/data/translations/countries-uk.yaml +254 -0
- data/lib/countries/data/translations/countries-ur.yaml +254 -0
- data/lib/countries/data/translations/countries-uz.yaml +254 -0
- data/lib/countries/data/translations/countries-ve.yaml +254 -0
- data/lib/countries/data/translations/countries-vi.yaml +254 -0
- data/lib/countries/data/translations/countries-wa.yaml +254 -0
- data/lib/countries/data/translations/countries-wo.yaml +254 -0
- data/lib/countries/data/translations/countries-xh.yaml +254 -0
- data/lib/countries/data/translations/countries-yo.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_CN.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_HK.yaml +254 -0
- data/lib/countries/data/translations/countries-zh_TW.yaml +254 -0
- data/lib/countries/data/translations/countries-zu.yaml +254 -0
- data/lib/countries/data.rb +106 -44
- data/lib/countries/global.rb +15 -3
- data/lib/countries/iso3166.rb +3 -1
- data/lib/countries/kwarg_struct.rb +2 -0
- data/lib/countries/mongoid.rb +5 -0
- data/lib/countries/sources/cldr/downloader.rb +16 -14
- data/lib/countries/sources/cldr/subdivision.rb +4 -0
- data/lib/countries/sources/cldr/subdivision_updater.rb +24 -17
- data/lib/countries/sources/local/cached_loader.rb +5 -0
- data/lib/countries/sources/local/subdivision.rb +6 -2
- data/lib/countries/sources.rb +2 -0
- data/lib/countries/structure.rb +4 -6
- data/lib/countries/subdivision.rb +21 -8
- data/lib/countries/tasks/geocoding.rake +21 -19
- data/lib/countries/tasks/postal_codes.rake +50 -0
- data/lib/countries/timezones.rb +9 -4
- data/lib/countries/translations.rb +5 -4
- data/lib/countries/version.rb +3 -1
- data/lib/countries.rb +1 -2
- data/spec/00_global_spec.rb +2 -0
- data/spec/configuration_spec.rb +11 -5
- data/spec/country_spec.rb +356 -79
- data/spec/data_spec.rb +105 -30
- data/spec/mongoid_spec.rb +2 -2
- data/spec/perf_spec.rb +16 -16
- data/spec/spec_helper.rb +2 -0
- data/spec/subdivision_spec.rb +17 -1
- data/spec/thread_safety_spec.rb +47 -0
- data/spec/timezone_spec.rb +2 -0
- metadata +205 -78
- data/.travis.yml +0 -16
- data/lib/countries/cache/locales/zh.json +0 -1
- data/lib/countries/data/subdivisions/AI.yaml +0 -183
- data/lib/countries/data/subdivisions/AS.yaml +0 -66
- data/lib/countries/data/subdivisions/AX.yaml +0 -40
- data/lib/countries/data/subdivisions/BM.yaml +0 -144
- data/lib/countries/data/subdivisions/CK.yaml +0 -144
- data/lib/countries/data/subdivisions/EH.yaml +0 -72
- data/lib/countries/data/subdivisions/FO.yaml +0 -79
- data/lib/countries/data/subdivisions/GG.yaml +0 -144
- data/lib/countries/data/subdivisions/GU.yaml +0 -248
- data/lib/countries/data/subdivisions/HK.yaml +0 -235
- data/lib/countries/data/subdivisions/IM.yaml +0 -313
- data/lib/countries/data/subdivisions/JE.yaml +0 -157
- data/lib/countries/data/subdivisions/KY.yaml +0 -73
- data/lib/countries/data/subdivisions/MP.yaml +0 -53
- data/lib/countries/data/subdivisions/MS.yaml +0 -40
- data/lib/countries/data/subdivisions/NC.yaml +0 -40
- data/lib/countries/data/subdivisions/PF.yaml +0 -66
- data/lib/countries/data/subdivisions/PM.yaml +0 -27
- data/lib/countries/data/subdivisions/PR.yaml +0 -1015
- data/lib/countries/data/subdivisions/SJ.yaml +0 -27
- data/lib/countries/data/subdivisions/TF.yaml +0 -49
- data/lib/countries/data/subdivisions/TK.yaml +0 -40
- data/lib/countries/data/subdivisions/VI.yaml +0 -40
- data/lib/countries/data/subdivisions/YT.yaml +0 -222
- data/lib/countries/data/translation_corrections.yaml +0 -32
- data/lib/countries/setup.rb +0 -18
data/spec/country_spec.rb
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
NUM_OF_COUNTRIES = 249
|
|
@@ -43,12 +43,16 @@ describe ISO3166::Country do
|
|
|
43
43
|
expect(country.alpha3).to eq('USA')
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
it 'should return 3166
|
|
47
|
-
expect(country.
|
|
46
|
+
it 'should return 3166 iso_short_name' do
|
|
47
|
+
expect(country.iso_short_name).to eq('United States of America')
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
it 'should return alternate names' do
|
|
51
|
-
expect(country.
|
|
51
|
+
expect(country.unofficial_names).to eq(["United States", "USA",
|
|
52
|
+
"Vereinigte Staaten von Amerika",
|
|
53
|
+
"États-Unis", "Estados Unidos",
|
|
54
|
+
"アメリカ合衆国", "Verenigde Staten",
|
|
55
|
+
"Соединенные Штаты Америки"])
|
|
52
56
|
end
|
|
53
57
|
|
|
54
58
|
it 'should return translations' do
|
|
@@ -65,15 +69,7 @@ describe ISO3166::Country do
|
|
|
65
69
|
end
|
|
66
70
|
|
|
67
71
|
it 'should return bounds' do
|
|
68
|
-
expect(country.bounds['northeast']['lat']).to eq(71.
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
it 'should return the decimal Latitude' do
|
|
72
|
-
expect(country.latitude_dec).to eq('39.44325637817383')
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it 'should return the decimal Longitude' do
|
|
76
|
-
expect(country.longitude_dec).to eq('-98.95733642578125')
|
|
72
|
+
expect(country.bounds['northeast']['lat']).to eq(71.3577635769)
|
|
77
73
|
end
|
|
78
74
|
|
|
79
75
|
it 'should return continent' do
|
|
@@ -85,8 +81,18 @@ describe ISO3166::Country do
|
|
|
85
81
|
end
|
|
86
82
|
|
|
87
83
|
it 'knows when a country does not require postal codes' do
|
|
88
|
-
|
|
89
|
-
expect(
|
|
84
|
+
antarctica = ISO3166::Country.search('AQ')
|
|
85
|
+
expect(antarctica.postal_code).to eq(false)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it 'knows about the country postal code format' do
|
|
89
|
+
expect(country.postal_code_format).to_not be_nil
|
|
90
|
+
|
|
91
|
+
regex = Regexp.new(country.postal_code_format)
|
|
92
|
+
expect(regex).to match('12345-6789')
|
|
93
|
+
|
|
94
|
+
antarctica = ISO3166::Country.search('AQ')
|
|
95
|
+
expect(antarctica.postal_code_format).to be_nil
|
|
90
96
|
end
|
|
91
97
|
|
|
92
98
|
it 'should return region' do
|
|
@@ -101,12 +107,20 @@ describe ISO3166::Country do
|
|
|
101
107
|
expect(country.world_region).to eq('AMER')
|
|
102
108
|
end
|
|
103
109
|
|
|
104
|
-
context 'with
|
|
110
|
+
context 'with Türkiye' do
|
|
105
111
|
let(:country) { ISO3166::Country.search('TR') }
|
|
106
112
|
|
|
107
113
|
it 'should indicate EMEA as the world region' do
|
|
108
114
|
expect(country.world_region).to eq('EMEA')
|
|
109
115
|
end
|
|
116
|
+
|
|
117
|
+
it 'has iso_short_name Türkiye' do
|
|
118
|
+
expect(country.iso_short_name).to eq('Türkiye')
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
it 'has iso_long_name Republic of Türkiye' do
|
|
122
|
+
expect(country.iso_long_name).to eq('The Republic of Türkiye')
|
|
123
|
+
end
|
|
110
124
|
end
|
|
111
125
|
|
|
112
126
|
context 'with Japan' do
|
|
@@ -121,7 +135,7 @@ describe ISO3166::Country do
|
|
|
121
135
|
let(:country) { ISO3166::Country.search('BE') }
|
|
122
136
|
|
|
123
137
|
it 'should return its local names based on its languages' do
|
|
124
|
-
expect(country.local_names).to match_array(%w
|
|
138
|
+
expect(country.local_names).to match_array(%w[België Belgique Belgien])
|
|
125
139
|
end
|
|
126
140
|
|
|
127
141
|
it 'should return its first local name' do
|
|
@@ -134,7 +148,7 @@ describe ISO3166::Country do
|
|
|
134
148
|
before do
|
|
135
149
|
ISO3166::Data.register(
|
|
136
150
|
alpha2: 'BR2',
|
|
137
|
-
|
|
151
|
+
iso_short_name: 'Brazil',
|
|
138
152
|
languages_official: %w(pt-BR),
|
|
139
153
|
translations: {
|
|
140
154
|
'pt-BR' => 'Translation for pt-BR',
|
|
@@ -158,7 +172,7 @@ describe ISO3166::Country do
|
|
|
158
172
|
before do
|
|
159
173
|
ISO3166::Data.register(
|
|
160
174
|
alpha2: 'BR2',
|
|
161
|
-
|
|
175
|
+
iso_short_name: 'Brazil',
|
|
162
176
|
languages_official: %w(pt-BR),
|
|
163
177
|
translations: {
|
|
164
178
|
'pt' => 'Translation for pt'
|
|
@@ -217,17 +231,17 @@ describe ISO3166::Country do
|
|
|
217
231
|
end
|
|
218
232
|
|
|
219
233
|
describe 'subdivisions' do
|
|
220
|
-
let(:virginia) { country.
|
|
234
|
+
let(:virginia) { country.subdivisions['VA'] }
|
|
221
235
|
it 'should return an empty hash for a country with no ISO3166-2' do
|
|
222
236
|
expect(ISO3166::Country.search('VA').subdivisions.size).to eq(0)
|
|
223
237
|
end
|
|
224
238
|
|
|
225
239
|
it 'should return a hash with all sub divisions' do
|
|
226
|
-
expect(country.subdivisions.size).to eq(
|
|
240
|
+
expect(country.subdivisions.size).to eq(57)
|
|
227
241
|
end
|
|
228
242
|
|
|
229
|
-
it 'should be
|
|
230
|
-
expect
|
|
243
|
+
it '#states should be deprecated' do
|
|
244
|
+
expect {country.states}.to output.to_stderr
|
|
231
245
|
end
|
|
232
246
|
|
|
233
247
|
it 'should be a subdivision object' do
|
|
@@ -238,11 +252,69 @@ describe ISO3166::Country do
|
|
|
238
252
|
expect(virginia.name).to eq('Virginia')
|
|
239
253
|
end
|
|
240
254
|
|
|
255
|
+
it 'should have a code' do
|
|
256
|
+
expect(virginia.code).to eq('VA')
|
|
257
|
+
end
|
|
258
|
+
|
|
241
259
|
it 'should behave like a hash' do
|
|
242
260
|
expect(virginia['name']).to eq('Virginia')
|
|
243
261
|
end
|
|
244
262
|
end
|
|
245
263
|
|
|
264
|
+
describe 'subdivision_types' do
|
|
265
|
+
it "should return an array of subdivision types" do
|
|
266
|
+
expect(country.subdivision_types).to contain_exactly('district', 'state', 'outlying_area')
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
it "should return an array of subdivision types even if there is only a single type" do
|
|
270
|
+
expect(ISO3166::Country['LI'].subdivision_types).to contain_exactly('commune')
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
it "should return an empty array if country has no subdivisions" do
|
|
274
|
+
expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
|
|
275
|
+
expect(ISO3166::Country['AS'].subdivision_types).to eq([])
|
|
276
|
+
end
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
describe 'subdivisions_of_types' do
|
|
280
|
+
it "given a single type, should return an array of subdivisions that match the type" do
|
|
281
|
+
us_states = country.subdivisions_of_types(%w[state])
|
|
282
|
+
expect(us_states.size).to eq(50)
|
|
283
|
+
dc = country.subdivisions_of_types(%w[district])
|
|
284
|
+
expect(dc.size).to eq(1)
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
it "given multiple types, should return an array of subdivisions matching the types" do
|
|
288
|
+
us_states_plus_dc = country.subdivisions_of_types(%w[state district])
|
|
289
|
+
expect(us_states_plus_dc.size).to eq(51)
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
it "given multiple types where at least one does not exist for that country, should work without issue" do
|
|
293
|
+
us_states_plus_dc = country.subdivisions_of_types(%w[state district governorate])
|
|
294
|
+
expect(us_states_plus_dc.size).to eq(51)
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
it "given only types that do not exist for that country, should return an empty collection" do
|
|
298
|
+
should_be_empty = ISO3166::Country['PT'].subdivisions_of_types(%w[state county])
|
|
299
|
+
expect(should_be_empty).to be_empty
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
describe 'humanized_subdivision_types' do
|
|
304
|
+
it "should return an array of humanized subdivision types" do
|
|
305
|
+
expect(country.humanized_subdivision_types).to contain_exactly('District', 'State', 'Outlying area')
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it "should return an array of subdivision types even if there is only a single type" do
|
|
309
|
+
expect(ISO3166::Country['LI'].humanized_subdivision_types).to contain_exactly('Commune')
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
it "should return an empty array if country has no subdivisions" do
|
|
313
|
+
expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
|
|
314
|
+
expect(ISO3166::Country['AS'].humanized_subdivision_types).to eq([])
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
|
|
246
318
|
describe 'subdivision_names_with_codes' do
|
|
247
319
|
it 'should return an alphabetized list of all subdivisions names with codes' do
|
|
248
320
|
subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes
|
|
@@ -253,7 +325,7 @@ describe ISO3166::Country do
|
|
|
253
325
|
end
|
|
254
326
|
|
|
255
327
|
it 'should return an alphabetized list of subdivision names translated to current locale with codes' do
|
|
256
|
-
ISO3166.configuration.locales = [
|
|
328
|
+
ISO3166.configuration.locales = %i[es de en]
|
|
257
329
|
|
|
258
330
|
subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes(:es)
|
|
259
331
|
expect(subdivisions).to be_an(Array)
|
|
@@ -309,7 +381,7 @@ describe ISO3166::Country do
|
|
|
309
381
|
end
|
|
310
382
|
|
|
311
383
|
it 'should allow to customize each country representation passing a block to the method' do
|
|
312
|
-
countries = ISO3166::Country.all { |country, data| [data['
|
|
384
|
+
countries = ISO3166::Country.all { |country, data| [data['iso_short_name'], country, data['country_code']] }
|
|
313
385
|
expect(countries).to be_an(Array)
|
|
314
386
|
expect(countries.first).to be_an(Array)
|
|
315
387
|
expect(countries.first.size).to eq(3)
|
|
@@ -322,7 +394,7 @@ describe ISO3166::Country do
|
|
|
322
394
|
countries = ISO3166::Country.all_translated('fr')
|
|
323
395
|
expect(countries).to be_an(Array)
|
|
324
396
|
expect(countries.first).to be_a(String)
|
|
325
|
-
expect(countries.first).to eq('
|
|
397
|
+
expect(countries.first).to eq('Andorre')
|
|
326
398
|
# countries missing the desired locale will not be added to the list
|
|
327
399
|
# so all 250 countries may not be returned, 'fr' returns 249, for example
|
|
328
400
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
@@ -332,9 +404,29 @@ describe ISO3166::Country do
|
|
|
332
404
|
countries = ISO3166::Country.all_translated
|
|
333
405
|
expect(countries).to be_an(Array)
|
|
334
406
|
expect(countries.first).to be_a(String)
|
|
335
|
-
expect(countries.first).to eq('
|
|
407
|
+
expect(countries.first).to eq('Andorra')
|
|
336
408
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
337
409
|
end
|
|
410
|
+
|
|
411
|
+
context 'with custom countries' do
|
|
412
|
+
before do
|
|
413
|
+
ISO3166::Data.register(
|
|
414
|
+
alpha2: 'XX',
|
|
415
|
+
iso_short_name: 'Custom Country',
|
|
416
|
+
translations: { 'en' => 'Custom Country' }
|
|
417
|
+
)
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
it 'should include custom registered countries' do
|
|
421
|
+
custom_country = ISO3166::Country.find_by_alpha2('XX')[1]
|
|
422
|
+
countries = ISO3166::Country.all_translated
|
|
423
|
+
expect(countries).to include(custom_country['iso_short_name'])
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
after do
|
|
427
|
+
ISO3166::Data.unregister('XX')
|
|
428
|
+
end
|
|
429
|
+
end
|
|
338
430
|
end
|
|
339
431
|
|
|
340
432
|
describe 'all_names_with_codes' do
|
|
@@ -345,11 +437,11 @@ describe ISO3166::Country do
|
|
|
345
437
|
expect(countries.first[0]).to be_a(String)
|
|
346
438
|
expect(countries.first[0]).to eq('Afghanistan')
|
|
347
439
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
348
|
-
expect(countries.any?{|pair| !pair[0].html_safe?}).to eq(false)
|
|
440
|
+
expect(countries.any? { |pair| !pair[0].html_safe? }).to eq(false)
|
|
349
441
|
end
|
|
350
442
|
|
|
351
443
|
it 'should return an alphabetized list of all country names translated to current locale with ISOCODE alpha2' do
|
|
352
|
-
ISO3166.configuration.locales = [
|
|
444
|
+
ISO3166.configuration.locales = %i[es de en]
|
|
353
445
|
|
|
354
446
|
countries = ISO3166::Country.all_names_with_codes(:es)
|
|
355
447
|
expect(countries).to be_an(Array)
|
|
@@ -369,7 +461,7 @@ describe ISO3166::Country do
|
|
|
369
461
|
end
|
|
370
462
|
|
|
371
463
|
it 'should return an alphabetized list of all country names translated to current locale with ISOCODE alpha2' do
|
|
372
|
-
ISO3166.configuration.locales = [
|
|
464
|
+
ISO3166.configuration.locales = %i[es de en]
|
|
373
465
|
|
|
374
466
|
countries = ISO3166::Country.all_names_with_codes(:es)
|
|
375
467
|
expect(countries).to be_an(Array)
|
|
@@ -381,7 +473,7 @@ describe ISO3166::Country do
|
|
|
381
473
|
|
|
382
474
|
describe 'translation' do
|
|
383
475
|
it 'should return the localized name for a country to the selected locale' do
|
|
384
|
-
ISO3166.configuration.locales = [
|
|
476
|
+
ISO3166.configuration.locales = %i[es de en]
|
|
385
477
|
countries = ISO3166::Country.new(:de).translation('de')
|
|
386
478
|
expect(countries).to be_an(String)
|
|
387
479
|
expect(countries).to eq('Deutschland')
|
|
@@ -397,14 +489,31 @@ describe ISO3166::Country do
|
|
|
397
489
|
countries = ISO3166::Country.new(:de).translation('xxx')
|
|
398
490
|
expect(countries).to be_nil
|
|
399
491
|
end
|
|
492
|
+
|
|
493
|
+
context 'should return variant locales' do
|
|
494
|
+
it 'should return different value for Chinese variants' do
|
|
495
|
+
ISO3166.configuration.locales = %i[zh-cn zh-hk zh-tw]
|
|
496
|
+
name_cn = ISO3166::Country['TW'].translation('zh-cn')
|
|
497
|
+
name_hk = ISO3166::Country['TW'].translation('zh-hk')
|
|
498
|
+
name_tw = ISO3166::Country['TW'].translation('zh-tw')
|
|
499
|
+
expect([name_cn, name_hk, name_tw].uniq.size).to eql 3
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
it 'should return different value for Portuguese variants' do
|
|
503
|
+
ISO3166.configuration.locales = %i[pt pt-br]
|
|
504
|
+
name_pt = ISO3166::Country['SG'].translation('pt')
|
|
505
|
+
name_br = ISO3166::Country['SG'].translation('pt-br')
|
|
506
|
+
expect([name_pt, name_br].uniq.size).to eql 2
|
|
507
|
+
end
|
|
508
|
+
end
|
|
400
509
|
end
|
|
401
510
|
|
|
402
511
|
describe 'translations' do
|
|
403
512
|
it 'should return an hash of all country names translated to the selected locale' do
|
|
404
513
|
countries = ISO3166::Country.translations('fr')
|
|
405
514
|
expect(countries).to be_an(Hash)
|
|
406
|
-
expect(countries.first[0]).to eq('
|
|
407
|
-
expect(countries.first).to eq(%w
|
|
515
|
+
expect(countries.first[0]).to eq('AD')
|
|
516
|
+
expect(countries.first).to eq(%w[AD Andorre])
|
|
408
517
|
# countries missing the desired locale will not be added to the list
|
|
409
518
|
# so all 250 countries may not be returned, 'fr' returns 249, for example
|
|
410
519
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
@@ -413,8 +522,8 @@ describe ISO3166::Country do
|
|
|
413
522
|
it 'should return an hash of all country names in English if no locale is passed' do
|
|
414
523
|
countries = ISO3166::Country.translations
|
|
415
524
|
expect(countries).to be_an(Hash)
|
|
416
|
-
expect(countries.first[0]).to eq('
|
|
417
|
-
expect(countries.first).to eq(%w
|
|
525
|
+
expect(countries.first[0]).to eq('AD')
|
|
526
|
+
expect(countries.first).to eq(%w[AD Andorra])
|
|
418
527
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
419
528
|
end
|
|
420
529
|
end
|
|
@@ -498,29 +607,42 @@ describe ISO3166::Country do
|
|
|
498
607
|
end
|
|
499
608
|
|
|
500
609
|
it 'also performs searches with regexps and forces it to ignore case' do
|
|
501
|
-
spain_data = ISO3166::Country.find_all_by(:
|
|
610
|
+
spain_data = ISO3166::Country.find_all_by(:unofficial_names, /Españ/)
|
|
502
611
|
expect(spain_data).to be_a Hash
|
|
503
612
|
expect(spain_data.keys).to eq(['ES'])
|
|
504
613
|
end
|
|
614
|
+
|
|
615
|
+
it 'performs reasonably' do
|
|
616
|
+
start = Time.now
|
|
617
|
+
250.times do
|
|
618
|
+
lookup = ['ZM', 'ZMB', 'Zambia', 'US', 'USA', 'United States'].sample
|
|
619
|
+
case lookup.length
|
|
620
|
+
when 2 then ISO3166::Country.find_all_by(:alpha2, lookup)
|
|
621
|
+
when 3 then ISO3166::Country.find_all_by(:alpha3, lookup)
|
|
622
|
+
else ISO3166::Country.find_all_by(:iso_short_name, lookup)
|
|
623
|
+
end
|
|
624
|
+
end
|
|
625
|
+
expect(Time.now - start).to be < 1
|
|
626
|
+
end
|
|
505
627
|
end
|
|
506
628
|
|
|
507
629
|
describe 'hash finder methods' do
|
|
508
|
-
context "when search name in '
|
|
509
|
-
subject { ISO3166::Country.
|
|
630
|
+
context "when search name in 'iso_short_name'" do
|
|
631
|
+
subject { ISO3166::Country.find_by_iso_short_name('Poland') }
|
|
510
632
|
it 'should return' do
|
|
511
633
|
expect(subject.first).to eq('PL')
|
|
512
634
|
end
|
|
513
635
|
end
|
|
514
636
|
|
|
515
|
-
context "when search lowercase name in '
|
|
516
|
-
subject { ISO3166::Country.
|
|
637
|
+
context "when search lowercase name in 'iso_short_name'" do
|
|
638
|
+
subject { ISO3166::Country.find_by_iso_short_name('poland') }
|
|
517
639
|
it 'should return' do
|
|
518
640
|
expect(subject.first).to eq('PL')
|
|
519
641
|
end
|
|
520
642
|
end
|
|
521
643
|
|
|
522
|
-
context "when search name with comma in '
|
|
523
|
-
subject { ISO3166::Country.
|
|
644
|
+
context "when search name with comma in 'iso_short_name'" do
|
|
645
|
+
subject { ISO3166::Country.find_by_iso_short_name(country_name) }
|
|
524
646
|
|
|
525
647
|
context 'with Republic of Korea' do
|
|
526
648
|
let(:country_name) { 'Korea, Republic of' }
|
|
@@ -545,7 +667,7 @@ describe ISO3166::Country do
|
|
|
545
667
|
end
|
|
546
668
|
|
|
547
669
|
context 'when search lowercase multibyte name found' do
|
|
548
|
-
subject { ISO3166::Country.
|
|
670
|
+
subject { ISO3166::Country.find_country_by_unofficial_names('россия') }
|
|
549
671
|
|
|
550
672
|
it 'should be a country instance' do
|
|
551
673
|
expect(subject).to be_a(ISO3166::Country)
|
|
@@ -554,7 +676,7 @@ describe ISO3166::Country do
|
|
|
554
676
|
end
|
|
555
677
|
|
|
556
678
|
context 'when search lowercase multibyte name found' do
|
|
557
|
-
subject { ISO3166::Country.
|
|
679
|
+
subject { ISO3166::Country.find_country_by_unofficial_names(/россия/) }
|
|
558
680
|
|
|
559
681
|
it 'should be a country instance' do
|
|
560
682
|
expect(subject).to be_a(ISO3166::Country)
|
|
@@ -563,7 +685,7 @@ describe ISO3166::Country do
|
|
|
563
685
|
end
|
|
564
686
|
|
|
565
687
|
context 'when accents are not used' do
|
|
566
|
-
subject { ISO3166::Country.
|
|
688
|
+
subject { ISO3166::Country.find_country_by_unofficial_names('emirats Arabes Unis') }
|
|
567
689
|
|
|
568
690
|
it 'should be a country instance' do
|
|
569
691
|
expect(subject).to be_a(ISO3166::Country)
|
|
@@ -571,8 +693,20 @@ describe ISO3166::Country do
|
|
|
571
693
|
end
|
|
572
694
|
end
|
|
573
695
|
|
|
574
|
-
context "when search name in '
|
|
575
|
-
subject { ISO3166::Country.
|
|
696
|
+
context "when search name in 'unofficial_names'" do
|
|
697
|
+
subject { ISO3166::Country.find_by_unofficial_names('Polonia') }
|
|
698
|
+
it 'should return' do
|
|
699
|
+
expect(subject.first).to eq('PL')
|
|
700
|
+
end
|
|
701
|
+
end
|
|
702
|
+
|
|
703
|
+
context "when search name in 'translated_names'" do
|
|
704
|
+
before do
|
|
705
|
+
ISO3166.configure do |config|
|
|
706
|
+
config.locales = [:bs]
|
|
707
|
+
end
|
|
708
|
+
end
|
|
709
|
+
subject { ISO3166::Country.find_by_translated_names('Poljska') }
|
|
576
710
|
it 'should return' do
|
|
577
711
|
expect(subject.first).to eq('PL')
|
|
578
712
|
end
|
|
@@ -580,7 +714,9 @@ describe ISO3166::Country do
|
|
|
580
714
|
|
|
581
715
|
context 'when finding by invalid attribute' do
|
|
582
716
|
it 'should raise an error' do
|
|
583
|
-
expect { ISO3166::Country.find_by_invalid('invalid') }.to
|
|
717
|
+
expect { ISO3166::Country.find_by_invalid('invalid') }.to(
|
|
718
|
+
raise_error(RuntimeError, "Invalid attribute name 'invalid'")
|
|
719
|
+
)
|
|
584
720
|
end
|
|
585
721
|
end
|
|
586
722
|
|
|
@@ -605,7 +741,7 @@ describe ISO3166::Country do
|
|
|
605
741
|
|
|
606
742
|
describe 'country finder methods' do
|
|
607
743
|
context 'when search name found' do
|
|
608
|
-
let(:uk) { ISO3166::Country.
|
|
744
|
+
let(:uk) { ISO3166::Country.find_country_by_unofficial_names('United Kingdom') }
|
|
609
745
|
|
|
610
746
|
it 'should be a country instance' do
|
|
611
747
|
expect(uk).to be_a(ISO3166::Country)
|
|
@@ -614,7 +750,7 @@ describe ISO3166::Country do
|
|
|
614
750
|
end
|
|
615
751
|
|
|
616
752
|
context 'when search lowercase name found' do
|
|
617
|
-
let(:uk) { ISO3166::Country.
|
|
753
|
+
let(:uk) { ISO3166::Country.find_country_by_unofficial_names('united kingdom') }
|
|
618
754
|
|
|
619
755
|
it 'should be a country instance' do
|
|
620
756
|
expect(uk).to be_a(ISO3166::Country)
|
|
@@ -623,7 +759,7 @@ describe ISO3166::Country do
|
|
|
623
759
|
end
|
|
624
760
|
|
|
625
761
|
context 'when the search term contains comma' do
|
|
626
|
-
let(:korea) { ISO3166::Country.
|
|
762
|
+
let(:korea) { ISO3166::Country.find_country_by_unofficial_names('Korea, Republic of') }
|
|
627
763
|
|
|
628
764
|
it 'should be a country instance' do
|
|
629
765
|
expect(korea).to be_a(ISO3166::Country)
|
|
@@ -645,15 +781,88 @@ describe ISO3166::Country do
|
|
|
645
781
|
end
|
|
646
782
|
end
|
|
647
783
|
|
|
648
|
-
|
|
649
|
-
|
|
784
|
+
describe '#find_country_by_any_name' do
|
|
785
|
+
context 'when search name found' do
|
|
786
|
+
let(:uk) { ISO3166::Country.find_country_by_any_name('United Kingdom') }
|
|
787
|
+
|
|
788
|
+
it 'should be a country instance' do
|
|
789
|
+
expect(uk).to be_a(ISO3166::Country)
|
|
790
|
+
expect(uk.alpha2).to eq('GB')
|
|
791
|
+
end
|
|
792
|
+
end
|
|
793
|
+
|
|
794
|
+
context 'when search lowercase name found' do
|
|
795
|
+
let(:uk) { ISO3166::Country.find_country_by_any_name('united kingdom') }
|
|
796
|
+
|
|
797
|
+
it 'should be a country instance' do
|
|
798
|
+
expect(uk).to be_a(ISO3166::Country)
|
|
799
|
+
expect(uk.alpha2).to eq('GB')
|
|
800
|
+
end
|
|
801
|
+
end
|
|
802
|
+
|
|
803
|
+
context 'when the search term contains comma' do
|
|
804
|
+
let(:korea) { ISO3166::Country.find_country_by_any_name('Korea, Republic of') }
|
|
805
|
+
|
|
806
|
+
it 'should be a country instance' do
|
|
807
|
+
expect(korea).to be_a(ISO3166::Country)
|
|
808
|
+
expect(korea.alpha2).to eq('KR')
|
|
809
|
+
end
|
|
810
|
+
end
|
|
811
|
+
|
|
812
|
+
context 'when search translation found' do
|
|
813
|
+
before do
|
|
814
|
+
ISO3166.configure do |config|
|
|
815
|
+
config.locales = [:bs]
|
|
816
|
+
end
|
|
817
|
+
end
|
|
818
|
+
let(:uk) { ISO3166::Country.find_country_by_any_name('Velika Britanija') }
|
|
819
|
+
|
|
820
|
+
it 'should be a country instance' do
|
|
821
|
+
expect(uk).to be_a(ISO3166::Country)
|
|
822
|
+
expect(uk.alpha2).to eq('GB')
|
|
823
|
+
end
|
|
824
|
+
end
|
|
825
|
+
end
|
|
826
|
+
|
|
827
|
+
context 'sanity check for #771' do
|
|
828
|
+
let(:turkey) { ISO3166::Country.find_country_by_any_name('Turkey') }
|
|
650
829
|
|
|
651
830
|
it 'should be a country instance' do
|
|
831
|
+
expect(turkey).to be_a(ISO3166::Country)
|
|
832
|
+
expect(turkey.alpha2).to eq('TR')
|
|
833
|
+
end
|
|
834
|
+
end
|
|
835
|
+
|
|
836
|
+
context 'regression test for #746' do
|
|
837
|
+
let(:no_country) { ISO3166::Country.find_country_by_any_name(nil) }
|
|
838
|
+
|
|
839
|
+
it 'should not be a country instance' do
|
|
652
840
|
expect(no_country).to_not be_a(ISO3166::Country)
|
|
653
841
|
expect(no_country).to eq nil
|
|
654
842
|
end
|
|
655
843
|
end
|
|
656
844
|
|
|
845
|
+
context 'regression test for #388/#746/#776' do
|
|
846
|
+
before do
|
|
847
|
+
ISO3166.configure do |config|
|
|
848
|
+
config.locales = [:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de, :dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he, :hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku, :lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or, :pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw, :ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh, :zh, :zu]
|
|
849
|
+
end
|
|
850
|
+
end
|
|
851
|
+
|
|
852
|
+
let(:no_country) { ISO3166::Country.find_country_by_translated_names(nil) }
|
|
853
|
+
let(:zimbabwe) { ISO3166::Country['ZW'] }
|
|
854
|
+
|
|
855
|
+
it 'should not be a country instance' do
|
|
856
|
+
expect(no_country).to_not be_a(ISO3166::Country)
|
|
857
|
+
expect(no_country).to eq nil
|
|
858
|
+
end
|
|
859
|
+
|
|
860
|
+
it 'translated_names should not include nil values' do
|
|
861
|
+
expect(zimbabwe.translation('no')).to be_nil
|
|
862
|
+
expect(zimbabwe.translated_names).not_to include(nil)
|
|
863
|
+
end
|
|
864
|
+
end
|
|
865
|
+
|
|
657
866
|
context 'when attempting to search by translations hash' do
|
|
658
867
|
let(:uk) { ISO3166::Country.find_country_by_translations({}) }
|
|
659
868
|
|
|
@@ -661,8 +870,9 @@ describe ISO3166::Country do
|
|
|
661
870
|
expect { uk }.to raise_error(RuntimeError)
|
|
662
871
|
end
|
|
663
872
|
end
|
|
873
|
+
|
|
664
874
|
context 'when search name not found' do
|
|
665
|
-
let(:bogus) { ISO3166::Country.
|
|
875
|
+
let(:bogus) { ISO3166::Country.find_country_by_unofficial_names('Does not exist') }
|
|
666
876
|
|
|
667
877
|
it 'should be a country instance' do
|
|
668
878
|
expect(bogus).to eq(nil)
|
|
@@ -671,7 +881,7 @@ describe ISO3166::Country do
|
|
|
671
881
|
|
|
672
882
|
# Spot checks #243
|
|
673
883
|
context 'when search name not found' do
|
|
674
|
-
let(:belgium) { ISO3166::Country.
|
|
884
|
+
let(:belgium) { ISO3166::Country.find_country_by_unofficial_names('Belgium') }
|
|
675
885
|
|
|
676
886
|
it 'should be a country instance' do
|
|
677
887
|
expect(belgium.alpha2).to eq('BE')
|
|
@@ -680,7 +890,7 @@ describe ISO3166::Country do
|
|
|
680
890
|
|
|
681
891
|
# Spot checks #240
|
|
682
892
|
context 'when search name not found' do
|
|
683
|
-
let(:canada) { ISO3166::Country.
|
|
893
|
+
let(:canada) { ISO3166::Country.find_country_by_unofficial_names('Canada') }
|
|
684
894
|
|
|
685
895
|
it 'should be a country instance' do
|
|
686
896
|
expect(canada.alpha2).to eq('CA')
|
|
@@ -689,7 +899,7 @@ describe ISO3166::Country do
|
|
|
689
899
|
|
|
690
900
|
# Spot checks #241
|
|
691
901
|
context 'when search name not found' do
|
|
692
|
-
let(:israel) { ISO3166::Country.
|
|
902
|
+
let(:israel) { ISO3166::Country.find_country_by_unofficial_names('Israel') }
|
|
693
903
|
|
|
694
904
|
it 'should be a country instance' do
|
|
695
905
|
expect(israel.alpha2).to eq('IL')
|
|
@@ -698,7 +908,7 @@ describe ISO3166::Country do
|
|
|
698
908
|
|
|
699
909
|
# Spot checks #241
|
|
700
910
|
context 'when search name not found' do
|
|
701
|
-
let(:israel) { ISO3166::Country.
|
|
911
|
+
let(:israel) { ISO3166::Country.find_by_iso_short_name('Israel') }
|
|
702
912
|
|
|
703
913
|
it 'should be a country instance' do
|
|
704
914
|
expect(israel[0]).to eq('IL')
|
|
@@ -707,7 +917,7 @@ describe ISO3166::Country do
|
|
|
707
917
|
|
|
708
918
|
# Spot checks #241
|
|
709
919
|
context 'when search name not found' do
|
|
710
|
-
let(:israel) { ISO3166::Country.find_all_by(:
|
|
920
|
+
let(:israel) { ISO3166::Country.find_all_by(:iso_short_name, 'Israel') }
|
|
711
921
|
|
|
712
922
|
it 'should be a country instance' do
|
|
713
923
|
expect(israel.size).to eq(1)
|
|
@@ -717,8 +927,9 @@ describe ISO3166::Country do
|
|
|
717
927
|
|
|
718
928
|
context 'when finding by invalid attribute' do
|
|
719
929
|
it 'should raise an error' do
|
|
720
|
-
expect { ISO3166::Country.find_country_by_invalid('invalid') }.to
|
|
721
|
-
|
|
930
|
+
expect { ISO3166::Country.find_country_by_invalid('invalid') }.to(
|
|
931
|
+
raise_error(RuntimeError, "Invalid attribute name 'invalid'")
|
|
932
|
+
)
|
|
722
933
|
end
|
|
723
934
|
end
|
|
724
935
|
|
|
@@ -740,13 +951,42 @@ describe ISO3166::Country do
|
|
|
740
951
|
end
|
|
741
952
|
end
|
|
742
953
|
|
|
743
|
-
describe '
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
954
|
+
describe 'finder methods respond_to_missing?' do
|
|
955
|
+
subject { ISO3166::Country.respond_to?(method_name) }
|
|
956
|
+
describe 'find_all_by' do
|
|
957
|
+
context 'find by a valid Country attribute' do
|
|
958
|
+
let(:method_name) { :find_all_by_currency }
|
|
959
|
+
it { is_expected.to be true }
|
|
960
|
+
end
|
|
748
961
|
|
|
749
|
-
|
|
962
|
+
context 'find by an invalid attribute' do
|
|
963
|
+
let(:method_name) { :find_all_by_invalid }
|
|
964
|
+
it { is_expected.to be false }
|
|
965
|
+
end
|
|
966
|
+
end
|
|
967
|
+
|
|
968
|
+
describe 'hash finder methods' do
|
|
969
|
+
context 'find by a valid Country attribute' do
|
|
970
|
+
let(:method_name) { :find_by_iso_short_name }
|
|
971
|
+
it { is_expected.to be true }
|
|
972
|
+
end
|
|
973
|
+
|
|
974
|
+
context 'find by an invalid attribute' do
|
|
975
|
+
let(:method_name) { :find_by_invalid }
|
|
976
|
+
it { is_expected.to be false }
|
|
977
|
+
end
|
|
978
|
+
end
|
|
979
|
+
|
|
980
|
+
describe 'country finder methods' do
|
|
981
|
+
context 'find country by a valid Country attribute' do
|
|
982
|
+
let(:method_name) { :find_country_by_alpha3 }
|
|
983
|
+
it { is_expected.to be true }
|
|
984
|
+
end
|
|
985
|
+
|
|
986
|
+
context 'find by an invalid attribute' do
|
|
987
|
+
let(:method_name) { :find_country_by_invalid }
|
|
988
|
+
it { is_expected.to be false }
|
|
989
|
+
end
|
|
750
990
|
end
|
|
751
991
|
end
|
|
752
992
|
|
|
@@ -798,6 +1038,23 @@ describe ISO3166::Country do
|
|
|
798
1038
|
end
|
|
799
1039
|
end
|
|
800
1040
|
|
|
1041
|
+
describe 'in_esm?' do
|
|
1042
|
+
let(:netherlands) { ISO3166::Country.search('NL') }
|
|
1043
|
+
let(:switzerland) { ISO3166::Country.search('CH') }
|
|
1044
|
+
|
|
1045
|
+
it 'should return false for countries without esm_member or eea_member flag' do
|
|
1046
|
+
expect(country.in_esm?).to be_falsey
|
|
1047
|
+
end
|
|
1048
|
+
|
|
1049
|
+
it 'should return true for countries with eea_member flag set to true' do
|
|
1050
|
+
expect(netherlands.in_esm?).to be_truthy
|
|
1051
|
+
end
|
|
1052
|
+
|
|
1053
|
+
it 'should return true for countries with esm_member flag set to true' do
|
|
1054
|
+
expect(switzerland.in_esm?).to be_truthy
|
|
1055
|
+
end
|
|
1056
|
+
end
|
|
1057
|
+
|
|
801
1058
|
describe 'gec' do
|
|
802
1059
|
it 'should return the country\'s GEC code' do
|
|
803
1060
|
expect(ISO3166::Country.new('NA').gec).to eql 'WA'
|
|
@@ -809,7 +1066,7 @@ describe ISO3166::Country do
|
|
|
809
1066
|
end
|
|
810
1067
|
|
|
811
1068
|
describe 'to_s' do
|
|
812
|
-
it 'should return the country
|
|
1069
|
+
it 'should return the country iso_short_name' do
|
|
813
1070
|
expect(ISO3166::Country.new('GB').to_s).to eq('United Kingdom of Great Britain and Northern Ireland')
|
|
814
1071
|
end
|
|
815
1072
|
end
|
|
@@ -823,7 +1080,7 @@ describe ISO3166::Country do
|
|
|
823
1080
|
|
|
824
1081
|
it 'should contain all keys for vat_rates' do
|
|
825
1082
|
expect(belgium.vat_rates).to be_a(Hash)
|
|
826
|
-
expect(belgium.vat_rates.keys).to eq(%w
|
|
1083
|
+
expect(belgium.vat_rates.keys).to eq(%w[standard reduced super_reduced parking])
|
|
827
1084
|
end
|
|
828
1085
|
|
|
829
1086
|
it 'should return an array of reduced vat rates' do
|
|
@@ -850,30 +1107,30 @@ describe ISO3166::Country do
|
|
|
850
1107
|
|
|
851
1108
|
describe 'Added country names to search by' do
|
|
852
1109
|
it 'should return country code for Democratic Republic of the Congo' do
|
|
853
|
-
expect(ISO3166::Country.
|
|
1110
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('Democratic Republic of the Congo').alpha2).to eq 'CD'
|
|
854
1111
|
end
|
|
855
1112
|
it 'should return country code for Ivory Coast' do
|
|
856
|
-
expect(ISO3166::Country.
|
|
1113
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('Ivory Coast').alpha2).to eq 'CI'
|
|
857
1114
|
end
|
|
858
1115
|
it 'should return Pakistan code for Guinea Bissau' do
|
|
859
|
-
expect(ISO3166::Country.
|
|
1116
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('Guinea Bissau').alpha2).to eq 'GW'
|
|
860
1117
|
end
|
|
861
1118
|
it 'should return Pakistan code for St Kitts and Nevis' do
|
|
862
|
-
expect(ISO3166::Country.
|
|
1119
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('St Kitts and Nevis').alpha2).to eq 'KN'
|
|
863
1120
|
end
|
|
864
1121
|
it 'should return Pakistan code for St Lucia' do
|
|
865
|
-
expect(ISO3166::Country.
|
|
866
|
-
expect(ISO3166::Country.
|
|
1122
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('St Lucia').alpha2).to eq 'LC'
|
|
1123
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('St. Lucia').alpha2).to eq 'LC'
|
|
867
1124
|
end
|
|
868
1125
|
it 'should return Pakistan code for Turks and Caicos' do
|
|
869
|
-
expect(ISO3166::Country.
|
|
1126
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('Turks and Caicos').alpha2).to eq 'TC'
|
|
870
1127
|
end
|
|
871
1128
|
it 'should return Pakistan code for St Vincent Grenadines' do
|
|
872
|
-
expect(ISO3166::Country.
|
|
873
|
-
expect(ISO3166::Country.
|
|
1129
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('St Vincent Grenadines').alpha2).to eq 'VC'
|
|
1130
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('St. Vincent Grenadines').alpha2).to eq 'VC'
|
|
874
1131
|
end
|
|
875
1132
|
it 'should return country code for Palestinian Authority' do
|
|
876
|
-
expect(ISO3166::Country.
|
|
1133
|
+
expect(ISO3166::Country.find_country_by_unofficial_names('Palestinian Authority').alpha2).to eq 'PS'
|
|
877
1134
|
end
|
|
878
1135
|
end
|
|
879
1136
|
|
|
@@ -891,4 +1148,24 @@ describe ISO3166::Country do
|
|
|
891
1148
|
expect(countries.all? { |country| country.un_locode.length == 2 }).to be
|
|
892
1149
|
end
|
|
893
1150
|
end
|
|
1151
|
+
|
|
1152
|
+
describe '.pluck' do
|
|
1153
|
+
let(:args) { [] }
|
|
1154
|
+
|
|
1155
|
+
subject { ISO3166::Country.pluck(*args) }
|
|
1156
|
+
|
|
1157
|
+
it 'returns empty arrays' do
|
|
1158
|
+
expect(subject.first).to be_empty
|
|
1159
|
+
expect(subject.last).to be_empty
|
|
1160
|
+
end
|
|
1161
|
+
|
|
1162
|
+
context "when asking for alpha2, alpha3 and iso_short_name" do
|
|
1163
|
+
let(:args) { [:alpha2, :alpha3, :iso_short_name] }
|
|
1164
|
+
|
|
1165
|
+
it 'returns the correct values' do
|
|
1166
|
+
expect(subject.first).to eq(%w[AD AND Andorra])
|
|
1167
|
+
expect(subject.last).to eq(%w[ZW ZWE Zimbabwe])
|
|
1168
|
+
end
|
|
1169
|
+
end
|
|
1170
|
+
end
|
|
894
1171
|
end
|