kountries 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,530 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ostruct'
4
+
5
+ module Kountries
6
+ # Africa
7
+ module Africa
8
+ def self.find_country_by_name(name)
9
+ constants.each do |country|
10
+ african_country_class = Module.const_get "Kountries::Africa::#{country}"
11
+ return as_struct(african_country_class) if african_country_class::NAME.upcase == name.upcase
12
+ return as_struct(african_country_class) if african_country_class::UN_OFFICIAL_NAMES.include?(name.capitalize)
13
+ end
14
+
15
+ empty_struct
16
+ end
17
+
18
+ def self.find_country_by_code(code)
19
+ return empty_struct unless Kountries::Africa.constants.include?(code.intern)
20
+
21
+ african_country_class = Module.const_get "Kountries::Africa::#{code}"
22
+ return as_struct(african_country_class) if african_country_class::ALPHA_2 == code
23
+ end
24
+
25
+ def self.as_struct(african_country_class)
26
+ OpenStruct.new(
27
+ alpha2: african_country_class::ALPHA_2,
28
+ alpha3: african_country_class::ALPHA_3,
29
+ country_code: african_country_class::COUNTRY_CODE,
30
+ name: african_country_class::NAME,
31
+ unofficial_names: african_country_class::UN_OFFICIAL_NAMES
32
+ )
33
+ end
34
+
35
+ def self.empty_struct
36
+ OpenStruct.new(
37
+ alpha2: nil,
38
+ alpha3: nil,
39
+ country_code: nil,
40
+ name: nil,
41
+ unofficial_names: nil
42
+ )
43
+ end
44
+
45
+ class ST
46
+ ALPHA_2 = "ST"
47
+ ALPHA_3 = "STP"
48
+ COUNTRY_CODE = "239"
49
+ NAME = "Sao Tome and Principe"
50
+ UN_OFFICIAL_NAMES = ["São Tomé and Príncipe", "São Tomé und Príncipe", "São Tomé et Príncipe",
51
+ "Santo Tomé y Príncipe", "サントメ・プリンシペ",
52
+ "Sao Tomé en Principe"].freeze
53
+ end
54
+
55
+ class GH
56
+ ALPHA_2 = "GH"
57
+ ALPHA_3 = "GHA"
58
+ COUNTRY_CODE = "233"
59
+ NAME = "Ghana"
60
+ UN_OFFICIAL_NAMES = %w[Ghana ガーナ].freeze
61
+ end
62
+
63
+ class CI
64
+ ALPHA_2 = "CI"
65
+ ALPHA_3 = "CIV"
66
+ COUNTRY_CODE = "225"
67
+ NAME = "Côte d'Ivoire"
68
+ UN_OFFICIAL_NAMES = ["Côte D'Ivoire", "Elfenbeinküste", "コートジボワール", "Ivoorkust", "Cote D'Ivoire (Ivory Coast)",
69
+ "Cote d Ivoire (Ivory Coast)", "Ivory Coast"].freeze
70
+ end
71
+
72
+ class LY
73
+ ALPHA_2 = "LY"
74
+ ALPHA_3 = "LBY"
75
+ COUNTRY_CODE = "218"
76
+ NAME = "Libya"
77
+ UN_OFFICIAL_NAMES = ["Libya", "ليبيا", "Libyen", "Libye", "Libia", "リビア", "Libië",
78
+ "Libyan Arab Jamahiriya"].freeze
79
+ end
80
+
81
+ class GQ
82
+ ALPHA_2 = "GQ"
83
+ ALPHA_3 = "GNQ"
84
+ COUNTRY_CODE = "240"
85
+ NAME = "Equatorial Guinea"
86
+ UN_OFFICIAL_NAMES = ["Equatorial Guinea", "Äquatorial-Guinea", "Guinée Équatoriale", "Guinea Ecuatorial", "赤道ギニア",
87
+ "Equatoriaal-Guinea"].freeze
88
+ end
89
+
90
+ class EH
91
+ ALPHA_2 = "EH"
92
+ ALPHA_3 = "ESH"
93
+ COUNTRY_CODE = "212"
94
+ NAME = "Western Sahara"
95
+ UN_OFFICIAL_NAMES = ["Western Sahara", "الصحراء الغربية", "Westsahara", "Sahara Occidental", "西サハラ",
96
+ "Westelijke Sahara"].freeze
97
+ end
98
+
99
+ class SL
100
+ ALPHA_2 = "SL"
101
+ ALPHA_3 = "SLE"
102
+ COUNTRY_CODE = "232"
103
+ NAME = "Sierra Leone"
104
+ UN_OFFICIAL_NAMES = ["Sierra Leone", "シエラレオネ"].freeze
105
+ end
106
+
107
+ class CD
108
+ ALPHA_2 = "CD"
109
+ ALPHA_3 = "COD"
110
+ COUNTRY_CODE = "243"
111
+ NAME = "Congo (Democratic Republic of the)"
112
+ UN_OFFICIAL_NAMES = ["Congo (Dem. Rep.)", "Kongo (Dem. Rep.)", "Congo (Rep. Dem.)", "コンゴ民主共和国", "Congo [DRC]",
113
+ "Congo (The Democratic Republic Of The)", "Democratic Republic of the Congo",
114
+ "Congo, Democratic Republic of"].freeze
115
+ end
116
+
117
+ class DZ
118
+ ALPHA_2 = "DZ"
119
+ ALPHA_3 = "DZA"
120
+ COUNTRY_CODE = "213"
121
+ NAME = "Algeria"
122
+ UN_OFFICIAL_NAMES = %w[Algeria الجزائر Algerien Algérie Argelia アルジェリア Algerije].freeze
123
+ end
124
+
125
+ class NA
126
+ ALPHA_2 = "NA"
127
+ ALPHA_3 = "NAM"
128
+ COUNTRY_CODE = "264"
129
+ NAME = "Namibia"
130
+ UN_OFFICIAL_NAMES = %w[Namibia Namibie ナミビア Namibië].freeze
131
+ end
132
+
133
+ class BW
134
+ ALPHA_2 = "BW"
135
+ ALPHA_3 = "BWA"
136
+ COUNTRY_CODE = "267"
137
+ NAME = "Botswana"
138
+ UN_OFFICIAL_NAMES = %w[Botswana ボツワナ].freeze
139
+ end
140
+
141
+ class TG
142
+ ALPHA_2 = "TG"
143
+ ALPHA_3 = "TGO"
144
+ COUNTRY_CODE = "228"
145
+ NAME = "Togo"
146
+ UN_OFFICIAL_NAMES = %w[Togo トーゴ].freeze
147
+ end
148
+
149
+ class MG
150
+ ALPHA_2 = "MG"
151
+ ALPHA_3 = "MDG"
152
+ COUNTRY_CODE = "261"
153
+ NAME = "Madagascar"
154
+ UN_OFFICIAL_NAMES = ["Madagascar", "Madagaskar", "the Republic of Madagascar", "マダガスカル"].freeze
155
+ end
156
+
157
+ class MR
158
+ ALPHA_2 = "MR"
159
+ ALPHA_3 = "MRT"
160
+ COUNTRY_CODE = "222"
161
+ NAME = "Mauritania"
162
+ UN_OFFICIAL_NAMES = %w[Mauritania موريتانيا Mauretanien Mauritanie モーリタニア Mauritanië].freeze
163
+ end
164
+
165
+ class AO
166
+ ALPHA_2 = "AO"
167
+ ALPHA_3 = "AGO"
168
+ COUNTRY_CODE = "244"
169
+ NAME = "Angola"
170
+ UN_OFFICIAL_NAMES = %w[Angola アンゴラ].freeze
171
+ end
172
+
173
+ class CV
174
+ ALPHA_2 = "CV"
175
+ ALPHA_3 = "CPV"
176
+ COUNTRY_CODE = "238"
177
+ NAME = "Cabo Verde"
178
+ UN_OFFICIAL_NAMES = ["Cape Verde", "Kap Verde", "Cap Vert", "Cabo Verde", "カーボベルデ", "Kaapverdië"].freeze
179
+ end
180
+
181
+ class GW
182
+ ALPHA_2 = "GW"
183
+ ALPHA_3 = "GNB"
184
+ COUNTRY_CODE = "245"
185
+ NAME = "Guinea-Bissau"
186
+ UN_OFFICIAL_NAMES = ["Guinea-Bissau", "Guinée-Bissau", "ギニアビサウ", "Guinee-Bissau", "Guinea Bissau"].freeze
187
+ end
188
+
189
+ class ML
190
+ ALPHA_2 = "ML"
191
+ ALPHA_3 = "MLI"
192
+ COUNTRY_CODE = "223"
193
+ NAME = "Mali"
194
+ UN_OFFICIAL_NAMES = %w[Mali マリ].freeze
195
+ end
196
+
197
+ class MU
198
+ ALPHA_2 = "MU"
199
+ ALPHA_3 = "MUS"
200
+ COUNTRY_CODE = "230"
201
+ NAME = "Mauritius"
202
+ UN_OFFICIAL_NAMES = ["Mauritius", "Île Maurice", "Mauricio", "モーリシャス"].freeze
203
+ end
204
+
205
+ class LS
206
+ ALPHA_2 = "LS"
207
+ ALPHA_3 = "LSO"
208
+ COUNTRY_CODE = "266"
209
+ NAME = "Lesotho"
210
+ UN_OFFICIAL_NAMES = %w[Lesotho レソト].freeze
211
+ end
212
+
213
+ class KM
214
+ ALPHA_2 = "KM"
215
+ ALPHA_3 = "COM"
216
+ COUNTRY_CODE = "269"
217
+ NAME = "Comoros"
218
+ UN_OFFICIAL_NAMES = ["Comoros", "Union der Komoren", "Comores", "コモロ", "Comoren"].freeze
219
+ end
220
+
221
+ class BI
222
+ ALPHA_2 = "BI"
223
+ ALPHA_3 = "BDI"
224
+ COUNTRY_CODE = "257"
225
+ NAME = "Burundi"
226
+ UN_OFFICIAL_NAMES = %w[Burundi ブルンジ].freeze
227
+ end
228
+
229
+ class GN
230
+ ALPHA_2 = "GN"
231
+ ALPHA_3 = "GIN"
232
+ COUNTRY_CODE = "224"
233
+ NAME = "Guinea"
234
+ UN_OFFICIAL_NAMES = %w[Guinea Guinée ギニア Guinee].freeze
235
+ end
236
+
237
+ class MA
238
+ ALPHA_2 = "MA"
239
+ ALPHA_3 = "MAR"
240
+ COUNTRY_CODE = "212"
241
+ NAME = "Morocco"
242
+ UN_OFFICIAL_NAMES = %w[Morocco المغرب Marokko Maroc Marruecos モロッコ].freeze
243
+ end
244
+
245
+ class ZW
246
+ ALPHA_2 = "ZW"
247
+ ALPHA_3 = "ZWE"
248
+ COUNTRY_CODE = "263"
249
+ NAME = "Zimbabwe"
250
+ UN_OFFICIAL_NAMES = %w[Zimbabwe Simbabwe Zimbabue ジンバブエ].freeze
251
+ end
252
+
253
+ class LR
254
+ ALPHA_2 = "LR"
255
+ ALPHA_3 = "LBR"
256
+ COUNTRY_CODE = "231"
257
+ NAME = "Liberia"
258
+ UN_OFFICIAL_NAMES = %w[Liberia リベリア].freeze
259
+ end
260
+
261
+ class SS
262
+ ALPHA_2 = "SS"
263
+ ALPHA_3 = "SSD"
264
+ COUNTRY_CODE = "211"
265
+ NAME = "South Sudan"
266
+ UN_OFFICIAL_NAMES = ["South Sudan", "Südsudan", "南スーダン", "Zuid-Soedan"].freeze
267
+ end
268
+
269
+ class UG
270
+ ALPHA_2 = "UG"
271
+ ALPHA_3 = "UGA"
272
+ COUNTRY_CODE = "256"
273
+ NAME = "Uganda"
274
+ UN_OFFICIAL_NAMES = %w[Uganda ウガンダ Oeganda].freeze
275
+ end
276
+
277
+ class NG
278
+ ALPHA_2 = "NG"
279
+ ALPHA_3 = "NGA"
280
+ COUNTRY_CODE = "234"
281
+ NAME = "Nigeria"
282
+ UN_OFFICIAL_NAMES = ["Nigeria", "Nigéria", "the Federal Republic of Nigeria", "ナイジェリア"].freeze
283
+ end
284
+
285
+ class IO
286
+ ALPHA_2 = "IO"
287
+ ALPHA_3 = "IOT"
288
+ COUNTRY_CODE = "246"
289
+ NAME = "British Indian Ocean Territory"
290
+ UN_OFFICIAL_NAMES = ["British Indian Ocean Territory", "Britisches Territorium im Indischen Ozean", "イギリス領インド洋地域",
291
+ "Britse Gebieden in de Indische Oceaan"].freeze
292
+ end
293
+
294
+ class ZM
295
+ ALPHA_2 = "ZM"
296
+ ALPHA_3 = "ZMB"
297
+ COUNTRY_CODE = "260"
298
+ NAME = "Zambia"
299
+ UN_OFFICIAL_NAMES = %w[Zambia Sambia Zambie ザンビア].freeze
300
+ end
301
+
302
+ class DJ
303
+ ALPHA_2 = "DJ"
304
+ ALPHA_3 = "DJI"
305
+ COUNTRY_CODE = "253"
306
+ NAME = "Djibouti"
307
+ UN_OFFICIAL_NAMES = %w[Djibouti جيبوتي Dschibuti ジブチ].freeze
308
+ end
309
+
310
+ class CM
311
+ ALPHA_2 = "CM"
312
+ ALPHA_3 = "CMR"
313
+ COUNTRY_CODE = "237"
314
+ NAME = "Cameroon"
315
+ UN_OFFICIAL_NAMES = %w[Cameroon Kamerun Cameroun Camerún カメルーン Kameroen].freeze
316
+ end
317
+
318
+ class MW
319
+ ALPHA_2 = "MW"
320
+ ALPHA_3 = "MWI"
321
+ COUNTRY_CODE = "265"
322
+ NAME = "Malawi"
323
+ UN_OFFICIAL_NAMES = %w[Malawi マラウイ].freeze
324
+ end
325
+
326
+ class TN
327
+ ALPHA_2 = "TN"
328
+ ALPHA_3 = "TUN"
329
+ COUNTRY_CODE = "216"
330
+ NAME = "Tunisia"
331
+ UN_OFFICIAL_NAMES = %w[Tunisia تونس Tunesien Tunisie Túnez チュニジア Tunesië].freeze
332
+ end
333
+
334
+ class ZA
335
+ ALPHA_2 = "ZA"
336
+ ALPHA_3 = "ZAF"
337
+ COUNTRY_CODE = "27"
338
+ NAME = "South Africa"
339
+ UN_OFFICIAL_NAMES = ["South Africa", "Republik Südafrika", "Afrique du Sud", "República de Sudáfrica", "南アフリカ",
340
+ "Zuid-Afrika"].freeze
341
+ end
342
+
343
+ class RW
344
+ ALPHA_2 = "RW"
345
+ ALPHA_3 = "RWA"
346
+ COUNTRY_CODE = "250"
347
+ NAME = "Rwanda"
348
+ UN_OFFICIAL_NAMES = %w[Rwanda Ruanda ルワンダ].freeze
349
+ end
350
+
351
+ class BJ
352
+ ALPHA_2 = "BJ"
353
+ ALPHA_3 = "BEN"
354
+ COUNTRY_CODE = "229"
355
+ NAME = "Benin"
356
+ UN_OFFICIAL_NAMES = %w[Benin Bénin ベナン].freeze
357
+ end
358
+
359
+ class ET
360
+ ALPHA_2 = "ET"
361
+ ALPHA_3 = "ETH"
362
+ COUNTRY_CODE = "251"
363
+ NAME = "Ethiopia"
364
+ UN_OFFICIAL_NAMES = %w[Ethiopia Äthiopien Éthiopie Etiopía エチオピア Ethiopië].freeze
365
+ end
366
+
367
+ class GM
368
+ ALPHA_2 = "GM"
369
+ ALPHA_3 = "GMB"
370
+ COUNTRY_CODE = "220"
371
+ NAME = "Gambia"
372
+ UN_OFFICIAL_NAMES = %w[Gambia ガンビア].freeze
373
+ end
374
+
375
+ class TZ
376
+ ALPHA_2 = "TZ"
377
+ ALPHA_3 = "TZA"
378
+ COUNTRY_CODE = "255"
379
+ NAME = "Tanzania, United Republic of"
380
+ UN_OFFICIAL_NAMES = ["Tanzania", "Tansania", "Tanzanie", "タンザニア", "Tanzania United Republic"].freeze
381
+ end
382
+
383
+ class SD
384
+ ALPHA_2 = "SD"
385
+ ALPHA_3 = "SDN"
386
+ COUNTRY_CODE = "249"
387
+ NAME = "Sudan"
388
+ UN_OFFICIAL_NAMES = %w[Sudan السودان Soudan Sudán スーダン Soedan].freeze
389
+ end
390
+
391
+ class MZ
392
+ ALPHA_2 = "MZ"
393
+ ALPHA_3 = "MOZ"
394
+ COUNTRY_CODE = "258"
395
+ NAME = "Mozambique"
396
+ UN_OFFICIAL_NAMES = %w[Mozambique Mosambik モザンビーク].freeze
397
+ end
398
+
399
+ class NE
400
+ ALPHA_2 = "NE"
401
+ ALPHA_3 = "NER"
402
+ COUNTRY_CODE = "227"
403
+ NAME = "Niger"
404
+ UN_OFFICIAL_NAMES = %w[Niger Níger ニジェール].freeze
405
+ end
406
+
407
+ class BF
408
+ ALPHA_2 = "BF"
409
+ ALPHA_3 = "BFA"
410
+ COUNTRY_CODE = "226"
411
+ NAME = "Burkina Faso"
412
+ UN_OFFICIAL_NAMES = ["Burkina Faso", "ブルキナファソ"].freeze
413
+ end
414
+
415
+ class GA
416
+ ALPHA_2 = "GA"
417
+ ALPHA_3 = "GAB"
418
+ COUNTRY_CODE = "241"
419
+ NAME = "Gabon"
420
+ UN_OFFICIAL_NAMES = %w[Gabon Gabun Gabón ガボン].freeze
421
+ end
422
+
423
+ class SH
424
+ ALPHA_2 = "SH"
425
+ ALPHA_3 = "SHN"
426
+ COUNTRY_CODE = "290"
427
+ NAME = "Saint Helena, Ascension and Tristan da Cunha"
428
+ UN_OFFICIAL_NAMES = ["Saint Helena", "Sankt Helena", "Sainte Hélène",
429
+ "Santa Helena", "セントヘレナ・アセンションおよびトリスタンダクーニャ", "Sint-Helena",
430
+ "Saint Helena, Ascension and Tristan da Cunha"].freeze
431
+ end
432
+
433
+ class SC
434
+ ALPHA_2 = "SC"
435
+ ALPHA_3 = "SYC"
436
+ COUNTRY_CODE = "248"
437
+ NAME = "Seychelles"
438
+ UN_OFFICIAL_NAMES = %w[Seychelles Seychellen セーシェル].freeze
439
+ end
440
+
441
+ class RE
442
+ ALPHA_2 = "RE"
443
+ ALPHA_3 = "REU"
444
+ COUNTRY_CODE = "262"
445
+ NAME = "Réunion"
446
+ UN_OFFICIAL_NAMES = %w[Réunion Reunión Reunion レユニオン].freeze
447
+ end
448
+
449
+ class SO
450
+ ALPHA_2 = "SO"
451
+ ALPHA_3 = "SOM"
452
+ COUNTRY_CODE = "252"
453
+ NAME = "Somalia"
454
+ UN_OFFICIAL_NAMES = %w[Somalia الصومال ソマリア Somalië].freeze
455
+ end
456
+
457
+ class CG
458
+ ALPHA_2 = "CG"
459
+ ALPHA_3 = "COG"
460
+ COUNTRY_CODE = "242"
461
+ NAME = "Congo"
462
+ UN_OFFICIAL_NAMES = ["Congo", "Kongo", "コンゴ共和国", "Congo [Republiek]", "Congo, Republic of"].freeze
463
+ end
464
+
465
+ class YT
466
+ ALPHA_2 = "YT"
467
+ ALPHA_3 = "MYT"
468
+ COUNTRY_CODE = "262"
469
+ NAME = "Mayotte"
470
+ UN_OFFICIAL_NAMES = %w[Mayotte マヨット].freeze
471
+ end
472
+
473
+ class KE
474
+ ALPHA_2 = "KE"
475
+ ALPHA_3 = "KEN"
476
+ COUNTRY_CODE = "254"
477
+ NAME = "Kenya"
478
+ UN_OFFICIAL_NAMES = %w[Kenya Kenia ケニア].freeze
479
+ end
480
+
481
+ class SZ
482
+ ALPHA_2 = "SZ"
483
+ ALPHA_3 = "SWZ"
484
+ COUNTRY_CODE = "268"
485
+ NAME = "eSwatini"
486
+ UN_OFFICIAL_NAMES = %w[Swaziland Swasiland Suazilandia スワジランド].freeze
487
+ end
488
+
489
+ class TD
490
+ ALPHA_2 = "TD"
491
+ ALPHA_3 = "TCD"
492
+ COUNTRY_CODE = "235"
493
+ NAME = "Chad"
494
+ UN_OFFICIAL_NAMES = %w[Chad تشاد Tschad Tchad チャド Tsjaad].freeze
495
+ end
496
+
497
+ class CF
498
+ ALPHA_2 = "CF"
499
+ ALPHA_3 = "CAF"
500
+ COUNTRY_CODE = "236"
501
+ NAME = "Central African Republic"
502
+ UN_OFFICIAL_NAMES = ["Central African Republic", "Zentralafrikanische Republik", "République Centrafricaine",
503
+ "República Centroafricana", "中央アフリカ共和国", "Centraal-Afrikaanse Republiek"].freeze
504
+ end
505
+
506
+ class SN
507
+ ALPHA_2 = "SN"
508
+ ALPHA_3 = "SEN"
509
+ COUNTRY_CODE = "221"
510
+ NAME = "Senegal"
511
+ UN_OFFICIAL_NAMES = %w[Senegal Sénégal セネガル].freeze
512
+ end
513
+
514
+ class EG
515
+ ALPHA_2 = "EG"
516
+ ALPHA_3 = "EGY"
517
+ COUNTRY_CODE = "20"
518
+ NAME = "Egypt"
519
+ UN_OFFICIAL_NAMES = %w[Egypt مصر Ägypten Égypte Egipto エジプト Egypte].freeze
520
+ end
521
+
522
+ class ER
523
+ ALPHA_2 = "ER"
524
+ ALPHA_3 = "ERI"
525
+ COUNTRY_CODE = "291"
526
+ NAME = "Eritrea"
527
+ UN_OFFICIAL_NAMES = %w[Eritrea إريتريا Érythrée エリトリア].freeze
528
+ end
529
+ end
530
+ end