countries 5.4.0 → 5.5.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/.codeclimate.yml +61 -0
- data/.github/workflows/tests.yml +4 -0
- data/.gitignore +0 -1
- data/.rubocop.yml +17 -8
- data/CHANGELOG.md +8 -0
- data/Gemfile +1 -2
- data/Gemfile.lock +84 -0
- data/README.md +41 -1
- data/Rakefile +2 -3
- data/countries.gemspec +1 -1
- data/lib/countries/cache/countries.json +1 -1
- data/lib/countries/country/class_methods.rb +22 -3
- data/lib/countries/country/country_subdivision_methods.rb +82 -0
- data/lib/countries/country/currency_methods.rb +0 -1
- data/lib/countries/country/finder_methods.rb +2 -4
- data/lib/countries/country.rb +13 -53
- data/lib/countries/data/countries/AR.yaml +1 -0
- data/lib/countries/data/countries/AU.yaml +1 -0
- data/lib/countries/data/countries/BR.yaml +1 -0
- data/lib/countries/data/countries/CA.yaml +2 -0
- data/lib/countries/data/countries/CN.yaml +1 -0
- data/lib/countries/data/countries/DE.yaml +2 -0
- data/lib/countries/data/countries/FR.yaml +2 -0
- data/lib/countries/data/countries/GB.yaml +2 -0
- data/lib/countries/data/countries/ID.yaml +1 -0
- data/lib/countries/data/countries/IN.yaml +1 -0
- data/lib/countries/data/countries/IT.yaml +2 -0
- data/lib/countries/data/countries/JP.yaml +2 -0
- data/lib/countries/data/countries/KR.yaml +1 -0
- data/lib/countries/data/countries/MX.yaml +1 -0
- data/lib/countries/data/countries/RU.yaml +1 -0
- data/lib/countries/data/countries/SA.yaml +1 -0
- data/lib/countries/data/countries/TR.yaml +1 -0
- data/lib/countries/data/countries/US.yaml +2 -0
- data/lib/countries/data/countries/ZA.yaml +1 -0
- data/lib/countries/data/locales_methods.rb +23 -0
- data/lib/countries/data/subdivision_methods.rb +30 -0
- data/lib/countries/data/subdivisions/AD.yaml +7 -0
- data/lib/countries/data/subdivisions/AE.yaml +18 -0
- data/lib/countries/data/subdivisions/AF.yaml +167 -2
- data/lib/countries/data/subdivisions/AG.yaml +9 -0
- data/lib/countries/data/subdivisions/AL.yaml +57 -0
- data/lib/countries/data/subdivisions/AM.yaml +34 -0
- data/lib/countries/data/subdivisions/AO.yaml +36 -0
- data/lib/countries/data/subdivisions/AR.yaml +46 -0
- data/lib/countries/data/subdivisions/AT.yaml +28 -0
- data/lib/countries/data/subdivisions/AU.yaml +29 -0
- data/lib/countries/data/subdivisions/AZ.yaml +239 -0
- data/lib/countries/data/subdivisions/BA.yaml +5 -0
- data/lib/countries/data/subdivisions/BB.yaml +4 -0
- data/lib/countries/data/subdivisions/BD.yaml +139 -0
- data/lib/countries/data/subdivisions/BE.yaml +34 -0
- data/lib/countries/data/subdivisions/BF.yaml +56 -0
- data/lib/countries/data/subdivisions/BG.yaml +30 -0
- data/lib/countries/data/subdivisions/BH.yaml +13 -0
- data/lib/countries/data/subdivisions/BI.yaml +54 -0
- data/lib/countries/data/subdivisions/BJ.yaml +22 -0
- data/lib/countries/data/subdivisions/BN.yaml +9 -0
- data/lib/countries/data/subdivisions/BO.yaml +35 -0
- data/lib/countries/data/subdivisions/BQ.yaml +4 -0
- data/lib/countries/data/subdivisions/BR.yaml +14 -0
- data/lib/countries/data/subdivisions/BS.yaml +24 -0
- data/lib/countries/data/subdivisions/BT.yaml +24 -0
- data/lib/countries/data/subdivisions/BW.yaml +24 -0
- data/lib/countries/data/subdivisions/BY.yaml +5 -0
- data/lib/countries/data/subdivisions/BZ.yaml +3 -0
- data/lib/countries/data/subdivisions/CA.yaml +24 -0
- data/lib/countries/data/subdivisions/CD.yaml +77 -0
- data/lib/countries/data/subdivisions/CF.yaml +15 -0
- data/lib/countries/data/subdivisions/CG.yaml +18 -0
- data/lib/countries/data/subdivisions/CH.yaml +92 -0
- data/lib/countries/data/subdivisions/CI.yaml +65 -0
- data/lib/countries/data/subdivisions/CL.yaml +45 -2
- data/lib/countries/data/subdivisions/CM.yaml +22 -0
- data/lib/countries/data/subdivisions/CN.yaml +98 -0
- data/lib/countries/data/subdivisions/CO.yaml +68 -0
- data/lib/countries/data/subdivisions/CR.yaml +14 -0
- data/lib/countries/data/subdivisions/CU.yaml +42 -0
- data/lib/countries/data/subdivisions/CV.yaml +32 -0
- data/lib/countries/data/subdivisions/CY.yaml +18 -0
- data/lib/countries/data/subdivisions/CZ.yaml +227 -0
- data/lib/countries/data/subdivisions/DE.yaml +31 -0
- data/lib/countries/data/subdivisions/DJ.yaml +16 -0
- data/lib/countries/data/subdivisions/DK.yaml +13 -0
- data/lib/countries/data/subdivisions/DM.yaml +1 -0
- data/lib/countries/data/subdivisions/DO.yaml +102 -0
- data/lib/countries/data/subdivisions/DZ.yaml +104 -0
- data/lib/countries/data/subdivisions/EC.yaml +72 -0
- data/lib/countries/data/subdivisions/EE.yaml +6 -0
- data/lib/countries/data/subdivisions/EG.yaml +54 -0
- data/lib/countries/data/subdivisions/ER.yaml +2 -0
- data/lib/countries/data/subdivisions/ES.yaml +252 -0
- data/lib/countries/data/subdivisions/ET.yaml +27 -0
- data/lib/countries/data/subdivisions/FI.yaml +78 -0
- data/lib/countries/data/subdivisions/FJ.yaml +30 -0
- data/lib/countries/data/subdivisions/FM.yaml +11 -0
- data/lib/countries/data/subdivisions/FR.yaml +332 -1
- data/lib/countries/data/subdivisions/GA.yaml +24 -0
- data/lib/countries/data/subdivisions/GB.yaml +488 -0
- data/lib/countries/data/subdivisions/GD.yaml +10 -0
- data/lib/countries/data/subdivisions/GE.yaml +34 -0
- data/lib/countries/data/subdivisions/GH.yaml +79 -0
- data/lib/countries/data/subdivisions/GL.yaml +58 -0
- data/lib/countries/data/subdivisions/GM.yaml +10 -0
- data/lib/countries/data/subdivisions/GN.yaml +65 -0
- data/lib/countries/data/subdivisions/GQ.yaml +36 -0
- data/lib/countries/data/subdivisions/GR.yaml +41 -0
- data/lib/countries/data/subdivisions/GW.yaml +24 -0
- data/lib/countries/data/subdivisions/GY.yaml +31 -0
- data/lib/countries/data/subdivisions/HN.yaml +21 -0
- data/lib/countries/data/subdivisions/HR.yaml +82 -0
- data/lib/countries/data/subdivisions/HT.yaml +14 -0
- data/lib/countries/data/subdivisions/HU.yaml +94 -0
- data/lib/countries/data/subdivisions/ID.yaml +99 -0
- data/lib/countries/data/subdivisions/IE.yaml +39 -0
- data/lib/countries/data/subdivisions/IL.yaml +15 -0
- data/lib/countries/data/subdivisions/IN.yaml +210 -0
- data/lib/countries/data/subdivisions/IQ.yaml +59 -0
- data/lib/countries/data/subdivisions/IR.yaml +2 -0
- data/lib/countries/data/subdivisions/IS.yaml +560 -0
- data/lib/countries/data/subdivisions/IT.yaml +321 -0
- data/lib/countries/data/subdivisions/JM.yaml +22 -0
- data/lib/countries/data/subdivisions/JO.yaml +16 -0
- data/lib/countries/data/subdivisions/JP.yaml +42 -0
- data/lib/countries/data/subdivisions/KE.yaml +298 -0
- data/lib/countries/data/subdivisions/KG.yaml +28 -0
- data/lib/countries/data/subdivisions/KH.yaml +108 -0
- data/lib/countries/data/subdivisions/KI.yaml +6 -0
- data/lib/countries/data/subdivisions/KM.yaml +4 -0
- data/lib/countries/data/subdivisions/KN.yaml +6 -0
- data/lib/countries/data/subdivisions/KP.yaml +42 -0
- data/lib/countries/data/subdivisions/KR.yaml +36 -0
- data/lib/countries/data/subdivisions/KW.yaml +5 -0
- data/lib/countries/data/subdivisions/KZ.yaml +113 -0
- data/lib/countries/data/subdivisions/LA.yaml +49 -0
- data/lib/countries/data/subdivisions/LB.yaml +28 -0
- data/lib/countries/data/subdivisions/LC.yaml +6 -0
- data/lib/countries/data/subdivisions/LI.yaml +37 -0
- data/lib/countries/data/subdivisions/LK.yaml +67 -0
- data/lib/countries/data/subdivisions/LR.yaml +16 -0
- data/lib/countries/data/subdivisions/LS.yaml +23 -0
- data/lib/countries/data/subdivisions/LT.yaml +315 -0
- data/lib/countries/data/subdivisions/LU.yaml +31 -0
- data/lib/countries/data/subdivisions/LV.yaml +83 -0
- data/lib/countries/data/subdivisions/LY.yaml +16 -0
- data/lib/countries/data/subdivisions/MA.yaml +827 -12
- data/lib/countries/data/subdivisions/MC.yaml +47 -0
- data/lib/countries/data/subdivisions/MD.yaml +41 -0
- data/lib/countries/data/subdivisions/ME.yaml +83 -0
- data/lib/countries/data/subdivisions/MG.yaml +21 -0
- data/lib/countries/data/subdivisions/MH.yaml +70 -0
- data/lib/countries/data/subdivisions/MK.yaml +505 -0
- data/lib/countries/data/subdivisions/ML.yaml +33 -0
- data/lib/countries/data/subdivisions/MM.yaml +51 -0
- data/lib/countries/data/subdivisions/MN.yaml +94 -0
- data/lib/countries/data/subdivisions/MR.yaml +32 -0
- data/lib/countries/data/subdivisions/MT.yaml +126 -0
- data/lib/countries/data/subdivisions/MU.yaml +21 -0
- data/lib/countries/data/subdivisions/MV.yaml +20 -0
- data/lib/countries/data/subdivisions/MW.yaml +52 -0
- data/lib/countries/data/subdivisions/MX.yaml +23 -0
- data/lib/countries/data/subdivisions/MY.yaml +24 -0
- data/lib/countries/data/subdivisions/MZ.yaml +20 -0
- data/lib/countries/data/subdivisions/NA.yaml +28 -0
- data/lib/countries/data/subdivisions/NE.yaml +9 -0
- data/lib/countries/data/subdivisions/NG.yaml +89 -0
- data/lib/countries/data/subdivisions/NI.yaml +25 -0
- data/lib/countries/data/subdivisions/NL.yaml +24 -0
- data/lib/countries/data/subdivisions/NO.yaml +138 -1
- data/lib/countries/data/subdivisions/NP.yaml +9 -0
- data/lib/countries/data/subdivisions/NR.yaml +19 -0
- data/lib/countries/data/subdivisions/NZ.yaml +34 -0
- data/lib/countries/data/subdivisions/OM.yaml +10 -0
- data/lib/countries/data/subdivisions/PA.yaml +27 -0
- data/lib/countries/data/subdivisions/PE.yaml +24 -0
- data/lib/countries/data/subdivisions/PG.yaml +46 -0
- data/lib/countries/data/subdivisions/PH.yaml +293 -0
- data/lib/countries/data/subdivisions/PK.yaml +22 -0
- data/lib/countries/data/subdivisions/PL.yaml +141 -0
- data/lib/countries/data/subdivisions/PS.yaml +41 -0
- data/lib/countries/data/subdivisions/PT.yaml +36 -0
- data/lib/countries/data/subdivisions/PW.yaml +24 -0
- data/lib/countries/data/subdivisions/PY.yaml +21 -0
- data/lib/countries/data/subdivisions/QA.yaml +26 -0
- data/lib/countries/data/subdivisions/RO.yaml +189 -0
- data/lib/countries/data/subdivisions/RS.yaml +112 -0
- data/lib/countries/data/subdivisions/RU.yaml +123 -0
- data/lib/countries/data/subdivisions/RW.yaml +7 -0
- data/lib/countries/data/subdivisions/SA.yaml +38 -0
- data/lib/countries/data/subdivisions/SB.yaml +11 -0
- data/lib/countries/data/subdivisions/SC.yaml +45 -0
- data/lib/countries/data/subdivisions/SD.yaml +15 -0
- data/lib/countries/data/subdivisions/SE.yaml +42 -0
- data/lib/countries/data/subdivisions/SG.yaml +8 -0
- data/lib/countries/data/subdivisions/SH.yaml +6 -0
- data/lib/countries/data/subdivisions/SI.yaml +735 -0
- data/lib/countries/data/subdivisions/SK.yaml +22 -0
- data/lib/countries/data/subdivisions/SL.yaml +7 -0
- data/lib/countries/data/subdivisions/SM.yaml +19 -0
- data/lib/countries/data/subdivisions/SN.yaml +43 -0
- data/lib/countries/data/subdivisions/SO.yaml +71 -0
- data/lib/countries/data/subdivisions/SR.yaml +17 -0
- data/lib/countries/data/subdivisions/SS.yaml +4 -0
- data/lib/countries/data/subdivisions/ST.yaml +127 -0
- data/lib/countries/data/subdivisions/SV.yaml +20 -0
- data/lib/countries/data/subdivisions/SY.yaml +53 -0
- data/lib/countries/data/subdivisions/SZ.yaml +18 -0
- data/lib/countries/data/subdivisions/TD.yaml +51 -0
- data/lib/countries/data/subdivisions/TG.yaml +13 -0
- data/lib/countries/data/subdivisions/TH.yaml +231 -0
- data/lib/countries/data/subdivisions/TJ.yaml +15 -0
- data/lib/countries/data/subdivisions/TL.yaml +38 -0
- data/lib/countries/data/subdivisions/TM.yaml +15 -0
- data/lib/countries/data/subdivisions/TN.yaml +25 -0
- data/lib/countries/data/subdivisions/TO.yaml +1 -0
- data/lib/countries/data/subdivisions/TR.yaml +93 -0
- data/lib/countries/data/subdivisions/TT.yaml +25 -0
- data/lib/countries/data/subdivisions/TV.yaml +25 -0
- data/lib/countries/data/subdivisions/TW.yaml +106 -0
- data/lib/countries/data/subdivisions/TZ.yaml +38 -0
- data/lib/countries/data/subdivisions/UA.yaml +86 -4
- data/lib/countries/data/subdivisions/UG.yaml +262 -0
- data/lib/countries/data/subdivisions/UM.yaml +4 -0
- data/lib/countries/data/subdivisions/US.yaml +118 -0
- data/lib/countries/data/subdivisions/UY.yaml +27 -0
- data/lib/countries/data/subdivisions/UZ.yaml +65 -0
- data/lib/countries/data/subdivisions/VC.yaml +6 -0
- data/lib/countries/data/subdivisions/VE.yaml +33 -0
- data/lib/countries/data/subdivisions/VN.yaml +131 -0
- data/lib/countries/data/subdivisions/VU.yaml +8 -0
- data/lib/countries/data/subdivisions/WS.yaml +18 -0
- data/lib/countries/data/subdivisions/YE.yaml +16 -0
- data/lib/countries/data/subdivisions/ZA.yaml +5 -0
- data/lib/countries/data/subdivisions/ZM.yaml +24 -0
- data/lib/countries/data/subdivisions/ZW.yaml +21 -0
- data/lib/countries/data.rb +19 -50
- data/lib/countries/global.rb +0 -1
- data/lib/countries/iso3166.rb +3 -0
- data/lib/countries/sources/cldr/subdivision.rb +1 -1
- data/lib/countries/subdivision.rb +5 -0
- data/lib/countries/tasks/postal_codes.rake +5 -1
- data/lib/countries/version.rb +1 -1
- data/spec/country_spec.rb +118 -22
- data/spec/data_spec.rb +12 -8
- data/spec/spec_helper.rb +4 -0
- data/spec/subdivision_spec.rb +8 -0
- metadata +23 -16
- data/.rubocop_todo.yml +0 -19
- data/lib/countries/tasks/geocoding.rake +0 -106
|
@@ -161,6 +161,7 @@ FS:
|
|
|
161
161
|
mk: Фристејт
|
|
162
162
|
'no': Free State
|
|
163
163
|
yo_BJ: Free State
|
|
164
|
+
ga: an Saorstát Oráisteach
|
|
164
165
|
comments:
|
|
165
166
|
type: province
|
|
166
167
|
GP:
|
|
@@ -241,6 +242,7 @@ GP:
|
|
|
241
242
|
mk: Гаутенг
|
|
242
243
|
'no': Gauteng
|
|
243
244
|
yo_BJ: Gauteng
|
|
245
|
+
hu: Gauteng
|
|
244
246
|
comments:
|
|
245
247
|
type: province
|
|
246
248
|
LP:
|
|
@@ -320,6 +322,7 @@ LP:
|
|
|
320
322
|
mk: Лимпопо
|
|
321
323
|
'no': Limpopo
|
|
322
324
|
yo_BJ: Limpopo
|
|
325
|
+
hu: Limpopo (tartomány)
|
|
323
326
|
comments:
|
|
324
327
|
type: province
|
|
325
328
|
MP:
|
|
@@ -399,6 +402,7 @@ MP:
|
|
|
399
402
|
mk: Мпумаланга
|
|
400
403
|
'no': Mpumalanga
|
|
401
404
|
yo_BJ: Mpumalanga
|
|
405
|
+
hu: Mpumalanga
|
|
402
406
|
comments:
|
|
403
407
|
type: province
|
|
404
408
|
NC:
|
|
@@ -478,6 +482,7 @@ NC:
|
|
|
478
482
|
mk: Северен Кејп
|
|
479
483
|
'no': Northern Cape
|
|
480
484
|
yo_BJ: Northern Cape
|
|
485
|
+
gl: Cabo Setentrional
|
|
481
486
|
comments:
|
|
482
487
|
type: province
|
|
483
488
|
NW:
|
|
@@ -58,6 +58,10 @@
|
|
|
58
58
|
ccp: Western
|
|
59
59
|
hy: Արևմտյան պրովինցիա
|
|
60
60
|
'no': Western
|
|
61
|
+
ca: Província Occidental
|
|
62
|
+
fa: استان غربی (زامبیا)
|
|
63
|
+
he: מחוז המערב
|
|
64
|
+
zu: Western Province, Zambiya
|
|
61
65
|
comments:
|
|
62
66
|
type: province
|
|
63
67
|
'02':
|
|
@@ -120,6 +124,7 @@
|
|
|
120
124
|
ccp: Central
|
|
121
125
|
cs: Centrální provincie (Zambie)
|
|
122
126
|
'no': Central
|
|
127
|
+
fa: استان مرکزی، زامبیا
|
|
123
128
|
comments:
|
|
124
129
|
type: province
|
|
125
130
|
'03':
|
|
@@ -179,6 +184,9 @@
|
|
|
179
184
|
zh: 东方省
|
|
180
185
|
ccp: "\U0001111B\U0001112A\U00011107\U00011134\U0001111F\U0001112C\U00011107\U00011134\U00011108\U0001112C"
|
|
181
186
|
'no': Eastern
|
|
187
|
+
ca: Província de l’Est
|
|
188
|
+
fa: استان شرقی (زامبیا)
|
|
189
|
+
he: האזור המזרחי
|
|
182
190
|
comments:
|
|
183
191
|
type: province
|
|
184
192
|
'04':
|
|
@@ -239,6 +247,9 @@
|
|
|
239
247
|
ccp: "\U00011123\U0001112A\U00011120\U0001111B\U0001112A\U00011123"
|
|
240
248
|
ca: província de Luapula
|
|
241
249
|
'no': Luapula
|
|
250
|
+
cs: Provincie Luapula
|
|
251
|
+
fa: استان لوآپولا
|
|
252
|
+
hu: Luapula
|
|
242
253
|
comments:
|
|
243
254
|
type: province
|
|
244
255
|
'05':
|
|
@@ -297,6 +308,8 @@
|
|
|
297
308
|
zh: 北方省
|
|
298
309
|
ccp: "\U00011105\U0001112A\U00011116\U00011133\U00011126\U00011127\U00011122\U00011134\U0001111F\U0001112C\U00011107\U00011134\U00011108\U0001112C"
|
|
299
310
|
'no': Northern
|
|
311
|
+
fa: استان شمالی (زامبیا)
|
|
312
|
+
he: אזור הצפון
|
|
300
313
|
comments:
|
|
301
314
|
type: province
|
|
302
315
|
'06':
|
|
@@ -358,6 +371,8 @@
|
|
|
358
371
|
ccp: "\U00011105\U0001112A\U00011116\U00011133\U00011126\U00011127\U00011122\U00011134-\U0001111B\U00011127\U0001110F\U00011128\U0001111F\U00011134\U0001111F\U0001112C\U00011107\U00011134\U00011108\U0001112C"
|
|
359
372
|
yue: 西北省
|
|
360
373
|
'no': North-Western
|
|
374
|
+
ca: Província del Nord-oest
|
|
375
|
+
fa: استان شمال غربی (زامبیا)
|
|
361
376
|
comments:
|
|
362
377
|
type: province
|
|
363
378
|
'07':
|
|
@@ -418,6 +433,9 @@
|
|
|
418
433
|
zh: 南部省
|
|
419
434
|
ccp: "\U00011118\U00011127\U0001110A\U00011128\U0001111A\U00011134\U0001111F\U0001112C\U00011107\U00011134\U00011108\U0001112C"
|
|
420
435
|
'no': Southern
|
|
436
|
+
ca: Província Meridional
|
|
437
|
+
fa: استان جنوبی (زامبیا)
|
|
438
|
+
ga: Cúige an Deiscirt
|
|
421
439
|
comments:
|
|
422
440
|
type: province
|
|
423
441
|
'08':
|
|
@@ -480,6 +498,7 @@
|
|
|
480
498
|
ccp: "\U00011107\U0001112E\U0001111B\U0001112C\U00011122\U00011134\U0001111D\U0001112C\U00011123\U00011134\U00011111\U00011134"
|
|
481
499
|
ca: província de Copperbelt
|
|
482
500
|
'no': Copperbelt
|
|
501
|
+
he: מחוז קופרבלט
|
|
483
502
|
comments:
|
|
484
503
|
type: province
|
|
485
504
|
'09':
|
|
@@ -538,6 +557,9 @@
|
|
|
538
557
|
zh: 卢萨卡省
|
|
539
558
|
ccp: "\U00011123\U0001112A\U00011125\U00011107"
|
|
540
559
|
'no': Lusaka
|
|
560
|
+
ca: Lusaka
|
|
561
|
+
cy: Talaith Lusaka
|
|
562
|
+
fa: استان لوساکا
|
|
541
563
|
comments:
|
|
542
564
|
type: province
|
|
543
565
|
'10':
|
|
@@ -591,5 +613,7 @@
|
|
|
591
613
|
zh: 穆欽加省
|
|
592
614
|
ccp: "\U0001111F\U0001112A\U0001110C\U00011128\U00011101\U00011109"
|
|
593
615
|
'no': Muchinga
|
|
616
|
+
cy: Talaith Muchinga
|
|
617
|
+
fa: استان موچینگا
|
|
594
618
|
comments:
|
|
595
619
|
type: province
|
|
@@ -15,8 +15,12 @@ BU:
|
|
|
15
15
|
ru: Булавайо
|
|
16
16
|
ceb: Bulawayo Province
|
|
17
17
|
ar: إقليم بولاوايو
|
|
18
|
+
ja: ブラワヨ
|
|
18
19
|
ccp: "\U0001111D\U0001112A\U00011123\U00011124\U00011103\U0001112E"
|
|
19
20
|
be: Булавая
|
|
21
|
+
cy: Talaith Bulawayo
|
|
22
|
+
fr: province de Bulawayo
|
|
23
|
+
zh: 布拉瓦约省
|
|
20
24
|
comments:
|
|
21
25
|
type: province
|
|
22
26
|
HA:
|
|
@@ -43,6 +47,12 @@ HA:
|
|
|
43
47
|
nb: Harare Province
|
|
44
48
|
ne: हरारे प्रदेश
|
|
45
49
|
'no': Harare Province
|
|
50
|
+
cy: Talaith Harare
|
|
51
|
+
fa: استان هراره
|
|
52
|
+
lv: Harare
|
|
53
|
+
uk: Хараре
|
|
54
|
+
zh: 哈拉雷省
|
|
55
|
+
zu: Harare, Isifundazwe
|
|
46
56
|
comments:
|
|
47
57
|
type: province
|
|
48
58
|
MA:
|
|
@@ -106,6 +116,7 @@ MA:
|
|
|
106
116
|
sr_Latn: Manikalend
|
|
107
117
|
ccp: "\U0001111F\U00011127\U0001111A\U00011128\U00011107\U00011123\U00011133\U00011120\U0001111A\U00011133\U00011113\U00011134"
|
|
108
118
|
'no': Manicaland
|
|
119
|
+
zu: Manicaland
|
|
109
120
|
comments:
|
|
110
121
|
type: province
|
|
111
122
|
MC:
|
|
@@ -169,6 +180,7 @@ MC:
|
|
|
169
180
|
ccp: "\U0001111F\U00011125\U0001112E\U0001111A\U00011123\U00011133\U00011120\U0001111A\U00011133\U00011113\U00011134
|
|
170
181
|
\U00011125\U0001112C\U0001111A\U00011134\U00011111\U00011133\U00011122\U00011123\U00011134"
|
|
171
182
|
'no': Mashonaland Central
|
|
183
|
+
zu: Mashonaland Central
|
|
172
184
|
comments:
|
|
173
185
|
type: province
|
|
174
186
|
ME:
|
|
@@ -233,6 +245,7 @@ ME:
|
|
|
233
245
|
\U0001111B\U0001112A\U00011107\U00011134"
|
|
234
246
|
he: משונאלנד מזרח פרובינציה
|
|
235
247
|
'no': Mashonaland East
|
|
248
|
+
zu: Mashonaland East
|
|
236
249
|
comments:
|
|
237
250
|
type: province
|
|
238
251
|
MI:
|
|
@@ -295,6 +308,7 @@ MI:
|
|
|
295
308
|
sr_Latn: Midlends
|
|
296
309
|
ccp: "\U0001111F\U00011128\U00011116\U00011134\U00011123\U00011133\U00011120\U0001111A\U00011133\U00011113\U00011134\U00011125\U00011134"
|
|
297
310
|
'no': Midlands
|
|
311
|
+
zu: Midlands (Isifundazwe)
|
|
298
312
|
comments:
|
|
299
313
|
type: province
|
|
300
314
|
MN:
|
|
@@ -359,6 +373,7 @@ MN:
|
|
|
359
373
|
ccp: "\U0001111F\U00011111\U0001111D\U00011128\U00011123\U00011128\U00011123\U00011133\U00011120\U0001111A\U00011133\U00011113\U00011134
|
|
360
374
|
\U00011105\U0001112A\U00011116\U00011133\U00011126\U00011127\U00011122\U00011134"
|
|
361
375
|
'no': Matabeleland North
|
|
376
|
+
zu: Matabeleland North
|
|
362
377
|
comments:
|
|
363
378
|
type: province
|
|
364
379
|
MS:
|
|
@@ -422,6 +437,8 @@ MS:
|
|
|
422
437
|
ccp: "\U0001111F\U00011111\U0001111D\U00011128\U00011123\U00011128\U00011123\U00011133\U00011120\U0001111A\U00011133\U00011113\U00011134
|
|
423
438
|
\U00011118\U00011127\U0001110A\U00011128\U0001111A\U00011134"
|
|
424
439
|
'no': Matabeleland South
|
|
440
|
+
hy: Հարավային Մատաբելելենդ
|
|
441
|
+
zu: Matabeleland South
|
|
425
442
|
comments:
|
|
426
443
|
type: province
|
|
427
444
|
MV:
|
|
@@ -484,6 +501,8 @@ MV:
|
|
|
484
501
|
sr_Latn: Mašvingo
|
|
485
502
|
ccp: "\U0001111F\U0001110C\U00011134\U0001111E\U00011128\U00011101\U00011109\U0001112E"
|
|
486
503
|
'no': Masvingo
|
|
504
|
+
hy: Մասվինգո
|
|
505
|
+
zu: Masvingo (Isifundazwe)
|
|
487
506
|
comments:
|
|
488
507
|
type: province
|
|
489
508
|
MW:
|
|
@@ -547,5 +566,7 @@ MW:
|
|
|
547
566
|
ccp: "\U0001111F\U00011125\U0001112E\U0001111A\U00011123\U00011133\U00011120\U0001111A\U00011133\U00011113\U00011134
|
|
548
567
|
\U0001111B\U00011127\U0001110F\U00011128\U0001111F\U00011134"
|
|
549
568
|
'no': Mashonaland West
|
|
569
|
+
he: משונלנד-מערב
|
|
570
|
+
zu: Mashonaland West
|
|
550
571
|
comments:
|
|
551
572
|
type: province
|
data/lib/countries/data.rb
CHANGED
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
module ISO3166
|
|
4
4
|
# Handles building the in memory store of countries data
|
|
5
5
|
class Data
|
|
6
|
+
extend SubdivisionMethods
|
|
7
|
+
extend LocalesMethods
|
|
8
|
+
|
|
6
9
|
@cache_dir = [File.dirname(__FILE__), 'cache']
|
|
7
10
|
@cache = {}
|
|
8
11
|
@loaded_country_codes = []
|
|
@@ -19,15 +22,13 @@ module ISO3166
|
|
|
19
22
|
end
|
|
20
23
|
|
|
21
24
|
class << self
|
|
22
|
-
|
|
23
25
|
# Registers a new Country with custom data.
|
|
24
26
|
# If you are overriding an existing country, this does not perform a deep merge so you will need to __bring in all data you wish to be available__.
|
|
25
27
|
# Overriding an existing country will also remove it from the internal management of translations.
|
|
26
28
|
def register(data)
|
|
27
29
|
alpha2 = data[:alpha2].upcase
|
|
28
30
|
@registered_data[alpha2] = deep_stringify_keys(data)
|
|
29
|
-
@registered_data[alpha2]['translations'] =
|
|
30
|
-
Translations.new.merge(data['translations'] || {})
|
|
31
|
+
@registered_data[alpha2]['translations'] = Translations.new.merge(data['translations'] || {})
|
|
31
32
|
@cache = cache.merge(@registered_data)
|
|
32
33
|
end
|
|
33
34
|
|
|
@@ -70,26 +71,6 @@ module ISO3166
|
|
|
70
71
|
File.join([@cache_dir] + file_array)
|
|
71
72
|
end
|
|
72
73
|
|
|
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
|
-
|
|
93
74
|
private
|
|
94
75
|
|
|
95
76
|
def load_data!
|
|
@@ -129,9 +110,7 @@ module ISO3166
|
|
|
129
110
|
end
|
|
130
111
|
|
|
131
112
|
def load_required?
|
|
132
|
-
synchronized
|
|
133
|
-
@cache.empty?
|
|
134
|
-
end
|
|
113
|
+
synchronized { @cache.empty? }
|
|
135
114
|
end
|
|
136
115
|
|
|
137
116
|
def cached_codes
|
|
@@ -147,44 +126,36 @@ module ISO3166
|
|
|
147
126
|
!locales_to_load.empty? || !locales_to_remove.empty?
|
|
148
127
|
end
|
|
149
128
|
|
|
150
|
-
def locales_to_load
|
|
151
|
-
requested_locales - loaded_locales
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
def locales_to_remove
|
|
155
|
-
loaded_locales - requested_locales
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
def requested_locales
|
|
159
|
-
ISO3166.configuration.locales.map { |l| l.to_s.downcase }
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def loaded_locales
|
|
163
|
-
ISO3166.configuration.loaded_locales.map { |l| l.to_s.downcase }
|
|
164
|
-
end
|
|
165
|
-
|
|
166
129
|
def load_translations(locale)
|
|
167
130
|
synchronized do
|
|
168
131
|
locale_names = load_cache(['locales', "#{locale}.json"])
|
|
169
132
|
internal_codes.each do |alpha2|
|
|
170
|
-
|
|
171
|
-
@cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
|
|
172
|
-
@cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
|
|
133
|
+
load_alpha2_translation_for_locale(alpha2, locale, locale_names)
|
|
173
134
|
end
|
|
174
135
|
ISO3166.configuration.loaded_locales << locale
|
|
175
136
|
end
|
|
176
137
|
end
|
|
177
138
|
|
|
139
|
+
def load_alpha2_translation_for_locale(alpha2, locale, locale_names)
|
|
140
|
+
@cache[alpha2]['translations'] ||= Translations.new
|
|
141
|
+
@cache[alpha2]['translations'][locale] = locale_names[alpha2].freeze
|
|
142
|
+
@cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
|
|
143
|
+
end
|
|
144
|
+
|
|
178
145
|
def unload_translations(locale)
|
|
179
146
|
synchronized do
|
|
180
147
|
internal_codes.each do |alpha2|
|
|
181
|
-
|
|
182
|
-
@cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
|
|
148
|
+
unload_alpha2_translation_for_locale(alpha2, locale)
|
|
183
149
|
end
|
|
184
150
|
ISO3166.configuration.loaded_locales.delete(locale)
|
|
185
151
|
end
|
|
186
152
|
end
|
|
187
153
|
|
|
154
|
+
def unload_alpha2_translation_for_locale(alpha2, locale)
|
|
155
|
+
@cache[alpha2]['translations'].delete(locale)
|
|
156
|
+
@cache[alpha2]['translated_names'] = @cache[alpha2]['translations'].values.freeze
|
|
157
|
+
end
|
|
158
|
+
|
|
188
159
|
def load_cache(file_array)
|
|
189
160
|
file_path = datafile_path(file_array)
|
|
190
161
|
File.exist?(file_path) ? JSON.parse(File.binread(file_path)) : {}
|
|
@@ -192,9 +163,7 @@ module ISO3166
|
|
|
192
163
|
|
|
193
164
|
def deep_stringify_keys(data)
|
|
194
165
|
data.transform_keys!(&:to_s)
|
|
195
|
-
data.transform_values!
|
|
196
|
-
v.is_a?(Hash) ? deep_stringify_keys(v) : v
|
|
197
|
-
end
|
|
166
|
+
data.transform_values! { |v| v.is_a?(Hash) ? deep_stringify_keys(v) : v }
|
|
198
167
|
|
|
199
168
|
data
|
|
200
169
|
end
|
data/lib/countries/global.rb
CHANGED
data/lib/countries/iso3166.rb
CHANGED
|
@@ -4,9 +4,12 @@ require 'yaml'
|
|
|
4
4
|
require 'json'
|
|
5
5
|
|
|
6
6
|
require 'countries/configuration'
|
|
7
|
+
require 'countries/data/locales_methods'
|
|
8
|
+
require 'countries/data/subdivision_methods'
|
|
7
9
|
require 'countries/data'
|
|
8
10
|
require 'countries/structure'
|
|
9
11
|
require 'countries/translations'
|
|
12
|
+
require 'countries/country/country_subdivision_methods'
|
|
10
13
|
require 'countries/country/class_methods'
|
|
11
14
|
require 'countries/country/finder_methods'
|
|
12
15
|
require 'countries/country/emoji'
|
|
@@ -19,5 +19,10 @@ module ISO3166
|
|
|
19
19
|
def [](attr_name)
|
|
20
20
|
send attr_name
|
|
21
21
|
end
|
|
22
|
+
|
|
23
|
+
# @return [Hash] A hash with the subdivision code as key and the hash of translated subdivision names ( locale => name ) as value.
|
|
24
|
+
def code_with_translations
|
|
25
|
+
{ code => translations }
|
|
26
|
+
end
|
|
22
27
|
end
|
|
23
28
|
end
|
|
@@ -19,7 +19,11 @@ namespace :postal_codes do
|
|
|
19
19
|
postal_code_format_index = data.find_index { |d| d[0] == 'postal_code_format' }
|
|
20
20
|
|
|
21
21
|
response = URI.open("https://chromium-i18n.appspot.com/ssl-address/data/#{country_code}").read
|
|
22
|
-
json =
|
|
22
|
+
json = begin
|
|
23
|
+
JSON.parse(response)
|
|
24
|
+
rescue StandardError
|
|
25
|
+
{}
|
|
26
|
+
end
|
|
23
27
|
puts ' - Returned empty data. Skipping ' and next if json.empty?
|
|
24
28
|
|
|
25
29
|
postal_code = ['postal_code', !json['zip'].nil?]
|
data/lib/countries/version.rb
CHANGED
data/spec/country_spec.rb
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
NUM_OF_COUNTRIES = 249
|
|
5
5
|
describe ISO3166::Country do
|
|
6
|
-
before
|
|
6
|
+
before do
|
|
7
|
+
ISO3166::Data.reset
|
|
8
|
+
ISO3166.configuration.enable_currency_extension!
|
|
9
|
+
end
|
|
10
|
+
|
|
7
11
|
let(:country) { ISO3166::Country.search('US') }
|
|
8
12
|
|
|
9
13
|
it 'allows to create a country object from a symbol representation of the alpha2 code' do
|
|
@@ -48,11 +52,11 @@ describe ISO3166::Country do
|
|
|
48
52
|
end
|
|
49
53
|
|
|
50
54
|
it 'should return alternate names' do
|
|
51
|
-
expect(country.unofficial_names).to eq([
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
expect(country.unofficial_names).to eq(['United States', 'USA',
|
|
56
|
+
'Vereinigte Staaten von Amerika',
|
|
57
|
+
'États-Unis', 'Estados Unidos',
|
|
58
|
+
'アメリカ合衆国', 'Verenigde Staten',
|
|
59
|
+
'Соединенные Штаты Америки'])
|
|
56
60
|
end
|
|
57
61
|
|
|
58
62
|
it 'should return translations' do
|
|
@@ -149,7 +153,7 @@ describe ISO3166::Country do
|
|
|
149
153
|
ISO3166::Data.register(
|
|
150
154
|
alpha2: 'BR2',
|
|
151
155
|
iso_short_name: 'Brazil',
|
|
152
|
-
languages_official: %w
|
|
156
|
+
languages_official: %w[pt-BR],
|
|
153
157
|
translations: {
|
|
154
158
|
'pt-BR' => 'Translation for pt-BR',
|
|
155
159
|
'pt' => 'Translation for pt'
|
|
@@ -173,7 +177,7 @@ describe ISO3166::Country do
|
|
|
173
177
|
ISO3166::Data.register(
|
|
174
178
|
alpha2: 'BR2',
|
|
175
179
|
iso_short_name: 'Brazil',
|
|
176
|
-
languages_official: %w
|
|
180
|
+
languages_official: %w[pt-BR],
|
|
177
181
|
translations: {
|
|
178
182
|
'pt' => 'Translation for pt'
|
|
179
183
|
}
|
|
@@ -241,7 +245,7 @@ describe ISO3166::Country do
|
|
|
241
245
|
end
|
|
242
246
|
|
|
243
247
|
it '#states should be deprecated' do
|
|
244
|
-
expect {country.states}.to output.to_stderr
|
|
248
|
+
expect { country.states }.to output.to_stderr
|
|
245
249
|
end
|
|
246
250
|
|
|
247
251
|
it 'should be a subdivision object' do
|
|
@@ -262,54 +266,54 @@ describe ISO3166::Country do
|
|
|
262
266
|
end
|
|
263
267
|
|
|
264
268
|
describe 'subdivision_types' do
|
|
265
|
-
it
|
|
269
|
+
it 'should return an array of subdivision types' do
|
|
266
270
|
expect(country.subdivision_types).to contain_exactly('district', 'state', 'outlying_area')
|
|
267
271
|
end
|
|
268
272
|
|
|
269
|
-
it
|
|
273
|
+
it 'should return an array of subdivision types even if there is only a single type' do
|
|
270
274
|
expect(ISO3166::Country['LI'].subdivision_types).to contain_exactly('commune')
|
|
271
275
|
end
|
|
272
276
|
|
|
273
|
-
it
|
|
277
|
+
it 'should return an empty array if country has no subdivisions' do
|
|
274
278
|
expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
|
|
275
279
|
expect(ISO3166::Country['AS'].subdivision_types).to eq([])
|
|
276
280
|
end
|
|
277
281
|
end
|
|
278
282
|
|
|
279
283
|
describe 'subdivisions_of_types' do
|
|
280
|
-
it
|
|
284
|
+
it 'given a single type, should return an array of subdivisions that match the type' do
|
|
281
285
|
us_states = country.subdivisions_of_types(%w[state])
|
|
282
286
|
expect(us_states.size).to eq(50)
|
|
283
287
|
dc = country.subdivisions_of_types(%w[district])
|
|
284
288
|
expect(dc.size).to eq(1)
|
|
285
289
|
end
|
|
286
290
|
|
|
287
|
-
it
|
|
291
|
+
it 'given multiple types, should return an array of subdivisions matching the types' do
|
|
288
292
|
us_states_plus_dc = country.subdivisions_of_types(%w[state district])
|
|
289
293
|
expect(us_states_plus_dc.size).to eq(51)
|
|
290
294
|
end
|
|
291
295
|
|
|
292
|
-
it
|
|
296
|
+
it 'given multiple types where at least one does not exist for that country, should work without issue' do
|
|
293
297
|
us_states_plus_dc = country.subdivisions_of_types(%w[state district governorate])
|
|
294
298
|
expect(us_states_plus_dc.size).to eq(51)
|
|
295
299
|
end
|
|
296
300
|
|
|
297
|
-
it
|
|
301
|
+
it 'given only types that do not exist for that country, should return an empty collection' do
|
|
298
302
|
should_be_empty = ISO3166::Country['PT'].subdivisions_of_types(%w[state county])
|
|
299
303
|
expect(should_be_empty).to be_empty
|
|
300
304
|
end
|
|
301
305
|
end
|
|
302
306
|
|
|
303
307
|
describe 'humanized_subdivision_types' do
|
|
304
|
-
it
|
|
308
|
+
it 'should return an array of humanized subdivision types' do
|
|
305
309
|
expect(country.humanized_subdivision_types).to contain_exactly('District', 'State', 'Outlying area')
|
|
306
310
|
end
|
|
307
311
|
|
|
308
|
-
it
|
|
312
|
+
it 'should return an array of subdivision types even if there is only a single type' do
|
|
309
313
|
expect(ISO3166::Country['LI'].humanized_subdivision_types).to contain_exactly('Commune')
|
|
310
314
|
end
|
|
311
315
|
|
|
312
|
-
it
|
|
316
|
+
it 'should return an empty array if country has no subdivisions' do
|
|
313
317
|
expect(ISO3166::Country['AS'].subdivisions?).to be_falsey
|
|
314
318
|
expect(ISO3166::Country['AS'].humanized_subdivision_types).to eq([])
|
|
315
319
|
end
|
|
@@ -878,7 +882,12 @@ describe ISO3166::Country do
|
|
|
878
882
|
context 'regression test for #388/#746/#776' do
|
|
879
883
|
before do
|
|
880
884
|
ISO3166.configure do |config|
|
|
881
|
-
config.locales = [
|
|
885
|
+
config.locales = %i[af am ar as az be bg bn br bs ca cs cy da de dz el en
|
|
886
|
+
eo es et eu fa fi fo fr ga gl gu he hi hr hu hy ia id
|
|
887
|
+
is it ja ka kk km kn ko ku lt lv mi mk ml mn mr ms mt
|
|
888
|
+
nb ne nl nn oc or pa pl ps pt ro ru rw si sk sl so sq
|
|
889
|
+
sr sv sw ta te th ti tk tl tr tt ug uk ve vi wa wo xh
|
|
890
|
+
zh zu]
|
|
882
891
|
end
|
|
883
892
|
end
|
|
884
893
|
|
|
@@ -1071,6 +1080,24 @@ describe ISO3166::Country do
|
|
|
1071
1080
|
end
|
|
1072
1081
|
end
|
|
1073
1082
|
|
|
1083
|
+
describe 'gdpr_compliant?' do
|
|
1084
|
+
let(:united_kigndom) { ISO3166::Country.search('GB') }
|
|
1085
|
+
let(:france) { ISO3166::Country.search('FR') }
|
|
1086
|
+
let(:mexico) { ISO3166::Country.search('MX') }
|
|
1087
|
+
|
|
1088
|
+
it 'should return false for countries without eea_member flag' do
|
|
1089
|
+
expect(mexico.gdpr_compliant?).to be_falsey
|
|
1090
|
+
end
|
|
1091
|
+
|
|
1092
|
+
it 'should return true for countries with eea_member flag set to true' do
|
|
1093
|
+
expect(france.gdpr_compliant?).to be_truthy
|
|
1094
|
+
end
|
|
1095
|
+
|
|
1096
|
+
it 'should return true for UK' do
|
|
1097
|
+
expect(united_kigndom.gdpr_compliant?).to be_truthy
|
|
1098
|
+
end
|
|
1099
|
+
end
|
|
1100
|
+
|
|
1074
1101
|
describe 'in_esm?' do
|
|
1075
1102
|
let(:netherlands) { ISO3166::Country.search('NL') }
|
|
1076
1103
|
let(:switzerland) { ISO3166::Country.search('CH') }
|
|
@@ -1214,13 +1241,82 @@ describe ISO3166::Country do
|
|
|
1214
1241
|
expect(subject.last).to be_empty
|
|
1215
1242
|
end
|
|
1216
1243
|
|
|
1217
|
-
context
|
|
1218
|
-
let(:args) { [
|
|
1244
|
+
context 'when asking for alpha2, alpha3 and iso_short_name' do
|
|
1245
|
+
let(:args) { %i[alpha2 alpha3 iso_short_name] }
|
|
1219
1246
|
|
|
1220
1247
|
it 'returns the correct values' do
|
|
1221
1248
|
expect(subject.first).to eq(%w[AD AND Andorra])
|
|
1222
1249
|
expect(subject.last).to eq(%w[ZW ZWE Zimbabwe])
|
|
1223
1250
|
end
|
|
1224
1251
|
end
|
|
1252
|
+
|
|
1253
|
+
context 'with invalid attributes' do
|
|
1254
|
+
let(:args) { %i[alpha2 bad_attribute] }
|
|
1255
|
+
|
|
1256
|
+
it 'should raise an error' do
|
|
1257
|
+
expect { subject }.to(
|
|
1258
|
+
raise_error(KeyError, 'key not found: "bad_attribute"')
|
|
1259
|
+
)
|
|
1260
|
+
end
|
|
1261
|
+
end
|
|
1262
|
+
end
|
|
1263
|
+
|
|
1264
|
+
describe 'find_subdivision_by_name' do
|
|
1265
|
+
let(:italy) { ISO3166::Country.new('IT') }
|
|
1266
|
+
let(:napoli) { italy.subdivisions['NA'] }
|
|
1267
|
+
|
|
1268
|
+
before do
|
|
1269
|
+
ISO3166.configuration.locales = %i[pt]
|
|
1270
|
+
end
|
|
1271
|
+
|
|
1272
|
+
it 'should find a subdivision using the official name' do
|
|
1273
|
+
expect(ISO3166::Country.new('IT').find_subdivision_by_name('Napoli')).to eq napoli
|
|
1274
|
+
end
|
|
1275
|
+
|
|
1276
|
+
it 'should find a subdivision using the code' do
|
|
1277
|
+
expect(ISO3166::Country.new('IT').find_subdivision_by_name('NA')).to eq napoli
|
|
1278
|
+
end
|
|
1279
|
+
|
|
1280
|
+
it 'should find a subdivision using a translated name' do
|
|
1281
|
+
expect(ISO3166::Country.new('IT').find_subdivision_by_name('Nápoles')).to eq napoli
|
|
1282
|
+
end
|
|
1283
|
+
end
|
|
1284
|
+
|
|
1285
|
+
describe 'collect_countries_with' do
|
|
1286
|
+
let(:italy) { ISO3166::Country.new('IT') }
|
|
1287
|
+
let(:vatican) { ISO3166::Country.new('VA') }
|
|
1288
|
+
let(:san_marino) { ISO3166::Country.new('SM') }
|
|
1289
|
+
let(:switzerland) { ISO3166::Country.new('CH') }
|
|
1290
|
+
let(:seychelles) { ISO3166::Country.new('SC') }
|
|
1291
|
+
|
|
1292
|
+
it 'defaults to querying alpha2 and returning the countries' do
|
|
1293
|
+
expect(ISO3166::Country.collect_countries_with('IT')).to eq [italy]
|
|
1294
|
+
end
|
|
1295
|
+
|
|
1296
|
+
it 'allows querying by other attributes' do
|
|
1297
|
+
expect(ISO3166::Country.collect_countries_with('🇸🇨', :emoji_flag)).to eq [seychelles]
|
|
1298
|
+
expect(ISO3166::Country.collect_countries_with('it',
|
|
1299
|
+
:languages_spoken)).to eq [switzerland, italy, san_marino, vatican]
|
|
1300
|
+
end
|
|
1301
|
+
|
|
1302
|
+
it 'allows applying a method to the result set' do
|
|
1303
|
+
expect(ISO3166::Country.collect_countries_with('Caribbean', :subregion,
|
|
1304
|
+
:languages_spoken).flatten.uniq).to eq %w[en nl fr es ht]
|
|
1305
|
+
end
|
|
1306
|
+
end
|
|
1307
|
+
|
|
1308
|
+
describe 'collect_likely_countries_by_subdivision_name' do
|
|
1309
|
+
let(:costa_rica) { ISO3166::Country.new('CR') }
|
|
1310
|
+
let(:uruguay) { ISO3166::Country.new('UY') }
|
|
1311
|
+
|
|
1312
|
+
it 'defaults to returning the countries' do
|
|
1313
|
+
expect(ISO3166::Country.collect_likely_countries_by_subdivision_name('San José')).to eq [costa_rica, uruguay]
|
|
1314
|
+
end
|
|
1315
|
+
|
|
1316
|
+
it 'allows applying a method to the result set' do
|
|
1317
|
+
expect(ISO3166::Country.collect_likely_countries_by_subdivision_name('San José',
|
|
1318
|
+
:iso_short_name)).to eq ['Costa Rica',
|
|
1319
|
+
'Uruguay']
|
|
1320
|
+
end
|
|
1225
1321
|
end
|
|
1226
1322
|
end
|