File Coverage

blib/lib/Number/Phone/StubCountry/VA.pm
Criterion Covered Total %
statement 17 17 100.0
branch 2 2 100.0
condition n/a
subroutine 5 5 100.0
pod 1 1 100.0
total 25 25 100.0


line stmt bran cond sub pod time code
1             # automatically generated file, don't edit
2              
3              
4              
5             # Copyright 2023 David Cantrell, derived from data from libphonenumber
6             # http://code.google.com/p/libphonenumber/
7             #
8             # Licensed under the Apache License, Version 2.0 (the "License");
9             # you may not use this file except in compliance with the License.
10             # You may obtain a copy of the License at
11             #
12             # http://www.apache.org/licenses/LICENSE-2.0
13             #
14             # Unless required by applicable law or agreed to in writing, software
15             # distributed under the License is distributed on an "AS IS" BASIS,
16             # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17             # See the License for the specific language governing permissions and
18             # limitations under the License.
19             package Number::Phone::StubCountry::VA;
20 3     3   2059 use base qw(Number::Phone::StubCountry);
  3         13  
  3         427  
21              
22 3     3   24 use strict;
  3         8  
  3         70  
23 3     3   15 use warnings;
  3         11  
  3         96  
24 3     3   18 use utf8;
  3         15  
  3         20  
