itu_codes 0.3.5 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +61 -0
- data/lib/itu_codes/constants.rb +750 -0
- data/lib/itu_codes/helpers.rb +13 -0
- data/lib/itu_codes/version.rb +1 -1
- data/lib/itu_codes.rb +106 -848
- metadata +61 -89
- data/README +0 -54
data/lib/itu_codes.rb
CHANGED
@@ -1,880 +1,138 @@
|
|
1
1
|
# to-do: deal with headache codes:
|
2
2
|
# 1 --> Non-US need to be separated by area code
|
3
3
|
# 7 --> Kazakhstan!
|
4
|
-
require 'enumerator'
|
5
4
|
require 'carmen'
|
6
5
|
|
6
|
+
require 'itu_codes/constants'
|
7
|
+
require 'itu_codes/helpers'
|
8
|
+
|
7
9
|
# TODO: add ability to search for common names (i.e. 'USA' or 'United States of America' for 'United States')
|
8
10
|
|
9
11
|
module ItuCodes
|
10
|
-
|
11
|
-
|
12
|
-
# TODO: move the base data into a fixture file to speed up loading
|
13
|
-
CODE_LIST = [
|
14
|
-
{ "0" => "Reserved"},
|
15
|
-
|
16
|
-
{ "1" => "United States"},
|
17
|
-
{ "1201" => "United States" },
|
18
|
-
{ "1202" => "United States" },
|
19
|
-
{ "1203" => "United States" },
|
20
|
-
{ "1205" => "United States" },
|
21
|
-
{ "1206" => "United States" },
|
22
|
-
{ "1207" => "United States" },
|
23
|
-
{ "1208" => "United States" },
|
24
|
-
{ "1209" => "United States" },
|
25
|
-
{ "1210" => "United States" },
|
26
|
-
{ "1212" => "United States" },
|
27
|
-
{ "1213" => "United States" },
|
28
|
-
{ "1214" => "United States" },
|
29
|
-
{ "1215" => "United States" },
|
30
|
-
{ "1216" => "United States" },
|
31
|
-
{ "1217" => "United States" },
|
32
|
-
{ "1218" => "United States" },
|
33
|
-
{ "1219" => "United States" },
|
34
|
-
{ "1220" => "United States" },
|
35
|
-
{ "1224" => "United States" },
|
36
|
-
{ "1225" => "United States" },
|
37
|
-
{ "1227" => "United States" },
|
38
|
-
{ "1228" => "United States" },
|
39
|
-
{ "1229" => "United States" },
|
40
|
-
{ "1231" => "United States" },
|
41
|
-
{ "1234" => "United States" },
|
42
|
-
{ "1239" => "United States" },
|
43
|
-
{ "1240" => "United States" },
|
44
|
-
{ "1248" => "United States" },
|
45
|
-
{ "1251" => "United States" },
|
46
|
-
{ "1252" => "United States" },
|
47
|
-
{ "1253" => "United States" },
|
48
|
-
{ "1254" => "United States" },
|
49
|
-
{ "1256" => "United States" },
|
50
|
-
{ "1260" => "United States" },
|
51
|
-
{ "1262" => "United States" },
|
52
|
-
{ "1267" => "United States" },
|
53
|
-
{ "1269" => "United States" },
|
54
|
-
{ "1270" => "United States" },
|
55
|
-
{ "1272" => "United States" },
|
56
|
-
{ "1274" => "United States" },
|
57
|
-
{ "1276" => "United States" },
|
58
|
-
{ "1281" => "United States" },
|
59
|
-
{ "1283" => "United States" },
|
60
|
-
{ "1301" => "United States" },
|
61
|
-
{ "1302" => "United States" },
|
62
|
-
{ "1303" => "United States" },
|
63
|
-
{ "1304" => "United States" },
|
64
|
-
{ "1305" => "United States" },
|
65
|
-
{ "1307" => "United States" },
|
66
|
-
{ "1308" => "United States" },
|
67
|
-
{ "1309" => "United States" },
|
68
|
-
{ "1310" => "United States" },
|
69
|
-
{ "1312" => "United States" },
|
70
|
-
{ "1313" => "United States" },
|
71
|
-
{ "1314" => "United States" },
|
72
|
-
{ "1315" => "United States" },
|
73
|
-
{ "1316" => "United States" },
|
74
|
-
{ "1317" => "United States" },
|
75
|
-
{ "1318" => "United States" },
|
76
|
-
{ "1319" => "United States" },
|
77
|
-
{ "1320" => "United States" },
|
78
|
-
{ "1321" => "United States" },
|
79
|
-
{ "1323" => "United States" },
|
80
|
-
{ "1325" => "United States" },
|
81
|
-
{ "1327" => "United States" },
|
82
|
-
{ "1330" => "United States" },
|
83
|
-
{ "1331" => "United States" },
|
84
|
-
{ "1334" => "United States" },
|
85
|
-
{ "1336" => "United States" },
|
86
|
-
{ "1337" => "United States" },
|
87
|
-
{ "1339" => "United States" },
|
88
|
-
{ "1341" => "United States" },
|
89
|
-
{ "1347" => "United States" },
|
90
|
-
{ "1351" => "United States" },
|
91
|
-
{ "1352" => "United States" },
|
92
|
-
{ "1353" => "United States" },
|
93
|
-
{ "1360" => "United States" },
|
94
|
-
{ "1361" => "United States" },
|
95
|
-
{ "1364" => "United States" },
|
96
|
-
{ "1369" => "United States" },
|
97
|
-
{ "1380" => "United States" },
|
98
|
-
{ "1385" => "United States" },
|
99
|
-
{ "1386" => "United States" },
|
100
|
-
{ "1401" => "United States" },
|
101
|
-
{ "1402" => "United States" },
|
102
|
-
{ "1404" => "United States" },
|
103
|
-
{ "1405" => "United States" },
|
104
|
-
{ "1406" => "United States" },
|
105
|
-
{ "1407" => "United States" },
|
106
|
-
{ "1408" => "United States" },
|
107
|
-
{ "1409" => "United States" },
|
108
|
-
{ "1410" => "United States" },
|
109
|
-
{ "1412" => "United States" },
|
110
|
-
{ "1413" => "United States" },
|
111
|
-
{ "1414" => "United States" },
|
112
|
-
{ "1415" => "United States" },
|
113
|
-
{ "1417" => "United States" },
|
114
|
-
{ "1419" => "United States" },
|
115
|
-
{ "1423" => "United States" },
|
116
|
-
{ "1424" => "United States" },
|
117
|
-
{ "1425" => "United States" },
|
118
|
-
{ "1430" => "United States" },
|
119
|
-
{ "1432" => "United States" },
|
120
|
-
{ "1434" => "United States" },
|
121
|
-
{ "1435" => "United States" },
|
122
|
-
{ "1440" => "United States" },
|
123
|
-
{ "1442" => "United States" },
|
124
|
-
{ "1443" => "United States" },
|
125
|
-
{ "1447" => "United States" },
|
126
|
-
{ "1458" => "United States" },
|
127
|
-
{ "1464" => "United States" },
|
128
|
-
{ "1469" => "United States" },
|
129
|
-
{ "1470" => "United States" },
|
130
|
-
{ "1475" => "United States" },
|
131
|
-
{ "1478" => "United States" },
|
132
|
-
{ "1479" => "United States" },
|
133
|
-
{ "1480" => "United States" },
|
134
|
-
{ "1484" => "United States" },
|
135
|
-
{ "1501" => "United States" },
|
136
|
-
{ "1502" => "United States" },
|
137
|
-
{ "1503" => "United States" },
|
138
|
-
{ "1504" => "United States" },
|
139
|
-
{ "1505" => "United States" },
|
140
|
-
{ "1507" => "United States" },
|
141
|
-
{ "1508" => "United States" },
|
142
|
-
{ "1509" => "United States" },
|
143
|
-
{ "1510" => "United States" },
|
144
|
-
{ "1512" => "United States" },
|
145
|
-
{ "1513" => "United States" },
|
146
|
-
{ "1515" => "United States" },
|
147
|
-
{ "1516" => "United States" },
|
148
|
-
{ "1517" => "United States" },
|
149
|
-
{ "1518" => "United States" },
|
150
|
-
{ "1520" => "United States" },
|
151
|
-
{ "1530" => "United States" },
|
152
|
-
{ "1531" => "United States" },
|
153
|
-
{ "1534" => "United States" },
|
154
|
-
{ "1539" => "United States" },
|
155
|
-
{ "1540" => "United States" },
|
156
|
-
{ "1541" => "United States" },
|
157
|
-
{ "1551" => "United States" },
|
158
|
-
{ "1557" => "United States" },
|
159
|
-
{ "1559" => "United States" },
|
160
|
-
{ "1561" => "United States" },
|
161
|
-
{ "1562" => "United States" },
|
162
|
-
{ "1563" => "United States" },
|
163
|
-
{ "1564" => "United States" },
|
164
|
-
{ "1567" => "United States" },
|
165
|
-
{ "1570" => "United States" },
|
166
|
-
{ "1571" => "United States" },
|
167
|
-
{ "1573" => "United States" },
|
168
|
-
{ "1574" => "United States" },
|
169
|
-
{ "1575" => "United States" },
|
170
|
-
{ "1580" => "United States" },
|
171
|
-
{ "1582" => "United States" },
|
172
|
-
{ "1585" => "United States" },
|
173
|
-
{ "1586" => "United States" },
|
174
|
-
{ "1601" => "United States" },
|
175
|
-
{ "1602" => "United States" },
|
176
|
-
{ "1603" => "United States" },
|
177
|
-
{ "1605" => "United States" },
|
178
|
-
{ "1606" => "United States" },
|
179
|
-
{ "1607" => "United States" },
|
180
|
-
{ "1608" => "United States" },
|
181
|
-
{ "1609" => "United States" },
|
182
|
-
{ "1610" => "United States" },
|
183
|
-
{ "1612" => "United States" },
|
184
|
-
{ "1614" => "United States" },
|
185
|
-
{ "1615" => "United States" },
|
186
|
-
{ "1616" => "United States" },
|
187
|
-
{ "1617" => "United States" },
|
188
|
-
{ "1618" => "United States" },
|
189
|
-
{ "1619" => "United States" },
|
190
|
-
{ "1620" => "United States" },
|
191
|
-
{ "1623" => "United States" },
|
192
|
-
{ "1626" => "United States" },
|
193
|
-
{ "1627" => "United States" },
|
194
|
-
{ "1628" => "United States" },
|
195
|
-
{ "1630" => "United States" },
|
196
|
-
{ "1631" => "United States" },
|
197
|
-
{ "1636" => "United States" },
|
198
|
-
{ "1641" => "United States" },
|
199
|
-
{ "1646" => "United States" },
|
200
|
-
{ "1650" => "United States" },
|
201
|
-
{ "1651" => "United States" },
|
202
|
-
{ "1657" => "United States" },
|
203
|
-
{ "1659" => "United States" },
|
204
|
-
{ "1660" => "United States" },
|
205
|
-
{ "1661" => "United States" },
|
206
|
-
{ "1662" => "United States" },
|
207
|
-
{ "1667" => "United States" },
|
208
|
-
{ "1669" => "United States" },
|
209
|
-
{ "1678" => "United States" },
|
210
|
-
{ "1679" => "United States" },
|
211
|
-
{ "1681" => "United States" },
|
212
|
-
{ "1682" => "United States" },
|
213
|
-
{ "1689" => "United States" },
|
214
|
-
{ "1701" => "United States" },
|
215
|
-
{ "1702" => "United States" },
|
216
|
-
{ "1703" => "United States" },
|
217
|
-
{ "1704" => "United States" },
|
218
|
-
{ "1706" => "United States" },
|
219
|
-
{ "1707" => "United States" },
|
220
|
-
{ "1708" => "United States" },
|
221
|
-
{ "1710" => "United States" },
|
222
|
-
{ "1712" => "United States" },
|
223
|
-
{ "1713" => "United States" },
|
224
|
-
{ "1714" => "United States" },
|
225
|
-
{ "1715" => "United States" },
|
226
|
-
{ "1716" => "United States" },
|
227
|
-
{ "1717" => "United States" },
|
228
|
-
{ "1718" => "United States" },
|
229
|
-
{ "1719" => "United States" },
|
230
|
-
{ "1720" => "United States" },
|
231
|
-
{ "1724" => "United States" },
|
232
|
-
{ "1727" => "United States" },
|
233
|
-
{ "1730" => "United States" },
|
234
|
-
{ "1731" => "United States" },
|
235
|
-
{ "1732" => "United States" },
|
236
|
-
{ "1734" => "United States" },
|
237
|
-
{ "1737" => "United States" },
|
238
|
-
{ "1740" => "United States" },
|
239
|
-
{ "1747" => "United States" },
|
240
|
-
{ "1754" => "United States" },
|
241
|
-
{ "1757" => "United States" },
|
242
|
-
{ "1760" => "United States" },
|
243
|
-
{ "1762" => "United States" },
|
244
|
-
{ "1763" => "United States" },
|
245
|
-
{ "1764" => "United States" },
|
246
|
-
{ "1765" => "United States" },
|
247
|
-
{ "1769" => "United States" },
|
248
|
-
{ "1770" => "United States" },
|
249
|
-
{ "1772" => "United States" },
|
250
|
-
{ "1773" => "United States" },
|
251
|
-
{ "1774" => "United States" },
|
252
|
-
{ "1775" => "United States" },
|
253
|
-
{ "1779" => "United States" },
|
254
|
-
{ "1781" => "United States" },
|
255
|
-
{ "1785" => "United States" },
|
256
|
-
{ "1786" => "United States" },
|
257
|
-
{ "1801" => "United States" },
|
258
|
-
{ "1802" => "United States" },
|
259
|
-
{ "1803" => "United States" },
|
260
|
-
{ "1804" => "United States" },
|
261
|
-
{ "1805" => "United States" },
|
262
|
-
{ "1806" => "United States" },
|
263
|
-
{ "1808" => "United States" },
|
264
|
-
{ "1810" => "United States" },
|
265
|
-
{ "1812" => "United States" },
|
266
|
-
{ "1813" => "United States" },
|
267
|
-
{ "1814" => "United States" },
|
268
|
-
{ "1815" => "United States" },
|
269
|
-
{ "1816" => "United States" },
|
270
|
-
{ "1817" => "United States" },
|
271
|
-
{ "1818" => "United States" },
|
272
|
-
{ "1828" => "United States" },
|
273
|
-
{ "1830" => "United States" },
|
274
|
-
{ "1831" => "United States" },
|
275
|
-
{ "1832" => "United States" },
|
276
|
-
{ "1835" => "United States" },
|
277
|
-
{ "1843" => "United States" },
|
278
|
-
{ "1845" => "United States" },
|
279
|
-
{ "1847" => "United States" },
|
280
|
-
{ "1848" => "United States" },
|
281
|
-
{ "1850" => "United States" },
|
282
|
-
{ "1856" => "United States" },
|
283
|
-
{ "1857" => "United States" },
|
284
|
-
{ "1858" => "United States" },
|
285
|
-
{ "1859" => "United States" },
|
286
|
-
{ "1860" => "United States" },
|
287
|
-
{ "1862" => "United States" },
|
288
|
-
{ "1863" => "United States" },
|
289
|
-
{ "1864" => "United States" },
|
290
|
-
{ "1865" => "United States" },
|
291
|
-
{ "1870" => "United States" },
|
292
|
-
{ "1872" => "United States" },
|
293
|
-
{ "1878" => "United States" },
|
294
|
-
{ "1901" => "United States" },
|
295
|
-
{ "1903" => "United States" },
|
296
|
-
{ "1904" => "United States" },
|
297
|
-
{ "1906" => "United States" },
|
298
|
-
{ "1907" => "United States" },
|
299
|
-
{ "1908" => "United States" },
|
300
|
-
{ "1909" => "United States" },
|
301
|
-
{ "1910" => "United States" },
|
302
|
-
{ "1912" => "United States" },
|
303
|
-
{ "1913" => "United States" },
|
304
|
-
{ "1914" => "United States" },
|
305
|
-
{ "1915" => "United States" },
|
306
|
-
{ "1916" => "United States" },
|
307
|
-
{ "1917" => "United States" },
|
308
|
-
{ "1918" => "United States" },
|
309
|
-
{ "1919" => "United States" },
|
310
|
-
{ "1920" => "United States" },
|
311
|
-
{ "1925" => "United States" },
|
312
|
-
{ "1928" => "United States" },
|
313
|
-
{ "1929" => "United States" },
|
314
|
-
{ "1931" => "United States" },
|
315
|
-
{ "1935" => "United States" },
|
316
|
-
{ "1936" => "United States" },
|
317
|
-
{ "1937" => "United States" },
|
318
|
-
{ "1938" => "United States" },
|
319
|
-
{ "1940" => "United States" },
|
320
|
-
{ "1941" => "United States" },
|
321
|
-
{ "1943" => "United States" },
|
322
|
-
{ "1947" => "United States" },
|
323
|
-
{ "1949" => "United States" },
|
324
|
-
{ "1951" => "United States" },
|
325
|
-
{ "1952" => "United States" },
|
326
|
-
{ "1954" => "United States" },
|
327
|
-
{ "1956" => "United States" },
|
328
|
-
{ "1959" => "United States" },
|
329
|
-
{ "1970" => "United States" },
|
330
|
-
{ "1971" => "United States" },
|
331
|
-
{ "1972" => "United States" },
|
332
|
-
{ "1973" => "United States" },
|
333
|
-
{ "1975" => "United States" },
|
334
|
-
{ "1978" => "United States" },
|
335
|
-
{ "1979" => "United States" },
|
336
|
-
{ "1980" => "United States" },
|
337
|
-
{ "1984" => "United States" },
|
338
|
-
{ "1985" => "United States" },
|
339
|
-
{ "1989" => "United States" },
|
340
|
-
|
341
|
-
# from http://www.cnac.ca/co_codes/co_code_status_map.htm
|
342
|
-
{ "1" => "Canada" },
|
343
|
-
{ "1204" => "Canada" },
|
344
|
-
{ "1226" => "Canada" },
|
345
|
-
{ "1236" => "Canada" },
|
346
|
-
{ "1249" => "Canada" },
|
347
|
-
{ "1250" => "Canada" },
|
348
|
-
{ "1289" => "Canada" },
|
349
|
-
{ "1306" => "Canada" },
|
350
|
-
{ "1343" => "Canada" },
|
351
|
-
{ "1365" => "Canada" },
|
352
|
-
{ "1403" => "Canada" },
|
353
|
-
{ "1416" => "Canada" },
|
354
|
-
{ "1418" => "Canada" },
|
355
|
-
{ "1431" => "Canada" },
|
356
|
-
{ "1437" => "Canada" },
|
357
|
-
{ "1438" => "Canada" },
|
358
|
-
{ "1450" => "Canada" },
|
359
|
-
{ "1506" => "Canada" },
|
360
|
-
{ "1514" => "Canada" },
|
361
|
-
{ "1519" => "Canada" },
|
362
|
-
{ "1579" => "Canada" },
|
363
|
-
{ "1581" => "Canada" },
|
364
|
-
{ "1587" => "Canada" },
|
365
|
-
{ "1604" => "Canada" },
|
366
|
-
{ "1613" => "Canada" },
|
367
|
-
{ "1639" => "Canada" },
|
368
|
-
{ "1647" => "Canada" },
|
369
|
-
{ "1705" => "Canada" },
|
370
|
-
{ "1709" => "Canada" },
|
371
|
-
{ "1778" => "Canada" },
|
372
|
-
{ "1780" => "Canada" },
|
373
|
-
{ "1807" => "Canada" },
|
374
|
-
{ "1819" => "Canada" },
|
375
|
-
{ "1867" => "Canada" },
|
376
|
-
{ "1873" => "Canada" },
|
377
|
-
{ "1902" => "Canada" },
|
378
|
-
{ "1905" => "Canada" },
|
379
|
-
|
380
|
-
{ "1" => "American Samoa" },
|
381
|
-
{ "1684" => "American Samoa" },
|
382
|
-
|
383
|
-
{ "1" => "Anguilla" },
|
384
|
-
{ "1264" => "Anguilla" },
|
385
|
-
|
386
|
-
{ "1" => "Antigua and Barbuda" },
|
387
|
-
{ "1268" => "Antigua and Barbuda" },
|
388
|
-
|
389
|
-
{ "1" => "Bahamas" },
|
390
|
-
{ "1242" => "Bahamas" },
|
391
|
-
|
392
|
-
{ "1" => "Barbados" },
|
393
|
-
{ "1246" => "Barbados" },
|
394
|
-
|
395
|
-
{ "1" => "Bermuda" },
|
396
|
-
{ "1441" => "Bermuda" },
|
397
|
-
|
398
|
-
{ "1" => "Virgin Islands, British" },
|
399
|
-
{ "1284" => "Virgin Islands, British" },
|
400
|
-
|
401
|
-
{ "1" => "Cayman Islands" },
|
402
|
-
{ "1345" => "Cayman Islands" },
|
403
|
-
|
404
|
-
{ "1" => "Dominica" },
|
405
|
-
{ "1767" => "Dominica" },
|
406
|
-
|
407
|
-
{ "1" => "Dominican Republic" },
|
408
|
-
{ "1809" => "Dominican Republic" },
|
409
|
-
{ "1829" => "Dominican Republic" },
|
410
|
-
{ "1849" => "Dominican Republic" },
|
411
|
-
|
412
|
-
{ "1" => "Grenada" },
|
413
|
-
{ "1473" => "Grenada" },
|
414
|
-
|
415
|
-
{ "1" => "Guam" },
|
416
|
-
{ "1671" => "Guam" },
|
417
|
-
|
418
|
-
{ "1" => "Jamaica" },
|
419
|
-
{ "1876" => "Jamaica" },
|
420
|
-
|
421
|
-
{ "1" => "Montserrat" },
|
422
|
-
{ "1664" => "Montserrat" },
|
423
|
-
|
424
|
-
{ "1" => "Northern Mariana Islands" },
|
425
|
-
{ "1670" => "Northern Mariana Islands" },
|
426
|
-
|
427
|
-
{ "1" => "Puerto Rico" },
|
428
|
-
{ "1787" => "Puerto Rico" },
|
429
|
-
{ "1939" => "Puerto Rico" },
|
430
|
-
|
431
|
-
{ "1" => "Saint Kitts and Nevis" },
|
432
|
-
{ "1869" => "Saint Kitts and Nevis" },
|
433
|
-
|
434
|
-
{ "1" => "Saint Lucia" },
|
435
|
-
{ "1758" => "Saint Lucia" },
|
436
|
-
|
437
|
-
{ "1" => "Saint Vincent and the Grenadines" },
|
438
|
-
{ "1784" => "Saint Vincent and the Grenadines" },
|
439
|
-
|
440
|
-
{ "1" => "Trinidad and Tobago" },
|
441
|
-
{ "1868" => "Trinidad and Tobago" },
|
442
|
-
|
443
|
-
{ "1" => "Turks and Caicos Islands" },
|
444
|
-
{ "1649" => "Turks and Caicos Islands" },
|
445
|
-
|
446
|
-
{ "1" => "Virgin Islands, U.S." },
|
447
|
-
{ "1340" => "Virgin Islands, U.S." },
|
448
|
-
|
449
|
-
{"20" => "Egypt"},
|
450
|
-
{"210" => "Spare code"},
|
451
|
-
{"211" => "Spare code"},
|
452
|
-
{"212" => "Morocco"},
|
453
|
-
{"213" => "Algeria"},
|
454
|
-
{"214" => "Spare code"},
|
455
|
-
{"215" => "Spare code"},
|
456
|
-
{"216" => "Tunisia"},
|
457
|
-
{"217" => "Spare code"},
|
458
|
-
{"218" => "Libyan Arab Jamahiriya"},
|
459
|
-
{"219" => "Spare code"},
|
460
|
-
{"220" => "Gambia"},
|
461
|
-
{"221" => "Senegal"},
|
462
|
-
{"222" => "Mauritania"},
|
463
|
-
{"223" => "Mali"},
|
464
|
-
{"224" => "Guinea"},
|
465
|
-
{"225" => "Cote D'ivoire"},
|
466
|
-
{"226" => "Burkina Faso"},
|
467
|
-
{"227" => "Niger"},
|
468
|
-
{"228" => "Togo"},
|
469
|
-
{"229" => "Benin"},
|
470
|
-
{"230" => "Mauritius"},
|
471
|
-
{"231" => "Liberia"},
|
472
|
-
{"232" => "Sierra Leone"},
|
473
|
-
{"233" => "Ghana"},
|
474
|
-
{"234" => "Nigeria"},
|
475
|
-
{"235" => "Chad"},
|
476
|
-
{"236" => "Central African Republic"},
|
477
|
-
{"237" => "Cameroon"},
|
478
|
-
{"238" => "Cape Verde"},
|
479
|
-
{"239" => "Sao Tome and Principe"},
|
480
|
-
{"240" => "Equatorial Guinea"},
|
481
|
-
{"241" => "Gabon"},
|
482
|
-
{"242" => "Congo"},
|
483
|
-
{"243" => "Congo, the Democratic Republic of the"},
|
484
|
-
{"244" => "Angola"},
|
485
|
-
{"245" => "Guinea-Bissau"},
|
486
|
-
{"246" => "Diego Garcia"},
|
487
|
-
{"247" => "Ascension Island"},
|
488
|
-
{"248" => "Seychelles"},
|
489
|
-
{"249" => "Sudan"},
|
490
|
-
{"250" => "Rwanda"},
|
491
|
-
{"251" => "Ethiopia"},
|
492
|
-
{"252" => "Somalia"},
|
493
|
-
{"253" => "Djibouti"},
|
494
|
-
{"254" => "Kenya"},
|
495
|
-
{"255" => "Tanzania, United Republic of"},
|
496
|
-
{"256" => "Uganda"},
|
497
|
-
{"257" => "Burundi"},
|
498
|
-
{"258" => "Mozambique"},
|
499
|
-
{"259" => "Spare code"},
|
500
|
-
{"260" => "Zambia"},
|
501
|
-
{"261" => "Madagascar"},
|
502
|
-
{"262" => "Reunion"},
|
503
|
-
{"263" => "Zimbabwe"},
|
504
|
-
{"264" => "Namibia"},
|
505
|
-
{"265" => "Malawi"},
|
506
|
-
{"266" => "Lesotho"},
|
507
|
-
{"267" => "Botswana"},
|
508
|
-
{"268" => "Swaziland"},
|
509
|
-
{"269" => "Comoros"},
|
510
|
-
{"269" => "Mayotte"},
|
511
|
-
{"27" => "South Africa"},
|
512
|
-
{"280" => "Spare code"},
|
513
|
-
{"281" => "Spare code"},
|
514
|
-
{"282" => "Spare code"},
|
515
|
-
{"283" => "Spare code"},
|
516
|
-
{"284" => "Spare code"},
|
517
|
-
{"285" => "Spare code"},
|
518
|
-
{"286" => "Spare code"},
|
519
|
-
{"287" => "Spare code"},
|
520
|
-
{"288" => "Spare code"},
|
521
|
-
{"289" => "Spare code"},
|
522
|
-
{"290" => "Saint Helena"},
|
523
|
-
{"291" => "Eritrea"},
|
524
|
-
{"292" => "Spare code"},
|
525
|
-
{"293" => "Spare code"},
|
526
|
-
{"294" => "Spare code"},
|
527
|
-
{"295" => "Spare code"},
|
528
|
-
{"296" => "Spare code"},
|
529
|
-
{"297" => "Aruba"},
|
530
|
-
{"298" => "Faroe Islands"},
|
531
|
-
{"299" => "Greenland"},
|
532
|
-
{"30" => "Greece"},
|
533
|
-
{"31" => "Netherlands"},
|
534
|
-
{"32" => "Belgium"},
|
535
|
-
{"33" => "France"},
|
536
|
-
{"34" => "Spain"},
|
537
|
-
{"350" => "Gibraltar"},
|
538
|
-
{"351" => "Portugal"},
|
539
|
-
{"352" => "Luxembourg"},
|
540
|
-
{"353" => "Ireland"},
|
541
|
-
{"354" => "Iceland"},
|
542
|
-
{"355" => "Albania"},
|
543
|
-
{"356" => "Malta"},
|
544
|
-
{"357" => "Cyprus"},
|
545
|
-
{"358" => "Finland"},
|
546
|
-
{"359" => "Bulgaria"},
|
547
|
-
{"36" => "Hungary"},
|
548
|
-
{"370" => "Lithuania"},
|
549
|
-
{"371" => "Latvia"},
|
550
|
-
{"372" => "Estonia"},
|
551
|
-
{"373" => "Moldova, Republic of"},
|
552
|
-
{"374" => "Armenia"},
|
553
|
-
{"375" => "Belarus"},
|
554
|
-
{"376" => "Andorra"},
|
555
|
-
{"377" => "Monaco"},
|
556
|
-
{"378" => "San Marino"},
|
557
|
-
{"379" => "Holy See (Vatican City State)"},
|
558
|
-
{"380" => "Ukraine"},
|
559
|
-
{"381" => "Serbia and Montenegro"},
|
560
|
-
{"382" => "Spare code"},
|
561
|
-
{"383" => "Spare code"},
|
562
|
-
{"384" => "Spare code"},
|
563
|
-
{"385" => "Croatia"},
|
564
|
-
{"386" => "Slovenia"},
|
565
|
-
{"387" => "Bosnia and Herzegovina"},
|
566
|
-
{"388" => "Group of countries, shared code"},
|
567
|
-
{"389" => "Macedonia, the Former Yugoslav Republic of"},
|
568
|
-
{"39" => "Italy"},
|
569
|
-
{"40" => "Romania"},
|
570
|
-
{"41" => "Switzerland"},
|
571
|
-
{"420" => "Czech Republic"},
|
572
|
-
{"421" => "Slovakia"},
|
573
|
-
{"422" => "Spare code"},
|
574
|
-
{"423" => "Liechtenstein"},
|
575
|
-
{"424" => "Spare code"},
|
576
|
-
{"425" => "Spare code"},
|
577
|
-
{"426" => "Spare code"},
|
578
|
-
{"427" => "Spare code"},
|
579
|
-
{"428" => "Spare code"},
|
580
|
-
{"429" => "Spare code"},
|
581
|
-
{"43" => "Austria"},
|
582
|
-
{"44" => "United Kingdom"},
|
583
|
-
{"45" => "Denmark"},
|
584
|
-
{"46" => "Sweden"},
|
585
|
-
{"47" => "Norway"},
|
586
|
-
{"48" => "Poland"},
|
587
|
-
{"49" => "Germany"},
|
588
|
-
{"500" => "Falkland Islands"},
|
589
|
-
{"501" => "Belize"},
|
590
|
-
{"502" => "Guatemala"},
|
591
|
-
{"503" => "El Salvador"},
|
592
|
-
{"504" => "Honduras"},
|
593
|
-
{"505" => "Nicaragua"},
|
594
|
-
{"506" => "Costa Rica"},
|
595
|
-
{"507" => "Panama"},
|
596
|
-
{"508" => "Saint Pierre and Miquelon"},
|
597
|
-
{"509" => "Haiti"},
|
598
|
-
{"51" => "Peru"},
|
599
|
-
{"52" => "Mexico"},
|
600
|
-
{"53" => "Cuba"},
|
601
|
-
{"54" => "Argentina"},
|
602
|
-
{"55" => "Brazil"},
|
603
|
-
{"56" => "Chile"},
|
604
|
-
{"57" => "Colombia"},
|
605
|
-
{"58" => "Venezuela"},
|
606
|
-
{"590" => "Guadeloupe"},
|
607
|
-
{"591" => "Bolivia"},
|
608
|
-
{"592" => "Guyana"},
|
609
|
-
{"593" => "Ecuador"},
|
610
|
-
{"594" => "French Guiana"},
|
611
|
-
{"595" => "Paraguay"},
|
612
|
-
{"596" => "Martinique"},
|
613
|
-
{"597" => "Suriname"},
|
614
|
-
{"598" => "Uruguay"},
|
615
|
-
{"599" => "Netherlands Antilles"},
|
616
|
-
{"60" => "Malaysia"},
|
617
|
-
{"61" => "Australia"},
|
618
|
-
{"62" => "Indonesia"},
|
619
|
-
{"63" => "Philippines"},
|
620
|
-
{"64" => "New Zealand"},
|
621
|
-
{"65" => "Singapore"},
|
622
|
-
{"66" => "Thailand"},
|
623
|
-
{"670" => "Timor-Leste"},
|
624
|
-
{"671" => "Spare code"},
|
625
|
-
{"672" => "Australian External Territories"},
|
626
|
-
{"673" => "Brunei Darussalam"},
|
627
|
-
{"674" => "Nauru"},
|
628
|
-
{"675" => "Papua New Guinea"},
|
629
|
-
{"676" => "Tonga"},
|
630
|
-
{"677" => "Solomon Islands"},
|
631
|
-
{"678" => "Vanuatu"},
|
632
|
-
{"679" => "Fiji"},
|
633
|
-
{"680" => "Palau"},
|
634
|
-
{"681" => "Wallis and Futuna"},
|
635
|
-
{"682" => "Cook Islands"},
|
636
|
-
{"683" => "Niue"},
|
637
|
-
{"684" => "Spare code"},
|
638
|
-
{"685" => "Samoa"},
|
639
|
-
{"686" => "Kiribati"},
|
640
|
-
{"687" => "New Caledonia"},
|
641
|
-
{"688" => "Tuvalu"},
|
642
|
-
{"689" => "French Polynesia"},
|
643
|
-
{"690" => "Tokelau"},
|
644
|
-
{"691" => "Micronesia, Federated States of"},
|
645
|
-
{"692" => "Marshall Islands"},
|
646
|
-
{"693" => "Spare code"},
|
647
|
-
{"694" => "Spare code"},
|
648
|
-
{"695" => "Spare code"},
|
649
|
-
{"696" => "Spare code"},
|
650
|
-
{"697" => "Spare code"},
|
651
|
-
{"698" => "Spare code"},
|
652
|
-
{"699" => "Spare code"},
|
653
|
-
|
654
|
-
{"7" => "Russian Federation"},
|
655
|
-
{"7" => "Kazakhstan"},
|
656
|
-
{"76" => "Kazakhstan"},
|
657
|
-
{"77" => "Kazakhstan"},
|
12
|
+
class << self
|
658
13
|
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
{"803" => "Spare code"},
|
663
|
-
{"804" => "Spare code"},
|
664
|
-
{"805" => "Spare code"},
|
665
|
-
{"806" => "Spare code"},
|
666
|
-
{"807" => "Spare code"},
|
667
|
-
{"808" => "International Shared Cost Service"},
|
668
|
-
{"809" => "Spare code"},
|
669
|
-
{"81" => "Japan"},
|
670
|
-
{"82" => "Korea, Republic of"},
|
671
|
-
{"830" => "Spare code"},
|
672
|
-
{"831" => "Spare code"},
|
673
|
-
{"832" => "Spare code"},
|
674
|
-
{"833" => "Spare code"},
|
675
|
-
{"834" => "Spare code"},
|
676
|
-
{"835" => "Spare code"},
|
677
|
-
{"836" => "Spare code"},
|
678
|
-
{"837" => "Spare code"},
|
679
|
-
{"838" => "Spare code"},
|
680
|
-
{"839" => "Spare code"},
|
681
|
-
{"84" => "Viet Nam"},
|
682
|
-
{"850" => "Korea, Democratic People's Republic of"},
|
683
|
-
{"851" => "Spare code"},
|
684
|
-
{"852" => "Hong Kong"},
|
685
|
-
{"853" => "Macao"},
|
686
|
-
{"854" => "Spare code"},
|
687
|
-
{"855" => "Cambodia"},
|
688
|
-
{"856" => "Lao People's Democratic Republic"},
|
689
|
-
{"857" => "Spare code"},
|
690
|
-
{"858" => "Spare code"},
|
691
|
-
{"859" => "Spare code"},
|
692
|
-
{"86" => "China"},
|
693
|
-
{"870" => "Inmarsat SNAC"},
|
694
|
-
{"871" => "Inmarsat"},
|
695
|
-
{"872" => "Inmarsat"},
|
696
|
-
{"873" => "Inmarsat"},
|
697
|
-
{"874" => "Inmarsat"},
|
698
|
-
{"875" => "Reserved - Maritime Mobile Service Applications"},
|
699
|
-
{"876" => "Reserved - Maritime Mobile Service Applications"},
|
700
|
-
{"877" => "Reserved - Maritime Mobile Service Applications"},
|
701
|
-
{"878" => "Universal Personal Telecommunication Service"},
|
702
|
-
{"879" => "Reserved for national non-commercial purposes"},
|
703
|
-
{"880" => "Bangladesh"},
|
704
|
-
{"881" => "International Mobile, shared code"},
|
705
|
-
{"882" => "International Networks, shared code"},
|
706
|
-
{"883" => "Spare code"},
|
707
|
-
{"884" => "Spare code"},
|
708
|
-
{"885" => "Spare code"},
|
709
|
-
{"886" => "Reserved"},
|
710
|
-
{"887" => "Spare code"},
|
711
|
-
{"888" => "Reserved for future global service"},
|
712
|
-
{"889" => "Spare code"},
|
713
|
-
{"890" => "Spare code"},
|
714
|
-
{"891" => "Spare code"},
|
715
|
-
{"892" => "Spare code"},
|
716
|
-
{"893" => "Spare code"},
|
717
|
-
{"894" => "Spare code"},
|
718
|
-
{"895" => "Spare code"},
|
719
|
-
{"896" => "Spare code"},
|
720
|
-
{"897" => "Spare code"},
|
721
|
-
{"898" => "Spare code"},
|
722
|
-
{"899" => "Spare code"},
|
723
|
-
{"90" => "Turkey"},
|
724
|
-
{"91" => "India"},
|
725
|
-
{"92" => "Pakistan"},
|
726
|
-
{"93" => "Afghanistan"},
|
727
|
-
{"94" => "Sri Lanka"},
|
728
|
-
{"95" => "Myanmar"},
|
729
|
-
{"960" => "Maldives"},
|
730
|
-
{"961" => "Lebanon"},
|
731
|
-
{"962" => "Jordan"},
|
732
|
-
{"963" => "Syrian Arab Republic"},
|
733
|
-
{"964" => "Iraq"},
|
734
|
-
{"965" => "Kuwait"},
|
735
|
-
{"966" => "Saudi Arabia"},
|
736
|
-
{"967" => "Yemen"},
|
737
|
-
{"968" => "Oman"},
|
738
|
-
{"969" => "Reserved - reservation currently under investigation"},
|
739
|
-
{"970" => "Reserved"},
|
740
|
-
{"971" => "United Arab Emirates"},
|
741
|
-
{"972" => "Israel"},
|
742
|
-
{"973" => "Bahrain"},
|
743
|
-
{"974" => "Qatar"},
|
744
|
-
{"975" => "Bhutan"},
|
745
|
-
{"976" => "Mongolia"},
|
746
|
-
{"977" => "Nepal"},
|
747
|
-
{"978" => "Spare code"},
|
748
|
-
{"979" => "International Premium Rate Service"},
|
749
|
-
{"98" => "Iran, Islamic Republic of"},
|
750
|
-
{"990" => "Spare code"},
|
751
|
-
{"991" => "Trial of a proposed new international telecommunication public correspondence"},
|
752
|
-
{"992" => "Tajikistan"},
|
753
|
-
{"993" => "Turkmenistan"},
|
754
|
-
{"994" => "Azerbaijan"},
|
755
|
-
{"995" => "Georgia"}
|
756
|
-
]
|
757
|
-
|
758
|
-
def self.list
|
759
|
-
ItuCodes::CODE_LIST
|
760
|
-
end
|
14
|
+
def list
|
15
|
+
Constants::ASSIGNED_COUNTRY_CODES
|
16
|
+
end
|
761
17
|
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
18
|
+
def lookup(code)
|
19
|
+
cleaned = clean(code)
|
20
|
+
list.find_all{ |hsh| hsh.keys.first == cleaned }.map do |k|
|
21
|
+
k.values.first
|
22
|
+
end.uniq
|
23
|
+
end
|
768
24
|
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
25
|
+
def find (code_or_name)
|
26
|
+
if code_or_name.to_s.match /[^0-9]/ # non-numeric string passed
|
27
|
+
find_by_name(code_or_name)
|
28
|
+
else
|
29
|
+
cleaned = self.clean(code_or_name)
|
30
|
+
find_by_itu_code(cleaned)
|
31
|
+
end
|
775
32
|
end
|
776
|
-
end
|
777
33
|
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
34
|
+
def find_by_itu_code(code)
|
35
|
+
if american?(code) and code.length > 1
|
36
|
+
returner = 'United States'
|
37
|
+
else
|
38
|
+
returner = list.find_all do |record|
|
39
|
+
record.has_key? code
|
40
|
+
end.map { |k| k.values.first }.uniq
|
41
|
+
end
|
42
|
+
returner.size <= 1 ? returner.shift : returner
|
785
43
|
end
|
786
|
-
returner.size <= 1 ? returner.shift : returner
|
787
|
-
end
|
788
44
|
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
45
|
+
def find_by_name(name)
|
46
|
+
returner = list.find_all do |record|
|
47
|
+
record.has_value? name
|
48
|
+
end.map{ |k| k.keys.first }.uniq
|
49
|
+
returner.size <= 1 ? returner.shift : returner
|
50
|
+
end
|
795
51
|
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
52
|
+
# ie. find_by_country_iso_code('US')
|
53
|
+
def iso2itu(iso_code)
|
54
|
+
[find_by_name( Helpers.country_name_lookup(iso_code) )].flatten.reject do |c|
|
55
|
+
north_american?(c) and c.length > 1
|
56
|
+
end.shift rescue nil
|
57
|
+
end
|
802
58
|
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
59
|
+
# this is tricky for North American destinations: '1' can be the US, Canada or another country
|
60
|
+
def itu2iso(itu_code)
|
61
|
+
lookup(itu_code).map do |country|
|
62
|
+
Helpers.country_code_lookup(country)
|
63
|
+
end.compact
|
64
|
+
end
|
809
65
|
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
817
|
-
|
66
|
+
# returns true for any valid ITU code
|
67
|
+
# valid_code?(1) => true
|
68
|
+
# valid_code?(1818) => false
|
69
|
+
def valid_code?(some_code)
|
70
|
+
if north_american?(some_code)
|
71
|
+
some_code.length == 1
|
72
|
+
else
|
73
|
+
self.list.any? { |hsh| hsh.has_key?(some_code) }
|
74
|
+
end
|
818
75
|
end
|
819
|
-
end
|
820
76
|
|
821
|
-
|
822
|
-
|
823
|
-
|
77
|
+
def north_america
|
78
|
+
find_by_itu_code '1'
|
79
|
+
end
|
824
80
|
|
825
|
-
|
826
|
-
|
827
|
-
|
81
|
+
def north_american?(some_code)
|
82
|
+
some_code.to_s[0,1] == '1'
|
83
|
+
end
|
828
84
|
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
85
|
+
# parse a destination code (probably with area code) to find the ITU code
|
86
|
+
# ex: parse_code(1818) => 1
|
87
|
+
def parse_code(some_code)
|
88
|
+
some_code = clean(some_code)
|
89
|
+
sub_index = (1..some_code.length).find do |len|
|
90
|
+
valid_code? some_code[0,len]
|
91
|
+
end
|
92
|
+
some_code[0,sub_index] unless sub_index.nil?
|
835
93
|
end
|
836
|
-
some_code[0,sub_index] unless sub_index.nil?
|
837
|
-
end
|
838
94
|
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
95
|
+
# parse a destination code (probably with area code) to find the number without the ITU code
|
96
|
+
# ex: parse_number(18184443322) => 8184443322
|
97
|
+
def parse_number(some_code)
|
98
|
+
some_code = clean(some_code)
|
99
|
+
sub_index = (1..some_code.length).find do |len|
|
100
|
+
valid_code? some_code[0,len]
|
101
|
+
end
|
102
|
+
some_code[sub_index,some_code.length - sub_index] unless sub_index.nil?
|
845
103
|
end
|
846
|
-
some_code[sub_index,some_code.length - sub_index] unless sub_index.nil?
|
847
|
-
end
|
848
104
|
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
105
|
+
def compatriots?(some, other)
|
106
|
+
both_valid = ! ( parse_code(some).nil? or parse_code(other).nil? )
|
107
|
+
both_valid and ( parse_code(some) == parse_code(other) ) rescue nil
|
108
|
+
end
|
853
109
|
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
110
|
+
# def american?(some_code)
|
111
|
+
# # for non-US North American codes, parse_code will return a 4 digit code
|
112
|
+
# # for US, '1' will be returned
|
113
|
+
# some_code = some_code.to_s
|
114
|
+
# countries = lookup(some_code[0,4])
|
115
|
+
# north_american?(some_code) and (countries.include?('United States') or countries.empty?)
|
116
|
+
# end
|
117
|
+
|
118
|
+
def american?(some_code)
|
119
|
+
# for non-US North American codes, parse_code will return a 4 digit code
|
120
|
+
# for US, '1' will be returned
|
121
|
+
some_code = some_code.to_s
|
122
|
+
countries = lookup(some_code[0,4])
|
123
|
+
north_american?(some_code) and (countries.include?('United States'))
|
124
|
+
end
|
861
125
|
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
north_american?(some_code) and (countries.include?('United States'))
|
868
|
-
end
|
126
|
+
def canadian?(some_code)
|
127
|
+
some_code = some_code.to_s
|
128
|
+
countries = lookup(some_code[0,4])
|
129
|
+
north_american?(some_code) and (countries.include?('Canada'))
|
130
|
+
end
|
869
131
|
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
end
|
132
|
+
# converts input to string, then strips any non-numeric characters
|
133
|
+
def clean(input)
|
134
|
+
input.to_s.gsub(/[^0-9]/, '')
|
135
|
+
end
|
875
136
|
|
876
|
-
# converts input to string, then strips any non-numeric characters
|
877
|
-
def self.clean(input)
|
878
|
-
input.to_s.gsub(/[^0-9]/, '')
|
879
137
|
end
|
880
138
|
end
|