countries 3.1.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +37 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +28 -1
- data/Gemfile +5 -0
- data/README.markdown +30 -27
- data/Rakefile +5 -3
- data/countries.gemspec +8 -5
- data/lib/countries.rb +0 -1
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/cache/locales/an.json +1 -1
- data/lib/countries/cache/locales/be.json +1 -1
- data/lib/countries/cache/locales/cv.json +1 -1
- data/lib/countries/cache/locales/he.json +1 -1
- data/lib/countries/cache/locales/hr.json +1 -1
- data/lib/countries/cache/locales/ru.json +1 -1
- data/lib/countries/cache/locales/sv.json +1 -1
- data/lib/countries/cache/locales/tr.json +1 -1
- data/lib/countries/country.rb +4 -0
- data/lib/countries/country/class_methods.rb +10 -3
- data/lib/countries/data.rb +48 -22
- data/lib/countries/data/countries/AL.yaml +2 -2
- data/lib/countries/data/countries/AM.yaml +2 -2
- data/lib/countries/data/countries/AO.yaml +10 -10
- data/lib/countries/data/countries/AQ.yaml +2 -2
- data/lib/countries/data/countries/AS.yaml +2 -2
- data/lib/countries/data/countries/AT.yaml +3 -3
- data/lib/countries/data/countries/BA.yaml +4 -4
- data/lib/countries/data/countries/BD.yaml +2 -2
- data/lib/countries/data/countries/BE.yaml +1 -1
- data/lib/countries/data/countries/BF.yaml +8 -8
- data/lib/countries/data/countries/BG.yaml +4 -4
- data/lib/countries/data/countries/BH.yaml +4 -4
- data/lib/countries/data/countries/BI.yaml +6 -6
- data/lib/countries/data/countries/BJ.yaml +2 -2
- data/lib/countries/data/countries/BR.yaml +4 -4
- data/lib/countries/data/countries/BT.yaml +6 -6
- data/lib/countries/data/countries/BV.yaml +10 -10
- data/lib/countries/data/countries/BW.yaml +4 -4
- data/lib/countries/data/countries/CC.yaml +2 -2
- data/lib/countries/data/countries/CF.yaml +2 -2
- data/lib/countries/data/countries/CG.yaml +2 -2
- data/lib/countries/data/countries/CH.yaml +3 -3
- data/lib/countries/data/countries/CI.yaml +2 -2
- data/lib/countries/data/countries/CL.yaml +2 -2
- data/lib/countries/data/countries/CN.yaml +4 -4
- data/lib/countries/data/countries/CO.yaml +4 -4
- data/lib/countries/data/countries/CR.yaml +2 -2
- data/lib/countries/data/countries/CV.yaml +2 -2
- data/lib/countries/data/countries/CY.yaml +2 -2
- data/lib/countries/data/countries/CZ.yaml +2 -2
- data/lib/countries/data/countries/DE.yaml +2 -2
- data/lib/countries/data/countries/DJ.yaml +6 -6
- data/lib/countries/data/countries/DK.yaml +2 -2
- data/lib/countries/data/countries/DZ.yaml +6 -6
- data/lib/countries/data/countries/EC.yaml +4 -4
- data/lib/countries/data/countries/EE.yaml +3 -3
- data/lib/countries/data/countries/ES.yaml +1 -1
- data/lib/countries/data/countries/FI.yaml +5 -5
- data/lib/countries/data/countries/FK.yaml +2 -2
- data/lib/countries/data/countries/FM.yaml +2 -2
- data/lib/countries/data/countries/FO.yaml +5 -5
- data/lib/countries/data/countries/FR.yaml +3 -3
- data/lib/countries/data/countries/GE.yaml +4 -4
- data/lib/countries/data/countries/GG.yaml +10 -10
- data/lib/countries/data/countries/GH.yaml +4 -4
- data/lib/countries/data/countries/GI.yaml +2 -2
- data/lib/countries/data/countries/GL.yaml +6 -6
- data/lib/countries/data/countries/GM.yaml +4 -4
- data/lib/countries/data/countries/GN.yaml +2 -2
- data/lib/countries/data/countries/GR.yaml +2 -2
- data/lib/countries/data/countries/GS.yaml +2 -2
- data/lib/countries/data/countries/GT.yaml +2 -2
- data/lib/countries/data/countries/HK.yaml +4 -4
- data/lib/countries/data/countries/HN.yaml +2 -2
- data/lib/countries/data/countries/HR.yaml +3 -3
- data/lib/countries/data/countries/HU.yaml +7 -7
- data/lib/countries/data/countries/IE.yaml +10 -10
- data/lib/countries/data/countries/IM.yaml +8 -8
- data/lib/countries/data/countries/IN.yaml +2 -2
- data/lib/countries/data/countries/IO.yaml +2 -2
- data/lib/countries/data/countries/IQ.yaml +2 -2
- data/lib/countries/data/countries/IS.yaml +4 -4
- data/lib/countries/data/countries/IT.yaml +1 -1
- data/lib/countries/data/countries/JO.yaml +2 -2
- data/lib/countries/data/countries/KE.yaml +2 -2
- data/lib/countries/data/countries/KG.yaml +2 -2
- data/lib/countries/data/countries/KI.yaml +6 -6
- data/lib/countries/data/countries/KP.yaml +3 -2
- data/lib/countries/data/countries/KZ.yaml +2 -2
- data/lib/countries/data/countries/LA.yaml +6 -6
- data/lib/countries/data/countries/LT.yaml +6 -6
- data/lib/countries/data/countries/LV.yaml +4 -4
- data/lib/countries/data/countries/MA.yaml +4 -4
- data/lib/countries/data/countries/MD.yaml +8 -8
- data/lib/countries/data/countries/ME.yaml +2 -2
- data/lib/countries/data/countries/MH.yaml +2 -2
- data/lib/countries/data/countries/MK.yaml +2 -2
- data/lib/countries/data/countries/ML.yaml +4 -4
- data/lib/countries/data/countries/MN.yaml +8 -8
- data/lib/countries/data/countries/MR.yaml +2 -2
- data/lib/countries/data/countries/MT.yaml +2 -2
- data/lib/countries/data/countries/MV.yaml +2 -2
- data/lib/countries/data/countries/MW.yaml +2 -2
- data/lib/countries/data/countries/MX.yaml +2 -2
- data/lib/countries/data/countries/MY.yaml +2 -2
- data/lib/countries/data/countries/NA.yaml +4 -4
- data/lib/countries/data/countries/NE.yaml +4 -4
- data/lib/countries/data/countries/NI.yaml +2 -2
- data/lib/countries/data/countries/NL.yaml +2 -2
- data/lib/countries/data/countries/NO.yaml +4 -4
- data/lib/countries/data/countries/NP.yaml +6 -6
- data/lib/countries/data/countries/OM.yaml +2 -2
- data/lib/countries/data/countries/PA.yaml +2 -2
- data/lib/countries/data/countries/PE.yaml +4 -4
- data/lib/countries/data/countries/PF.yaml +4 -4
- data/lib/countries/data/countries/PH.yaml +2 -2
- data/lib/countries/data/countries/PK.yaml +4 -4
- data/lib/countries/data/countries/PL.yaml +4 -4
- data/lib/countries/data/countries/PR.yaml +8 -8
- data/lib/countries/data/countries/PT.yaml +5 -5
- data/lib/countries/data/countries/PY.yaml +2 -2
- data/lib/countries/data/countries/QA.yaml +2 -2
- data/lib/countries/data/countries/RO.yaml +6 -6
- data/lib/countries/data/countries/RU.yaml +2 -2
- data/lib/countries/data/countries/RW.yaml +2 -2
- data/lib/countries/data/countries/SA.yaml +2 -2
- data/lib/countries/data/countries/SC.yaml +2 -2
- data/lib/countries/data/countries/SD.yaml +2 -2
- data/lib/countries/data/countries/SE.yaml +4 -4
- data/lib/countries/data/countries/SH.yaml +4 -4
- data/lib/countries/data/countries/SI.yaml +4 -4
- data/lib/countries/data/countries/SJ.yaml +5 -5
- data/lib/countries/data/countries/SK.yaml +6 -6
- data/lib/countries/data/countries/SL.yaml +2 -2
- data/lib/countries/data/countries/SN.yaml +4 -4
- data/lib/countries/data/countries/TF.yaml +5 -5
- data/lib/countries/data/countries/TG.yaml +6 -6
- data/lib/countries/data/countries/TV.yaml +2 -2
- data/lib/countries/data/countries/TZ.yaml +2 -2
- data/lib/countries/data/countries/UA.yaml +5 -5
- data/lib/countries/data/countries/UG.yaml +4 -4
- data/lib/countries/data/countries/UY.yaml +2 -2
- data/lib/countries/data/countries/VC.yaml +2 -2
- data/lib/countries/data/countries/VE.yaml +2 -2
- data/lib/countries/data/countries/VN.yaml +4 -4
- data/lib/countries/data/countries/WS.yaml +2 -2
- data/lib/countries/data/countries/ZA.yaml +2 -2
- data/lib/countries/data/countries/ZM.yaml +4 -4
- data/lib/countries/data/countries/ZW.yaml +4 -4
- data/lib/countries/data/subdivisions/AD.yaml +35 -28
- data/lib/countries/data/subdivisions/AE.yaml +142 -63
- data/lib/countries/data/subdivisions/AF.yaml +569 -298
- data/lib/countries/data/subdivisions/AG.yaml +141 -68
- data/lib/countries/data/subdivisions/AI.yaml +139 -125
- data/lib/countries/data/subdivisions/AL.yaml +472 -156
- data/lib/countries/data/subdivisions/AM.yaml +235 -99
- data/lib/countries/data/subdivisions/AO.yaml +344 -162
- data/lib/countries/data/subdivisions/AR.yaml +447 -210
- data/lib/countries/data/subdivisions/AS.yaml +64 -45
- data/lib/countries/data/subdivisions/AT.yaml +200 -81
- data/lib/countries/data/subdivisions/AU.yaml +211 -72
- data/lib/countries/data/subdivisions/AW.yaml +9 -0
- data/lib/countries/data/subdivisions/AX.yaml +38 -27
- data/lib/countries/data/subdivisions/AZ.yaml +1547 -666
- data/lib/countries/data/subdivisions/BA.yaml +198 -28
- data/lib/countries/data/subdivisions/BB.yaml +187 -99
- data/lib/countries/data/subdivisions/BD.yaml +1246 -585
- data/lib/countries/data/subdivisions/BE.yaml +276 -100
- data/lib/countries/data/subdivisions/BF.yaml +987 -418
- data/lib/countries/data/subdivisions/BG.yaml +599 -246
- data/lib/countries/data/subdivisions/BH.yaml +73 -40
- data/lib/countries/data/subdivisions/BI.yaml +299 -141
- data/lib/countries/data/subdivisions/BJ.yaml +214 -108
- data/lib/countries/data/subdivisions/BL.yaml +11 -0
- data/lib/countries/data/subdivisions/BM.yaml +110 -99
- data/lib/countries/data/subdivisions/BN.yaml +63 -36
- data/lib/countries/data/subdivisions/BO.yaml +157 -81
- data/lib/countries/data/subdivisions/BQ.yaml +61 -26
- data/lib/countries/data/subdivisions/BR.yaml +663 -243
- data/lib/countries/data/subdivisions/BS.yaml +637 -151
- data/lib/countries/data/subdivisions/BT.yaml +346 -180
- data/lib/countries/data/subdivisions/BW.yaml +291 -87
- data/lib/countries/data/subdivisions/BY.yaml +140 -59
- data/lib/countries/data/subdivisions/BZ.yaml +97 -54
- data/lib/countries/data/subdivisions/CA.yaml +356 -118
- data/lib/countries/data/subdivisions/CD.yaml +453 -97
- data/lib/countries/data/subdivisions/CF.yaml +289 -153
- data/lib/countries/data/subdivisions/CG.yaml +214 -98
- data/lib/countries/data/subdivisions/CH.yaml +593 -234
- data/lib/countries/data/subdivisions/CI.yaml +443 -90
- data/lib/countries/data/subdivisions/CK.yaml +110 -99
- data/lib/countries/data/subdivisions/CL.yaml +262 -148
- data/lib/countries/data/subdivisions/CM.yaml +186 -90
- data/lib/countries/data/subdivisions/CO.yaml +610 -297
- data/lib/countries/data/subdivisions/CP.yaml +4 -0
- data/lib/countries/data/subdivisions/CR.yaml +119 -63
- data/lib/countries/data/subdivisions/CU.yaml +269 -144
- data/lib/countries/data/subdivisions/CV.yaml +416 -151
- data/lib/countries/data/subdivisions/CW.yaml +9 -0
- data/lib/countries/data/subdivisions/CY.yaml +102 -54
- data/lib/countries/data/subdivisions/CZ.yaml +2543 -197
- data/lib/countries/data/subdivisions/DE.yaml +450 -144
- data/lib/countries/data/subdivisions/DJ.yaml +108 -54
- data/lib/countries/data/subdivisions/DK.yaml +194 -109
- data/lib/countries/data/subdivisions/DM.yaml +159 -90
- data/lib/countries/data/subdivisions/DO.yaml +671 -289
- data/lib/countries/data/subdivisions/DZ.yaml +812 -435
- data/lib/countries/data/subdivisions/EC.yaml +390 -215
- data/lib/countries/data/subdivisions/EE.yaml +273 -135
- data/lib/countries/data/subdivisions/EG.yaml +472 -243
- data/lib/countries/data/subdivisions/EH.yaml +24 -16
- data/lib/countries/data/subdivisions/ER.yaml +109 -54
- data/lib/countries/data/subdivisions/ES.yaml +1804 -620
- data/lib/countries/data/subdivisions/ET.yaml +204 -99
- data/lib/countries/data/subdivisions/FI.yaml +408 -43
- data/lib/countries/data/subdivisions/FJ.yaml +312 -58
- data/lib/countries/data/subdivisions/FM.yaml +64 -36
- data/lib/countries/data/subdivisions/FO.yaml +60 -54
- data/lib/countries/data/subdivisions/FR.yaml +2790 -982
- data/lib/countries/data/subdivisions/GA.yaml +159 -81
- data/lib/countries/data/subdivisions/GB.yaml +4958 -1973
- data/lib/countries/data/subdivisions/GD.yaml +114 -63
- data/lib/countries/data/subdivisions/GE.yaml +236 -108
- data/lib/countries/data/subdivisions/GF.yaml +11 -0
- data/lib/countries/data/subdivisions/GG.yaml +110 -99
- data/lib/countries/data/subdivisions/GH.yaml +254 -88
- data/lib/countries/data/subdivisions/GL.yaml +87 -4
- data/lib/countries/data/subdivisions/GM.yaml +122 -54
- data/lib/countries/data/subdivisions/GN.yaml +706 -312
- data/lib/countries/data/subdivisions/GP.yaml +11 -0
- data/lib/countries/data/subdivisions/GQ.yaml +141 -81
- data/lib/countries/data/subdivisions/GR.yaml +642 -226
- data/lib/countries/data/subdivisions/GT.yaml +351 -198
- data/lib/countries/data/subdivisions/GU.yaml +198 -171
- data/lib/countries/data/subdivisions/GW.yaml +189 -79
- data/lib/countries/data/subdivisions/GY.yaml +163 -90
- data/lib/countries/data/subdivisions/HK.yaml +194 -162
- data/lib/countries/data/subdivisions/HN.yaml +275 -162
- data/lib/countries/data/subdivisions/HR.yaml +428 -189
- data/lib/countries/data/subdivisions/HT.yaml +178 -81
- data/lib/countries/data/subdivisions/HU.yaml +792 -381
- data/lib/countries/data/subdivisions/IC.yaml +4 -0
- data/lib/countries/data/subdivisions/ID.yaml +2303 -1868
- data/lib/countries/data/subdivisions/IE.yaml +665 -304
- data/lib/countries/data/subdivisions/IL.yaml +114 -54
- data/lib/countries/data/subdivisions/IM.yaml +240 -216
- data/lib/countries/data/subdivisions/IN.yaml +972 -337
- data/lib/countries/data/subdivisions/IQ.yaml +316 -157
- data/lib/countries/data/subdivisions/IR.yaml +591 -268
- data/lib/countries/data/subdivisions/IS.yaml +158 -76
- data/lib/countries/data/subdivisions/IT.yaml +2686 -1009
- data/lib/countries/data/subdivisions/JE.yaml +120 -108
- data/lib/countries/data/subdivisions/JM.yaml +243 -126
- data/lib/countries/data/subdivisions/JO.yaml +182 -97
- data/lib/countries/data/subdivisions/JP.yaml +950 -425
- data/lib/countries/data/subdivisions/KE.yaml +800 -79
- data/lib/countries/data/subdivisions/KG.yaml +186 -72
- data/lib/countries/data/subdivisions/KH.yaml +436 -216
- data/lib/countries/data/subdivisions/KI.yaml +57 -27
- data/lib/countries/data/subdivisions/KM.yaml +49 -27
- data/lib/countries/data/subdivisions/KN.yaml +307 -127
- data/lib/countries/data/subdivisions/KP.yaml +361 -67
- data/lib/countries/data/subdivisions/KR.yaml +376 -134
- data/lib/countries/data/subdivisions/KW.yaml +88 -54
- data/lib/countries/data/subdivisions/KY.yaml +36 -24
- data/lib/countries/data/subdivisions/KZ.yaml +360 -151
- data/lib/countries/data/subdivisions/LA.yaml +296 -157
- data/lib/countries/data/subdivisions/LB.yaml +130 -49
- data/lib/countries/data/subdivisions/LC.yaml +167 -10
- data/lib/countries/data/subdivisions/LI.yaml +154 -68
- data/lib/countries/data/subdivisions/LK.yaml +556 -233
- data/lib/countries/data/subdivisions/LR.yaml +253 -126
- data/lib/countries/data/subdivisions/LS.yaml +149 -90
- data/lib/countries/data/subdivisions/LT.yaml +1090 -149
- data/lib/countries/data/subdivisions/LU.yaml +198 -27
- data/lib/countries/data/subdivisions/LV.yaml +2332 -277
- data/lib/countries/data/subdivisions/LY.yaml +341 -184
- data/lib/countries/data/subdivisions/MA.yaml +1487 -562
- data/lib/countries/data/subdivisions/MC.yaml +265 -17
- data/lib/countries/data/subdivisions/MD.yaml +633 -127
- data/lib/countries/data/subdivisions/ME.yaml +429 -190
- data/lib/countries/data/subdivisions/MF.yaml +9 -0
- data/lib/countries/data/subdivisions/MG.yaml +93 -54
- data/lib/countries/data/subdivisions/MH.yaml +429 -213
- data/lib/countries/data/subdivisions/MK.yaml +3083 -425
- data/lib/countries/data/subdivisions/ML.yaml +185 -80
- data/lib/countries/data/subdivisions/MM.yaml +274 -126
- data/lib/countries/data/subdivisions/MN.yaml +420 -198
- data/lib/countries/data/subdivisions/MO.yaml +9 -0
- data/lib/countries/data/subdivisions/MP.yaml +54 -36
- data/lib/countries/data/subdivisions/MQ.yaml +11 -0
- data/lib/countries/data/subdivisions/MR.yaml +249 -115
- data/lib/countries/data/subdivisions/MS.yaml +30 -27
- data/lib/countries/data/subdivisions/MT.yaml +1059 -612
- data/lib/countries/data/subdivisions/MU.yaml +314 -147
- data/lib/countries/data/subdivisions/MV.yaml +466 -192
- data/lib/countries/data/subdivisions/MW.yaml +536 -246
- data/lib/countries/data/subdivisions/MX.yaml +707 -288
- data/lib/countries/data/subdivisions/MY.yaml +334 -144
- data/lib/countries/data/subdivisions/MZ.yaml +188 -93
- data/lib/countries/data/subdivisions/NA.yaml +221 -120
- data/lib/countries/data/subdivisions/NC.yaml +44 -27
- data/lib/countries/data/subdivisions/NE.yaml +161 -72
- data/lib/countries/data/subdivisions/NG.yaml +833 -333
- data/lib/countries/data/subdivisions/NI.yaml +260 -153
- data/lib/countries/data/subdivisions/NL.yaml +382 -113
- data/lib/countries/data/subdivisions/NO.yaml +596 -102
- data/lib/countries/data/subdivisions/NP.yaml +389 -130
- data/lib/countries/data/subdivisions/NR.yaml +260 -126
- data/lib/countries/data/subdivisions/NZ.yaml +322 -151
- data/lib/countries/data/subdivisions/OM.yaml +205 -66
- data/lib/countries/data/subdivisions/PA.yaml +204 -113
- data/lib/countries/data/subdivisions/PE.yaml +418 -234
- data/lib/countries/data/subdivisions/PF.yaml +60 -45
- data/lib/countries/data/subdivisions/PG.yaml +383 -177
- data/lib/countries/data/subdivisions/PH.yaml +1867 -767
- data/lib/countries/data/subdivisions/PK.yaml +185 -63
- data/lib/countries/data/subdivisions/PL.yaml +1161 -143
- data/lib/countries/data/subdivisions/PM.yaml +30 -18
- data/lib/countries/data/subdivisions/PR.yaml +1107 -0
- data/lib/countries/data/subdivisions/PS.yaml +265 -16
- data/lib/countries/data/subdivisions/PT.yaml +341 -180
- data/lib/countries/data/subdivisions/PW.yaml +265 -144
- data/lib/countries/data/subdivisions/PY.yaml +321 -162
- data/lib/countries/data/subdivisions/QA.yaml +165 -71
- data/lib/countries/data/subdivisions/RE.yaml +11 -0
- data/lib/countries/data/subdivisions/RO.yaml +731 -381
- data/lib/countries/data/subdivisions/RS.yaml +582 -261
- data/lib/countries/data/subdivisions/RU.yaml +1873 -750
- data/lib/countries/data/subdivisions/RW.yaml +100 -45
- data/lib/countries/data/subdivisions/SA.yaml +234 -117
- data/lib/countries/data/subdivisions/SB.yaml +169 -90
- data/lib/countries/data/subdivisions/SC.yaml +457 -208
- data/lib/countries/data/subdivisions/SD.yaml +142 -18
- data/lib/countries/data/subdivisions/SE.yaml +435 -258
- data/lib/countries/data/subdivisions/SG.yaml +117 -25
- data/lib/countries/data/subdivisions/SH.yaml +68 -18
- data/lib/countries/data/subdivisions/SI.yaml +3605 -1760
- data/lib/countries/data/subdivisions/SJ.yaml +20 -18
- data/lib/countries/data/subdivisions/SK.yaml +129 -72
- data/lib/countries/data/subdivisions/SL.yaml +80 -35
- data/lib/countries/data/subdivisions/SM.yaml +158 -81
- data/lib/countries/data/subdivisions/SN.yaml +232 -101
- data/lib/countries/data/subdivisions/SO.yaml +313 -161
- data/lib/countries/data/subdivisions/SR.yaml +158 -90
- data/lib/countries/data/subdivisions/SS.yaml +196 -10
- data/lib/countries/data/subdivisions/ST.yaml +30 -18
- data/lib/countries/data/subdivisions/SV.yaml +233 -126
- data/lib/countries/data/subdivisions/SX.yaml +9 -0
- data/lib/countries/data/subdivisions/SY.yaml +219 -124
- data/lib/countries/data/subdivisions/SZ.yaml +64 -35
- data/lib/countries/data/subdivisions/TA.yaml +4 -0
- data/lib/countries/data/subdivisions/TD.yaml +408 -161
- data/lib/countries/data/subdivisions/TF.yaml +34 -16
- data/lib/countries/data/subdivisions/TG.yaml +75 -45
- data/lib/countries/data/subdivisions/TH.yaml +1449 -694
- data/lib/countries/data/subdivisions/TJ.yaml +98 -28
- data/lib/countries/data/subdivisions/TK.yaml +30 -27
- data/lib/countries/data/subdivisions/TL.yaml +209 -117
- data/lib/countries/data/subdivisions/TM.yaml +116 -45
- data/lib/countries/data/subdivisions/TN.yaml +412 -216
- data/lib/countries/data/subdivisions/TO.yaml +76 -45
- data/lib/countries/data/subdivisions/TR.yaml +1818 -730
- data/lib/countries/data/subdivisions/TT.yaml +296 -131
- data/lib/countries/data/subdivisions/TV.yaml +130 -64
- data/lib/countries/data/subdivisions/TW.yaml +481 -187
- data/lib/countries/data/subdivisions/TZ.yaml +635 -237
- data/lib/countries/data/subdivisions/UA.yaml +504 -243
- data/lib/countries/data/subdivisions/UG.yaml +2237 -752
- data/lib/countries/data/subdivisions/UM.yaml +216 -80
- data/lib/countries/data/subdivisions/US.yaml +1570 -495
- data/lib/countries/data/subdivisions/UY.yaml +364 -170
- data/lib/countries/data/subdivisions/UZ.yaml +288 -127
- data/lib/countries/data/subdivisions/VC.yaml +96 -53
- data/lib/countries/data/subdivisions/VE.yaml +456 -225
- data/lib/countries/data/subdivisions/VI.yaml +44 -27
- data/lib/countries/data/subdivisions/VN.yaml +3583 -2980
- data/lib/countries/data/subdivisions/VU.yaml +98 -54
- data/lib/countries/data/subdivisions/WF.yaml +73 -3
- data/lib/countries/data/subdivisions/WS.yaml +200 -99
- data/lib/countries/data/subdivisions/YE.yaml +376 -173
- data/lib/countries/data/subdivisions/YT.yaml +178 -153
- data/lib/countries/data/subdivisions/ZA.yaml +230 -81
- data/lib/countries/data/subdivisions/ZM.yaml +156 -81
- data/lib/countries/data/subdivisions/ZW.yaml +153 -83
- data/lib/countries/data/translation_corrections.yaml +4 -1
- data/lib/countries/sources/cldr/downloader.rb +12 -13
- data/lib/countries/tasks/geocoding.rake +9 -16
- data/lib/countries/version.rb +1 -1
- data/spec/country_spec.rb +37 -0
- data/spec/data_spec.rb +4 -4
- data/spec/thread_safety_spec.rb +46 -0
- metadata +33 -25
- data/.travis.yml +0 -15
data/lib/countries/data.rb
CHANGED
@@ -5,7 +5,7 @@ module ISO3166
|
|
5
5
|
@@cache_dir = [File.dirname(__FILE__), 'cache']
|
6
6
|
@@cache = {}
|
7
7
|
@@registered_data = {}
|
8
|
-
@@
|
8
|
+
@@mutex = Mutex.new
|
9
9
|
|
10
10
|
def initialize(alpha2)
|
11
11
|
@alpha2 = alpha2.to_s.upcase
|
@@ -26,10 +26,9 @@ module ISO3166
|
|
26
26
|
|
27
27
|
def register(data)
|
28
28
|
alpha2 = data[:alpha2].upcase
|
29
|
-
@@registered_data[alpha2] =
|
30
|
-
data.each_with_object({}) { |(k, v), a| a[k.to_s] = v }
|
29
|
+
@@registered_data[alpha2] = deep_stringify_keys(data)
|
31
30
|
@@registered_data[alpha2]['translations'] = \
|
32
|
-
Translations.new.merge(data[
|
31
|
+
Translations.new.merge(data['translations'] || {})
|
33
32
|
@@cache = cache.merge(@@registered_data)
|
34
33
|
end
|
35
34
|
|
@@ -40,9 +39,7 @@ module ISO3166
|
|
40
39
|
end
|
41
40
|
|
42
41
|
def cache
|
43
|
-
|
44
|
-
update_cache
|
45
|
-
end
|
42
|
+
update_cache
|
46
43
|
end
|
47
44
|
|
48
45
|
def reset
|
@@ -64,10 +61,12 @@ module ISO3166
|
|
64
61
|
|
65
62
|
def load_data!
|
66
63
|
return @@cache unless load_required?
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
64
|
+
synchronized do
|
65
|
+
@@cache = load_cache %w(countries.json)
|
66
|
+
@@_country_codes = @@cache.keys
|
67
|
+
@@cache = @@cache.merge(@@registered_data)
|
68
|
+
@@cache
|
69
|
+
end
|
71
70
|
end
|
72
71
|
|
73
72
|
def sync_translations!
|
@@ -84,8 +83,23 @@ module ISO3166
|
|
84
83
|
|
85
84
|
private
|
86
85
|
|
86
|
+
def synchronized(&block)
|
87
|
+
if use_mutex?
|
88
|
+
@@mutex.synchronize(&block)
|
89
|
+
else
|
90
|
+
block.call
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def use_mutex?
|
95
|
+
# Stubbed in testing
|
96
|
+
true
|
97
|
+
end
|
98
|
+
|
87
99
|
def load_required?
|
88
|
-
|
100
|
+
synchronized do
|
101
|
+
@@cache.empty?
|
102
|
+
end
|
89
103
|
end
|
90
104
|
|
91
105
|
def loaded_codes
|
@@ -118,21 +132,25 @@ module ISO3166
|
|
118
132
|
end
|
119
133
|
|
120
134
|
def load_translations(locale)
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
135
|
+
synchronized do
|
136
|
+
locale_names = load_cache(['locales', "#{locale}.json"])
|
137
|
+
internal_codes.each do |alpha2|
|
138
|
+
@@cache[alpha2]['translations'] ||= Translations.new
|
139
|
+
@@cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
|
140
|
+
@@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
|
141
|
+
end
|
142
|
+
ISO3166.configuration.loaded_locales << locale
|
126
143
|
end
|
127
|
-
ISO3166.configuration.loaded_locales << locale
|
128
144
|
end
|
129
145
|
|
130
146
|
def unload_translations(locale)
|
131
|
-
|
132
|
-
|
133
|
-
|
147
|
+
synchronized do
|
148
|
+
internal_codes.each do |alpha2|
|
149
|
+
@@cache[alpha2]['translations'].delete(locale)
|
150
|
+
@@cache[alpha2]['translated_names'] = @@cache[alpha2]['translations'].values.freeze
|
151
|
+
end
|
152
|
+
ISO3166.configuration.loaded_locales.delete(locale)
|
134
153
|
end
|
135
|
-
ISO3166.configuration.loaded_locales.delete(locale)
|
136
154
|
end
|
137
155
|
|
138
156
|
def load_cache(file_array)
|
@@ -143,6 +161,14 @@ module ISO3166
|
|
143
161
|
def datafile_path(file_array)
|
144
162
|
File.join([@@cache_dir] + file_array)
|
145
163
|
end
|
164
|
+
|
165
|
+
def deep_stringify_keys(data)
|
166
|
+
data.transform_keys!(&:to_s)
|
167
|
+
data.transform_values! do |v|
|
168
|
+
v.is_a?(Hash) ? deep_stringify_keys(v) : v
|
169
|
+
end
|
170
|
+
return data
|
171
|
+
end
|
146
172
|
end
|
147
173
|
end
|
148
174
|
end
|
@@ -38,13 +38,13 @@ AL:
|
|
38
38
|
latitude_dec: '41.11113357543945'
|
39
39
|
longitude: 20.168331
|
40
40
|
longitude_dec: '20.02745246887207'
|
41
|
-
max_latitude: 42.
|
41
|
+
max_latitude: 42.6611669
|
42
42
|
max_longitude: 21.0572394
|
43
43
|
min_latitude: 39.6447296
|
44
44
|
min_longitude: 19.1217
|
45
45
|
bounds:
|
46
46
|
northeast:
|
47
|
-
lat: 42.
|
47
|
+
lat: 42.6611669
|
48
48
|
lng: 21.0572394
|
49
49
|
southwest:
|
50
50
|
lat: 39.6447296
|
@@ -39,13 +39,13 @@ AM:
|
|
39
39
|
longitude: 45.038189
|
40
40
|
longitude_dec: '44.93947219848633'
|
41
41
|
max_latitude: 41.300993
|
42
|
-
max_longitude: 46.
|
42
|
+
max_longitude: 46.6342219
|
43
43
|
min_latitude: 38.840244
|
44
44
|
min_longitude: 43.4472601
|
45
45
|
bounds:
|
46
46
|
northeast:
|
47
47
|
lat: 41.300993
|
48
|
-
lng: 46.
|
48
|
+
lng: 46.6342219
|
49
49
|
southwest:
|
50
50
|
lat: 38.840244
|
51
51
|
lng: 43.4472601
|
@@ -28,20 +28,20 @@ AO:
|
|
28
28
|
languages_spoken:
|
29
29
|
- pt
|
30
30
|
geo:
|
31
|
-
latitude:
|
31
|
+
latitude: -11.202692
|
32
32
|
latitude_dec: "-12.333555221557617"
|
33
|
-
longitude:
|
33
|
+
longitude: 17.873887
|
34
34
|
longitude_dec: '17.539464950561523'
|
35
|
-
max_latitude:
|
36
|
-
max_longitude:
|
37
|
-
min_latitude:
|
38
|
-
min_longitude:
|
35
|
+
max_latitude: -4.388063300000001
|
36
|
+
max_longitude: 24.0878855
|
37
|
+
min_latitude: -18.0391039
|
38
|
+
min_longitude: 11.4696999
|
39
39
|
bounds:
|
40
40
|
northeast:
|
41
|
-
lat:
|
42
|
-
lng:
|
41
|
+
lat: -4.388063300000001
|
42
|
+
lng: 24.0878855
|
43
43
|
southwest:
|
44
|
-
lat:
|
45
|
-
lng:
|
44
|
+
lat: -18.0391039
|
45
|
+
lng: 11.4696999
|
46
46
|
currency_code: AOA
|
47
47
|
start_of_week: monday
|
@@ -27,9 +27,9 @@ AQ:
|
|
27
27
|
languages_official: []
|
28
28
|
languages_spoken: []
|
29
29
|
geo:
|
30
|
-
latitude: -
|
30
|
+
latitude: -82.862752
|
31
31
|
latitude_dec: "-82.862752"
|
32
|
-
longitude:
|
32
|
+
longitude: 135
|
33
33
|
longitude_dec: "-135.0"
|
34
34
|
max_latitude: -60.1086999
|
35
35
|
max_longitude: 180
|
@@ -36,9 +36,9 @@ AS:
|
|
36
36
|
- en
|
37
37
|
- sm
|
38
38
|
geo:
|
39
|
-
latitude: -14.
|
39
|
+
latitude: -14.270972
|
40
40
|
latitude_dec: "-14.31956672668457"
|
41
|
-
longitude: -170.
|
41
|
+
longitude: -170.132217
|
42
42
|
longitude_dec: "-170.7403564453125"
|
43
43
|
max_latitude: -13.4056506
|
44
44
|
max_longitude: -169.2059326
|
@@ -38,7 +38,7 @@ AT:
|
|
38
38
|
standard: 20
|
39
39
|
reduced:
|
40
40
|
- 10
|
41
|
-
super_reduced:
|
41
|
+
super_reduced:
|
42
42
|
parking: 12
|
43
43
|
postal_code: true
|
44
44
|
postal_code_format: "\\d{4}"
|
@@ -58,13 +58,13 @@ AT:
|
|
58
58
|
longitude: 14.550072
|
59
59
|
longitude_dec: '14.14021110534668'
|
60
60
|
max_latitude: 49.0206081
|
61
|
-
max_longitude: 17.
|
61
|
+
max_longitude: 17.1607329
|
62
62
|
min_latitude: 46.37233579999999
|
63
63
|
min_longitude: 9.530783399999999
|
64
64
|
bounds:
|
65
65
|
northeast:
|
66
66
|
lat: 49.0206081
|
67
|
-
lng: 17.
|
67
|
+
lng: 17.1607329
|
68
68
|
southwest:
|
69
69
|
lat: 46.37233579999999
|
70
70
|
lng: 9.530783399999999
|
@@ -48,15 +48,15 @@ BA:
|
|
48
48
|
longitude: 17.679076
|
49
49
|
longitude_dec: '17.790241241455078'
|
50
50
|
max_latitude: 45.2766262
|
51
|
-
max_longitude: 19.
|
52
|
-
min_latitude: 42.
|
51
|
+
max_longitude: 19.6237016
|
52
|
+
min_latitude: 42.5564808
|
53
53
|
min_longitude: 15.7223665
|
54
54
|
bounds:
|
55
55
|
northeast:
|
56
56
|
lat: 45.2766262
|
57
|
-
lng: 19.
|
57
|
+
lng: 19.6237016
|
58
58
|
southwest:
|
59
|
-
lat: 42.
|
59
|
+
lat: 42.5564808
|
60
60
|
lng: 15.7223665
|
61
61
|
currency_code: BAM
|
62
62
|
start_of_week: monday
|
@@ -36,14 +36,14 @@ BD:
|
|
36
36
|
longitude_dec: '90.30652618408203'
|
37
37
|
max_latitude: 26.633914
|
38
38
|
max_longitude: 92.6801153
|
39
|
-
min_latitude: 20.
|
39
|
+
min_latitude: 20.3794
|
40
40
|
min_longitude: 88.00861410000002
|
41
41
|
bounds:
|
42
42
|
northeast:
|
43
43
|
lat: 26.633914
|
44
44
|
lng: 92.6801153
|
45
45
|
southwest:
|
46
|
-
lat: 20.
|
46
|
+
lat: 20.3794
|
47
47
|
lng: 88.00861410000002
|
48
48
|
currency_code: BDT
|
49
49
|
start_of_week: sunday
|
@@ -34,16 +34,16 @@ BF:
|
|
34
34
|
latitude_dec: '12.284985542297363'
|
35
35
|
longitude: -1.561593
|
36
36
|
longitude_dec: "-1.745560646057129"
|
37
|
-
max_latitude: 15.
|
38
|
-
max_longitude: 2.
|
39
|
-
min_latitude: 9.
|
40
|
-
min_longitude: -5.
|
37
|
+
max_latitude: 15.0840397
|
38
|
+
max_longitude: 2.4043596
|
39
|
+
min_latitude: 9.4104717
|
40
|
+
min_longitude: -5.5132416
|
41
41
|
bounds:
|
42
42
|
northeast:
|
43
|
-
lat: 15.
|
44
|
-
lng: 2.
|
43
|
+
lat: 15.0840397
|
44
|
+
lng: 2.4043596
|
45
45
|
southwest:
|
46
|
-
lat: 9.
|
47
|
-
lng: -5.
|
46
|
+
lat: 9.4104717
|
47
|
+
lng: -5.5132416
|
48
48
|
currency_code: XOF
|
49
49
|
start_of_week: monday
|
@@ -32,8 +32,8 @@ BG:
|
|
32
32
|
standard: 20
|
33
33
|
reduced:
|
34
34
|
- 9
|
35
|
-
super_reduced:
|
36
|
-
parking:
|
35
|
+
super_reduced:
|
36
|
+
parking:
|
37
37
|
postal_code: true
|
38
38
|
postal_code_format: "\\d{4}"
|
39
39
|
unofficial_names:
|
@@ -51,13 +51,13 @@ BG:
|
|
51
51
|
latitude_dec: '42.7661018371582'
|
52
52
|
longitude: 25.48583
|
53
53
|
longitude_dec: '25.283733367919922'
|
54
|
-
max_latitude: 44.
|
54
|
+
max_latitude: 44.2153059
|
55
55
|
max_longitude: 28.7292001
|
56
56
|
min_latitude: 41.2354469
|
57
57
|
min_longitude: 22.3573446
|
58
58
|
bounds:
|
59
59
|
northeast:
|
60
|
-
lat: 44.
|
60
|
+
lat: 44.2153059
|
61
61
|
lng: 28.7292001
|
62
62
|
southwest:
|
63
63
|
lat: 41.2354469
|
@@ -41,16 +41,16 @@ BH:
|
|
41
41
|
latitude_dec: '26.094240188598633'
|
42
42
|
longitude: 50.5577
|
43
43
|
longitude_dec: '50.54299545288086'
|
44
|
-
max_latitude: 26.
|
44
|
+
max_latitude: 26.3469001
|
45
45
|
max_longitude: 50.8509064
|
46
46
|
min_latitude: 25.5349999
|
47
|
-
min_longitude: 50.
|
47
|
+
min_longitude: 50.324246
|
48
48
|
bounds:
|
49
49
|
northeast:
|
50
|
-
lat: 26.
|
50
|
+
lat: 26.3469001
|
51
51
|
lng: 50.8509064
|
52
52
|
southwest:
|
53
53
|
lat: 25.5349999
|
54
|
-
lng: 50.
|
54
|
+
lng: 50.324246
|
55
55
|
currency_code: BHD
|
56
56
|
start_of_week: monday
|
@@ -34,16 +34,16 @@ BI:
|
|
34
34
|
latitude_dec: "-3.365208148956299"
|
35
35
|
longitude: 29.918886
|
36
36
|
longitude_dec: '29.88650894165039'
|
37
|
-
max_latitude: -2.
|
38
|
-
max_longitude: 30.
|
37
|
+
max_latitude: -2.3097301
|
38
|
+
max_longitude: 30.84954
|
39
39
|
min_latitude: -4.4693288
|
40
|
-
min_longitude: 29.
|
40
|
+
min_longitude: 29.000968
|
41
41
|
bounds:
|
42
42
|
northeast:
|
43
|
-
lat: -2.
|
44
|
-
lng: 30.
|
43
|
+
lat: -2.3097301
|
44
|
+
lng: 30.84954
|
45
45
|
southwest:
|
46
46
|
lat: -4.4693288
|
47
|
-
lng: 29.
|
47
|
+
lng: 29.000968
|
48
48
|
currency_code: BIF
|
49
49
|
start_of_week: monday
|
@@ -36,13 +36,13 @@ BJ:
|
|
36
36
|
max_latitude: 12.4086111
|
37
37
|
max_longitude: 3.8433429
|
38
38
|
min_latitude: 6.2061001
|
39
|
-
min_longitude: 0.
|
39
|
+
min_longitude: 0.7754124000000001
|
40
40
|
bounds:
|
41
41
|
northeast:
|
42
42
|
lat: 12.4086111
|
43
43
|
lng: 3.8433429
|
44
44
|
southwest:
|
45
45
|
lat: 6.2061001
|
46
|
-
lng: 0.
|
46
|
+
lng: 0.7754124000000001
|
47
47
|
currency_code: XOF
|
48
48
|
start_of_week: monday
|
@@ -51,15 +51,15 @@ BR:
|
|
51
51
|
longitude: -51.92528
|
52
52
|
longitude_dec: "-52.97311782836914"
|
53
53
|
max_latitude: 5.2717863
|
54
|
-
max_longitude: -
|
54
|
+
max_longitude: -28.650543
|
55
55
|
min_latitude: -34.0891
|
56
|
-
min_longitude: -73.
|
56
|
+
min_longitude: -73.9828169
|
57
57
|
bounds:
|
58
58
|
northeast:
|
59
59
|
lat: 5.2717863
|
60
|
-
lng: -
|
60
|
+
lng: -28.650543
|
61
61
|
southwest:
|
62
62
|
lat: -34.0891
|
63
|
-
lng: -73.
|
63
|
+
lng: -73.9828169
|
64
64
|
currency_code: BRL
|
65
65
|
start_of_week: monday
|
@@ -36,16 +36,16 @@ BT:
|
|
36
36
|
latitude_dec: '27.416879653930664'
|
37
37
|
longitude: 90.433601
|
38
38
|
longitude_dec: '90.43476104736328'
|
39
|
-
max_latitude: 28.
|
40
|
-
max_longitude: 92.
|
39
|
+
max_latitude: 28.246987
|
40
|
+
max_longitude: 92.125232
|
41
41
|
min_latitude: 26.702016
|
42
|
-
min_longitude: 88.
|
42
|
+
min_longitude: 88.7464739
|
43
43
|
bounds:
|
44
44
|
northeast:
|
45
|
-
lat: 28.
|
46
|
-
lng: 92.
|
45
|
+
lat: 28.246987
|
46
|
+
lng: 92.125232
|
47
47
|
southwest:
|
48
48
|
lat: 26.702016
|
49
|
-
lng: 88.
|
49
|
+
lng: 88.7464739
|
50
50
|
currency_code: BTN
|
51
51
|
start_of_week: monday
|