kountries 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,529 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Kountries
4
+ # America
5
+ module America
6
+ def self.find_country_by_name(name)
7
+ constants.each do |country|
8
+ american_country_class = Module.const_get "Kountries::America::#{country}"
9
+ return as_struct(american_country_class) if american_country_class::NAME.upcase == name.upcase
10
+ return as_struct(american_country_class) if american_country_class::UN_OFFICIAL_NAMES.include?(name.capitalize)
11
+ end
12
+
13
+ empty_struct
14
+ end
15
+
16
+ def self.find_country_by_code(code)
17
+ return empty_struct unless Kountries::America.constants.include?(code.intern)
18
+
19
+ american_country_class = Module.const_get "Kountries::America::#{code}"
20
+ return as_struct(american_country_class) if american_country_class::ALPHA_2 == code
21
+ end
22
+
23
+ def self.as_struct(american_country_class)
24
+ OpenStruct.new(
25
+ alpha2: american_country_class::ALPHA_2,
26
+ alpha3: american_country_class::ALPHA_3,
27
+ country_code: american_country_class::COUNTRY_CODE,
28
+ name: american_country_class::NAME,
29
+ unofficial_names: american_country_class::UN_OFFICIAL_NAMES
30
+ )
31
+ end
32
+
33
+ def self.empty_struct
34
+ OpenStruct.new(
35
+ alpha2: nil,
36
+ alpha3: nil,
37
+ country_code: nil,
38
+ name: nil,
39
+ unofficial_names: nil
40
+ )
41
+ end
42
+
43
+ class JM
44
+ ALPHA_2 = "JM"
45
+ ALPHA_3 = "JAM"
46
+ COUNTRY_CODE = "1"
47
+ NAME = "Jamaica"
48
+ UN_OFFICIAL_NAMES = %w[Jamaica Jamaika Jamaïque ジャマイカ].freeze
49
+ end
50
+
51
+ class HT
52
+ ALPHA_2 = "HT"
53
+ ALPHA_3 = "HTI"
54
+ COUNTRY_CODE = "509"
55
+ NAME = "Haiti"
56
+ UN_OFFICIAL_NAMES = %w[Haiti ハイチ Haïti].freeze
57
+ end
58
+
59
+ class MS
60
+ ALPHA_2 = "MS"
61
+ ALPHA_3 = "MSR"
62
+ COUNTRY_CODE = "1"
63
+ NAME = "Montserrat"
64
+ UN_OFFICIAL_NAMES = %w[Montserrat モントセラト].freeze
65
+ end
66
+
67
+ class BZ
68
+ ALPHA_2 = "BZ"
69
+ ALPHA_3 = "BLZ"
70
+ COUNTRY_CODE = "501"
71
+ NAME = "Belize"
72
+ UN_OFFICIAL_NAMES = %w[Belize Belice ベリーズ].freeze
73
+ end
74
+
75
+ class BO
76
+ ALPHA_2 = "BO"
77
+ ALPHA_3 = "BOL"
78
+ COUNTRY_CODE = "591"
79
+ NAME = "Bolivia (Plurinational State of)"
80
+ UN_OFFICIAL_NAMES = %w[Bolivia Bolivien Bolivie ボリビア多民族国].freeze
81
+ end
82
+
83
+ class UY
84
+ ALPHA_2 = "UY"
85
+ ALPHA_3 = "URY"
86
+ COUNTRY_CODE = "598"
87
+ NAME = "Uruguay"
88
+ UN_OFFICIAL_NAMES = %w[Uruguay ウルグアイ].freeze
89
+ end
90
+
91
+ class MF
92
+ ALPHA_2 = "MF"
93
+ ALPHA_3 = "MAF"
94
+ COUNTRY_CODE = "590"
95
+ NAME = "Saint Martin (French part)"
96
+ UN_OFFICIAL_NAMES = ["Saint Martin", "サン・マルタン(フランス領)", "Saint-Martin"].freeze
97
+ end
98
+
99
+ class AI
100
+ ALPHA_2 = "AI"
101
+ ALPHA_3 = "AIA"
102
+ COUNTRY_CODE = "1"
103
+ NAME = "Anguilla"
104
+ UN_OFFICIAL_NAMES = %w[Anguilla アンギラ].freeze
105
+ end
106
+
107
+ class SX
108
+ ALPHA_2 = "SX"
109
+ ALPHA_3 = "SXM"
110
+ COUNTRY_CODE = "1"
111
+ NAME = "Sint Maarten (Dutch part)"
112
+ UN_OFFICIAL_NAMES = ["Sint Maarten", "セント・マーチン島"].freeze
113
+ end
114
+
115
+ class PR
116
+ ALPHA_2 = "PR"
117
+ ALPHA_3 = "PRI"
118
+ COUNTRY_CODE = "1"
119
+ NAME = "Puerto Rico"
120
+ UN_OFFICIAL_NAMES = ["Puerto Rico", "プエルトリコ"].freeze
121
+ end
122
+
123
+ class GD
124
+ ALPHA_2 = "GD"
125
+ ALPHA_3 = "GRD"
126
+ COUNTRY_CODE = "1"
127
+ NAME = "Grenada"
128
+ UN_OFFICIAL_NAMES = %w[Grenada グレナダ].freeze
129
+ end
130
+
131
+ class BB
132
+ ALPHA_2 = "BB"
133
+ ALPHA_3 = "BRB"
134
+ COUNTRY_CODE = "1"
135
+ NAME = "Barbados"
136
+ UN_OFFICIAL_NAMES = %w[Barbade Barbados バルバドス].freeze
137
+ end
138
+
139
+ class GP
140
+ ALPHA_2 = "GP"
141
+ ALPHA_3 = "GLP"
142
+ COUNTRY_CODE = "590"
143
+ NAME = "Guadeloupe"
144
+ UN_OFFICIAL_NAMES = %w[Guadeloupe Guadalupe グアドループ].freeze
145
+ end
146
+
147
+ class DO
148
+ ALPHA_2 = "DO"
149
+ ALPHA_3 = "DOM"
150
+ COUNTRY_CODE = "1"
151
+ NAME = "Dominican Republic"
152
+ UN_OFFICIAL_NAMES = ["Dominican Republic", "Dominikanische Republik", "République Dominicaine",
153
+ "República Dominicana", "ドミニカ共和国",
154
+ "Dominicaanse Republiek"].freeze
155
+ end
156
+
157
+ class VG
158
+ ALPHA_2 = "VG"
159
+ ALPHA_3 = "VGB"
160
+ COUNTRY_CODE = "1"
161
+ NAME = "Virgin Islands (British)"
162
+ UN_OFFICIAL_NAMES = ["British Virgin Islands", "Britische Jungferninseln", "Îles Vierges britanniques",
163
+ "Islas Vírgenes del Reino Unido", "イギリス領ヴァージン諸島", "Britse Maagdeneilanden",
164
+ "Virgin Islands (British)"].freeze
165
+ end
166
+
167
+ class UM
168
+ ALPHA_2 = "UM"
169
+ ALPHA_3 = "UMI"
170
+ COUNTRY_CODE = "1"
171
+ NAME = "United States Minor Outlying Islands"
172
+ UN_OFFICIAL_NAMES = ["United States Minor Outlying Islands", "US-Amerikanische Hoheitsgebiete",
173
+ "Dépendances américaines", "Islas menores de Estados Unidos", "合衆国領有小離島",
174
+ "Kleine afgelegen eilanden van de Verenigde Staten"].freeze
175
+ end
176
+
177
+ class PA
178
+ ALPHA_2 = "PA"
179
+ ALPHA_3 = "PAN"
180
+ COUNTRY_CODE = "507"
181
+ NAME = "Panama"
182
+ UN_OFFICIAL_NAMES = %w[Panama Panamá パナマ].freeze
183
+ end
184
+
185
+ class US
186
+ ALPHA_2 = "US"
187
+ ALPHA_3 = "USA"
188
+ COUNTRY_CODE = "1"
189
+ NAME = "United States of America"
190
+ UN_OFFICIAL_NAMES = ["United States", "Murica", "Vereinigte Staaten von Amerika",
191
+ "États-Unis", "Estados Unidos", "アメリカ合衆国",
192
+ "Verenigde Staten"].freeze
193
+ end
194
+
195
+ class SR
196
+ ALPHA_2 = "SR"
197
+ ALPHA_3 = "SUR"
198
+ COUNTRY_CODE = "597"
199
+ NAME = "Suriname"
200
+ UN_OFFICIAL_NAMES = %w[Suriname Surinam スリナム].freeze
201
+ end
202
+
203
+ class PM
204
+ ALPHA_2 = "PM"
205
+ ALPHA_3 = "SPM"
206
+ COUNTRY_CODE = "508"
207
+ NAME = "Saint Pierre and Miquelon"
208
+ UN_OFFICIAL_NAMES = ["Saint Pierre and Miquelon", "Saint-Pierre und Miquelon",
209
+ "Saint-Pierre-et-Miquelon", "San Pedro y Miquelón",
210
+ "サンピエール島・ミクロン島", "Saint Pierre en Miquelon"].freeze
211
+ end
212
+
213
+ class CO
214
+ ALPHA_2 = "CO"
215
+ ALPHA_3 = "COL"
216
+ COUNTRY_CODE = "57"
217
+ NAME = "Colombia"
218
+ UN_OFFICIAL_NAMES = %w[Colombia Kolumbien Colombie コロンビア].freeze
219
+ end
220
+
221
+ class AW
222
+ ALPHA_2 = "AW"
223
+ ALPHA_3 = "ABW"
224
+ COUNTRY_CODE = "297"
225
+ NAME = "Aruba"
226
+ UN_OFFICIAL_NAMES = %w[Aruba アルバ].freeze
227
+ end
228
+
229
+ class KY
230
+ ALPHA_2 = "KY"
231
+ ALPHA_3 = "CYM"
232
+ COUNTRY_CODE = "1"
233
+ NAME = "Cayman Islands"
234
+ UN_OFFICIAL_NAMES = ["Cayman Islands", "Kaimaninseln", "Îles Caïmans", "Islas Caimán", "ケイマン諸島",
235
+ "Caymaneilanden"].freeze
236
+ end
237
+
238
+ class PY
239
+ ALPHA_2 = "PY"
240
+ ALPHA_3 = "PRY"
241
+ COUNTRY_CODE = "595"
242
+ NAME = "Paraguay"
243
+ UN_OFFICIAL_NAMES = %w[Paraguay パラグアイ].freeze
244
+ end
245
+
246
+ class EC
247
+ ALPHA_2 = "EC"
248
+ ALPHA_3 = "ECU"
249
+ COUNTRY_CODE = "593"
250
+ NAME = "Ecuador"
251
+ UN_OFFICIAL_NAMES = %w[Ecuador Équateur エクアドル].freeze
252
+ end
253
+
254
+ class TT
255
+ ALPHA_2 = "TT"
256
+ ALPHA_3 = "TTO"
257
+ COUNTRY_CODE = "1"
258
+ NAME = "Trinidad and Tobago"
259
+ UN_OFFICIAL_NAMES = ["Trinidad and Tobago", "Trinidad und Tobago", "Trinité et Tobago",
260
+ "Trinidad y Tobago", "トリニダード・トバゴ",
261
+ "Trinidad en Tobago"].freeze
262
+ end
263
+
264
+ class BQ
265
+ ALPHA_2 = "BQ"
266
+ ALPHA_3 = "BES"
267
+ COUNTRY_CODE = "599"
268
+ NAME = "Bonaire, Sint Eustatius and Saba"
269
+ UN_OFFICIAL_NAMES = ["Bonaire, Sint Eustatius and Saba", "Caribbean Netherlands", "Caribisch Nederland",
270
+ "ボネール、シント・ユースタティウスおよびサバ"].freeze
271
+ end
272
+
273
+ class MX
274
+ ALPHA_2 = "MX"
275
+ ALPHA_3 = "MEX"
276
+ COUNTRY_CODE = "52"
277
+ NAME = "Mexico"
278
+ UN_OFFICIAL_NAMES = %w[Mexico Mexiko Mexique México メキシコ].freeze
279
+ end
280
+
281
+ class CW
282
+ ALPHA_2 = "CW"
283
+ ALPHA_3 = "CUW"
284
+ COUNTRY_CODE = "599"
285
+ NAME = "Curaçao"
286
+ UN_OFFICIAL_NAMES = %w[Curaçao キュラソー島].freeze
287
+ end
288
+
289
+ class CA
290
+ ALPHA_2 = "CA"
291
+ ALPHA_3 = "CAN"
292
+ COUNTRY_CODE = "1"
293
+ NAME = "Canada"
294
+ UN_OFFICIAL_NAMES = %w[Canada Kanada Canadá カナダ].freeze
295
+ end
296
+
297
+ class BR
298
+ ALPHA_2 = "BR"
299
+ ALPHA_3 = "BRA"
300
+ COUNTRY_CODE = "55"
301
+ NAME = "Brazil"
302
+ UN_OFFICIAL_NAMES = %w[Brazil Brasilien Brésil Brasil ブラジル Brazilië].freeze
303
+ end
304
+
305
+ class GL
306
+ ALPHA_2 = "GL"
307
+ ALPHA_3 = "GRL"
308
+ COUNTRY_CODE = "299"
309
+ NAME = "Greenland"
310
+ UN_OFFICIAL_NAMES = %w[Greenland Grönland Groenland Groenlandia グリーンランド].freeze
311
+ end
312
+
313
+ class GY
314
+ ALPHA_2 = "GY"
315
+ ALPHA_3 = "GUY"
316
+ COUNTRY_CODE = "592"
317
+ NAME = "Guyana"
318
+ UN_OFFICIAL_NAMES = %w[Guyana ガイアナ].freeze
319
+ end
320
+
321
+ class NI
322
+ ALPHA_2 = "NI"
323
+ ALPHA_3 = "NIC"
324
+ COUNTRY_CODE = "505"
325
+ NAME = "Nicaragua"
326
+ UN_OFFICIAL_NAMES = %w[Nicaragua ニカラグア].freeze
327
+ end
328
+
329
+ class KN
330
+ ALPHA_2 = "KN"
331
+ ALPHA_3 = "KNA"
332
+ COUNTRY_CODE = "1"
333
+ NAME = "Saint Kitts and Nevis"
334
+ UN_OFFICIAL_NAMES = ["Saint Kitts and Nevis", "Föderation St. Kitts und Nevis",
335
+ "Saint Kitts et Nevis", "Saint Kitts y Nevis",
336
+ "セントクリストファー・ネイビス", "Saint Kitts en Nevis",
337
+ "St. Kitts and Nevis", "St Kitts and Nevis"].freeze
338
+ end
339
+
340
+ class VC
341
+ ALPHA_2 = "VC"
342
+ ALPHA_3 = "VCT"
343
+ COUNTRY_CODE = "1"
344
+ NAME = "Saint Vincent and the Grenadines"
345
+ UN_OFFICIAL_NAMES = ["Saint Vincent and the Grenadines", "Saint Vincent und die Grenadinen",
346
+ "Saint-Vincent et les Grenadines", "San Vicente y Granadinas",
347
+ "セントビンセントおよびグレナディーン諸島", "Saint Vincent en de Grenadines",
348
+ "St. Vincent Grenadines", "St Vincent Grenadines"].freeze
349
+ end
350
+
351
+ class FK
352
+ ALPHA_2 = "FK"
353
+ ALPHA_3 = "FLK"
354
+ COUNTRY_CODE = "500"
355
+ NAME = "Falkland Islands (Malvinas)"
356
+ UN_OFFICIAL_NAMES = ["Falkland Islands", "Falklandinseln", "Îles Malouines", "Islas Malvinas", "フォークランド(マルビナス)諸島",
357
+ "Falklandeilanden [Islas Malvinas]"].freeze
358
+ end
359
+
360
+ class CL
361
+ ALPHA_2 = "CL"
362
+ ALPHA_3 = "CHL"
363
+ COUNTRY_CODE = "56"
364
+ NAME = "Chile"
365
+ UN_OFFICIAL_NAMES = %w[Chile チリ Chili].freeze
366
+ end
367
+
368
+ class TC
369
+ ALPHA_2 = "TC"
370
+ ALPHA_3 = "TCA"
371
+ COUNTRY_CODE = "1"
372
+ NAME = "Turks and Caicos Islands"
373
+ UN_OFFICIAL_NAMES = ["Turks and Caicos Islands", "Turks- und Caicosinseln", "Îles Turks et Caïcos",
374
+ "Islas Turks y Caicos", "タークス・カイコス諸島", "Turks- en Caicoseilanden",
375
+ "Turks and Caicos"].freeze
376
+ end
377
+
378
+ class CU
379
+ ALPHA_2 = "CU"
380
+ ALPHA_3 = "CUB"
381
+ COUNTRY_CODE = "53"
382
+ NAME = "Cuba"
383
+ UN_OFFICIAL_NAMES = %w[Cuba Kuba キューバ].freeze
384
+ end
385
+
386
+ class BS
387
+ ALPHA_2 = "BS"
388
+ ALPHA_3 = "BHS"
389
+ COUNTRY_CODE = "1"
390
+ NAME = "Bahamas"
391
+ UN_OFFICIAL_NAMES = ["Bahamas", "バハマ", "Bahama’s"].freeze
392
+ end
393
+
394
+ class GT
395
+ ALPHA_2 = "GT"
396
+ ALPHA_3 = "GTM"
397
+ COUNTRY_CODE = "502"
398
+ NAME = "Guatemala"
399
+ UN_OFFICIAL_NAMES = %w[Guatemala グアテマラ].freeze
400
+ end
401
+
402
+ class AR
403
+ ALPHA_2 = "AR"
404
+ ALPHA_3 = "ARG"
405
+ COUNTRY_CODE = "54"
406
+ NAME = "Argentina"
407
+ UN_OFFICIAL_NAMES = %w[Argentina Argentinien Argentine アルゼンチン Argentinië].freeze
408
+ end
409
+
410
+ class BM
411
+ ALPHA_2 = "BM"
412
+ ALPHA_3 = "BMU"
413
+ COUNTRY_CODE = "1"
414
+ NAME = "Bermuda"
415
+ UN_OFFICIAL_NAMES = %w[Bermuda Bermudes Bermudas バミューダ].freeze
416
+ end
417
+
418
+ class AG
419
+ ALPHA_2 = "AG"
420
+ ALPHA_3 = "ATG"
421
+ COUNTRY_CODE = "1"
422
+ NAME = "Antigua and Barbuda"
423
+ UN_OFFICIAL_NAMES = ["Antigua and Barbuda", "Antigua und Barbuda", "Antigua et Barbuda",
424
+ "Antigua y Barbuda", "アンティグア・バーブーダ",
425
+ "Antigua en Barbuda"].freeze
426
+ end
427
+
428
+ class MQ
429
+ ALPHA_2 = "MQ"
430
+ ALPHA_3 = "MTQ"
431
+ COUNTRY_CODE = "596"
432
+ NAME = "Martinique"
433
+ UN_OFFICIAL_NAMES = %w[Martinique Martinica マルティニーク].freeze
434
+ end
435
+
436
+ class SV
437
+ ALPHA_2 = "SV"
438
+ ALPHA_3 = "SLV"
439
+ COUNTRY_CODE = "503"
440
+ NAME = "El Salvador"
441
+ UN_OFFICIAL_NAMES = ["El Salvador", "Salvador", "エルサルバドル"].freeze
442
+ end
443
+
444
+ class GF
445
+ ALPHA_2 = "GF"
446
+ ALPHA_3 = "GUF"
447
+ COUNTRY_CODE = "594"
448
+ NAME = "French Guiana"
449
+ UN_OFFICIAL_NAMES = ["French Guiana", "Französisch Guyana", "Guayana Francesa", "フランス領ギアナ", "Frans-Guyana"].freeze
450
+ end
451
+
452
+ class GS
453
+ ALPHA_2 = "GS"
454
+ ALPHA_3 = "SGS"
455
+ COUNTRY_CODE = "500"
456
+ NAME = "South Georgia and the South Sandwich Islands"
457
+ UN_OFFICIAL_NAMES = ["South Georgia", "South Georgia and the South Sandwich Islands",
458
+ "Südgeorgien und die Südlichen Sandwichinseln",
459
+ "サウスジョージア・サウスサンドウィッチ諸島", "Zuid-Georgia en Zuidelijke Sandwicheilanden"].freeze
460
+ end
461
+
462
+ class PE
463
+ ALPHA_2 = "PE"
464
+ ALPHA_3 = "PER"
465
+ COUNTRY_CODE = "51"
466
+ NAME = "Peru"
467
+ UN_OFFICIAL_NAMES = %w[Peru Pérou Perú ペルー].freeze
468
+ end
469
+
470
+ class CR
471
+ ALPHA_2 = "CR"
472
+ ALPHA_3 = "CRI"
473
+ COUNTRY_CODE = "506"
474
+ NAME = "Costa Rica"
475
+ UN_OFFICIAL_NAMES = ["Costa Rica", "コスタリカ"].freeze
476
+ end
477
+
478
+ class DM
479
+ ALPHA_2 = "DM"
480
+ ALPHA_3 = "DMA"
481
+ COUNTRY_CODE = "1"
482
+ NAME = "Dominica"
483
+ UN_OFFICIAL_NAMES = %w[Dominica ドミニカ国].freeze
484
+ end
485
+
486
+ class HN
487
+ ALPHA_2 = "HN"
488
+ ALPHA_3 = "HND"
489
+ COUNTRY_CODE = "504"
490
+ NAME = "Honduras"
491
+ UN_OFFICIAL_NAMES = %w[Honduras ホンジュラス].freeze
492
+ end
493
+
494
+ class VI
495
+ ALPHA_2 = "VI"
496
+ ALPHA_3 = "VIR"
497
+ COUNTRY_CODE = "1"
498
+ NAME = "Virgin Islands (U.S.)"
499
+ UN_OFFICIAL_NAMES = ["Virgin Islands of the United States", "Amerikanische Jungferninseln",
500
+ "Îles Vierges américaines", "Islas Vírgenes de los Estados Unidos",
501
+ "アメリカ領ヴァージン諸島", "Amerikaanse Maagdeneilanden",
502
+ "Virgin Islands (U.S.)", "United States Virgin Islands"].freeze
503
+ end
504
+
505
+ class LC
506
+ ALPHA_2 = "LC"
507
+ ALPHA_3 = "LCA"
508
+ COUNTRY_CODE = "1"
509
+ NAME = "Saint Lucia"
510
+ UN_OFFICIAL_NAMES = ["Saint Lucia", "Saint-Lucie", "Santa Lucía", "セントルシア", "St. Lucia", "St Lucia"].freeze
511
+ end
512
+
513
+ class BL
514
+ ALPHA_2 = "BL"
515
+ ALPHA_3 = "BLM"
516
+ COUNTRY_CODE = "590"
517
+ NAME = "Saint Barthélemy"
518
+ UN_OFFICIAL_NAMES = ["Saint Barthélemy", "Saint-Barthélemy", "サン・バルテルミー"].freeze
519
+ end
520
+
521
+ class VE
522
+ ALPHA_2 = "VE"
523
+ ALPHA_3 = "VEN"
524
+ COUNTRY_CODE = "58"
525
+ NAME = "Venezuela (Bolivarian Republic of)"
526
+ UN_OFFICIAL_NAMES = ["Venezuela", "ベネズエラ・ボリバル共和国"].freeze
527
+ end
528
+ end
529
+ end