countries 1.2.2 → 4.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/workflows/tests.yml +39 -0
- data/.gitignore +4 -1
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +52 -0
- data/CHANGELOG.md +570 -1
- data/Gemfile +7 -0
- data/LICENSE +3 -1
- data/README.markdown +261 -136
- data/Rakefile +44 -74
- data/bin/console +14 -0
- data/countries.gemspec +15 -9
- data/lib/countries/cache/countries.json +1 -0
- data/lib/countries/cache/locales/ab.json +1 -0
- data/lib/countries/cache/locales/af.json +1 -0
- data/lib/countries/cache/locales/ak.json +1 -0
- data/lib/countries/cache/locales/am.json +1 -0
- data/lib/countries/cache/locales/an.json +1 -0
- data/lib/countries/cache/locales/ar.json +1 -0
- data/lib/countries/cache/locales/as.json +1 -0
- data/lib/countries/cache/locales/ay.json +1 -0
- data/lib/countries/cache/locales/az.json +1 -0
- data/lib/countries/cache/locales/ba.json +1 -0
- data/lib/countries/cache/locales/be.json +1 -0
- data/lib/countries/cache/locales/bg.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/br.json +1 -0
- data/lib/countries/cache/locales/bs.json +1 -0
- data/lib/countries/cache/locales/ca.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/cv.json +1 -0
- data/lib/countries/cache/locales/cy.json +1 -0
- data/lib/countries/cache/locales/da.json +1 -0
- data/lib/countries/cache/locales/de.json +1 -0
- data/lib/countries/cache/locales/dv.json +1 -0
- data/lib/countries/cache/locales/dz.json +1 -0
- data/lib/countries/cache/locales/ee.json +1 -0
- data/lib/countries/cache/locales/el.json +1 -0
- data/lib/countries/cache/locales/en.json +1 -0
- data/lib/countries/cache/locales/eo.json +1 -0
- data/lib/countries/cache/locales/es.json +1 -0
- data/lib/countries/cache/locales/et.json +1 -0
- data/lib/countries/cache/locales/eu.json +1 -0
- data/lib/countries/cache/locales/fa.json +1 -0
- data/lib/countries/cache/locales/ff.json +1 -0
- data/lib/countries/cache/locales/fi.json +1 -0
- data/lib/countries/cache/locales/fo.json +1 -0
- data/lib/countries/cache/locales/fr.json +1 -0
- data/lib/countries/cache/locales/fy.json +1 -0
- data/lib/countries/cache/locales/ga.json +1 -0
- data/lib/countries/cache/locales/gl.json +1 -0
- data/lib/countries/cache/locales/gn.json +1 -0
- data/lib/countries/cache/locales/gu.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/hi.json +1 -0
- data/lib/countries/cache/locales/hr.json +1 -0
- data/lib/countries/cache/locales/ht.json +1 -0
- data/lib/countries/cache/locales/hu.json +1 -0
- data/lib/countries/cache/locales/hy.json +1 -0
- data/lib/countries/cache/locales/ia.json +1 -0
- data/lib/countries/cache/locales/id.json +1 -0
- data/lib/countries/cache/locales/io.json +1 -0
- data/lib/countries/cache/locales/is.json +1 -0
- data/lib/countries/cache/locales/it.json +1 -0
- data/lib/countries/cache/locales/iu.json +1 -0
- data/lib/countries/cache/locales/ja.json +1 -0
- data/lib/countries/cache/locales/ka.json +1 -0
- data/lib/countries/cache/locales/ki.json +1 -0
- data/lib/countries/cache/locales/kk.json +1 -0
- data/lib/countries/cache/locales/kl.json +1 -0
- data/lib/countries/cache/locales/km.json +1 -0
- data/lib/countries/cache/locales/kn.json +1 -0
- data/lib/countries/cache/locales/ko.json +1 -0
- data/lib/countries/cache/locales/ku.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/lv.json +1 -0
- data/lib/countries/cache/locales/mi.json +1 -0
- data/lib/countries/cache/locales/mk.json +1 -0
- data/lib/countries/cache/locales/ml.json +1 -0
- data/lib/countries/cache/locales/mn.json +1 -0
- data/lib/countries/cache/locales/mr.json +1 -0
- data/lib/countries/cache/locales/ms.json +1 -0
- data/lib/countries/cache/locales/mt.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/ne.json +1 -0
- data/lib/countries/cache/locales/nl.json +1 -0
- data/lib/countries/cache/locales/nn.json +1 -0
- data/lib/countries/cache/locales/nv.json +1 -0
- data/lib/countries/cache/locales/oc.json +1 -0
- data/lib/countries/cache/locales/or.json +1 -0
- data/lib/countries/cache/locales/pa.json +1 -0
- data/lib/countries/cache/locales/pi.json +1 -0
- data/lib/countries/cache/locales/pl.json +1 -0
- data/lib/countries/cache/locales/ps.json +1 -0
- data/lib/countries/cache/locales/pt-br.json +1 -0
- data/lib/countries/cache/locales/pt.json +1 -0
- data/lib/countries/cache/locales/ro.json +1 -0
- data/lib/countries/cache/locales/ru.json +1 -0
- data/lib/countries/cache/locales/rw.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/sk.json +1 -0
- data/lib/countries/cache/locales/sl.json +1 -0
- data/lib/countries/cache/locales/so.json +1 -0
- data/lib/countries/cache/locales/sq.json +1 -0
- data/lib/countries/cache/locales/sr.json +1 -0
- data/lib/countries/cache/locales/sv.json +1 -0
- data/lib/countries/cache/locales/sw.json +1 -0
- data/lib/countries/cache/locales/ta.json +1 -0
- data/lib/countries/cache/locales/te.json +1 -0
- data/lib/countries/cache/locales/tg.json +1 -0
- data/lib/countries/cache/locales/th.json +1 -0
- data/lib/countries/cache/locales/ti.json +1 -0
- data/lib/countries/cache/locales/tk.json +1 -0
- data/lib/countries/cache/locales/tl.json +1 -0
- data/lib/countries/cache/locales/tr.json +1 -0
- data/lib/countries/cache/locales/tt.json +1 -0
- data/lib/countries/cache/locales/ug.json +1 -0
- data/lib/countries/cache/locales/uk.json +1 -0
- 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 -0
- data/lib/countries/cache/locales/vi.json +1 -0
- data/lib/countries/cache/locales/wa.json +1 -0
- data/lib/countries/cache/locales/wo.json +1 -0
- data/lib/countries/cache/locales/xh.json +1 -0
- 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/zh.json +1 -0
- data/lib/countries/cache/locales/zu.json +1 -0
- data/lib/countries/configuration.rb +57 -0
- data/lib/countries/country/class_methods.rb +196 -0
- data/lib/countries/country/currency_methods.rb +13 -0
- data/lib/countries/country/emoji.rb +42 -0
- data/lib/countries/country.rb +214 -158
- data/lib/countries/data/countries/AD.yaml +32 -21
- data/lib/countries/data/countries/AE.yaml +40 -25
- data/lib/countries/data/countries/AF.yaml +36 -23
- data/lib/countries/data/countries/AG.yaml +36 -25
- data/lib/countries/data/countries/AI.yaml +33 -21
- data/lib/countries/data/countries/AL.yaml +35 -24
- data/lib/countries/data/countries/AM.yaml +36 -24
- data/lib/countries/data/countries/AO.yaml +30 -20
- data/lib/countries/data/countries/AQ.yaml +31 -22
- data/lib/countries/data/countries/AR.yaml +36 -24
- data/lib/countries/data/countries/AS.yaml +38 -25
- data/lib/countries/data/countries/AT.yaml +37 -25
- data/lib/countries/data/countries/AU.yaml +39 -23
- data/lib/countries/data/countries/AW.yaml +30 -20
- data/lib/countries/data/countries/AX.yaml +33 -22
- data/lib/countries/data/countries/AZ.yaml +37 -25
- data/lib/countries/data/countries/BA.yaml +40 -27
- data/lib/countries/data/countries/BB.yaml +33 -21
- data/lib/countries/data/countries/BD.yaml +32 -21
- data/lib/countries/data/countries/BE.yaml +42 -28
- data/lib/countries/data/countries/BF.yaml +32 -21
- data/lib/countries/data/countries/BG.yaml +38 -26
- data/lib/countries/data/countries/BH.yaml +35 -24
- data/lib/countries/data/countries/BI.yaml +32 -21
- data/lib/countries/data/countries/BJ.yaml +31 -21
- data/lib/countries/data/countries/BL.yaml +33 -22
- data/lib/countries/data/countries/BM.yaml +34 -22
- data/lib/countries/data/countries/BN.yaml +32 -21
- data/lib/countries/data/countries/BO.yaml +37 -25
- data/lib/countries/data/countries/BQ.yaml +33 -22
- data/lib/countries/data/countries/BR.yaml +42 -24
- data/lib/countries/data/countries/BS.yaml +32 -21
- data/lib/countries/data/countries/BT.yaml +33 -22
- data/lib/countries/data/countries/BV.yaml +32 -23
- data/lib/countries/data/countries/BW.yaml +32 -21
- data/lib/countries/data/countries/BY.yaml +38 -26
- data/lib/countries/data/countries/BZ.yaml +34 -23
- data/lib/countries/data/countries/CA.yaml +35 -23
- data/lib/countries/data/countries/CC.yaml +34 -23
- data/lib/countries/data/countries/CD.yaml +44 -28
- data/lib/countries/data/countries/CF.yaml +36 -25
- data/lib/countries/data/countries/CG.yaml +35 -23
- data/lib/countries/data/countries/CH.yaml +47 -26
- data/lib/countries/data/countries/CI.yaml +35 -24
- data/lib/countries/data/countries/CK.yaml +34 -24
- data/lib/countries/data/countries/CL.yaml +37 -21
- data/lib/countries/data/countries/CM.yaml +36 -25
- data/lib/countries/data/countries/CN.yaml +32 -21
- data/lib/countries/data/countries/CO.yaml +33 -22
- data/lib/countries/data/countries/CR.yaml +31 -20
- data/lib/countries/data/countries/CU.yaml +32 -21
- data/lib/countries/data/countries/CV.yaml +35 -24
- data/lib/countries/data/countries/CW.yaml +31 -21
- data/lib/countries/data/countries/CX.yaml +38 -25
- data/lib/countries/data/countries/CY.yaml +42 -28
- data/lib/countries/data/countries/CZ.yaml +42 -28
- data/lib/countries/data/countries/DE.yaml +39 -27
- data/lib/countries/data/countries/DJ.yaml +34 -23
- data/lib/countries/data/countries/DK.yaml +39 -27
- data/lib/countries/data/countries/DM.yaml +31 -20
- data/lib/countries/data/countries/DO.yaml +35 -24
- data/lib/countries/data/countries/DZ.yaml +36 -25
- data/lib/countries/data/countries/EC.yaml +32 -21
- data/lib/countries/data/countries/EE.yaml +37 -26
- data/lib/countries/data/countries/EG.yaml +36 -25
- data/lib/countries/data/countries/EH.yaml +38 -26
- data/lib/countries/data/countries/ER.yaml +36 -24
- data/lib/countries/data/countries/ES.yaml +38 -26
- data/lib/countries/data/countries/ET.yaml +35 -24
- data/lib/countries/data/countries/FI.yaml +40 -27
- data/lib/countries/data/countries/FJ.yaml +38 -25
- data/lib/countries/data/countries/FK.yaml +36 -25
- data/lib/countries/data/countries/FM.yaml +34 -23
- data/lib/countries/data/countries/FO.yaml +35 -24
- data/lib/countries/data/countries/FR.yaml +38 -26
- data/lib/countries/data/countries/GA.yaml +32 -22
- data/lib/countries/data/countries/GB.yaml +46 -28
- data/lib/countries/data/countries/GD.yaml +31 -20
- data/lib/countries/data/countries/GE.yaml +34 -23
- data/lib/countries/data/countries/GF.yaml +35 -23
- data/lib/countries/data/countries/GG.yaml +38 -26
- data/lib/countries/data/countries/GH.yaml +30 -20
- data/lib/countries/data/countries/GI.yaml +32 -21
- data/lib/countries/data/countries/GL.yaml +35 -24
- data/lib/countries/data/countries/GM.yaml +30 -20
- data/lib/countries/data/countries/GN.yaml +35 -23
- data/lib/countries/data/countries/GP.yaml +33 -22
- data/lib/countries/data/countries/GQ.yaml +36 -25
- data/lib/countries/data/countries/GR.yaml +41 -29
- data/lib/countries/data/countries/GS.yaml +34 -22
- data/lib/countries/data/countries/GT.yaml +31 -20
- data/lib/countries/data/countries/GU.yaml +36 -22
- data/lib/countries/data/countries/GW.yaml +34 -22
- data/lib/countries/data/countries/GY.yaml +30 -20
- data/lib/countries/data/countries/HK.yaml +33 -22
- data/lib/countries/data/countries/HM.yaml +35 -24
- data/lib/countries/data/countries/HN.yaml +31 -20
- data/lib/countries/data/countries/HR.yaml +40 -28
- data/lib/countries/data/countries/HT.yaml +34 -22
- data/lib/countries/data/countries/HU.yaml +39 -27
- data/lib/countries/data/countries/ID.yaml +34 -23
- data/lib/countries/data/countries/IE.yaml +39 -26
- data/lib/countries/data/countries/IL.yaml +39 -22
- data/lib/countries/data/countries/IM.yaml +37 -25
- data/lib/countries/data/countries/IN.yaml +35 -23
- data/lib/countries/data/countries/IO.yaml +35 -24
- data/lib/countries/data/countries/IQ.yaml +33 -22
- data/lib/countries/data/countries/IR.yaml +34 -23
- data/lib/countries/data/countries/IS.yaml +42 -24
- data/lib/countries/data/countries/IT.yaml +38 -26
- data/lib/countries/data/countries/JE.yaml +34 -22
- data/lib/countries/data/countries/JM.yaml +33 -22
- data/lib/countries/data/countries/JO.yaml +36 -25
- data/lib/countries/data/countries/JP.yaml +33 -22
- data/lib/countries/data/countries/KE.yaml +34 -22
- data/lib/countries/data/countries/KG.yaml +38 -26
- data/lib/countries/data/countries/KH.yaml +35 -24
- data/lib/countries/data/countries/KI.yaml +30 -20
- data/lib/countries/data/countries/KM.yaml +35 -24
- data/lib/countries/data/countries/KN.yaml +38 -25
- data/lib/countries/data/countries/KP.yaml +37 -26
- data/lib/countries/data/countries/KR.yaml +37 -26
- data/lib/countries/data/countries/KW.yaml +34 -23
- data/lib/countries/data/countries/KY.yaml +36 -24
- data/lib/countries/data/countries/KZ.yaml +36 -24
- data/lib/countries/data/countries/LA.yaml +32 -21
- data/lib/countries/data/countries/LB.yaml +37 -25
- data/lib/countries/data/countries/LC.yaml +35 -22
- data/lib/countries/data/countries/LI.yaml +32 -20
- data/lib/countries/data/countries/LK.yaml +33 -21
- data/lib/countries/data/countries/LR.yaml +31 -20
- data/lib/countries/data/countries/LS.yaml +33 -21
- data/lib/countries/data/countries/LT.yaml +41 -28
- data/lib/countries/data/countries/LU.yaml +39 -25
- data/lib/countries/data/countries/LV.yaml +45 -27
- data/lib/countries/data/countries/LY.yaml +36 -26
- data/lib/countries/data/countries/MA.yaml +35 -24
- data/lib/countries/data/countries/MC.yaml +32 -21
- data/lib/countries/data/countries/MD.yaml +36 -25
- data/lib/countries/data/countries/ME.yaml +38 -24
- data/lib/countries/data/countries/MF.yaml +37 -24
- data/lib/countries/data/countries/MG.yaml +35 -23
- data/lib/countries/data/countries/MH.yaml +37 -25
- data/lib/countries/data/countries/MK.yaml +37 -25
- data/lib/countries/data/countries/ML.yaml +30 -20
- data/lib/countries/data/countries/MM.yaml +31 -20
- data/lib/countries/data/countries/MN.yaml +34 -23
- data/lib/countries/data/countries/MO.yaml +33 -22
- data/lib/countries/data/countries/MP.yaml +38 -26
- data/lib/countries/data/countries/MQ.yaml +33 -22
- data/lib/countries/data/countries/MR.yaml +36 -25
- data/lib/countries/data/countries/MS.yaml +32 -21
- data/lib/countries/data/countries/MT.yaml +38 -25
- data/lib/countries/data/countries/MU.yaml +33 -22
- data/lib/countries/data/countries/MV.yaml +34 -23
- data/lib/countries/data/countries/MW.yaml +32 -21
- data/lib/countries/data/countries/MX.yaml +39 -23
- data/lib/countries/data/countries/MY.yaml +36 -24
- data/lib/countries/data/countries/MZ.yaml +32 -21
- data/lib/countries/data/countries/NA.yaml +35 -23
- data/lib/countries/data/countries/NC.yaml +36 -25
- data/lib/countries/data/countries/NE.yaml +32 -21
- data/lib/countries/data/countries/NF.yaml +36 -25
- data/lib/countries/data/countries/NG.yaml +39 -23
- data/lib/countries/data/countries/NI.yaml +31 -20
- data/lib/countries/data/countries/NL.yaml +41 -28
- data/lib/countries/data/countries/NO.yaml +43 -25
- data/lib/countries/data/countries/NP.yaml +43 -22
- data/lib/countries/data/countries/NR.yaml +32 -21
- data/lib/countries/data/countries/NU.yaml +30 -20
- data/lib/countries/data/countries/NZ.yaml +41 -24
- data/lib/countries/data/countries/OM.yaml +33 -22
- data/lib/countries/data/countries/PA.yaml +31 -21
- data/lib/countries/data/countries/PE.yaml +33 -22
- data/lib/countries/data/countries/PF.yaml +36 -25
- data/lib/countries/data/countries/PG.yaml +35 -24
- data/lib/countries/data/countries/PH.yaml +41 -24
- data/lib/countries/data/countries/PK.yaml +34 -22
- data/lib/countries/data/countries/PL.yaml +38 -26
- data/lib/countries/data/countries/PM.yaml +36 -25
- data/lib/countries/data/countries/PN.yaml +35 -23
- data/lib/countries/data/countries/PR.yaml +33 -21
- data/lib/countries/data/countries/PS.yaml +41 -28
- data/lib/countries/data/countries/PT.yaml +34 -22
- data/lib/countries/data/countries/PW.yaml +31 -20
- data/lib/countries/data/countries/PY.yaml +33 -21
- data/lib/countries/data/countries/QA.yaml +32 -22
- data/lib/countries/data/countries/RE.yaml +34 -23
- data/lib/countries/data/countries/RO.yaml +40 -28
- data/lib/countries/data/countries/RS.yaml +34 -23
- data/lib/countries/data/countries/RU.yaml +37 -26
- data/lib/countries/data/countries/RW.yaml +35 -23
- data/lib/countries/data/countries/SA.yaml +42 -25
- data/lib/countries/data/countries/SB.yaml +35 -25
- data/lib/countries/data/countries/SC.yaml +33 -22
- data/lib/countries/data/countries/SD.yaml +37 -25
- data/lib/countries/data/countries/SE.yaml +39 -27
- data/lib/countries/data/countries/SG.yaml +38 -25
- data/lib/countries/data/countries/SH.yaml +37 -25
- data/lib/countries/data/countries/SI.yaml +39 -27
- data/lib/countries/data/countries/SJ.yaml +36 -25
- data/lib/countries/data/countries/SK.yaml +39 -27
- data/lib/countries/data/countries/SL.yaml +30 -20
- data/lib/countries/data/countries/SM.yaml +32 -21
- data/lib/countries/data/countries/SN.yaml +32 -21
- data/lib/countries/data/countries/SO.yaml +35 -23
- data/lib/countries/data/countries/SR.yaml +31 -21
- data/lib/countries/data/countries/SS.yaml +35 -23
- data/lib/countries/data/countries/ST.yaml +34 -24
- data/lib/countries/data/countries/SV.yaml +32 -21
- data/lib/countries/data/countries/SX.yaml +34 -22
- data/lib/countries/data/countries/SY.yaml +36 -26
- data/lib/countries/data/countries/SZ.yaml +35 -23
- data/lib/countries/data/countries/TC.yaml +38 -25
- data/lib/countries/data/countries/TD.yaml +36 -25
- data/lib/countries/data/countries/TF.yaml +39 -28
- data/lib/countries/data/countries/TG.yaml +30 -20
- data/lib/countries/data/countries/TH.yaml +39 -22
- data/lib/countries/data/countries/TJ.yaml +37 -25
- data/lib/countries/data/countries/TK.yaml +33 -23
- data/lib/countries/data/countries/TL.yaml +34 -24
- data/lib/countries/data/countries/TM.yaml +35 -23
- data/lib/countries/data/countries/TN.yaml +38 -26
- data/lib/countries/data/countries/TO.yaml +32 -21
- data/lib/countries/data/countries/TR.yaml +35 -24
- data/lib/countries/data/countries/TT.yaml +35 -24
- data/lib/countries/data/countries/TV.yaml +30 -20
- data/lib/countries/data/countries/TW.yaml +33 -22
- data/lib/countries/data/countries/TZ.yaml +36 -24
- data/lib/countries/data/countries/UA.yaml +42 -25
- data/lib/countries/data/countries/UG.yaml +33 -22
- data/lib/countries/data/countries/UM.yaml +37 -26
- data/lib/countries/data/countries/US.yaml +37 -24
- data/lib/countries/data/countries/UY.yaml +31 -20
- data/lib/countries/data/countries/UZ.yaml +37 -25
- data/lib/countries/data/countries/VA.yaml +39 -27
- data/lib/countries/data/countries/VC.yaml +38 -24
- data/lib/countries/data/countries/VE.yaml +31 -20
- data/lib/countries/data/countries/VG.yaml +38 -26
- data/lib/countries/data/countries/VI.yaml +37 -25
- data/lib/countries/data/countries/VN.yaml +38 -21
- data/lib/countries/data/countries/VU.yaml +34 -22
- data/lib/countries/data/countries/WF.yaml +36 -25
- data/lib/countries/data/countries/WS.yaml +32 -21
- data/lib/countries/data/countries/YE.yaml +33 -23
- data/lib/countries/data/countries/YT.yaml +32 -21
- data/lib/countries/data/countries/ZA.yaml +52 -32
- data/lib/countries/data/countries/ZM.yaml +33 -22
- data/lib/countries/data/countries/ZW.yaml +36 -24
- data/lib/countries/data/subdivisions/AD.yaml +85 -50
- data/lib/countries/data/subdivisions/AE.yaml +513 -55
- data/lib/countries/data/subdivisions/AF.yaml +2239 -234
- data/lib/countries/data/subdivisions/AG.yaml +451 -57
- data/lib/countries/data/subdivisions/AI.yaml +197 -0
- data/lib/countries/data/subdivisions/AL.yaml +746 -316
- data/lib/countries/data/subdivisions/AM.yaml +788 -68
- data/lib/countries/data/subdivisions/AO.yaml +1145 -126
- data/lib/countries/data/subdivisions/AR.yaml +1668 -168
- data/lib/countries/data/subdivisions/AT.yaml +714 -63
- data/lib/countries/data/subdivisions/AU.yaml +673 -56
- data/lib/countries/data/subdivisions/AZ.yaml +4508 -536
- data/lib/countries/data/subdivisions/BA.yaml +359 -14
- data/lib/countries/data/subdivisions/BB.yaml +589 -79
- data/lib/countries/data/subdivisions/BD.yaml +2593 -400
- data/lib/countries/data/subdivisions/BE.yaml +943 -77
- data/lib/countries/data/subdivisions/BF.yaml +2917 -311
- data/lib/countries/data/subdivisions/BG.yaml +1965 -199
- data/lib/countries/data/subdivisions/BH.yaml +184 -31
- data/lib/countries/data/subdivisions/BI.yaml +982 -112
- data/lib/countries/data/subdivisions/BJ.yaml +691 -84
- data/lib/countries/data/subdivisions/BM.yaml +155 -0
- data/lib/countries/data/subdivisions/BN.yaml +225 -24
- data/lib/countries/data/subdivisions/BO.yaml +561 -63
- data/lib/countries/data/subdivisions/BQ.yaml +217 -21
- data/lib/countries/data/subdivisions/BR.yaml +2154 -185
- data/lib/countries/data/subdivisions/BS.yaml +1821 -143
- data/lib/countries/data/subdivisions/BT.yaml +1087 -140
- data/lib/countries/data/subdivisions/BW.yaml +923 -63
- data/lib/countries/data/subdivisions/BY.yaml +528 -31
- data/lib/countries/data/subdivisions/BZ.yaml +309 -42
- data/lib/countries/data/subdivisions/CA.yaml +1105 -92
- data/lib/countries/data/subdivisions/CD.yaml +1187 -78
- data/lib/countries/data/subdivisions/CF.yaml +961 -119
- data/lib/countries/data/subdivisions/CG.yaml +640 -77
- data/lib/countries/data/subdivisions/CH.yaml +1946 -182
- data/lib/countries/data/subdivisions/CI.yaml +859 -125
- data/lib/countries/data/subdivisions/CK.yaml +155 -0
- data/lib/countries/data/subdivisions/CL.yaml +968 -105
- data/lib/countries/data/subdivisions/CM.yaml +582 -70
- data/lib/countries/data/subdivisions/CN.yaml +2618 -274
- data/lib/countries/data/subdivisions/CO.yaml +2102 -227
- data/lib/countries/data/subdivisions/CR.yaml +393 -49
- data/lib/countries/data/subdivisions/CU.yaml +926 -119
- data/lib/countries/data/subdivisions/CV.yaml +1198 -119
- data/lib/countries/data/subdivisions/CY.yaml +328 -42
- data/lib/countries/data/subdivisions/CZ.yaml +2892 -129
- data/lib/countries/data/subdivisions/DE.yaml +1420 -112
- data/lib/countries/data/subdivisions/DJ.yaml +375 -42
- data/lib/countries/data/subdivisions/DK.yaml +344 -180
- data/lib/countries/data/subdivisions/DM.yaml +512 -72
- data/lib/countries/data/subdivisions/DO.yaml +1763 -219
- data/lib/countries/data/subdivisions/DZ.yaml +2869 -334
- data/lib/countries/data/subdivisions/EC.yaml +1348 -168
- data/lib/countries/data/subdivisions/EE.yaml +1368 -118
- data/lib/countries/data/subdivisions/EG.yaml +1628 -190
- data/lib/countries/data/subdivisions/EH.yaml +48 -28
- data/lib/countries/data/subdivisions/ER.yaml +348 -42
- data/lib/countries/data/subdivisions/ES.yaml +4875 -375
- data/lib/countries/data/subdivisions/ET.yaml +735 -77
- data/lib/countries/data/subdivisions/FI.yaml +890 -36
- data/lib/countries/data/subdivisions/FJ.yaml +720 -35
- data/lib/countries/data/subdivisions/FM.yaml +202 -24
- data/lib/countries/data/subdivisions/FR.yaml +8250 -684
- data/lib/countries/data/subdivisions/GA.yaml +526 -63
- data/lib/countries/data/subdivisions/GB.yaml +12522 -1516
- data/lib/countries/data/subdivisions/GD.yaml +354 -49
- data/lib/countries/data/subdivisions/GE.yaml +833 -85
- data/lib/countries/data/subdivisions/GH.yaml +658 -70
- data/lib/countries/data/subdivisions/GL.yaml +262 -0
- data/lib/countries/data/subdivisions/GM.yaml +381 -42
- data/lib/countries/data/subdivisions/GN.yaml +1919 -234
- data/lib/countries/data/subdivisions/GQ.yaml +459 -59
- data/lib/countries/data/subdivisions/GR.yaml +871 -527
- data/lib/countries/data/subdivisions/GT.yaml +1270 -150
- data/lib/countries/data/subdivisions/GW.yaml +563 -59
- data/lib/countries/data/subdivisions/GY.yaml +498 -70
- data/lib/countries/data/subdivisions/HN.yaml +1019 -126
- data/lib/countries/data/subdivisions/HR.yaml +1419 -151
- data/lib/countries/data/subdivisions/HT.yaml +525 -63
- data/lib/countries/data/subdivisions/HU.yaml +2949 -302
- data/lib/countries/data/subdivisions/ID.yaml +2679 -243
- data/lib/countries/data/subdivisions/IE.yaml +2027 -177
- data/lib/countries/data/subdivisions/IL.yaml +376 -42
- data/lib/countries/data/subdivisions/IN.yaml +3110 -252
- data/lib/countries/data/subdivisions/IQ.yaml +1105 -126
- data/lib/countries/data/subdivisions/IR.yaml +2092 -215
- data/lib/countries/data/subdivisions/IS.yaml +830 -59
- data/lib/countries/data/subdivisions/IT.yaml +8525 -790
- data/lib/countries/data/subdivisions/JM.yaml +732 -100
- data/lib/countries/data/subdivisions/JO.yaml +662 -48
- data/lib/countries/data/subdivisions/JP.yaml +3562 -327
- data/lib/countries/data/subdivisions/KE.yaml +1449 -56
- data/lib/countries/data/subdivisions/KG.yaml +624 -57
- data/lib/countries/data/subdivisions/KH.yaml +1332 -147
- data/lib/countries/data/subdivisions/KI.yaml +163 -17
- data/lib/countries/data/subdivisions/KM.yaml +189 -21
- data/lib/countries/data/subdivisions/KN.yaml +835 -100
- data/lib/countries/data/subdivisions/KP.yaml +922 -80
- data/lib/countries/data/subdivisions/KR.yaml +1225 -88
- data/lib/countries/data/subdivisions/KW.yaml +280 -42
- data/lib/countries/data/subdivisions/KZ.yaml +1213 -122
- data/lib/countries/data/subdivisions/LA.yaml +947 -120
- data/lib/countries/data/subdivisions/LB.yaml +386 -22
- data/lib/countries/data/subdivisions/LC.yaml +470 -0
- data/lib/countries/data/subdivisions/LI.yaml +557 -39
- data/lib/countries/data/subdivisions/LK.yaml +1546 -175
- data/lib/countries/data/subdivisions/LR.yaml +857 -105
- data/lib/countries/data/subdivisions/LS.yaml +529 -70
- data/lib/countries/data/subdivisions/LT.yaml +2616 -71
- data/lib/countries/data/subdivisions/LU.yaml +490 -24
- data/lib/countries/data/subdivisions/LV.yaml +2501 -178
- data/lib/countries/data/subdivisions/LY.yaml +1188 -262
- data/lib/countries/data/subdivisions/MA.yaml +3375 -437
- data/lib/countries/data/subdivisions/MC.yaml +484 -0
- data/lib/countries/data/subdivisions/MD.yaml +2240 -71
- data/lib/countries/data/subdivisions/ME.yaml +1136 -151
- data/lib/countries/data/subdivisions/MG.yaml +253 -42
- data/lib/countries/data/subdivisions/MH.yaml +995 -151
- data/lib/countries/data/subdivisions/MK.yaml +3964 -752
- data/lib/countries/data/subdivisions/ML.yaml +569 -63
- data/lib/countries/data/subdivisions/MM.yaml +849 -98
- data/lib/countries/data/subdivisions/MN.yaml +1389 -160
- data/lib/countries/data/subdivisions/MR.yaml +702 -94
- data/lib/countries/data/subdivisions/MT.yaml +3726 -478
- data/lib/countries/data/subdivisions/MU.yaml +923 -115
- data/lib/countries/data/subdivisions/MV.yaml +1219 -148
- data/lib/countries/data/subdivisions/MW.yaml +1646 -189
- data/lib/countries/data/subdivisions/MX.yaml +2414 -222
- data/lib/countries/data/subdivisions/MY.yaml +1071 -114
- data/lib/countries/data/subdivisions/MZ.yaml +665 -77
- data/lib/countries/data/subdivisions/NA.yaml +736 -98
- data/lib/countries/data/subdivisions/NE.yaml +475 -56
- data/lib/countries/data/subdivisions/NG.yaml +2370 -259
- data/lib/countries/data/subdivisions/NI.yaml +952 -119
- data/lib/countries/data/subdivisions/NL.yaml +1205 -84
- data/lib/countries/data/subdivisions/NO.yaml +856 -164
- data/lib/countries/data/subdivisions/NP.yaml +982 -90
- data/lib/countries/data/subdivisions/NR.yaml +827 -100
- data/lib/countries/data/subdivisions/NZ.yaml +946 -122
- data/lib/countries/data/subdivisions/OM.yaml +633 -63
- data/lib/countries/data/subdivisions/PA.yaml +708 -69
- data/lib/countries/data/subdivisions/PE.yaml +1489 -179
- data/lib/countries/data/subdivisions/PG.yaml +1211 -140
- data/lib/countries/data/subdivisions/PH.yaml +5089 -572
- data/lib/countries/data/subdivisions/PK.yaml +566 -56
- data/lib/countries/data/subdivisions/PL.yaml +1042 -150
- data/lib/countries/data/subdivisions/PS.yaml +747 -0
- data/lib/countries/data/subdivisions/PT.yaml +1124 -145
- data/lib/countries/data/subdivisions/PW.yaml +832 -108
- data/lib/countries/data/subdivisions/PY.yaml +1045 -127
- data/lib/countries/data/subdivisions/QA.yaml +469 -64
- data/lib/countries/data/subdivisions/RO.yaml +2746 -294
- data/lib/countries/data/subdivisions/RS.yaml +1786 -195
- data/lib/countries/data/subdivisions/RU.yaml +6570 -655
- data/lib/countries/data/subdivisions/RW.yaml +327 -35
- data/lib/countries/data/subdivisions/SA.yaml +768 -102
- data/lib/countries/data/subdivisions/SB.yaml +550 -70
- data/lib/countries/data/subdivisions/SC.yaml +1286 -163
- data/lib/countries/data/subdivisions/SD.yaml +1002 -254
- data/lib/countries/data/subdivisions/SE.yaml +1416 -149
- data/lib/countries/data/subdivisions/SG.yaml +108 -31
- data/lib/countries/data/subdivisions/SH.yaml +197 -21
- data/lib/countries/data/subdivisions/SI.yaml +10997 -1403
- data/lib/countries/data/subdivisions/SJ.yaml +29 -0
- data/lib/countries/data/subdivisions/SK.yaml +533 -57
- data/lib/countries/data/subdivisions/SL.yaml +231 -28
- data/lib/countries/data/subdivisions/SM.yaml +577 -65
- data/lib/countries/data/subdivisions/SN.yaml +761 -77
- data/lib/countries/data/subdivisions/SO.yaml +914 -126
- data/lib/countries/data/subdivisions/SR.yaml +512 -70
- data/lib/countries/data/subdivisions/SS.yaml +624 -0
- data/lib/countries/data/subdivisions/ST.yaml +73 -14
- data/lib/countries/data/subdivisions/SV.yaml +747 -98
- data/lib/countries/data/subdivisions/SY.yaml +806 -91
- data/lib/countries/data/subdivisions/SZ.yaml +217 -28
- data/lib/countries/data/subdivisions/TD.yaml +1242 -126
- data/lib/countries/data/subdivisions/TG.yaml +264 -35
- data/lib/countries/data/subdivisions/TH.yaml +4535 -539
- data/lib/countries/data/subdivisions/TJ.yaml +356 -0
- data/lib/countries/data/subdivisions/TK.yaml +43 -0
- data/lib/countries/data/subdivisions/TL.yaml +682 -91
- data/lib/countries/data/subdivisions/TM.yaml +390 -46
- data/lib/countries/data/subdivisions/TN.yaml +1301 -168
- data/lib/countries/data/subdivisions/TO.yaml +260 -36
- data/lib/countries/data/subdivisions/TR.yaml +5858 -624
- data/lib/countries/data/subdivisions/TT.yaml +865 -112
- data/lib/countries/data/subdivisions/TV.yaml +382 -44
- data/lib/countries/data/subdivisions/TW.yaml +1281 -145
- data/lib/countries/data/subdivisions/TZ.yaml +1868 -184
- data/lib/countries/data/subdivisions/UA.yaml +1988 -192
- data/lib/countries/data/subdivisions/UG.yaml +6150 -544
- data/lib/countries/data/subdivisions/UM.yaml +710 -59
- data/lib/countries/data/subdivisions/US.yaml +4789 -404
- data/lib/countries/data/subdivisions/UY.yaml +1163 -112
- data/lib/countries/data/subdivisions/UZ.yaml +902 -99
- data/lib/countries/data/subdivisions/VC.yaml +289 -38
- data/lib/countries/data/subdivisions/VE.yaml +1559 -175
- data/lib/countries/data/subdivisions/VN.yaml +3799 -550
- data/lib/countries/data/subdivisions/VU.yaml +333 -43
- data/lib/countries/data/subdivisions/WF.yaml +201 -0
- data/lib/countries/data/subdivisions/WS.yaml +587 -77
- data/lib/countries/data/subdivisions/YE.yaml +1262 -135
- data/lib/countries/data/subdivisions/ZA.yaml +712 -63
- data/lib/countries/data/subdivisions/ZM.yaml +568 -65
- data/lib/countries/data/subdivisions/ZW.yaml +520 -70
- data/lib/countries/data/translation_corrections.yaml +38 -1
- data/lib/countries/data.rb +161 -16
- data/lib/countries/global.rb +13 -3
- data/lib/countries/iso3166.rb +9 -2
- data/lib/countries/kwarg_struct.rb +12 -0
- data/lib/countries/mongoid.rb +25 -22
- data/lib/countries/setup.rb +7 -7
- data/lib/countries/sources/cldr/downloader.rb +37 -0
- data/lib/countries/sources/cldr/subdivision.rb +35 -0
- data/lib/countries/sources/cldr/subdivision_updater.rb +35 -0
- data/lib/countries/sources/local/cached_loader.rb +29 -0
- data/lib/countries/sources/local/subdivision.rb +33 -0
- data/lib/countries/sources.rb +6 -0
- data/lib/countries/structure.rb +72 -0
- data/lib/countries/subdivision.rb +10 -0
- data/lib/countries/tasks/geocoding.rake +97 -0
- data/lib/countries/tasks/postal_codes.rake +48 -0
- data/lib/countries/timezones.rb +13 -0
- data/lib/countries/translations.rb +11 -0
- data/lib/countries/version.rb +1 -1
- data/lib/countries.rb +2 -0
- data/spec/00_global_spec.rb +56 -0
- data/spec/configuration_spec.rb +54 -0
- data/spec/country_spec.rb +473 -87
- data/spec/data_spec.rb +181 -0
- data/spec/mongoid_spec.rb +2 -2
- data/spec/perf_spec.rb +74 -0
- data/spec/spec_helper.rb +12 -0
- data/spec/subdivision_spec.rb +32 -0
- data/spec/thread_safety_spec.rb +46 -0
- data/spec/timezone_spec.rb +32 -0
- metadata +206 -30
- data/.travis.yml +0 -6
- data/lib/countries/cache/countries +0 -0
- data/lib/countries/data/countries/AN.yaml +0 -42
- data/lib/countries/data/countries.yaml +0 -251
- data/lib/countries/data/subdivisions/Ky.yaml +0 -55
- data/lib/countries/data/subdivisions/TF.yaml +0 -27
- data/lib/countries/data/subdivisions/Tj.yaml +0 -38
- data/spec/setup_spec.rb +0 -14
data/spec/data_spec.rb
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'benchmark'
|
4
|
+
|
5
|
+
describe ISO3166::Data do
|
6
|
+
it 'responds to call' do
|
7
|
+
data = ISO3166::Data.new('US').call
|
8
|
+
expect(data['translated_names']).to be_a Array
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'can load selective locales' do
|
12
|
+
# ISO3166::Data.update_cache
|
13
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
14
|
+
data = ISO3166::Data.new('US').call
|
15
|
+
expect(data['translated_names'].size).to eq 3
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'can load selective locales and reload efficiently' do
|
19
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
20
|
+
data = ISO3166::Data.new('US').call
|
21
|
+
expect(data['translations']).to eq('de' => 'Vereinigte Staaten', 'es' => 'Estados Unidos', 'en' => 'United States')
|
22
|
+
expect(data['translated_names'].sort).to eq ['Vereinigte Staaten', 'Estados Unidos', 'United States'].sort
|
23
|
+
ISO3166.configuration.locales = [:en]
|
24
|
+
data = ISO3166::Data.new('US').call
|
25
|
+
expect(data['translated_names'].size).to eq 1
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#codes' do
|
29
|
+
it 'returns an array' do
|
30
|
+
data = ISO3166::Data.codes
|
31
|
+
expect(data).to be_a Array
|
32
|
+
expect(data.size).to eq 249
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'locales will load prior to return results' do
|
37
|
+
# require 'memory_profiler'
|
38
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
39
|
+
# report = MemoryProfiler.report do
|
40
|
+
ISO3166::Data.update_cache
|
41
|
+
# end
|
42
|
+
|
43
|
+
# report.pretty_print(to_file: 'tmp/memory/3_locales')
|
44
|
+
ISO3166::Data.update_cache
|
45
|
+
|
46
|
+
ISO3166.configure do |config|
|
47
|
+
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]
|
48
|
+
end
|
49
|
+
# puts Benchmark.measure {ISO3166::Data.update_cache}
|
50
|
+
|
51
|
+
# report = MemoryProfiler.report do
|
52
|
+
ISO3166::Data.update_cache
|
53
|
+
# end
|
54
|
+
|
55
|
+
# report.pretty_print(to_file: 'tmp/memory/all_locales')
|
56
|
+
|
57
|
+
expect(ISO3166::Country.new('DE').translations.size).to eq 92
|
58
|
+
|
59
|
+
expect(ISO3166.configuration.loaded_locales.size).to eq 92
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'locales will load prior and be cached' do
|
63
|
+
ISO3166.reset
|
64
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
65
|
+
expect(ISO3166::Data.send(:locales_to_load)).to eql(%w(es de en))
|
66
|
+
ISO3166::Data.update_cache
|
67
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
68
|
+
expect(ISO3166::Data.send(:locales_to_load)).to eql([])
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'locales will load prior and be cached' do
|
72
|
+
ISO3166.reset
|
73
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
74
|
+
expect(ISO3166::Data.send(:locales_to_remove)).to eql([])
|
75
|
+
expect(ISO3166::Country.new('DE').translation('de')).to eq 'Deutschland'
|
76
|
+
ISO3166::Data.update_cache
|
77
|
+
ISO3166.configuration.locales = [:es, :en]
|
78
|
+
expect(ISO3166::Data.send(:locales_to_remove)).to eql(['de'])
|
79
|
+
expect(ISO3166::Country.new('DE').translation('de')).to eq nil
|
80
|
+
end
|
81
|
+
|
82
|
+
describe '#load_cache' do
|
83
|
+
it 'will return an empty hash for an unsupported locale' do
|
84
|
+
file_array = %w(locales unsupported.json)
|
85
|
+
expect(ISO3166::Data.send(:load_cache, file_array)).to eql({})
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'will return json for a supported locale' do
|
89
|
+
file_array = %w(locales en.json)
|
90
|
+
expect(ISO3166::Data.send(:load_cache, file_array)).not_to be_empty
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
describe 'hotloading existing data' do
|
95
|
+
before do
|
96
|
+
ISO3166::Data.register(
|
97
|
+
alpha2: 'TW',
|
98
|
+
iso_short_name: 'NEW Taiwan',
|
99
|
+
subdivisions: {
|
100
|
+
CHA: {name: 'New Changhua'},
|
101
|
+
CYI: {name: 'New Municipality'}
|
102
|
+
},
|
103
|
+
translations: {
|
104
|
+
'en' => 'NEW Taiwan',
|
105
|
+
'de' => 'NEW Taiwan'
|
106
|
+
}
|
107
|
+
)
|
108
|
+
end
|
109
|
+
|
110
|
+
subject { ISO3166::Country.new('TW') }
|
111
|
+
|
112
|
+
it 'can be done' do
|
113
|
+
data = ISO3166::Data.new('TW').call
|
114
|
+
ISO3166.configuration.locales = [:es, :de, :de]
|
115
|
+
expect(data['iso_short_name']).to eq 'NEW Taiwan'
|
116
|
+
expect(subject.iso_short_name).to eq 'NEW Taiwan'
|
117
|
+
expect(subject.translations).to eq('en' => 'NEW Taiwan',
|
118
|
+
'de' => 'NEW Taiwan')
|
119
|
+
expect(subject.subdivisions).to eq('CHA' => ISO3166::Subdivision.new({name: 'New Changhua', code: 'CHA'}),
|
120
|
+
'CYI' => ISO3166::Subdivision.new({name: 'New Municipality', code: 'CYI'}))
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe 'hotloading data' do
|
125
|
+
before do
|
126
|
+
ISO3166::Data.register(
|
127
|
+
alpha2: 'LOL',
|
128
|
+
iso_short_name: 'Happy Country',
|
129
|
+
subdivisions: {
|
130
|
+
LOL1: {name: 'Happy sub1'},
|
131
|
+
LOL2: {name: 'Happy sub2'}
|
132
|
+
},
|
133
|
+
translations: {
|
134
|
+
'en' => 'Happy Country',
|
135
|
+
'de' => 'glückliches Land'
|
136
|
+
}
|
137
|
+
)
|
138
|
+
end
|
139
|
+
|
140
|
+
subject { ISO3166::Country.new('LOL') }
|
141
|
+
|
142
|
+
it 'can be done' do
|
143
|
+
data = ISO3166::Data.new('LOL').call
|
144
|
+
expect(data['iso_short_name']).to eq 'Happy Country'
|
145
|
+
expect(subject.iso_short_name).to eq 'Happy Country'
|
146
|
+
expect(subject.subdivisions).to eq('LOL1' => ISO3166::Subdivision.new({name: 'Happy sub1', code: 'LOL1'}),
|
147
|
+
'LOL2' => ISO3166::Subdivision.new({name: 'Happy sub2', code: 'LOL2'}))
|
148
|
+
end
|
149
|
+
|
150
|
+
it 'detect a stale cache' do
|
151
|
+
ISO3166::Data.register(alpha2: 'SAD', iso_short_name: 'Sad Country')
|
152
|
+
data = ISO3166::Data.new('SAD').call
|
153
|
+
expect(data['iso_short_name']).to eq 'Sad Country'
|
154
|
+
expect(ISO3166::Country.new('SAD').iso_short_name).to eq 'Sad Country'
|
155
|
+
ISO3166::Data.unregister('SAD')
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'will not override custom translations' do
|
159
|
+
data = ISO3166::Data.new('LOL').call
|
160
|
+
expect(data['translations']).to eq('en' => 'Happy Country',
|
161
|
+
'de' => 'glückliches Land')
|
162
|
+
expect(subject.translations).to eq('en' => 'Happy Country',
|
163
|
+
'de' => 'glückliches Land')
|
164
|
+
end
|
165
|
+
|
166
|
+
it 'leaves remain countries intact after a hotload' do
|
167
|
+
data = ISO3166::Data.new('US').call
|
168
|
+
expect(data).to include('subregion')
|
169
|
+
end
|
170
|
+
|
171
|
+
it 'can be undone' do
|
172
|
+
ISO3166::Data.unregister('lol')
|
173
|
+
data = ISO3166::Data.new('LOL').call
|
174
|
+
expect(data).to eq nil
|
175
|
+
end
|
176
|
+
|
177
|
+
after do
|
178
|
+
ISO3166::Data.unregister('lol')
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
data/spec/mongoid_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
|
-
require
|
3
|
+
require 'spec_helper'
|
4
4
|
require File.expand_path('../../lib/countries/mongoid', __FILE__)
|
5
5
|
|
6
6
|
describe 'Mongoid support' do
|
@@ -24,7 +24,7 @@ describe 'Mongoid support' do
|
|
24
24
|
end
|
25
25
|
|
26
26
|
it 'should store nil given an invalid object' do
|
27
|
-
bad_types = [[], Time.now, {}, Date.
|
27
|
+
bad_types = [[], Time.now.utc, {}, Date.new(2029, 10, 1)]
|
28
28
|
bad_types.each do |type|
|
29
29
|
expect(ISO3166::Country.mongoize(type)).to eql nil
|
30
30
|
end
|
data/spec/perf_spec.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe ISO3166::Data, perf: true, order: :defined do
|
5
|
+
|
6
|
+
ALL_LOCALES = [
|
7
|
+
:af, :am, :ar, :as, :az, :be, :bg, :bn, :br, :bs, :ca, :cs, :cy, :da, :de,
|
8
|
+
:dz, :el, :en, :eo, :es, :et, :eu, :fa, :fi, :fo, :fr, :ga, :gl, :gu, :he,
|
9
|
+
:hi, :hr, :hu, :hy, :ia, :id, :is, :it, :ja, :ka, :kk, :km, :kn, :ko, :ku,
|
10
|
+
:lt, :lv, :mi, :mk, :ml, :mn, :mr, :ms, :mt, :nb, :ne, :nl, :nn, :oc, :or,
|
11
|
+
:pa, :pl, :ps, :pt, :ro, :ru, :rw, :si, :sk, :sl, :so, :sq, :sr, :sv, :sw,
|
12
|
+
:ta, :te, :th, :ti, :tk, :tl, :tr, :tt, :ug, :uk, :ve, :vi, :wa, :wo, :xh,
|
13
|
+
:zh, :zu
|
14
|
+
].freeze
|
15
|
+
|
16
|
+
def perf_report(_name)
|
17
|
+
require 'benchmark'
|
18
|
+
require 'memory_profiler'
|
19
|
+
require 'ruby-prof'
|
20
|
+
# profile the code
|
21
|
+
RubyProf.start
|
22
|
+
|
23
|
+
100.times do
|
24
|
+
yield if block_given?
|
25
|
+
end
|
26
|
+
|
27
|
+
result = RubyProf.stop
|
28
|
+
|
29
|
+
# print a flat profile to text
|
30
|
+
printer = RubyProf::FlatPrinter.new(result)
|
31
|
+
printer.print(STDOUT)
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'responds to call' do
|
35
|
+
perf_report('translations') do
|
36
|
+
ISO3166.reset
|
37
|
+
data = ISO3166::Data.new('US').call
|
38
|
+
expect(data['translated_names']).to be_a Array
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'locales will load prior to return results' do
|
43
|
+
ISO3166.configuration.locales = [:es, :de, :en]
|
44
|
+
report = MemoryProfiler.report do
|
45
|
+
ISO3166::Data.update_cache
|
46
|
+
end
|
47
|
+
|
48
|
+
report.pretty_print(to_file: 'tmp/memory/3_locales')
|
49
|
+
puts Benchmark.measure { ISO3166::Data.update_cache }
|
50
|
+
|
51
|
+
ISO3166.configure do |config|
|
52
|
+
config.locales = ALL_LOCALES
|
53
|
+
end
|
54
|
+
puts Benchmark.measure { ISO3166::Data.update_cache }
|
55
|
+
|
56
|
+
report = MemoryProfiler.report do
|
57
|
+
ISO3166::Data.update_cache
|
58
|
+
end
|
59
|
+
|
60
|
+
report.pretty_print(to_file: 'tmp/memory/all_locales')
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'loades a specfic country quickly' do
|
64
|
+
codes = Dir['lib/countries/data/countries/*.yaml'].map { |x| File.basename(x, File.extname(x)) }.uniq
|
65
|
+
Benchmark.bmbm do |bm|
|
66
|
+
bm.report('find_by_alpha2') do
|
67
|
+
codes.map { |cc| ISO3166::Country.find_country_by_alpha2 cc }
|
68
|
+
end
|
69
|
+
bm.report('new') do
|
70
|
+
codes.map { |cc| ISO3166::Country.new cc }
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1 +1,13 @@
|
|
1
1
|
require 'countries'
|
2
|
+
RSpec.configure do |config|
|
3
|
+
config.filter_run :focus
|
4
|
+
config.run_all_when_everything_filtered = true
|
5
|
+
config.filter_run_excluding perf: true
|
6
|
+
config.example_status_persistence_file_path = 'spec/examples.txt'
|
7
|
+
|
8
|
+
config.warnings = true
|
9
|
+
|
10
|
+
config.default_formatter = 'doc' if config.files_to_run.one?
|
11
|
+
# config.order = :random
|
12
|
+
# Kernel.srand config.seed
|
13
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
describe ISO3166::Subdivision do
|
6
|
+
before do
|
7
|
+
ISO3166::Data.reset
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:countries) { ISO3166::Country.all }
|
11
|
+
let(:available_types) { [Hash, NilClass] }
|
12
|
+
|
13
|
+
describe 'translations' do
|
14
|
+
it 'should be hash or nil' do
|
15
|
+
countries.each do |country|
|
16
|
+
country.subdivisions.each do |_, region|
|
17
|
+
expect(available_types).to include(region.translations.class)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'state codes' do
|
24
|
+
it 'should all be strings' do
|
25
|
+
countries.each do |country|
|
26
|
+
expect(country.subdivisions.keys).to all(be_a(String)), \
|
27
|
+
"Expected #{country.alpha2.inspect} to have string subdivision" \
|
28
|
+
"codes but had #{country.subdivisions.keys.inspect}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
describe 'Accessing ISO3166::Country instances data in multiple threads' do
|
2
|
+
before do
|
3
|
+
if Thread.respond_to?(:report_on_exception)
|
4
|
+
@report_on_exception_value = Thread.report_on_exception
|
5
|
+
Thread.report_on_exception = false
|
6
|
+
end
|
7
|
+
|
8
|
+
ISO3166::Data.reset
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_countries_threaded
|
12
|
+
nthreads = 100
|
13
|
+
threads = []
|
14
|
+
|
15
|
+
alpha2_codes = ['us', 'es', 'nl', 'ca', 'de', 'fr', 'mx', 'ru', 'ch', 'jp']
|
16
|
+
|
17
|
+
nthreads.times do
|
18
|
+
threads << Thread.new do
|
19
|
+
alpha2_codes.each do |a2|
|
20
|
+
country = ISO3166::Country[a2]
|
21
|
+
# This will fail if data['translations'] has been
|
22
|
+
# left nil due to a race condition
|
23
|
+
country.translation
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
threads.map(&:join)
|
28
|
+
end
|
29
|
+
|
30
|
+
it "doesn't raise any exceptions when using a mutex" do
|
31
|
+
expect { create_countries_threaded }.to_not raise_error
|
32
|
+
end
|
33
|
+
|
34
|
+
it "raises NoMethodError when not using a mutex" do
|
35
|
+
allow(ISO3166::Data).to receive(:use_mutex?).and_return(false)
|
36
|
+
|
37
|
+
expect { create_countries_threaded }.to raise_error(NoMethodError)
|
38
|
+
end
|
39
|
+
|
40
|
+
after do
|
41
|
+
if Thread.respond_to?(:report_on_exception)
|
42
|
+
Thread.report_on_exception = @report_on_exception_value
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
describe 'timezone Country class' do
|
2
|
+
context "when loaded via 'timezone'" do
|
3
|
+
require 'tzinfo'
|
4
|
+
describe 'existence' do
|
5
|
+
subject { defined?(TZInfo) }
|
6
|
+
|
7
|
+
it { is_expected.to be_truthy }
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'GB' do
|
11
|
+
subject { ISO3166::Country.new('GB') }
|
12
|
+
it 'should return the tzinfo country object' do
|
13
|
+
expect(subject.timezones).to be_a(TZInfo::Country)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'should return the tzinfo country object' do
|
17
|
+
expect(subject.timezones.zone_info).to be_a(Array)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should return the tzinfo country object' do
|
21
|
+
expect(subject.timezones.zone_identifiers).to eq ['Europe/London']
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe 'US' do
|
26
|
+
subject { ISO3166::Country.new('US') }
|
27
|
+
it 'should return the tzinfo country object' do
|
28
|
+
expect(subject.timezones.zone_identifiers.size).to eq 29
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|