countries 5.0.2 → 5.1.2
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/CHANGELOG.md +32 -0
- data/README.markdown +16 -7
- data/Rakefile +15 -21
- data/UPGRADE.md +15 -2
- data/countries.gemspec +0 -1
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/cache/locales/ab.json +1 -1
- data/lib/countries/cache/locales/af.json +1 -1
- data/lib/countries/cache/locales/ak.json +1 -1
- data/lib/countries/cache/locales/am.json +1 -1
- data/lib/countries/cache/locales/an.json +1 -1
- 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 -1
- data/lib/countries/cache/locales/az.json +1 -1
- data/lib/countries/cache/locales/ba.json +1 -1
- 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 -1
- data/lib/countries/cache/locales/bn-in.json +1 -1
- 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 -1
- data/lib/countries/cache/locales/ch.json +1 -1
- data/lib/countries/cache/locales/cs.json +1 -1
- data/lib/countries/cache/locales/cv.json +1 -1
- 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 -1
- data/lib/countries/cache/locales/dz.json +1 -1
- data/lib/countries/cache/locales/ee.json +1 -1
- 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 -1
- 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 -1
- 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 -1
- data/lib/countries/cache/locales/gu.json +1 -1
- data/lib/countries/cache/locales/gv.json +1 -1
- data/lib/countries/cache/locales/ha.json +1 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- data/lib/countries/cache/locales/kk.json +1 -1
- data/lib/countries/cache/locales/kl.json +1 -1
- 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/kv.json +1 -1
- data/lib/countries/cache/locales/kw.json +1 -1
- data/lib/countries/cache/locales/ky.json +1 -1
- data/lib/countries/cache/locales/lo.json +1 -1
- 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 -1
- data/lib/countries/cache/locales/na.json +1 -1
- 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 -1
- 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 -1
- 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 -1
- 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 -1
- data/lib/countries/cache/locales/sd.json +1 -1
- 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 -1
- 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 -1
- data/lib/countries/cache/locales/uz.json +1 -1
- 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 -1
- data/lib/countries/cache/locales/zh-cn.json +1 -1
- data/lib/countries/cache/locales/zh-hk.json +1 -1
- data/lib/countries/cache/locales/zh-tw.json +1 -1
- data/lib/countries/cache/locales/zu.json +1 -1
- data/lib/countries/country/class_methods.rb +8 -26
- data/lib/countries/country.rb +31 -5
- data/lib/countries/data/countries/AU.yaml +1 -1
- data/lib/countries/data/countries/BS.yaml +1 -2
- data/lib/countries/data/countries/CZ.yaml +1 -0
- data/lib/countries/data/countries/GB.yaml +3 -0
- data/lib/countries/data/countries/GM.yaml +1 -1
- data/lib/countries/data/countries/MK.yaml +1 -0
- data/lib/countries/data/countries/MM.yaml +1 -1
- data/lib/countries/data/countries/NL.yaml +1 -0
- data/lib/countries/data/countries/TH.yaml +1 -0
- data/lib/countries/data/countries/TW.yaml +1 -1
- data/lib/countries/data/countries/US.yaml +1 -1
- data/lib/countries/data/countries/VI.yaml +1 -0
- data/lib/countries/data/subdivisions/AD.yaml +14 -7
- data/lib/countries/data/subdivisions/AE.yaml +14 -7
- data/lib/countries/data/subdivisions/AF.yaml +196 -201
- data/lib/countries/data/subdivisions/AG.yaml +16 -22
- data/lib/countries/data/subdivisions/AL.yaml +24 -12
- data/lib/countries/data/subdivisions/AM.yaml +22 -11
- data/lib/countries/data/subdivisions/AO.yaml +36 -18
- data/lib/countries/data/subdivisions/AR.yaml +48 -24
- data/lib/countries/data/subdivisions/AT.yaml +18 -9
- data/lib/countries/data/subdivisions/AU.yaml +16 -8
- data/lib/countries/data/subdivisions/AZ.yaml +434 -412
- data/lib/countries/data/subdivisions/BA.yaml +75 -223
- data/lib/countries/data/subdivisions/BB.yaml +22 -11
- data/lib/countries/data/subdivisions/BD.yaml +188 -116
- data/lib/countries/data/subdivisions/BE.yaml +174 -161
- data/lib/countries/data/subdivisions/BF.yaml +2918 -2860
- data/lib/countries/data/subdivisions/BG.yaml +56 -28
- data/lib/countries/data/subdivisions/BH.yaml +8 -21
- data/lib/countries/data/subdivisions/BI.yaml +176 -157
- data/lib/countries/data/subdivisions/BJ.yaml +24 -12
- data/lib/countries/data/subdivisions/BN.yaml +8 -4
- data/lib/countries/data/subdivisions/BO.yaml +18 -9
- data/lib/countries/data/subdivisions/BQ.yaml +6 -3
- data/lib/countries/data/subdivisions/BR.yaml +54 -27
- data/lib/countries/data/subdivisions/BS.yaml +575 -697
- data/lib/countries/data/subdivisions/BT.yaml +40 -20
- data/lib/countries/data/subdivisions/BW.yaml +337 -321
- data/lib/countries/data/subdivisions/BY.yaml +106 -116
- data/lib/countries/data/subdivisions/BZ.yaml +12 -6
- data/lib/countries/data/subdivisions/CA.yaml +26 -13
- data/lib/countries/data/subdivisions/CD.yaml +488 -525
- data/lib/countries/data/subdivisions/CF.yaml +34 -17
- data/lib/countries/data/subdivisions/CG.yaml +40 -28
- data/lib/countries/data/subdivisions/CH.yaml +52 -26
- data/lib/countries/data/subdivisions/CI.yaml +244 -516
- data/lib/countries/data/subdivisions/CL.yaml +81 -65
- data/lib/countries/data/subdivisions/CM.yaml +20 -10
- data/lib/countries/data/subdivisions/CN.yaml +2152 -2084
- data/lib/countries/data/subdivisions/CO.yaml +66 -33
- data/lib/countries/data/subdivisions/CR.yaml +14 -7
- data/lib/countries/data/subdivisions/CU.yaml +32 -16
- data/lib/countries/data/subdivisions/CV.yaml +427 -401
- data/lib/countries/data/subdivisions/CY.yaml +12 -6
- data/lib/countries/data/subdivisions/CZ.yaml +1116 -85
- data/lib/countries/data/subdivisions/DE.yaml +32 -16
- data/lib/countries/data/subdivisions/DJ.yaml +12 -6
- data/lib/countries/data/subdivisions/DK.yaml +25 -17
- data/lib/countries/data/subdivisions/DM.yaml +20 -10
- data/lib/countries/data/subdivisions/DO.yaml +84 -42
- data/lib/countries/data/subdivisions/DZ.yaml +96 -48
- data/lib/countries/data/subdivisions/EC.yaml +158 -134
- data/lib/countries/data/subdivisions/EE.yaml +501 -334
- data/lib/countries/data/subdivisions/EG.yaml +54 -27
- data/lib/countries/data/subdivisions/ER.yaml +12 -6
- data/lib/countries/data/subdivisions/ES.yaml +1459 -1390
- data/lib/countries/data/subdivisions/ET.yaml +22 -11
- data/lib/countries/data/subdivisions/FI.yaml +185 -1
- data/lib/countries/data/subdivisions/FJ.yaml +443 -424
- data/lib/countries/data/subdivisions/FM.yaml +8 -4
- data/lib/countries/data/subdivisions/FR.yaml +438 -275
- data/lib/countries/data/subdivisions/GA.yaml +18 -9
- data/lib/countries/data/subdivisions/GB.yaml +1185 -1708
- data/lib/countries/data/subdivisions/GD.yaml +14 -7
- data/lib/countries/data/subdivisions/GE.yaml +24 -12
- data/lib/countries/data/subdivisions/GH.yaml +114 -155
- data/lib/countries/data/subdivisions/GL.yaml +24 -79
- data/lib/countries/data/subdivisions/GM.yaml +12 -6
- data/lib/countries/data/subdivisions/GN.yaml +444 -403
- data/lib/countries/data/subdivisions/GQ.yaml +24 -13
- data/lib/countries/data/subdivisions/GR.yaml +114 -73
- data/lib/countries/data/subdivisions/GT.yaml +44 -22
- data/lib/countries/data/subdivisions/GW.yaml +69 -57
- data/lib/countries/data/subdivisions/GY.yaml +20 -10
- data/lib/countries/data/subdivisions/HN.yaml +36 -18
- data/lib/countries/data/subdivisions/HR.yaml +42 -21
- data/lib/countries/data/subdivisions/HT.yaml +73 -63
- data/lib/countries/data/subdivisions/HU.yaml +106 -63
- data/lib/countries/data/subdivisions/ID.yaml +229 -188
- data/lib/countries/data/subdivisions/IE.yaml +128 -97
- data/lib/countries/data/subdivisions/IL.yaml +12 -6
- data/lib/countries/data/subdivisions/IN.yaml +245 -396
- data/lib/countries/data/subdivisions/IQ.yaml +111 -91
- data/lib/countries/data/subdivisions/IR.yaml +1463 -1451
- data/lib/countries/data/subdivisions/IS.yaml +160 -25
- data/lib/countries/data/subdivisions/IT.yaml +8740 -8292
- data/lib/countries/data/subdivisions/JM.yaml +28 -14
- data/lib/countries/data/subdivisions/JO.yaml +24 -12
- data/lib/countries/data/subdivisions/JP.yaml +94 -47
- data/lib/countries/data/subdivisions/KE.yaml +95 -48
- data/lib/countries/data/subdivisions/KG.yaml +95 -86
- data/lib/countries/data/subdivisions/KH.yaml +64 -39
- data/lib/countries/data/subdivisions/KI.yaml +6 -3
- data/lib/countries/data/subdivisions/KM.yaml +6 -3
- data/lib/countries/data/subdivisions/KN.yaml +32 -16
- data/lib/countries/data/subdivisions/KP.yaml +24 -227
- data/lib/countries/data/subdivisions/KR.yaml +34 -17
- data/lib/countries/data/subdivisions/KW.yaml +12 -6
- data/lib/countries/data/subdivisions/KZ.yaml +47 -102
- data/lib/countries/data/subdivisions/LA.yaml +36 -34
- data/lib/countries/data/subdivisions/LB.yaml +71 -63
- data/lib/countries/data/subdivisions/LC.yaml +116 -106
- data/lib/countries/data/subdivisions/LI.yaml +22 -11
- data/lib/countries/data/subdivisions/LK.yaml +445 -411
- data/lib/countries/data/subdivisions/LR.yaml +146 -129
- data/lib/countries/data/subdivisions/LS.yaml +20 -10
- data/lib/countries/data/subdivisions/LT.yaml +1706 -1636
- data/lib/countries/data/subdivisions/LU.yaml +24 -12
- data/lib/countries/data/subdivisions/LV.yaml +1623 -1577
- data/lib/countries/data/subdivisions/LY.yaml +44 -22
- data/lib/countries/data/subdivisions/MA.yaml +810 -1589
- data/lib/countries/data/subdivisions/MC.yaml +261 -244
- data/lib/countries/data/subdivisions/MD.yaml +74 -79
- data/lib/countries/data/subdivisions/ME.yaml +217 -195
- data/lib/countries/data/subdivisions/MG.yaml +12 -6
- data/lib/countries/data/subdivisions/MH.yaml +167 -140
- data/lib/countries/data/subdivisions/MK.yaml +160 -80
- data/lib/countries/data/subdivisions/ML.yaml +48 -37
- data/lib/countries/data/subdivisions/MM.yaml +30 -15
- data/lib/countries/data/subdivisions/MN.yaml +44 -22
- data/lib/countries/data/subdivisions/MR.yaml +30 -34
- data/lib/countries/data/subdivisions/MT.yaml +136 -68
- data/lib/countries/data/subdivisions/MU.yaml +24 -262
- data/lib/countries/data/subdivisions/MV.yaml +161 -254
- data/lib/countries/data/subdivisions/MW.yaml +250 -219
- data/lib/countries/data/subdivisions/MX.yaml +64 -32
- data/lib/countries/data/subdivisions/MY.yaml +32 -16
- data/lib/countries/data/subdivisions/MZ.yaml +22 -11
- data/lib/countries/data/subdivisions/NA.yaml +58 -44
- data/lib/countries/data/subdivisions/NE.yaml +16 -8
- data/lib/countries/data/subdivisions/NG.yaml +74 -37
- data/lib/countries/data/subdivisions/NI.yaml +34 -17
- data/lib/countries/data/subdivisions/NL.yaml +303 -285
- data/lib/countries/data/subdivisions/NO.yaml +39 -17
- data/lib/countries/data/subdivisions/NP.yaml +302 -276
- data/lib/countries/data/subdivisions/NR.yaml +28 -14
- data/lib/countries/data/subdivisions/NZ.yaml +34 -17
- data/lib/countries/data/subdivisions/OM.yaml +260 -311
- data/lib/countries/data/subdivisions/PA.yaml +57 -44
- data/lib/countries/data/subdivisions/PE.yaml +107 -81
- data/lib/countries/data/subdivisions/PG.yaml +163 -158
- data/lib/countries/data/subdivisions/PH.yaml +5062 -4992
- data/lib/countries/data/subdivisions/PK.yaml +145 -235
- data/lib/countries/data/subdivisions/PL.yaml +51 -3
- data/lib/countries/data/subdivisions/PS.yaml +32 -16
- data/lib/countries/data/subdivisions/PT.yaml +40 -20
- data/lib/countries/data/subdivisions/PW.yaml +32 -16
- data/lib/countries/data/subdivisions/PY.yaml +36 -18
- data/lib/countries/data/subdivisions/QA.yaml +27 -78
- data/lib/countries/data/subdivisions/RO.yaml +84 -42
- data/lib/countries/data/subdivisions/RS.yaml +104 -72
- data/lib/countries/data/subdivisions/RU.yaml +166 -83
- data/lib/countries/data/subdivisions/RW.yaml +10 -5
- data/lib/countries/data/subdivisions/SA.yaml +26 -13
- data/lib/countries/data/subdivisions/SB.yaml +20 -10
- data/lib/countries/data/subdivisions/SC.yaml +54 -25
- data/lib/countries/data/subdivisions/SD.yaml +798 -780
- data/lib/countries/data/subdivisions/SE.yaml +42 -21
- data/lib/countries/data/subdivisions/SG.yaml +15 -10
- data/lib/countries/data/subdivisions/SH.yaml +21 -32
- data/lib/countries/data/subdivisions/SI.yaml +475 -263
- data/lib/countries/data/subdivisions/SK.yaml +16 -8
- data/lib/countries/data/subdivisions/SL.yaml +23 -18
- data/lib/countries/data/subdivisions/SM.yaml +18 -9
- data/lib/countries/data/subdivisions/SN.yaml +188 -174
- data/lib/countries/data/subdivisions/SO.yaml +36 -18
- data/lib/countries/data/subdivisions/SR.yaml +20 -10
- data/lib/countries/data/subdivisions/SS.yaml +20 -10
- data/lib/countries/data/subdivisions/ST.yaml +38 -52
- data/lib/countries/data/subdivisions/SV.yaml +28 -14
- data/lib/countries/data/subdivisions/SY.yaml +28 -14
- data/lib/countries/data/subdivisions/SZ.yaml +8 -4
- data/lib/countries/data/subdivisions/TD.yaml +312 -303
- data/lib/countries/data/subdivisions/TG.yaml +10 -5
- data/lib/countries/data/subdivisions/TH.yaml +211 -133
- data/lib/countries/data/subdivisions/TJ.yaml +161 -156
- data/lib/countries/data/subdivisions/TL.yaml +26 -13
- data/lib/countries/data/subdivisions/TM.yaml +12 -6
- data/lib/countries/data/subdivisions/TN.yaml +48 -24
- data/lib/countries/data/subdivisions/TO.yaml +10 -5
- data/lib/countries/data/subdivisions/TR.yaml +162 -81
- data/lib/countries/data/subdivisions/TT.yaml +128 -160
- data/lib/countries/data/subdivisions/TV.yaml +57 -63
- data/lib/countries/data/subdivisions/TW.yaml +143 -183
- data/lib/countries/data/subdivisions/TZ.yaml +62 -31
- data/lib/countries/data/subdivisions/UA.yaml +55 -28
- data/lib/countries/data/subdivisions/UG.yaml +4806 -4660
- data/lib/countries/data/subdivisions/UM.yaml +18 -9
- data/lib/countries/data/subdivisions/US.yaml +114 -57
- data/lib/countries/data/subdivisions/UY.yaml +99 -80
- data/lib/countries/data/subdivisions/UZ.yaml +28 -14
- data/lib/countries/data/subdivisions/VC.yaml +12 -6
- data/lib/countries/data/subdivisions/VE.yaml +50 -25
- data/lib/countries/data/subdivisions/VN.yaml +3576 -3513
- data/lib/countries/data/subdivisions/VU.yaml +12 -6
- data/lib/countries/data/subdivisions/WF.yaml +6 -3
- data/lib/countries/data/subdivisions/WS.yaml +22 -11
- data/lib/countries/data/subdivisions/YE.yaml +222 -200
- data/lib/countries/data/subdivisions/ZA.yaml +86 -100
- data/lib/countries/data/subdivisions/ZM.yaml +20 -10
- data/lib/countries/data/subdivisions/ZW.yaml +20 -10
- 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 +40 -8
- data/lib/countries/iso3166.rb +0 -1
- data/lib/countries/sources/cldr/subdivision_updater.rb +1 -1
- data/lib/countries/subdivision.rb +19 -8
- data/lib/countries/version.rb +1 -1
- data/spec/country_spec.rb +63 -19
- data/spec/data_spec.rb +74 -5
- metadata +133 -24
- data/lib/countries/cache/locales/zh.json +0 -1
- data/lib/countries/data/subdivisions/AI.yaml +0 -197
- data/lib/countries/data/subdivisions/BM.yaml +0 -155
- data/lib/countries/data/subdivisions/CK.yaml +0 -155
- data/lib/countries/data/subdivisions/EH.yaml +0 -80
- data/lib/countries/data/subdivisions/SJ.yaml +0 -29
- data/lib/countries/data/subdivisions/TK.yaml +0 -43
- data/lib/countries/data/translation_corrections.yaml +0 -53
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# Country name translations for locale zu
|
|
2
|
+
#
|
|
3
|
+
# alpha2: localized_name
|
|
4
|
+
#
|
|
5
|
+
---
|
|
6
|
+
AD: I-Andora
|
|
7
|
+
AE: United Arab Emirates
|
|
8
|
+
AF: I-Afganistani
|
|
9
|
+
AG: Antigua no Barbuda
|
|
10
|
+
AI: Anguilla
|
|
11
|
+
AL: I-Albaniya
|
|
12
|
+
AM: Armenia
|
|
13
|
+
AO: I-Angola
|
|
14
|
+
AQ: Antarctica
|
|
15
|
+
AR: I-Argentina
|
|
16
|
+
AS: American Samoa
|
|
17
|
+
AT: I-Ostriya
|
|
18
|
+
AU: I-Ostreliya
|
|
19
|
+
AW: Aruba
|
|
20
|
+
AX: Åland Islands
|
|
21
|
+
AZ: I-Azerbayijani
|
|
22
|
+
BA: IBhosniya neHerzegovina
|
|
23
|
+
BB: I-Barbados
|
|
24
|
+
BD: Isi-Bhangladeshi
|
|
25
|
+
BE: Isi-Bhelijiyamu
|
|
26
|
+
BF: IBukhina Faso
|
|
27
|
+
BG: IBulgariya
|
|
28
|
+
BH: Bahrain
|
|
29
|
+
BI: IBurundi
|
|
30
|
+
BJ: IBenini
|
|
31
|
+
BL: Saint Barthélemy
|
|
32
|
+
BM: Bermuda
|
|
33
|
+
BN: Brunei Darussalam
|
|
34
|
+
BO: I Boliviya
|
|
35
|
+
BQ: Bonaire, Sint Eustatius and Saba
|
|
36
|
+
BR: IBrazili
|
|
37
|
+
BS: Bahamas
|
|
38
|
+
BT: Bhutan
|
|
39
|
+
BV: Bouvet Island
|
|
40
|
+
BW: IButswana
|
|
41
|
+
BY: IBelarusi
|
|
42
|
+
BZ: Belize
|
|
43
|
+
CA: I Khanada
|
|
44
|
+
CC: Cocos (Keeling) Islands
|
|
45
|
+
CD: Congo, The Democratic Republic of the
|
|
46
|
+
CF: Central African Republic
|
|
47
|
+
CG: Congo
|
|
48
|
+
CH: I-Switzerland
|
|
49
|
+
CI: Côte d'Ivoire
|
|
50
|
+
CK: Cook Islands
|
|
51
|
+
CL: I-Chile
|
|
52
|
+
CM: IKamerooni
|
|
53
|
+
CN: Isi-Shayina
|
|
54
|
+
CO: IKolombiya
|
|
55
|
+
CR: Costa Rica
|
|
56
|
+
CU: Cuba
|
|
57
|
+
CV: Cabo Verde
|
|
58
|
+
CW: Curaçao
|
|
59
|
+
CX: Christmas Island
|
|
60
|
+
CY: Cyprus
|
|
61
|
+
CZ: Czechia
|
|
62
|
+
DE: IJalimani
|
|
63
|
+
DJ: IJibuthi
|
|
64
|
+
DK: IDenimaki
|
|
65
|
+
DM: Dominica
|
|
66
|
+
DO: Ulawulo lokuziphatha kwe Dominikhani
|
|
67
|
+
DZ: IAljiriya
|
|
68
|
+
EC: Ecuador
|
|
69
|
+
EE: I-Estoniya
|
|
70
|
+
EG: IGibhithe
|
|
71
|
+
EH: Western Sahara
|
|
72
|
+
ER: I-Eritrea
|
|
73
|
+
ES: ISpeyini
|
|
74
|
+
ET: I-Ithiopia
|
|
75
|
+
FI: IFinlandi
|
|
76
|
+
FJ: IFiji
|
|
77
|
+
FK: Falkland Islands (Malvinas)
|
|
78
|
+
FM: Micronesia, Federated States of
|
|
79
|
+
FO: Faroe Islands
|
|
80
|
+
FR: IFulansi
|
|
81
|
+
GA: IGaboni
|
|
82
|
+
GB: Umbuso Ohlangeneyo
|
|
83
|
+
GD: I-Grenada
|
|
84
|
+
GE: Georgia
|
|
85
|
+
GF: French Guiana
|
|
86
|
+
GG: Guernsey
|
|
87
|
+
GH: IGana
|
|
88
|
+
GI: Gibraltar
|
|
89
|
+
GL: Greenland
|
|
90
|
+
GM: Gambia
|
|
91
|
+
GN: IGini
|
|
92
|
+
GP: Guadeloupe
|
|
93
|
+
GQ: IGini Enkabazwe
|
|
94
|
+
GR: IGreki
|
|
95
|
+
GS: South Georgia and the South Sandwich Islands
|
|
96
|
+
GT: I-Guwathemala
|
|
97
|
+
GU: Guam
|
|
98
|
+
GW: IGini Bisawu
|
|
99
|
+
GY: Guyana
|
|
100
|
+
HK: Hong Kong
|
|
101
|
+
HM: Heard Island and McDonald Islands
|
|
102
|
+
HN: I-Hondurasi
|
|
103
|
+
HR: IKrowati
|
|
104
|
+
HT: Haiti
|
|
105
|
+
HU: I-Hungariya
|
|
106
|
+
ID: I-Indonesia
|
|
107
|
+
IE: I-Ayilendi
|
|
108
|
+
IL: Isreyili
|
|
109
|
+
IM: Isle of Man
|
|
110
|
+
IN: India
|
|
111
|
+
IO: British Indian Ocean Territory
|
|
112
|
+
IQ: I-Iraki
|
|
113
|
+
IR: Iran, Islamic Republic of
|
|
114
|
+
IS: I-Ayisilandi
|
|
115
|
+
IT: ITaliya
|
|
116
|
+
JE: Jersey
|
|
117
|
+
JM: Jamaica
|
|
118
|
+
JO: Jordan
|
|
119
|
+
JP: IJaphani
|
|
120
|
+
KE: IKenya
|
|
121
|
+
KG: Kyrgyzstan
|
|
122
|
+
KH: Cambodia
|
|
123
|
+
KI: Kiribati
|
|
124
|
+
KM: IsiKhomorosi
|
|
125
|
+
KN: Saint Kitts and Nevis
|
|
126
|
+
KP: North Korea
|
|
127
|
+
KR: South Korea
|
|
128
|
+
KW: Kuwait
|
|
129
|
+
KY: Cayman Islands
|
|
130
|
+
KZ: Kazakhstan
|
|
131
|
+
LA: Lao People's Democratic Republic
|
|
132
|
+
LB: Lebanon
|
|
133
|
+
LC: Saint Lucia
|
|
134
|
+
LI: Liechtenstein
|
|
135
|
+
LK: Sri Lanka
|
|
136
|
+
LR: ILiberia
|
|
137
|
+
LS: OSotho
|
|
138
|
+
LT: ILithuwaniya
|
|
139
|
+
LU: I-Luxembourg
|
|
140
|
+
LV: ILatviya
|
|
141
|
+
LY: ILibiya
|
|
142
|
+
MA: IMorokho
|
|
143
|
+
MC: Monaco
|
|
144
|
+
MD: Moldova
|
|
145
|
+
ME: IMontenegro
|
|
146
|
+
MF: Saint Martin (French part)
|
|
147
|
+
MG: IMadagasika
|
|
148
|
+
MH: Marshall Islands
|
|
149
|
+
MK: North Macedonia
|
|
150
|
+
ML: IMali
|
|
151
|
+
MM: Myanmar
|
|
152
|
+
MN: Mongolia
|
|
153
|
+
MO: Macao
|
|
154
|
+
MP: Northern Mariana Islands
|
|
155
|
+
MQ: Martinique
|
|
156
|
+
MR: IMoritaniya
|
|
157
|
+
MS: Montserrat
|
|
158
|
+
MT: IMalta
|
|
159
|
+
MU: IMorishisi
|
|
160
|
+
MV: Maldives
|
|
161
|
+
MW: IMalawi
|
|
162
|
+
MX: IMekisiko
|
|
163
|
+
MY: Malaysia
|
|
164
|
+
MZ: IMozambiki
|
|
165
|
+
NA: INamibhiya
|
|
166
|
+
NC: New Caledonia
|
|
167
|
+
NE: INayighe
|
|
168
|
+
NF: Norfolk Island
|
|
169
|
+
NG: INigeria
|
|
170
|
+
NI: Nicaragua
|
|
171
|
+
NL: I-Netherlands
|
|
172
|
+
'NO': INoki
|
|
173
|
+
NP: Nepal
|
|
174
|
+
NR: Nauru
|
|
175
|
+
NU: Niue
|
|
176
|
+
NZ: INyuzilandi
|
|
177
|
+
OM: Oman
|
|
178
|
+
PA: Panama
|
|
179
|
+
PE: I-Peru
|
|
180
|
+
PF: French Polynesia
|
|
181
|
+
PG: Papua New Guinea
|
|
182
|
+
PH: Philippines
|
|
183
|
+
PK: IPakistani
|
|
184
|
+
PL: IPolandi
|
|
185
|
+
PM: Saint Pierre and Miquelon
|
|
186
|
+
PN: Pitcairn
|
|
187
|
+
PR: Puerto Rico
|
|
188
|
+
PS: Palestine, State of
|
|
189
|
+
PT: IPhothugali
|
|
190
|
+
PW: Palau
|
|
191
|
+
PY: I-Paraguwayi
|
|
192
|
+
QA: Qatar
|
|
193
|
+
RE: IRiyunion
|
|
194
|
+
RO: I-Romaniya
|
|
195
|
+
RS: ISerbiya
|
|
196
|
+
RU: Russian Federation
|
|
197
|
+
RW: IRuwanda
|
|
198
|
+
SA: Saudi Arabia
|
|
199
|
+
SB: Solomon Islands
|
|
200
|
+
SC: IsiSeyisheli
|
|
201
|
+
SD: ISudan
|
|
202
|
+
SE: ISwidi
|
|
203
|
+
SG: Singapore
|
|
204
|
+
SH: Saint Helena, Ascension and Tristan da Cunha
|
|
205
|
+
SI: ISloveniya
|
|
206
|
+
SJ: Svalbard and Jan Mayen
|
|
207
|
+
SK: ISlovaki
|
|
208
|
+
SL: ISiera Liyoni
|
|
209
|
+
SM: USanti Marino
|
|
210
|
+
SN: ISenegal
|
|
211
|
+
SO: ISomalia
|
|
212
|
+
SR: Suriname
|
|
213
|
+
SS: ISudan yaseNingizimu
|
|
214
|
+
ST: ISawu Tome noPhrinitshipeyi
|
|
215
|
+
SV: El Salvador
|
|
216
|
+
SX: Sint Maarten (Dutch part)
|
|
217
|
+
SY: Syrian Arab Republic
|
|
218
|
+
SZ: Eswatini
|
|
219
|
+
TC: Turks and Caicos Islands
|
|
220
|
+
TD: ITshedi
|
|
221
|
+
TF: French Southern Territories
|
|
222
|
+
TG: ITogo
|
|
223
|
+
TH: I-Thayilandi
|
|
224
|
+
TJ: Tajikistan
|
|
225
|
+
TK: Tokelau
|
|
226
|
+
TL: Timor-Leste
|
|
227
|
+
TM: Turkmenistan
|
|
228
|
+
TN: ITunisia
|
|
229
|
+
TO: Tonga
|
|
230
|
+
TR: ITheki
|
|
231
|
+
TT: I-Trinidad ne Tobago
|
|
232
|
+
TV: Tuvalu
|
|
233
|
+
TW: I-Tayiwani
|
|
234
|
+
TZ: ITanzania
|
|
235
|
+
UA: I-Yukreyini
|
|
236
|
+
UG: IYuganda
|
|
237
|
+
UM: United States Minor Outlying Islands
|
|
238
|
+
US: United States
|
|
239
|
+
UY: I-Uruguwayi
|
|
240
|
+
UZ: Uzbekistan
|
|
241
|
+
VA: Holy See (Vatican City State)
|
|
242
|
+
VC: Saint Vincent and the Grenadines
|
|
243
|
+
VE: I-Venezuwela
|
|
244
|
+
VG: Virgin Islands, British
|
|
245
|
+
VI: Virgin Islands, U.S.
|
|
246
|
+
VN: IViyetnami
|
|
247
|
+
VU: Vanuatu
|
|
248
|
+
WF: Wallis and Futuna
|
|
249
|
+
WS: Samoa
|
|
250
|
+
YE: IYemen
|
|
251
|
+
YT: IMayotte
|
|
252
|
+
ZA: IRiphabliki yaseNingizimu Afrika
|
|
253
|
+
ZM: IZambiya
|
|
254
|
+
ZW: IZimbabwe
|
data/lib/countries/data.rb
CHANGED
|
@@ -5,8 +5,10 @@ module ISO3166
|
|
|
5
5
|
class Data
|
|
6
6
|
@cache_dir = [File.dirname(__FILE__), 'cache']
|
|
7
7
|
@cache = {}
|
|
8
|
+
@loaded_country_codes = []
|
|
8
9
|
@registered_data = {}
|
|
9
10
|
@mutex = Mutex.new
|
|
11
|
+
@subdivisions = {}
|
|
10
12
|
|
|
11
13
|
def initialize(alpha2)
|
|
12
14
|
@alpha2 = alpha2.to_s.upcase
|
|
@@ -43,13 +45,14 @@ module ISO3166
|
|
|
43
45
|
# Resets the loaded data and cache
|
|
44
46
|
def reset
|
|
45
47
|
@cache = {}
|
|
48
|
+
@subdivisions = {}
|
|
46
49
|
@registered_data = {}
|
|
47
50
|
ISO3166.configuration.loaded_locales = []
|
|
48
51
|
end
|
|
49
52
|
|
|
50
53
|
def codes
|
|
51
54
|
load_data!
|
|
52
|
-
|
|
55
|
+
cached_codes
|
|
53
56
|
end
|
|
54
57
|
|
|
55
58
|
def update_cache
|
|
@@ -58,6 +61,35 @@ module ISO3166
|
|
|
58
61
|
@cache
|
|
59
62
|
end
|
|
60
63
|
|
|
64
|
+
def loaded_codes
|
|
65
|
+
load_data!
|
|
66
|
+
@loaded_country_codes
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def datafile_path(file_array)
|
|
70
|
+
File.join([@cache_dir] + file_array)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def subdivision_data(alpha2)
|
|
74
|
+
file = subdivision_file_path(alpha2)
|
|
75
|
+
data = File.exist?(file) ? YAML.load_file(file) : {}
|
|
76
|
+
locales = ISO3166.configuration.locales.map(&:to_s)
|
|
77
|
+
data.each_value{ |v| v['translations'] = v['translations'].slice(*locales)}
|
|
78
|
+
|
|
79
|
+
return data
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def subdivisions(alpha2)
|
|
83
|
+
@subdivisions ||= {}
|
|
84
|
+
@subdivisions[alpha2] ||= create_subdivisions(ISO3166::Data.subdivision_data(alpha2))
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def create_subdivisions(subdivision_data)
|
|
88
|
+
subdivision_data.each_with_object({}) do |(k, v), hash|
|
|
89
|
+
hash[k] = Subdivision.new(v)
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
|
|
61
93
|
private
|
|
62
94
|
|
|
63
95
|
def load_data!
|
|
@@ -65,7 +97,7 @@ module ISO3166
|
|
|
65
97
|
|
|
66
98
|
synchronized do
|
|
67
99
|
@cache = load_cache %w[countries.json]
|
|
68
|
-
@
|
|
100
|
+
@loaded_country_codes = @cache.keys
|
|
69
101
|
@cache = @cache.merge(@registered_data)
|
|
70
102
|
@cache
|
|
71
103
|
end
|
|
@@ -102,13 +134,13 @@ module ISO3166
|
|
|
102
134
|
end
|
|
103
135
|
end
|
|
104
136
|
|
|
105
|
-
def
|
|
137
|
+
def cached_codes
|
|
106
138
|
@cache.keys
|
|
107
139
|
end
|
|
108
140
|
|
|
109
141
|
# Codes that we have translations for in dataset
|
|
110
142
|
def internal_codes
|
|
111
|
-
@
|
|
143
|
+
@loaded_country_codes - @registered_data.keys
|
|
112
144
|
end
|
|
113
145
|
|
|
114
146
|
def cache_flush_required?
|
|
@@ -158,10 +190,6 @@ module ISO3166
|
|
|
158
190
|
File.exist?(file_path) ? JSON.parse(File.binread(file_path)) : {}
|
|
159
191
|
end
|
|
160
192
|
|
|
161
|
-
def datafile_path(file_array)
|
|
162
|
-
File.join([@cache_dir] + file_array)
|
|
163
|
-
end
|
|
164
|
-
|
|
165
193
|
def deep_stringify_keys(data)
|
|
166
194
|
data.transform_keys!(&:to_s)
|
|
167
195
|
data.transform_values! do |v|
|
|
@@ -170,6 +198,10 @@ module ISO3166
|
|
|
170
198
|
|
|
171
199
|
data
|
|
172
200
|
end
|
|
201
|
+
|
|
202
|
+
def subdivision_file_path(alpha2)
|
|
203
|
+
File.join(File.dirname(__FILE__), 'data', 'subdivisions', "#{alpha2}.yaml")
|
|
204
|
+
end
|
|
173
205
|
end
|
|
174
206
|
end
|
|
175
207
|
end
|
data/lib/countries/iso3166.rb
CHANGED
|
@@ -19,7 +19,7 @@ module Sources
|
|
|
19
19
|
language_data = Nokogiri::XML(File.read(file_path))
|
|
20
20
|
language_code = File.basename(file_path, '.*')
|
|
21
21
|
subdivisions = language_data.css('subdivision')
|
|
22
|
-
|
|
22
|
+
return if subdivisions.empty?
|
|
23
23
|
|
|
24
24
|
last_country_code_seen = nil
|
|
25
25
|
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module ISO3166
|
|
4
|
-
Subdivision
|
|
5
|
-
:name,
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
4
|
+
class Subdivision
|
|
5
|
+
attr_accessor :name,
|
|
6
|
+
:code,
|
|
7
|
+
:unofficial_names,
|
|
8
|
+
:geo,
|
|
9
|
+
:translations,
|
|
10
|
+
:comments,
|
|
11
|
+
:type
|
|
12
|
+
|
|
13
|
+
def initialize(attrs)
|
|
14
|
+
attrs.each_pair do |k, v|
|
|
15
|
+
send "#{k}=", v
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def [](attr_name)
|
|
20
|
+
send attr_name
|
|
21
|
+
end
|
|
22
|
+
end
|
|
12
23
|
end
|
data/lib/countries/version.rb
CHANGED
data/spec/country_spec.rb
CHANGED
|
@@ -221,7 +221,7 @@ describe ISO3166::Country do
|
|
|
221
221
|
end
|
|
222
222
|
|
|
223
223
|
describe 'subdivisions' do
|
|
224
|
-
let(:virginia) { country.
|
|
224
|
+
let(:virginia) { country.subdivisions['VA'] }
|
|
225
225
|
it 'should return an empty hash for a country with no ISO3166-2' do
|
|
226
226
|
expect(ISO3166::Country.search('VA').subdivisions.size).to eq(0)
|
|
227
227
|
end
|
|
@@ -230,8 +230,8 @@ describe ISO3166::Country do
|
|
|
230
230
|
expect(country.subdivisions.size).to eq(57)
|
|
231
231
|
end
|
|
232
232
|
|
|
233
|
-
it 'should be
|
|
234
|
-
expect
|
|
233
|
+
it '#states should be deprecated' do
|
|
234
|
+
expect {country.states}.to output.to_stderr
|
|
235
235
|
end
|
|
236
236
|
|
|
237
237
|
it 'should be a subdivision object' do
|
|
@@ -251,6 +251,60 @@ describe ISO3166::Country do
|
|
|
251
251
|
end
|
|
252
252
|
end
|
|
253
253
|
|
|
254
|
+
describe 'subdivision_types' do
|
|
255
|
+
it "should return an array of subdivision types" do
|
|
256
|
+
expect(country.subdivision_types).to contain_exactly('district', 'state', 'outlying_area')
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
it "should return an array of subdivision types even if there is only a single type" do
|
|
260
|
+
expect(ISO3166::Country['LI'].subdivision_types).to contain_exactly('commune')
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
it "should return an empty array if country has no subdivisions" do
|
|
264
|
+
expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
|
|
265
|
+
expect(ISO3166::Country['AS'].subdivision_types).to eq([])
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
describe 'subdivisions_of_types' do
|
|
270
|
+
it "given a single type, should return an array of subdivisions that match the type" do
|
|
271
|
+
us_states = country.subdivisions_of_types(%w[state])
|
|
272
|
+
expect(us_states.size).to eq(50)
|
|
273
|
+
dc = country.subdivisions_of_types(%w[district])
|
|
274
|
+
expect(dc.size).to eq(1)
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
it "given multiple types, should return an array of subdivisions matching the types" do
|
|
278
|
+
us_states_plus_dc = country.subdivisions_of_types(%w[state district])
|
|
279
|
+
expect(us_states_plus_dc.size).to eq(51)
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
it "given multiple types where at least one does not exist for that country, should work without issue" do
|
|
283
|
+
us_states_plus_dc = country.subdivisions_of_types(%w[state district governorate])
|
|
284
|
+
expect(us_states_plus_dc.size).to eq(51)
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
it "given only types that do not exist for that country, should return an empty collection" do
|
|
288
|
+
should_be_empty = ISO3166::Country['PT'].subdivisions_of_types(%w[state county])
|
|
289
|
+
expect(should_be_empty).to be_empty
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
describe 'humanized_subdivision_types' do
|
|
294
|
+
it "should return an array of humanized subdivision types" do
|
|
295
|
+
expect(country.humanized_subdivision_types).to contain_exactly('District', 'State', 'Outlying area')
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
it "should return an array of subdivision types even if there is only a single type" do
|
|
299
|
+
expect(ISO3166::Country['LI'].humanized_subdivision_types).to contain_exactly('Commune')
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
it "should return an empty array if country has no subdivisions" do
|
|
303
|
+
expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
|
|
304
|
+
expect(ISO3166::Country['AS'].humanized_subdivision_types).to eq([])
|
|
305
|
+
end
|
|
306
|
+
end
|
|
307
|
+
|
|
254
308
|
describe 'subdivision_names_with_codes' do
|
|
255
309
|
it 'should return an alphabetized list of all subdivisions names with codes' do
|
|
256
310
|
subdivisions = ISO3166::Country.search('EG').subdivision_names_with_codes
|
|
@@ -330,7 +384,7 @@ describe ISO3166::Country do
|
|
|
330
384
|
countries = ISO3166::Country.all_translated('fr')
|
|
331
385
|
expect(countries).to be_an(Array)
|
|
332
386
|
expect(countries.first).to be_a(String)
|
|
333
|
-
expect(countries.first).to eq('
|
|
387
|
+
expect(countries.first).to eq('Andorre')
|
|
334
388
|
# countries missing the desired locale will not be added to the list
|
|
335
389
|
# so all 250 countries may not be returned, 'fr' returns 249, for example
|
|
336
390
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
@@ -340,7 +394,7 @@ describe ISO3166::Country do
|
|
|
340
394
|
countries = ISO3166::Country.all_translated
|
|
341
395
|
expect(countries).to be_an(Array)
|
|
342
396
|
expect(countries.first).to be_a(String)
|
|
343
|
-
expect(countries.first).to eq('
|
|
397
|
+
expect(countries.first).to eq('Andorra')
|
|
344
398
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
345
399
|
end
|
|
346
400
|
|
|
@@ -448,8 +502,8 @@ describe ISO3166::Country do
|
|
|
448
502
|
it 'should return an hash of all country names translated to the selected locale' do
|
|
449
503
|
countries = ISO3166::Country.translations('fr')
|
|
450
504
|
expect(countries).to be_an(Hash)
|
|
451
|
-
expect(countries.first[0]).to eq('
|
|
452
|
-
expect(countries.first).to eq(%w[
|
|
505
|
+
expect(countries.first[0]).to eq('AD')
|
|
506
|
+
expect(countries.first).to eq(%w[AD Andorre])
|
|
453
507
|
# countries missing the desired locale will not be added to the list
|
|
454
508
|
# so all 250 countries may not be returned, 'fr' returns 249, for example
|
|
455
509
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
@@ -458,8 +512,8 @@ describe ISO3166::Country do
|
|
|
458
512
|
it 'should return an hash of all country names in English if no locale is passed' do
|
|
459
513
|
countries = ISO3166::Country.translations
|
|
460
514
|
expect(countries).to be_an(Hash)
|
|
461
|
-
expect(countries.first[0]).to eq('
|
|
462
|
-
expect(countries.first).to eq(%w[
|
|
515
|
+
expect(countries.first[0]).to eq('AD')
|
|
516
|
+
expect(countries.first).to eq(%w[AD Andorra])
|
|
463
517
|
expect(countries.size).to eq(NUM_OF_COUNTRIES)
|
|
464
518
|
end
|
|
465
519
|
end
|
|
@@ -896,16 +950,6 @@ describe ISO3166::Country do
|
|
|
896
950
|
end
|
|
897
951
|
end
|
|
898
952
|
|
|
899
|
-
describe 'names in Data' do
|
|
900
|
-
it 'should be unique (to allow .find_by_any_name work properly)' do
|
|
901
|
-
names = ISO3166::Data.cache.map do |_k, v|
|
|
902
|
-
[v['iso_short_name'], v['unofficial_names']].flatten.uniq
|
|
903
|
-
end.flatten
|
|
904
|
-
|
|
905
|
-
expect(names.size).to eq(names.uniq.size)
|
|
906
|
-
end
|
|
907
|
-
end
|
|
908
|
-
|
|
909
953
|
describe 'Norway' do
|
|
910
954
|
let(:norway) { ISO3166::Country.search('NO') }
|
|
911
955
|
|
data/spec/data_spec.rb
CHANGED
|
@@ -26,6 +26,17 @@ describe ISO3166::Data do
|
|
|
26
26
|
expect(data['translated_names'].size).to eq 1
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
+
it 'only loads subdivision translations for the configured locales' do
|
|
30
|
+
ISO3166.configuration.locales = %i[en]
|
|
31
|
+
ISO3166::Data.reset
|
|
32
|
+
subdivisions = ISO3166::Data.subdivisions('US')
|
|
33
|
+
expect(subdivisions.values.first['translations'].keys).to eq(%w[en])
|
|
34
|
+
ISO3166.configuration.locales = %i[es de en]
|
|
35
|
+
ISO3166::Data.reset
|
|
36
|
+
subdivisions = ISO3166::Data.subdivisions('US')
|
|
37
|
+
expect(subdivisions.values.first['translations'].keys).to eq(%w[es de en])
|
|
38
|
+
end
|
|
39
|
+
|
|
29
40
|
describe '#codes' do
|
|
30
41
|
it 'returns an array' do
|
|
31
42
|
data = ISO3166::Data.codes
|
|
@@ -122,8 +133,12 @@ describe ISO3166::Data do
|
|
|
122
133
|
expect(subject.iso_short_name).to eq 'NEW Taiwan'
|
|
123
134
|
expect(subject.translations).to eq('en' => 'NEW Taiwan',
|
|
124
135
|
'de' => 'NEW Taiwan')
|
|
125
|
-
expect(subject.subdivisions).to eq(
|
|
126
|
-
|
|
136
|
+
expect(subject.subdivisions.keys).to eq(%w[CHA CYI])
|
|
137
|
+
expect(subject.subdivisions.values.map(&:name)).to eq(['New Changhua', 'New Municipality'])
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
after do
|
|
141
|
+
ISO3166.reset
|
|
127
142
|
end
|
|
128
143
|
end
|
|
129
144
|
|
|
@@ -149,8 +164,8 @@ describe ISO3166::Data do
|
|
|
149
164
|
data = ISO3166::Data.new('LOL').call
|
|
150
165
|
expect(data['iso_short_name']).to eq 'Happy Country'
|
|
151
166
|
expect(subject.iso_short_name).to eq 'Happy Country'
|
|
152
|
-
expect(subject.subdivisions).to eq(
|
|
153
|
-
|
|
167
|
+
expect(subject.subdivisions.keys).to eq(%w[LOL1 LOL2])
|
|
168
|
+
expect(subject.subdivisions.values.map(&:name)).to eq(['Happy sub1', 'Happy sub2'])
|
|
154
169
|
end
|
|
155
170
|
|
|
156
171
|
it 'detect a stale cache' do
|
|
@@ -181,7 +196,61 @@ describe ISO3166::Data do
|
|
|
181
196
|
end
|
|
182
197
|
|
|
183
198
|
after do
|
|
184
|
-
ISO3166
|
|
199
|
+
ISO3166.reset
|
|
200
|
+
end
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
describe 'data checks' do
|
|
204
|
+
context 'subdivision YAML files' do
|
|
205
|
+
it 'has a non-blank code for all subdivisions' do
|
|
206
|
+
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
207
|
+
data = YAML.load_file(file)
|
|
208
|
+
expect(data.values.none?{|s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{file}"
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
it 'has a non-blank, lowercase and snake_case type for all subdivisions' do
|
|
213
|
+
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
214
|
+
data = YAML.load_file(file)
|
|
215
|
+
no_type = data.select{|k,v| v['type'].nil? }
|
|
216
|
+
expect(no_type).to be_empty, "empty subdivision type in #{file} - #{no_type.keys}"
|
|
217
|
+
uppercase = data.select{|k,v| v['type'] =~ /[A-Z]/ }
|
|
218
|
+
expect(uppercase).to be_empty, "uppercase characters in subdivision type in #{file} - #{uppercase.keys}"
|
|
219
|
+
spaces = data.select{|k,v| v['type'] =~ /\s/ }
|
|
220
|
+
expect(spaces).to be_empty, "whitespace characters in subdivision type in #{file} - #{spaces.keys}"
|
|
221
|
+
end
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
it 'has a non-blank name for all subdivisions' do
|
|
225
|
+
Dir['lib/countries/data/subdivisions/*.yaml'].each do |file|
|
|
226
|
+
data = YAML.load_file(file)
|
|
227
|
+
expect(data.values.none?{|s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{file}"
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
context 'cached country subdivision data' do
|
|
233
|
+
it 'has a non-blank code for all subdivisions' do
|
|
234
|
+
ISO3166::Country.all.each do |country|
|
|
235
|
+
expect(country.subdivisions.values.none?{|s| s['code'].nil? }).to be_truthy, "empty subdivision code in #{country}"
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
it 'has a non-blank name for all subdivisions' do
|
|
240
|
+
ISO3166::Country.all.each do |country|
|
|
241
|
+
expect(country.subdivisions.values.none?{|s| s['name'].nil? }).to be_truthy, "empty subdivision name in #{country}"
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
context 'names in Data' do
|
|
247
|
+
it 'should be unique (to allow .find_by_any_name work properly)' do
|
|
248
|
+
names = ISO3166::Data.cache.map do |_k, v|
|
|
249
|
+
[v['iso_short_name'], v['unofficial_names']].flatten.uniq
|
|
250
|
+
end.flatten
|
|
251
|
+
|
|
252
|
+
expect(names.size).to eq(names.uniq.size)
|
|
253
|
+
end
|
|
185
254
|
end
|
|
186
255
|
end
|
|
187
256
|
end
|