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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"
|
|
1
|
+
{"AD":"I-Andora","AE":"United Arab Emirates","AF":"I-Afganistani","AG":"Antigua no Barbuda","AI":"Anguilla","AL":"I-Albaniya","AM":"Armenia","AO":"I-Angola","AQ":"Antarctica","AR":"I-Argentina","AS":"American Samoa","AT":"I-Ostriya","AU":"I-Ostreliya","AW":"Aruba","AX":"Åland Islands","AZ":"I-Azerbayijani","BA":"IBhosniya neHerzegovina","BB":"I-Barbados","BD":"Isi-Bhangladeshi","BE":"Isi-Bhelijiyamu","BF":"IBukhina Faso","BG":"IBulgariya","BH":"Bahrain","BI":"IBurundi","BJ":"IBenini","BL":"Saint Barthélemy","BM":"Bermuda","BN":"Brunei Darussalam","BO":"I Boliviya","BQ":"Bonaire, Sint Eustatius and Saba","BR":"IBrazili","BS":"Bahamas","BT":"Bhutan","BV":"Bouvet Island","BW":"IButswana","BY":"IBelarusi","BZ":"Belize","CA":"I Khanada","CC":"Cocos (Keeling) Islands","CD":"Congo, The Democratic Republic of the","CF":"Central African Republic","CG":"Congo","CH":"I-Switzerland","CI":"Côte d'Ivoire","CK":"Cook Islands","CL":"I-Chile","CM":"IKamerooni","CN":"Isi-Shayina","CO":"IKolombiya","CR":"Costa Rica","CU":"Cuba","CV":"Cabo Verde","CW":"Curaçao","CX":"Christmas Island","CY":"Cyprus","CZ":"Czechia","DE":"IJalimani","DJ":"IJibuthi","DK":"IDenimaki","DM":"Dominica","DO":"Ulawulo lokuziphatha kwe Dominikhani","DZ":"IAljiriya","EC":"Ecuador","EE":"I-Estoniya","EG":"IGibhithe","EH":"Western Sahara","ER":"I-Eritrea","ES":"ISpeyini","ET":"I-Ithiopia","FI":"IFinlandi","FJ":"IFiji","FK":"Falkland Islands (Malvinas)","FM":"Micronesia, Federated States of","FO":"Faroe Islands","FR":"IFulansi","GA":"IGaboni","GB":"Umbuso Ohlangeneyo","GD":"I-Grenada","GE":"Georgia","GF":"French Guiana","GG":"Guernsey","GH":"IGana","GI":"Gibraltar","GL":"Greenland","GM":"Gambia","GN":"IGini","GP":"Guadeloupe","GQ":"IGini Enkabazwe","GR":"IGreki","GS":"South Georgia and the South Sandwich Islands","GT":"I-Guwathemala","GU":"Guam","GW":"IGini Bisawu","GY":"Guyana","HK":"Hong Kong","HM":"Heard Island and McDonald Islands","HN":"I-Hondurasi","HR":"IKrowati","HT":"Haiti","HU":"I-Hungariya","ID":"I-Indonesia","IE":"I-Ayilendi","IL":"Isreyili","IM":"Isle of Man","IN":"India","IO":"British Indian Ocean Territory","IQ":"I-Iraki","IR":"Iran, Islamic Republic of","IS":"I-Ayisilandi","IT":"ITaliya","JE":"Jersey","JM":"Jamaica","JO":"Jordan","JP":"IJaphani","KE":"IKenya","KG":"Kyrgyzstan","KH":"Cambodia","KI":"Kiribati","KM":"IsiKhomorosi","KN":"Saint Kitts and Nevis","KP":"North Korea","KR":"South Korea","KW":"Kuwait","KY":"Cayman Islands","KZ":"Kazakhstan","LA":"Lao People's Democratic Republic","LB":"Lebanon","LC":"Saint Lucia","LI":"Liechtenstein","LK":"Sri Lanka","LR":"ILiberia","LS":"OSotho","LT":"ILithuwaniya","LU":"I-Luxembourg","LV":"ILatviya","LY":"ILibiya","MA":"IMorokho","MC":"Monaco","MD":"Moldova","ME":"IMontenegro","MF":"Saint Martin (French part)","MG":"IMadagasika","MH":"Marshall Islands","MK":"North Macedonia","ML":"IMali","MM":"Myanmar","MN":"Mongolia","MO":"Macao","MP":"Northern Mariana Islands","MQ":"Martinique","MR":"IMoritaniya","MS":"Montserrat","MT":"IMalta","MU":"IMorishisi","MV":"Maldives","MW":"IMalawi","MX":"IMekisiko","MY":"Malaysia","MZ":"IMozambiki","NA":"INamibhiya","NC":"New Caledonia","NE":"INayighe","NF":"Norfolk Island","NG":"INigeria","NI":"Nicaragua","NL":"I-Netherlands","NO":"INoki","NP":"Nepal","NR":"Nauru","NU":"Niue","NZ":"INyuzilandi","OM":"Oman","PA":"Panama","PE":"I-Peru","PF":"French Polynesia","PG":"Papua New Guinea","PH":"Philippines","PK":"IPakistani","PL":"IPolandi","PM":"Saint Pierre and Miquelon","PN":"Pitcairn","PR":"Puerto Rico","PS":"Palestine, State of","PT":"IPhothugali","PW":"Palau","PY":"I-Paraguwayi","QA":"Qatar","RE":"IRiyunion","RO":"I-Romaniya","RS":"ISerbiya","RU":"Russian Federation","RW":"IRuwanda","SA":"Saudi Arabia","SB":"Solomon Islands","SC":"IsiSeyisheli","SD":"ISudan","SE":"ISwidi","SG":"Singapore","SH":"Saint Helena, Ascension and Tristan da Cunha","SI":"ISloveniya","SJ":"Svalbard and Jan Mayen","SK":"ISlovaki","SL":"ISiera Liyoni","SM":"USanti Marino","SN":"ISenegal","SO":"ISomalia","SR":"Suriname","SS":"ISudan yaseNingizimu","ST":"ISawu Tome noPhrinitshipeyi","SV":"El Salvador","SX":"Sint Maarten (Dutch part)","SY":"Syrian Arab Republic","SZ":"Eswatini","TC":"Turks and Caicos Islands","TD":"ITshedi","TF":"French Southern Territories","TG":"ITogo","TH":"I-Thayilandi","TJ":"Tajikistan","TK":"Tokelau","TL":"Timor-Leste","TM":"Turkmenistan","TN":"ITunisia","TO":"Tonga","TR":"ITheki","TT":"I-Trinidad ne Tobago","TV":"Tuvalu","TW":"I-Tayiwani","TZ":"ITanzania","UA":"I-Yukreyini","UG":"IYuganda","UM":"United States Minor Outlying Islands","US":"United States","UY":"I-Uruguwayi","UZ":"Uzbekistan","VA":"Holy See (Vatican City State)","VC":"Saint Vincent and the Grenadines","VE":"I-Venezuwela","VG":"Virgin Islands, British","VI":"Virgin Islands, U.S.","VN":"IViyetnami","VU":"Vanuatu","WF":"Wallis and Futuna","WS":"Samoa","YE":"IYemen","YT":"IMayotte","ZA":"IRiphabliki yaseNingizimu Afrika","ZM":"IZambiya","ZW":"IZimbabwe"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module ISO3166
|
|
2
4
|
class << self
|
|
3
5
|
attr_writer :configuration
|
|
@@ -24,6 +26,19 @@ module ISO3166
|
|
|
24
26
|
@loaded_locales = []
|
|
25
27
|
end
|
|
26
28
|
|
|
29
|
+
# Enables the integration with the {Money}[https://github.com/RubyMoney/money] gem
|
|
30
|
+
#
|
|
31
|
+
# Please note that it requires you to add "money" gem to your gemfile.
|
|
32
|
+
#
|
|
33
|
+
# gem "money", "~> 6.9"
|
|
34
|
+
#
|
|
35
|
+
# *WARNING* if you have a top level class named +Money+ you will conflict with this gem.
|
|
36
|
+
#
|
|
37
|
+
# @example
|
|
38
|
+
# c = ISO3166::Country['us']
|
|
39
|
+
# c.currency.iso_code # => 'USD'
|
|
40
|
+
# c.currency.name # => 'United States Dollar'
|
|
41
|
+
# c.currency.symbol # => '$'
|
|
27
42
|
def enable_currency_extension!
|
|
28
43
|
require 'countries/country/currency_methods'
|
|
29
44
|
ISO3166::Country.prepend(ISO3166::CountryCurrencyMethods)
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'unaccent'
|
|
4
|
+
|
|
1
5
|
module ISO3166
|
|
2
6
|
UNSEARCHABLE_METHODS = [:translations].freeze
|
|
3
7
|
|
|
4
|
-
def self
|
|
8
|
+
def self.Country(country_data_or_country)
|
|
5
9
|
case country_data_or_country
|
|
6
10
|
when ISO3166::Country
|
|
7
11
|
country_data_or_country
|
|
@@ -13,9 +17,6 @@ module ISO3166
|
|
|
13
17
|
end
|
|
14
18
|
|
|
15
19
|
module CountryClassMethods
|
|
16
|
-
FIND_BY_REGEX = /^find_(all_)?(country_|countries_)?by_(.+)/
|
|
17
|
-
SEARCH_TERM_FILTER_REGEX = /\(|\)|\[\]|,/
|
|
18
|
-
|
|
19
20
|
def new(country_data)
|
|
20
21
|
super if country_data.is_a?(Hash) || codes.include?(country_data.to_s.upcase)
|
|
21
22
|
end
|
|
@@ -31,119 +32,62 @@ module ISO3166
|
|
|
31
32
|
|
|
32
33
|
alias countries all
|
|
33
34
|
|
|
34
|
-
def all_translated(locale = 'en')
|
|
35
|
-
translations(locale).values
|
|
36
|
-
end
|
|
37
|
-
|
|
38
35
|
def all_names_with_codes(locale = 'en')
|
|
39
36
|
Country.all.map do |c|
|
|
40
|
-
lc = (c.translation(locale) || c.
|
|
37
|
+
lc = (c.translation(locale) || c.iso_short_name)
|
|
41
38
|
[lc.respond_to?('html_safe') ? lc.html_safe : lc, c.alpha2]
|
|
42
39
|
end.sort
|
|
43
40
|
end
|
|
44
41
|
|
|
45
|
-
def
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
def search(query)
|
|
50
|
-
country = new(query.to_s.upcase)
|
|
51
|
-
country && country.valid? ? country : nil
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def [](query)
|
|
55
|
-
search(query)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def method_missing(method_name, *arguments)
|
|
59
|
-
matches = method_name.to_s.match(FIND_BY_REGEX)
|
|
60
|
-
return_all = matches[1]
|
|
61
|
-
super unless matches
|
|
62
|
-
|
|
63
|
-
countries = find_by(matches[3], arguments[0], matches[2])
|
|
64
|
-
return_all ? countries : countries.last
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def respond_to_missing?(method_name, include_private = false)
|
|
68
|
-
matches = method_name.to_s.match(FIND_BY_REGEX)
|
|
69
|
-
if matches && matches[3]
|
|
70
|
-
matches[3].all? { |a| instance_methods.include?(a.to_sym) }
|
|
71
|
-
else
|
|
72
|
-
super
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def find_all_by(attribute, val)
|
|
77
|
-
attributes, lookup_value = parse_attributes(attribute, val)
|
|
78
|
-
|
|
79
|
-
ISO3166::Data.cache.select do |_, v|
|
|
80
|
-
country = Country.new(v)
|
|
81
|
-
attributes.any? do |attr|
|
|
82
|
-
Array(country.send(attr)).any? { |n| lookup_value === parse_value(n) }
|
|
83
|
-
end
|
|
42
|
+
def pluck(*attributes)
|
|
43
|
+
all.map do |country|
|
|
44
|
+
attributes.map { |attribute| country.data.fetch(attribute.to_s) }
|
|
84
45
|
end
|
|
85
46
|
end
|
|
86
47
|
|
|
87
|
-
def
|
|
88
|
-
|
|
89
|
-
@subdivisions[alpha2] ||= create_subdivisions(subdivision_data(alpha2))
|
|
48
|
+
def all_translated(locale = 'en')
|
|
49
|
+
translations(locale).values
|
|
90
50
|
end
|
|
91
51
|
|
|
92
|
-
def
|
|
93
|
-
|
|
94
|
-
|
|
52
|
+
def translations(locale = 'en')
|
|
53
|
+
locale = locale.downcase
|
|
54
|
+
file_path = ISO3166::Data.datafile_path(%W[locales #{locale}.json])
|
|
55
|
+
translations = JSON.parse(File.read(file_path))
|
|
56
|
+
|
|
57
|
+
custom_countries = {}
|
|
58
|
+
(ISO3166::Data.codes - ISO3166::Data.loaded_codes).each do |code|
|
|
59
|
+
country = ISO3166::Country[code]
|
|
60
|
+
translation = country.translations[locale] || country.iso_short_name
|
|
61
|
+
custom_countries[code] = translation
|
|
95
62
|
end
|
|
63
|
+
|
|
64
|
+
translations.merge(custom_countries)
|
|
96
65
|
end
|
|
97
66
|
|
|
98
67
|
protected
|
|
99
68
|
|
|
100
|
-
def strip_accents(
|
|
101
|
-
if
|
|
102
|
-
Regexp.new(
|
|
69
|
+
def strip_accents(string)
|
|
70
|
+
if string.is_a?(Regexp)
|
|
71
|
+
Regexp.new(Unaccent.unaccent(string.source), 'i')
|
|
103
72
|
else
|
|
104
|
-
|
|
73
|
+
Unaccent.unaccent(string.to_s).downcase
|
|
105
74
|
end
|
|
106
75
|
end
|
|
107
76
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
searchable_attributes.include?(attribute.to_sym)
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
def searchable_attributes
|
|
126
|
-
instance_methods - UNSEARCHABLE_METHODS
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def find_by(attribute, value, obj = nil)
|
|
130
|
-
find_all_by(attribute.downcase, value).map do |country|
|
|
131
|
-
obj.nil? ? country : new(country.last)
|
|
132
|
-
end
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
def parse_value(value)
|
|
136
|
-
value = value.gsub(SEARCH_TERM_FILTER_REGEX, '') if value.respond_to?(:gsub)
|
|
137
|
-
strip_accents(value)
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
def subdivision_data(alpha2)
|
|
141
|
-
file = subdivision_file_path(alpha2)
|
|
142
|
-
File.exist?(file) ? YAML.load_file(file) : {}
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
def subdivision_file_path(alpha2)
|
|
146
|
-
File.join(File.dirname(__FILE__), '..', 'data', 'subdivisions', "#{alpha2}.yaml")
|
|
77
|
+
# Some methods like parse_value are expensive in that they
|
|
78
|
+
# create a large number of objects internally. In order to reduce the
|
|
79
|
+
# object creations and save the GC, we can cache them in an class instance
|
|
80
|
+
# variable. This will make subsequent parses O(1) and will stop the
|
|
81
|
+
# creation of new String object instances.
|
|
82
|
+
#
|
|
83
|
+
# NB: We only want to use this cache for values coming from the JSON
|
|
84
|
+
# file or our own code, caching user-generated data could be dangerous
|
|
85
|
+
# since the cache would continually grow.
|
|
86
|
+
def cached(value)
|
|
87
|
+
@_parsed_values_cache ||= {}
|
|
88
|
+
return @_parsed_values_cache[value] if @_parsed_values_cache[value]
|
|
89
|
+
|
|
90
|
+
@_parsed_values_cache[value] = yield
|
|
147
91
|
end
|
|
148
92
|
end
|
|
149
93
|
end
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'money'
|
|
2
4
|
|
|
3
5
|
module ISO3166
|
|
4
|
-
# Optional extension which allows you to get back a Money::Currency object with all the currency info
|
|
6
|
+
# Optional extension which allows you to get back a +Money::Currency+ object with all the currency info.
|
|
7
|
+
# This requires enabling the integration with the {Money}[https://github.com/RubyMoney/money] gem (See {ISO3166::Configuration#enable_currency_extension!})
|
|
5
8
|
module CountryCurrencyMethods
|
|
9
|
+
|
|
10
|
+
# @return [Money::Currency] The currency data for this Country's +currency_code+
|
|
6
11
|
def currency
|
|
7
12
|
Money::Currency.find(data['currency_code'])
|
|
8
13
|
end
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
# encoding: utf-8
|
|
1
|
+
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
module ISO3166
|
|
5
4
|
module Emoji
|
|
@@ -32,8 +31,11 @@ module ISO3166
|
|
|
32
31
|
'z' => '🇿'
|
|
33
32
|
}.freeze
|
|
34
33
|
|
|
34
|
+
# @return [String] the emoji flag for this country
|
|
35
|
+
#
|
|
36
|
+
# The emoji flag for this country, using Unicode Regional Indicator characters. e.g: "U+1F1FA U+1F1F8" for 🇺🇸
|
|
35
37
|
def emoji_flag
|
|
36
|
-
alpha2.downcase.chars.map { |c| CODE_POINTS[c] }.join
|
|
38
|
+
alpha2.downcase.chars.map { |c| CODE_POINTS[c] }.join
|
|
37
39
|
end
|
|
38
40
|
end
|
|
39
41
|
end
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module ISO3166
|
|
4
|
+
module CountryFinderMethods
|
|
5
|
+
FIND_BY_REGEX = /^find_(all_)?(country_|countries_)?by_(.+)/.freeze
|
|
6
|
+
SEARCH_TERM_FILTER_REGEX = /\(|\)|\[\]|,/.freeze
|
|
7
|
+
|
|
8
|
+
def search(query)
|
|
9
|
+
country = new(query.to_s.upcase)
|
|
10
|
+
country&.valid? ? country : nil
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def [](query)
|
|
14
|
+
search(query)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def find_all_by(attribute, val)
|
|
18
|
+
attributes, lookup_value = parse_attributes(attribute, val)
|
|
19
|
+
|
|
20
|
+
ISO3166::Data.cache.select do |_, v|
|
|
21
|
+
country = Country.new(v)
|
|
22
|
+
attributes.any? do |attr|
|
|
23
|
+
Array(country.send(attr)).any? do |n|
|
|
24
|
+
lookup_value === cached(n) { parse_value(n) }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def method_missing(method_name, *arguments)
|
|
31
|
+
matches = method_name.to_s.match(FIND_BY_REGEX)
|
|
32
|
+
return_all = matches[1]
|
|
33
|
+
super unless matches
|
|
34
|
+
|
|
35
|
+
countries = find_by(matches[3], arguments[0], matches[2])
|
|
36
|
+
return_all ? countries : countries.last
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def respond_to_missing?(method_name, include_private = false)
|
|
40
|
+
matches = method_name.to_s.match(FIND_BY_REGEX)
|
|
41
|
+
if matches && matches[3]
|
|
42
|
+
instance_methods.include?(matches[3].to_sym)
|
|
43
|
+
else
|
|
44
|
+
super
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
protected
|
|
49
|
+
|
|
50
|
+
def find_by(attribute, value, obj = nil)
|
|
51
|
+
find_all_by(attribute.downcase, value).map do |country|
|
|
52
|
+
obj.nil? ? country : new(country.last)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def parse_attributes(attribute, val)
|
|
57
|
+
raise "Invalid attribute name '#{attribute}'" unless searchable_attribute?(attribute.to_sym)
|
|
58
|
+
|
|
59
|
+
attributes = Array(attribute.to_s)
|
|
60
|
+
if attribute.to_s == 'any_name'
|
|
61
|
+
attributes = %w[iso_long_name iso_short_name unofficial_names translated_names]
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
[attributes, parse_value(val)]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def parse_value(value)
|
|
68
|
+
value = value.gsub(SEARCH_TERM_FILTER_REGEX, '') if value.respond_to?(:gsub)
|
|
69
|
+
strip_accents(value)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def searchable_attribute?(attribute)
|
|
73
|
+
searchable_attributes.include?(attribute.to_sym)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def searchable_attributes
|
|
77
|
+
# Add name and names until we complete the deprecation of the finders
|
|
78
|
+
instance_methods - UNSEARCHABLE_METHODS + [:name, :names, :any_name]
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
data/lib/countries/country.rb
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module ISO3166
|
|
2
4
|
class Country
|
|
3
5
|
extend CountryClassMethods
|
|
6
|
+
extend CountryFinderMethods
|
|
4
7
|
include Emoji
|
|
5
8
|
attr_reader :data
|
|
6
9
|
|
|
@@ -28,8 +31,8 @@ module ISO3166
|
|
|
28
31
|
alias zip postal_code
|
|
29
32
|
alias zip? postal_code
|
|
30
33
|
alias postal_code? postal_code
|
|
34
|
+
alias zip_format postal_code_format
|
|
31
35
|
alias languages languages_official
|
|
32
|
-
alias names unofficial_names
|
|
33
36
|
|
|
34
37
|
def ==(other)
|
|
35
38
|
other.respond_to?(:alpha2) && other.alpha2 == alpha2
|
|
@@ -47,49 +50,93 @@ module ISO3166
|
|
|
47
50
|
to_s <=> other.to_s
|
|
48
51
|
end
|
|
49
52
|
|
|
50
|
-
|
|
51
|
-
data['start_of_week']
|
|
52
|
-
end
|
|
53
|
-
|
|
53
|
+
# +true+ if this Country has any Subdivisions.
|
|
54
54
|
def subdivisions?
|
|
55
55
|
!subdivisions.empty?
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
+
# @return [Array<ISO3166::Subdivision>] the list of subdivisions for this Country.
|
|
58
59
|
def subdivisions
|
|
59
60
|
@subdivisions ||= if data['subdivisions']
|
|
60
|
-
|
|
61
|
+
ISO3166::Data.create_subdivisions(data['subdivisions'])
|
|
61
62
|
else
|
|
62
|
-
|
|
63
|
+
ISO3166::Data.subdivisions(alpha2)
|
|
63
64
|
end
|
|
64
65
|
end
|
|
65
66
|
|
|
67
|
+
# @param types [Array<String>] The locale to use for translations.
|
|
68
|
+
# @return [Array<ISO3166::Subdivision>] the list of subdivisions of the given type(s) for this Country.
|
|
69
|
+
def subdivisions_of_types(types)
|
|
70
|
+
subdivisions.select{|k,v| types.include?(v.type)}
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# @return [Array<String>] the list of subdivision types for this country
|
|
74
|
+
def subdivision_types
|
|
75
|
+
subdivisions.map{|k,v| v['type']}.uniq
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
# @return [Array<String>] the list of humanized subdivision types for this country. Uses ActiveSupport's `#humanize` if available
|
|
79
|
+
def humanized_subdivision_types
|
|
80
|
+
if String.instance_methods.include?(:humanize)
|
|
81
|
+
subdivisions.map{|k,v| v['type'].humanize}.uniq
|
|
82
|
+
else
|
|
83
|
+
subdivisions.map{|k,v| v['type'][0].upcase + v['type'].tr('_', ' ')[1..-1]}.uniq
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# @param locale [String] The locale to use for translations.
|
|
88
|
+
# @return [Array<Array>] This Country's subdivision pairs of names and codes.
|
|
66
89
|
def subdivision_names_with_codes(locale = 'en')
|
|
67
90
|
subdivisions.map { |k, v| [v.translations[locale] || v.name, k] }
|
|
68
91
|
end
|
|
69
92
|
|
|
70
|
-
|
|
93
|
+
def states
|
|
94
|
+
if RUBY_VERSION =~ /^3\.\d\.\d/
|
|
95
|
+
warn "DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.", uplevel: 1, category: :deprecated
|
|
96
|
+
else
|
|
97
|
+
warn "DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.", uplevel: 1
|
|
98
|
+
end
|
|
71
99
|
|
|
100
|
+
subdivisions
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
# +true+ if this country is a member of the European Union.
|
|
72
104
|
def in_eu?
|
|
73
105
|
data['eu_member'].nil? ? false : data['eu_member']
|
|
74
106
|
end
|
|
75
107
|
|
|
108
|
+
# +true+ if this country is a member of the European Economic Area.
|
|
76
109
|
def in_eea?
|
|
77
110
|
data['eea_member'].nil? ? false : data['eea_member']
|
|
78
111
|
end
|
|
79
112
|
|
|
113
|
+
# +true+ if this country is a member of the European Single Market.
|
|
114
|
+
def in_esm?
|
|
115
|
+
data['esm_member'].nil? ? in_eea? : data['esm_member']
|
|
116
|
+
end
|
|
117
|
+
|
|
80
118
|
def to_s
|
|
81
|
-
data['
|
|
119
|
+
data['iso_short_name']
|
|
82
120
|
end
|
|
83
121
|
|
|
122
|
+
# @return [Array<String>] the list of names for this Country in all loaded locales.
|
|
84
123
|
def translated_names
|
|
85
|
-
data['translations'].values
|
|
124
|
+
data['translations'].values.compact
|
|
86
125
|
end
|
|
87
126
|
|
|
127
|
+
# @param locale [String] The locale to use for translations.
|
|
128
|
+
# @return [String] the name of this Country in the selected locale.
|
|
88
129
|
def translation(locale = 'en')
|
|
89
130
|
data['translations'][locale.to_s.downcase]
|
|
90
131
|
end
|
|
91
132
|
|
|
92
|
-
#
|
|
133
|
+
# @return [String] the “common name” of this Country in English.
|
|
134
|
+
def common_name
|
|
135
|
+
ISO3166.configuration.locales = ISO3166.configuration.locales.append(:en).uniq
|
|
136
|
+
translation('en')
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
# @return [Array<String>] TThe list of names for this Country, in this Country's locales.
|
|
93
140
|
def local_names
|
|
94
141
|
ISO3166.configuration.locales = (ISO3166.configuration.locales + languages.map(&:to_sym)).uniq
|
|
95
142
|
reload
|
|
@@ -97,10 +144,97 @@ module ISO3166
|
|
|
97
144
|
@local_names ||= languages.map { |language| translations[language] }
|
|
98
145
|
end
|
|
99
146
|
|
|
147
|
+
# @return [String] The name for this Country, in this Country's locale.
|
|
100
148
|
def local_name
|
|
101
149
|
@local_name ||= local_names.first
|
|
102
150
|
end
|
|
103
151
|
|
|
152
|
+
# @!attribute alpha2
|
|
153
|
+
# @return [String] the ISO3166 alpha-2 code for this Country
|
|
154
|
+
#
|
|
155
|
+
# @!attribute alpha3
|
|
156
|
+
# @return [String] the ISO3166 alpha-3 code for this Country
|
|
157
|
+
#
|
|
158
|
+
# @!attribute address_format
|
|
159
|
+
# @return [String] a template for formatting addresses in this Country.
|
|
160
|
+
#
|
|
161
|
+
# @!attribute continent
|
|
162
|
+
# @return [String] the continent for this Country
|
|
163
|
+
#
|
|
164
|
+
# @!attribute country_code
|
|
165
|
+
# @return [String] the country calling code for this Country
|
|
166
|
+
#
|
|
167
|
+
# @!attribute currency_code
|
|
168
|
+
# @return [String] the ISO 4217 currency code for this Country
|
|
169
|
+
#
|
|
170
|
+
# @!attribute gec
|
|
171
|
+
# @return [String] the "Geopolitical Entities and Codes", formerly FIPS 10-4 code for this Country
|
|
172
|
+
#
|
|
173
|
+
# @!attribute geo
|
|
174
|
+
# @return [Hash] the hash of coordinates for this Country.
|
|
175
|
+
#
|
|
176
|
+
# @!attribute international_prefix
|
|
177
|
+
# @return [String] the phone prefix used in this Country for dialing international numbers
|
|
178
|
+
#
|
|
179
|
+
# @!attribute ioc
|
|
180
|
+
# @return [String] The International Olympic Committee code for for this Country
|
|
181
|
+
#
|
|
182
|
+
# @!attribute national_destination_code_lengths
|
|
183
|
+
# @return [Array<Integer>] Lengths of phone number destination codes
|
|
184
|
+
#
|
|
185
|
+
# @!attribute national_number_lengths
|
|
186
|
+
# @return [Array<Integer>] Lengths of phone numbers
|
|
187
|
+
#
|
|
188
|
+
# @!attribute national_prefix
|
|
189
|
+
# @return [String] the phone prefix used in this Country for dialing national numbers
|
|
190
|
+
#
|
|
191
|
+
# @!attribute nanp_prefix
|
|
192
|
+
# @return [String] the NANP prefix code
|
|
193
|
+
#
|
|
194
|
+
# @!attribute nationality
|
|
195
|
+
# @return [String] the nationality for this Country, in English
|
|
196
|
+
#
|
|
197
|
+
# @!attribute number
|
|
198
|
+
# @return [String] The ISO 3166-1 numeric code for this Country
|
|
199
|
+
#
|
|
200
|
+
# @!attribute languages_official
|
|
201
|
+
# @return [Array<String>] the list of official languages (locale codes) for this Country
|
|
202
|
+
#
|
|
203
|
+
# @!attribute languages_spoken
|
|
204
|
+
# @return [Array<String>] the list of spoken languages (locale codes) for this Country
|
|
205
|
+
#
|
|
206
|
+
# @!attribute translations
|
|
207
|
+
# @return [Hash] The hash of country name translations for this Country.
|
|
208
|
+
#
|
|
209
|
+
# @!attribute postal_code
|
|
210
|
+
# @return [Boolean] Does this Country uses postal codes in addresses
|
|
211
|
+
#
|
|
212
|
+
# @!attribute postal_code_format
|
|
213
|
+
# @return [String] The regex for valid postal codes in this Country
|
|
214
|
+
#
|
|
215
|
+
# @!attribute region
|
|
216
|
+
# @return [String] The Region this country is in. Approximately matches the United Nations geoscheme
|
|
217
|
+
#
|
|
218
|
+
# @!attribute unofficial_names
|
|
219
|
+
# @return [Array<String>] Array of unofficial, slang names or aliases for this Country
|
|
220
|
+
#
|
|
221
|
+
# @!attribute start_of_week
|
|
222
|
+
# @return [String] The starting day of the week ( +'monday'+ or +'sunday'+ )
|
|
223
|
+
#
|
|
224
|
+
# @!attribute subregion
|
|
225
|
+
# @return [String] The Subegion this country is in. Approximately matches the United Nations geoscheme's Subregions
|
|
226
|
+
#
|
|
227
|
+
# @!attribute un_locode
|
|
228
|
+
# @return [String] The UN/LOCODE prefix for this Country
|
|
229
|
+
#
|
|
230
|
+
# @!attribute vat_rates
|
|
231
|
+
# @return [Hash] the hash of VAT Rates for this Country
|
|
232
|
+
#
|
|
233
|
+
# @!attribute world_region
|
|
234
|
+
# @return [String] The "World Region" this country is in: +"AMER"+ , +"APAC"+ or +"EMEA"+
|
|
235
|
+
|
|
236
|
+
private
|
|
237
|
+
|
|
104
238
|
def reload
|
|
105
239
|
@data = if @country_data_or_code.is_a?(Hash)
|
|
106
240
|
@country_data_or_code
|