phony 1.2.11 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +1 -1
- data/lib/countries.rb +385 -0
- data/lib/phony.rb +11 -9
- data/lib/phony/countries.rb +1 -0
- data/lib/phony/countries/austria.rb +68 -67
- data/lib/phony/countries/belgium.rb +29 -57
- data/lib/phony/countries/chile.rb +5 -12
- data/lib/phony/countries/china.rb +21 -20
- data/lib/phony/countries/egypt.rb +12 -37
- data/lib/phony/countries/germany.rb +39 -36
- data/lib/phony/countries/greece.rb +21 -25
- data/lib/phony/countries/hungary.rb +6 -19
- data/lib/phony/countries/italy.rb +174 -152
- data/lib/phony/countries/malaysia.rb +17 -17
- data/lib/phony/countries/netherlands.rb +50 -52
- data/lib/phony/countries/romania.rb +28 -27
- data/lib/phony/countries/south_korea.rb +11 -11
- data/lib/phony/countries/sweden.rb +49 -49
- data/lib/phony/countries/united_kingdom.rb +4 -4
- data/lib/phony/country.rb +14 -80
- data/lib/phony/country_codes.rb +23 -3
- data/lib/phony/dsl.rb +78 -0
- data/lib/phony/national_code.rb +2 -5
- data/lib/phony/national_splitters/dsl.rb +20 -0
- data/lib/phony/national_splitters/fixed.rb +1 -1
- data/lib/phony/national_splitters/none.rb +1 -1
- data/lib/phony/national_splitters/regex.rb +49 -0
- data/lib/phony/national_splitters/variable.rb +6 -6
- data/lib/phony/vanity.rb +3 -0
- data/spec/lib/phony/country_codes_spec.rb +1 -1
- data/spec/lib/phony/country_spec.rb +12 -45
- data/spec/lib/phony/local_splitters/fixed_spec.rb +8 -0
- data/spec/lib/phony/national_code_spec.rb +13 -0
- data/spec/lib/phony/national_splitters/regex_spec.rb +23 -0
- data/spec/lib/phony/national_splitters/variable_spec.rb +2 -4
- data/spec/lib/phony_spec.rb +44 -4
- metadata +9 -21
- data/lib/phony/countries/all_other.rb +0 -455
- data/lib/phony/countries/norway.rb +0 -11
- data/lib/phony/countries/peru.rb +0 -19
- data/lib/phony/countries/portugal.rb +0 -16
- data/lib/phony/national_splitters/experimental.rb +0 -17
- data/spec/lib/phony/countries/austria_spec.rb +0 -24
- data/spec/lib/phony/countries/belgium_spec.rb +0 -33
- data/spec/lib/phony/countries/egypt_spec.rb +0 -18
- data/spec/lib/phony/countries/greece_spec.rb +0 -18
- data/spec/lib/phony/countries/portugal_spec.rb +0 -21
- data/spec/lib/phony/countries/switzerland_spec.rb +0 -18
- data/spec/lib/phony/countries/united_kingdom_spec.rb +0 -50
@@ -1,30 +1,26 @@
|
|
1
|
+
include Phony::DSL
|
2
|
+
|
1
3
|
# Greece uses a variable-length ndc code, thus we use a separate file to not let all_other.rb explode.
|
2
4
|
#
|
3
5
|
# Note: Greece uses a variable ndc format from length 2 to 4.
|
4
6
|
# To save space, we only use ndcs of length up to 3 (and use the fallback).
|
5
7
|
#
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
'699'
|
26
|
-
],
|
27
|
-
:service => [ # TODO
|
28
|
-
'800'
|
29
|
-
]
|
30
|
-
}
|
8
|
+
ndcs = [
|
9
|
+
'21', # Athens
|
10
|
+
'231', # Thessaloniki
|
11
|
+
'241', # Larissa
|
12
|
+
'251', # Kavala
|
13
|
+
'261', # Patras
|
14
|
+
'271', # Tripoli
|
15
|
+
'281', # Heraklion
|
16
|
+
'690', # Mobile
|
17
|
+
'693', # Mobile
|
18
|
+
'694', # Mobile
|
19
|
+
'695', # Mobile
|
20
|
+
'697', # Mobile
|
21
|
+
'698', # Mobile
|
22
|
+
'699', # Mobile
|
23
|
+
'800' # Service
|
24
|
+
]
|
25
|
+
|
26
|
+
Phony::Countries::Greece = one_of(ndcs, :max_length => 4) >> split(6)
|
@@ -1,23 +1,10 @@
|
|
1
|
+
include Phony::DSL
|
2
|
+
|
1
3
|
# Hungarian phone numbers.
|
2
4
|
#
|
3
5
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Hungary
|
4
6
|
#
|
5
|
-
Phony::Countries::Hungary =
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# 1 is Budapest.
|
10
|
-
# All others are captured using
|
11
|
-
# the fallback length 2.
|
12
|
-
#
|
13
|
-
:landline => [
|
14
|
-
'1'
|
15
|
-
],
|
16
|
-
# TODO :mobile => [],
|
17
|
-
:service => [
|
18
|
-
'104',
|
19
|
-
'105',
|
20
|
-
'107',
|
21
|
-
'112'
|
22
|
-
]
|
23
|
-
}
|
7
|
+
Phony::Countries::Hungary = one_of('104', '105', '107', '112') >> split(3,3) |
|
8
|
+
# special
|
9
|
+
# TODO mobile
|
10
|
+
one_of('1', :max_length => 2) >> split(3,4)
|
@@ -1,156 +1,178 @@
|
|
1
|
+
include Phony::DSL
|
2
|
+
|
1
3
|
# Italian phone numbers.
|
2
4
|
#
|
3
5
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Italy
|
4
6
|
#
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
7
|
+
ndcs = [
|
8
|
+
'010', # Genoa
|
9
|
+
'011', # Turin
|
10
|
+
'0122', # Sestrieres, Bardonecchia and other Susa Valley mountain resorts
|
11
|
+
'0125', # Ivrea
|
12
|
+
'0131', # Alessandria
|
13
|
+
'0141', # Asti
|
14
|
+
'015', # Biella
|
15
|
+
'0161', # Vercelli
|
16
|
+
'0165', # Aosta, Courmayeur
|
17
|
+
'0166', # Cervinia
|
18
|
+
'0171', # Cuneo
|
19
|
+
'0185', # Tigullio
|
20
|
+
'0187', # La Spezia and Cinque Terre
|
21
|
+
'019', # Savona
|
22
|
+
'02', # Milan
|
23
|
+
'030', # Brescia
|
24
|
+
'031', # Como
|
25
|
+
'0321', # Novara
|
26
|
+
'0331', # Varese
|
27
|
+
'0341', # Lecco
|
28
|
+
'0342', # Sondrio
|
29
|
+
'035', # Bergamo
|
30
|
+
'0369', # Mediaset Cologno Monzese and Segrate TV studios, geographical rate (used for polls, television programs, etc.)
|
31
|
+
'0376', # Mantua
|
32
|
+
'0382', # Pavia
|
33
|
+
'039', # Monza
|
34
|
+
'040', # Trieste
|
35
|
+
'041', # Venice
|
36
|
+
'0425', # Rovigo
|
37
|
+
'0432', # Udine
|
38
|
+
'0444', # Vicenza
|
39
|
+
'045', # Verona
|
40
|
+
'0461', # Trento
|
41
|
+
'0471', # Bolzano
|
42
|
+
'0481', # Gorizia
|
43
|
+
'049', # Padua
|
44
|
+
'050', # Pisa
|
45
|
+
'051', # Bologna
|
46
|
+
'0521', # Parma
|
47
|
+
'0522', # Reggio nell'Emilia
|
48
|
+
'0523', # Piacenza
|
49
|
+
'0532', # Ferrara
|
50
|
+
'0536', # Sassuolo
|
51
|
+
'0541', # Rimini
|
52
|
+
'0549', # San Marino (Most Serene Republic of San Marino)
|
53
|
+
'055', # Florence
|
54
|
+
'0573', # Pistoia
|
55
|
+
'0577', # Siena
|
56
|
+
'0586', # Livorno
|
57
|
+
'059', # Modena
|
58
|
+
'06', # Rome (including State of Vatican City) and Aprilia
|
59
|
+
'070', # Cagliari
|
60
|
+
'071', # Ancona
|
61
|
+
'075', # Perugia
|
62
|
+
'0769', # RAI Saxa Rubra Studios, geographical rate (used for polls, television programs, etc.)
|
63
|
+
'0771', # Fondi
|
64
|
+
'0773', # Latina
|
65
|
+
'0775', # Frosinone
|
66
|
+
'0789', # Olbia and Costa Smeralda
|
67
|
+
'079', # Sassari
|
68
|
+
'080', # Bari
|
69
|
+
'081', # Naples
|
70
|
+
'0823', # Caserta
|
71
|
+
'0824', # Benevento
|
72
|
+
'0825', # Avellino
|
73
|
+
'085', # Pescara
|
74
|
+
'0865', # Isernia
|
75
|
+
'0871', # Chieti
|
76
|
+
'0872', # Lanciano
|
77
|
+
'0873', # Vasto
|
78
|
+
'0874', # Campobasso
|
79
|
+
'0875', # Termoli
|
80
|
+
'0881', # Foggia
|
81
|
+
'089', # Salerno
|
82
|
+
'090', # Messina
|
83
|
+
'091', # Palermo
|
84
|
+
'092', # Agrigento
|
85
|
+
'095', # Catania
|
86
|
+
'0961', # Catanzaro
|
87
|
+
'0965', # Reggio di Calabria
|
88
|
+
'0971', # Potenza
|
89
|
+
'099', # Taranto
|
90
|
+
]
|
91
|
+
|
92
|
+
mobile = [
|
93
|
+
'310',
|
94
|
+
'31100',
|
95
|
+
'31101',
|
96
|
+
'31102',
|
97
|
+
'31103',
|
98
|
+
'31104',
|
99
|
+
'31105',
|
100
|
+
'313',
|
101
|
+
'319',
|
102
|
+
('3200'..'3209').to_a,
|
103
|
+
'322',
|
104
|
+
('3230'..'3239').to_a,
|
105
|
+
('3270'..'3279').to_a,
|
106
|
+
('3280'..'3289').to_a,
|
107
|
+
('3290'..'3299').to_a,
|
108
|
+
('3300'..'3309').to_a,
|
109
|
+
'331',
|
110
|
+
('3330'..'3339').to_a,
|
111
|
+
('3340'..'3349').to_a,
|
112
|
+
('3350'..'3359').to_a,
|
113
|
+
('3360'..'3369').to_a,
|
114
|
+
('3370'..'3379').to_a,
|
115
|
+
('3380'..'3389').to_a,
|
116
|
+
('3390'..'3399').to_a,
|
117
|
+
('3400'..'3409').to_a,
|
118
|
+
'341',
|
119
|
+
('3430'..'3439').to_a,
|
120
|
+
'345',
|
121
|
+
('3460'..'3469').to_a,
|
122
|
+
('3470'..'3479').to_a,
|
123
|
+
('3480'..'3489').to_a,
|
124
|
+
('3490'..'3499').to_a,
|
125
|
+
'350',
|
126
|
+
('3600'..'3609').to_a,
|
127
|
+
'361',
|
128
|
+
'362',
|
129
|
+
('3630'..'3639').to_a,
|
130
|
+
('3660'..'3669').to_a,
|
131
|
+
('3680'..'3689').to_a,
|
132
|
+
'370',
|
133
|
+
'373',
|
134
|
+
'377',
|
135
|
+
('3800'..'3809').to_a,
|
136
|
+
('3880'..'3889').to_a,
|
137
|
+
('3890'..'3899').to_a,
|
138
|
+
('3900'..'3909').to_a,
|
139
|
+
('3910'..'3919').to_a,
|
140
|
+
('3920'..'3929').to_a,
|
141
|
+
('3930'..'3939').to_a,
|
142
|
+
'397'
|
143
|
+
].flatten
|
144
|
+
|
145
|
+
service = [ # Not exhaustive.
|
146
|
+
'112',
|
147
|
+
'113',
|
148
|
+
'115',
|
149
|
+
'117',
|
150
|
+
'118',
|
151
|
+
'1515',
|
152
|
+
'1518',
|
153
|
+
'1530'
|
154
|
+
]
|
155
|
+
|
156
|
+
# TODO Normalize!
|
157
|
+
#
|
158
|
+
# Phony::Countries::Italy = one_of(*service) >> split(3,3) |
|
159
|
+
# one_of(*mobile) >> split(3,4) |
|
160
|
+
# one_of(*ndcs, :max_length => 3) >> split(3,4)
|
161
|
+
|
162
|
+
handlers = []
|
163
|
+
handlers << Phony::NationalCode.new(
|
164
|
+
Phony::NationalSplitters::Variable.new(nil, service),
|
165
|
+
Phony::LocalSplitters::Fixed.instance_for([4, 4]),
|
166
|
+
false
|
167
|
+
)
|
168
|
+
handlers << Phony::NationalCode.new(
|
169
|
+
Phony::NationalSplitters::Variable.new(nil, mobile),
|
170
|
+
Phony::LocalSplitters::Fixed.instance_for([3, 4]),
|
171
|
+
false
|
172
|
+
)
|
173
|
+
handlers << Phony::NationalCode.new(
|
174
|
+
Phony::NationalSplitters::Variable.new(3, ndcs),
|
175
|
+
Phony::LocalSplitters::Fixed.instance_for([3, 4]),
|
176
|
+
false
|
177
|
+
)
|
178
|
+
Phony::Countries::Italy = Phony::Country.new *handlers
|
@@ -1,21 +1,21 @@
|
|
1
|
+
include Phony::DSL
|
2
|
+
|
1
3
|
# Malaysian phone numbers.
|
2
4
|
#
|
3
5
|
# http://en.wikipedia.org/wiki/Telephone_numbers_in_Malaysia
|
4
6
|
#
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
:service => %w{ 100 101 102 103 104 108 112 991 994 995 999 }
|
21
|
-
}
|
7
|
+
ndcs = [
|
8
|
+
'2', # Singapore
|
9
|
+
'3', # Selangor & Federal Territories of Kuala Lumpur & Putrajaya & also Genting Highlands, Pahang
|
10
|
+
'4', # Kedah, Penang & Perlis
|
11
|
+
'5', # Perak & Cameron Highlands (Pahang)
|
12
|
+
'6', # Melaka, Negeri Sembilan & Muar (Johor)
|
13
|
+
'7', # Johor (except Muar)
|
14
|
+
'9', # Kelantan, Pahang (except Cameron Highlands & Genting Highlands) & Terengganu
|
15
|
+
]
|
16
|
+
mobile = %w{ 10 11 12 13 14 153 154 156 158 16 17 18 19 }
|
17
|
+
service = %w{ 100 101 102 103 104 108 112 991 994 995 999 }
|
18
|
+
|
19
|
+
Phony::Countries::Malaysia = one_of(service) >> split(3,3) |
|
20
|
+
one_of(mobile) >> split(8) |
|
21
|
+
one_of(ndcs, :max_length => 2) >> split(8)
|