25             our $VERSION = 1.20230614174404;
26              
27             my $formatters = [];
28              
29             my $validators = {
30             'fixed_line' => '06698\\d{1,6}',
31             'geographic' => '06698\\d{1,6}',
32             'mobile' => '
33             3[1-9]\\d{8}|
34             3[2-9]\\d{7}
35             ',
36             'pager' => '',
37             'personal_number' => '
38             1(?:
39             78\\d|
40             99
41             )\\d{6}
42             ',
43             'specialrate' => '(
44             84(?:
45             [08]\\d{3}|
46             [17]
47             )\\d{3}
48             )|(
49             (?:
50             0878\\d{3}|
51             89(?:
52             2\\d|
53             3[04]|
54             4(?:
55             [0-4]|
56             [5-9]\\d\\d
57             )|
58             5[0-4]
59             )
60             )\\d\\d|
61             (?:
62             1(?:
63             44|
64             6[346]
65             )|
66             89(?:
67             38|
68             5[5-9]|
69             9
70             )
71             )\\d{6}
72             )',
73             'toll_free' => '
74             80(?:
75             0\\d{3}|
76             3
77             )\\d{3}
78             ',
79             'voip' => '55\\d{8}'
80             };
81             my %areanames = ();
82             $areanames{it} = {"390343", "Chiavenna",
83             "390436", "Cortina\ d\'Ampezzo",
84             "390984", "Cosenza",
85             "390774", "Tivoli",
86             "390324", "Domodossola",
87             "390863", "Avezzano",
88             "390383", "Voghera",
89             "39010", "Genova",
90             "390165", "Aosta",
91             "390923", "Trapani",
92             "390736", "Ascoli\ Piceno",
93             "390331", "Busto\ Arsizio",
94             "390474", "Brunico",
95             "390332", "Varese",
96             "390345", "San\ Pellegrino\ Terme",
97             "390121", "Pinerolo",
98             "390122", "Susa",
99             "390536", "Sassuolo",
100             "390925", "Sciacca",
101             "390163", "Borgosesia",
102             "390385", "Stradella",
103             "390771", "Formia",
104             "390982", "Paola",
105             "390549", "Repubblica\ di\ San\ Marino",
106             "390981", "Castrovillari",
107             "390789", "Olbia",
108             "390322", "Arona",
109             "390376", "Mantova",
110             "390185", "Rapallo",
111             "390547", "Cesena",
112             "390363", "Treviglio",
113             "390935", "Enna",
114             "390942", "Taormina",
115             "390883", "Andria",
116             "39055", "Firenze",
117             "390571", "Empoli",
118             "390941", "Patti",
119             "390572", "Montecatini\ Terme",
120             "390964", "Locri",
121             "390587", "Pontedera",
122             "390365", "Salò",
123             "390471", "Bolzano",
124             "390472", "Bressanone",
125             "390831", "Brindisi",
126             "390426", "Adria",
127             "390143", "Novi\ Ligure",
128             "390124", "Rivarolo\ Canavese",
129             "390933", "Caltagirone",
130             "390885", "Cerignola",
131             "390473", "Merano",
132             "390182", "Albenga",
133             "390833", "Gallipoli",
134             "390985", "Scalea",
135             "390968", "Lamezia\ Terme",
136             "390775", "Frosinone",
137             "390828", "Battipaglia",
138             "390142", "Casale\ Monferrato",
139             "390737", "Camerino",
140             "390932", "Ragusa",
141             "390931", "Siracusa",
142             "390323", "Baveno",
143             "390766", "Civitavecchia",
144             "390864", "Sulmona",
145             "390773", "Latina",
146             "390983", "Rossano",
147             "390835", "Matera",
148             "390362", "Seregno",
149             "3906", "Roma",
150             "390344", "Menaggio",
151             "390573", "Pistoia",
152             "390566", "Follonica",
153             "390437", "Belluno",
154             "390882", "San\ Severo",
155             "390924", "Alcamo",
156             "390384", "Mortara",
157             "390439", "Feltre",
158             "390578", "Chianciano\ Terme",
159             "390184", "Sanremo",
160             "39041", "Venezia",
161             "390934", "Caltanissetta",
162             "390123", "Lanzo\ Torinese",
163             "390965", "Reggio\ di\ Calabria",
164             "390429", "Este",
165             "390427", "Spilimbergo",
166             "390144", "Acqui\ Terme",
167             "390364", "Breno",
168             "390861", "Teramo",
169             "390746", "Rieti",
170             "390381", "Vigevano",
171             "390921", "Cefalù",
172             "390976", "Muro\ Lucano",
173             "390125", "Ivrea",
174             "390546", "Faenza",
175             "390884", "Manfredonia",
176             "390377", "Codogno",
177             "390975", "Sala\ Consilina",
178             "390545", "Lugo",
179             "390785", "Macomer",
180             "390172", "Savigliano",
181             "390731", "Jesi",
182             "390585", "Massa",
183             "390732", "Fabriano",
184             "390424", "Bassano\ del\ Grappa",
185             "390524", "Fidenza",
186             "390543", "Forlì",
187             "390973", "Lagonegro",
188             "390966", "Palmi",
189             "390431", "Cervignano\ del\ Friuli",
190             "390374", "Soresina",
191             "390445", "Schio",
192             "390871", "Chieti",
193             "390743", "Spoleto",
194             "390872", "Lanciano",
195             "390174", "Mondovì",
196             "390565", "Piombino",
197             "390588", "Volterra",
198             "390534", "Porretta\ Terme",
199             "390463", "Cles",
200             "390765", "Poggio\ Mirteto",
201             "390421", "San\ Donà\ di\ Piave",
202             "390836", "Maglie",
203             "390522", "Reggio\ nell\'Emilia",
204             "390776", "Cassino",
205             "390763", "Orvieto",
206             "390465", "Tione\ di\ Trento",
207             "390721", "Pesaro",
208             "390722", "Urbino",
209             "390434", "Pordenone",
210             "390974", "Vallo\ della\ Lucania",
211             "390827", "Sant\'Angelo\ dei\ Lombardi",
212             "390544", "Ravenna",
213             "390784", "Nuoro",
214             "390761", "Viterbo",
215             "390584", "Viareggio",
216             "39081", "Napoli",
217             "390744", "Terni",
218             "3906698", "Città\ del\ Vaticano",
219             "390373", "Crema",
220             "390967", "Soverato",
221             "390438", "Conegliano",
222             "390525", "Fornovo\ di\ Taro",
223             "39011", "Torino",
224             "390462", "Cavalese",
225             "390375", "Casalmaggiore",
226             "390423", "Montebelluna",
227             "390175", "Saluzzo",
228             "390386", "Ostiglia",
229             "390428", "Tarvisio",
230             "390781", "Iglesias",
231             "390972", "Melfi",
232             "390564", "Grosseto",
233             "390542", "Imola",
234             "390535", "Mirandola",
235             "390971", "Potenza",
236             "390782", "Lanusei",
237             "390433", "Tolmezzo",
238             "390346", "Clusone",
239             "390873", "Vasto",
240             "390735", "San\ Benedetto\ del\ Tronto",
241             "390742", "Foligno",
242             "390533", "Comacchio",
243             "390173", "Alba",
244             "390166", "Saint\-Vincent",
245             "390875", "Termoli",
246             "39019", "Savona",
247             "3902", "Milano",
248             "390464", "Rovereto",
249             "390435", "Pieve\ di\ Cadore",
250             "390442", "Legnago",};
251             $areanames{en} = {"39091", "Palermo",
252             "390183", "Imperia",
253             "39030", "Brescia",
254             "39045", "Verona",
255             "390365", "Brescia",
256             "390471", "Bolzano\/Bozen",
257             "390426", "Rovigo",
258             "390832", "Lecce",
259             "390522", "Reggio\ Emilia",
260             "390521", "Parma",
261             "390776", "Frosinone",
262             "390874", "Campobasso",
263             "390933", "Caltanissetta",
264             "390372", "Cremona",
265             "39040", "Trieste",
266             "39033", "Varese",
267             "39035", "Bergamo",
268             "390371", "Lodi",
269             "390789", "Sassari",
270             "390322", "Novara",
271             "390549", "San\ Marino",
272             "390321", "Novara",
273             "39075", "Perugia",
274             "390824", "Benevento",
275             "390363", "Bergamo",
276             "390376", "Mantua",
277             "390185", "Genoa",
278             "390565", "Livorno",
279             "39050", "Pisa",
280             "39055", "Florence",
281             "390942", "Catania",
282             "390883", "Andria\ Barletta\ Trani",
283             "390734", "Fermo",
284             "390422", "Treviso",
285             "39070", "Cagliari",
286             "390421", "Venice",
287             "39080", "Bari",
288             "390865", "Isernia",
289             "390543", "Forlì\-Cesena",
290             "390783", "Oristano",
291             "390445", "Vicenza",
292             "390432", "Udine",
293             "390122", "Turin",
294             "39099", "Taranto",
295             "390583", "Lucca",
296             "390925", "Agrigento",
297             "39085", "Pescara",
298             "390187", "La\ Spezia",
299             "390532", "Ferrara",
300             "390545", "Ravenna",
301             "390975", "Potenza",
302             "390343", "Sondrio",
303             "390324", "Verbano\-Cusio\-Ossola",
304             "390774", "Rome",
305             "39015", "Biella",
306             "390171", "Cuneo",
307             "39013", "Alessandria",
308             "390732", "Ancona",
309             "390424", "Vicenza",
310             "390585", "Massa\-Carrara",
311             "390165", "Aosta\ Valley",
312             "390731", "Ancona",
313             "39010", "Genoa",
314             "390574", "Prato",
315             "390962", "Crotone",
316             "390961", "Catanzaro",
317             "390342", "Sondrio",
318             "390341", "Lecco",
319             "390823", "Caserta",
320             "390364", "Brescia",
321             "39071", "Ancona",
322             "390586", "Livorno",
323             "390166", "Aosta\ Valley",
324             "390862", "L\'Aquila",
325             "390382", "Pavia",
326             "3902", "Milan",
327             "390921", "Palermo",
328             "390922", "Agrigento",
329             "390733", "Macerata",
330             "390884", "Foggia",
331             "39051", "Bologna",
332             "390125", "Turin",
333             "390963", "Vibo\ Valentia",
334             "39089", "Salerno",
335             "390825", "Avellino",
336             "39095", "Catania",
337             "39041", "Venice",
338             "390541", "Rimini",
339             "390965", "Reggio\ Calabria",
340             "390346", "Bergamo",
341             "39090", "Messina",
342             "390577", "Siena",
343             "39031", "Como",
344             "390934", "Caltanissetta\ and\ Enna",
345             "390735", "Ascoli\ Piceno",
346             "390161", "Vercelli",
347             "39011", "Turin",
348             "39059", "Modena",
349             "390344", "Como",
350             "3906", "Rome",
351             "390362", "Cremona\/Monza",
352             "390444", "Vicenza",
353             "390882", "Foggia",
354             "390461", "Trento",
355             "390881", "Foggia",
356             "39079", "Sassari",
357             "39048", "Gorizia",
358             "390423", "Treviso",
359             "390924", "Trapani",
360             "39039", "Monza",
361             "390974", "Salerno",
362             "390523", "Piacenza",
363             "390425", "Rovigo",
364             "3906698", "Vatican\ City",
365             "390737", "Macerata",
366             "39081", "Naples",
367             "390141", "Asti",
368             "390575", "Arezzo",
369             "39049", "Padova",
370             "390373", "Cremona",};
371              
372             sub new {
373 8     8 1 24 my $class = shift;
374 8         31 my $number = shift;
375 8         58 $number =~ s/(^\+39|\D)//g;
376 8         57 my $self = bless({ country_code => '39', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
377 8 100       49 return $self->is_valid() ? $self : undef;
378             }
379             1;