kountries 0.1.1

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.
@@ -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