itu_codes 0.3.5 → 0.3.6
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.
- 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
|