File Coverage

blib/lib/Number/Phone/StubCountry/IT.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::IT;
20 3     3   2061 use base qw(Number::Phone::StubCountry);
  3         14  
  3         395  
21              
22 3     3   28 use strict;
  3         8  
  3         82  
23 3     3   29 use warnings;
  3         10  
  3         88  
24 3     3   28 use utf8;
  3         7  
  3         22  
25             our $VERSION = 1.20230903131447;
26              
27             my $formatters = [
28             {
29             'format' => '$1',
30             'intl_format' => 'NA',
31             'leading_digits' => '
32             1(?:
33             0|
34             9(?:
35             2[2-9]|
36             [46]
37             )
38             )
39             ',
40             'pattern' => '(\\d{4,5})'
41             },
42             {
43             'format' => '$1',
44             'intl_format' => 'NA',
45             'leading_digits' => '
46             1(?:
47             1|
48             92
49             )
50             ',
51             'pattern' => '(\\d{6})'
52             },
53             {
54             'format' => '$1 $2',
55             'leading_digits' => '0[26]',
56             'pattern' => '(\\d{2})(\\d{4,6})'
57             },
58             {
59             'format' => '$1 $2',
60             'leading_digits' => '
61             0[13-57-9][0159]|
62             8(?:
63             03|
64             4[17]|
65             9(?:
66             2|
67             3[04]|
68             [45][0-4]
69             )
70             )
71             ',
72             'pattern' => '(\\d{3})(\\d{3,6})'
73             },
74             {
75             'format' => '$1 $2',
76             'leading_digits' => '
77             0(?:
78             [13-579][2-46-8]|
79             8[236-8]
80             )
81             ',
82             'pattern' => '(\\d{4})(\\d{2,6})'
83             },
84             {
85             'format' => '$1 $2',
86             'leading_digits' => '894',
87             'pattern' => '(\\d{4})(\\d{4})'
88             },
89             {
90             'format' => '$1 $2 $3',
91             'leading_digits' => '
92             0[26]|
93             5
94             ',
95             'pattern' => '(\\d{2})(\\d{3,4})(\\d{4})'
96             },
97             {
98             'format' => '$1 $2 $3',
99             'leading_digits' => '
100             1(?:
101             44|
102             [679]
103             )|
104             [378]
105             ',
106             'pattern' => '(\\d{3})(\\d{3})(\\d{3,4})'
107             },
108             {
109             'format' => '$1 $2 $3',
110             'leading_digits' => '
111             0[13-57-9][0159]|
112             14
113             ',
114             'pattern' => '(\\d{3})(\\d{3,4})(\\d{4})'
115             },
116             {
117             'format' => '$1 $2 $3',
118             'leading_digits' => '0[26]',
119             'pattern' => '(\\d{2})(\\d{4})(\\d{5})'
120             },
121             {
122             'format' => '$1 $2 $3',
123             'pattern' => '(\\d{4})(\\d{3})(\\d{4})'
124             },
125             {
126             'format' => '$1 $2 $3',
127             'leading_digits' => '3',
128             'pattern' => '(\\d{3})(\\d{4})(\\d{4,5})'
129             }
130             ];
131              
132             my $validators = {
133             'fixed_line' => '
134             0669[0-79]\\d{1,6}|
135             0(?:
136             1(?:
137             [0159]\\d|
138             [27][1-5]|
139             31|
140             4[1-4]|
141             6[1356]|
142             8[2-57]
143             )|
144             2\\d\\d|
145             3(?:
146             [0159]\\d|
147             2[1-4]|
148             3[12]|
149             [48][1-6]|
150             6[2-59]|
151             7[1-7]
152             )|
153             4(?:
154             [0159]\\d|
155             [23][1-9]|
156             4[245]|
157             6[1-5]|
158             7[1-4]|
159             81
160             )|
161             5(?:
162             [0159]\\d|
163             2[1-5]|
164             3[2-6]|
165             4[1-79]|
166             6[4-6]|
167             7[1-578]|
168             8[3-8]
169             )|
170             6(?:
171             [0-57-9]\\d|
172             6[0-8]
173             )|
174             7(?:
175             [0159]\\d|
176             2[12]|
177             3[1-7]|
178             4[2-46]|
179             6[13569]|
180             7[13-6]|
181             8[1-59]
182             )|
183             8(?:
184             [0159]\\d|
185             2[3-578]|
186             3[1-356]|
187             [6-8][1-5]
188             )|
189             9(?:
190             [0159]\\d|
191             [238][1-5]|
192             4[12]|
193             6[1-8]|
194             7[1-6]
195             )
196             )\\d{2,7}
197             ',
198             'geographic' => '
199             0669[0-79]\\d{1,6}|
200             0(?:
201             1(?:
202             [0159]\\d|
203             [27][1-5]|
204             31|
205             4[1-4]|
206             6[1356]|
207             8[2-57]
208             )|
209             2\\d\\d|
210             3(?:
211             [0159]\\d|
212             2[1-4]|
213             3[12]|
214             [48][1-6]|
215             6[2-59]|
216             7[1-7]
217             )|
218             4(?:
219             [0159]\\d|
220             [23][1-9]|
221             4[245]|
222             6[1-5]|
223             7[1-4]|
224             81
225             )|
226             5(?:
227             [0159]\\d|
228             2[1-5]|
229             3[2-6]|
230             4[1-79]|
231             6[4-6]|
232             7[1-578]|
233             8[3-8]
234             )|
235             6(?:
236             [0-57-9]\\d|
237             6[0-8]
238             )|
239             7(?:
240             [0159]\\d|
241             2[12]|
242             3[1-7]|
243             4[2-46]|
244             6[13569]|
245             7[13-6]|
246             8[1-59]
247             )|
248             8(?:
249             [0159]\\d|
250             2[3-578]|
251             3[1-356]|
252             [6-8][1-5]
253             )|
254             9(?:
255             [0159]\\d|
256             [238][1-5]|
257             4[12]|
258             6[1-8]|
259             7[1-6]
260             )
261             )\\d{2,7}
262             ',
263             'mobile' => '
264             3[1-9]\\d{8}|
265             3[2-9]\\d{7}
266             ',
267             'pager' => '',
268             'personal_number' => '
269             1(?:
270             78\\d|
271             99
272             )\\d{6}
273             ',
274             'specialrate' => '(
275             84(?:
276             [08]\\d{3}|
277             [17]
278             )\\d{3}
279             )|(
280             (?:
281             0878\\d{3}|
282             89(?:
283             2\\d|
284             3[04]|
285             4(?:
286             [0-4]|
287             [5-9]\\d\\d
288             )|
289             5[0-4]
290             )
291             )\\d\\d|
292             (?:
293             1(?:
294             44|
295             6[346]
296             )|
297             89(?:
298             38|
299             5[5-9]|
300             9
301             )
302             )\\d{6}
303             )',
304             'toll_free' => '
305             80(?:
306             0\\d{3}|
307             3
308             )\\d{3}
309             ',
310             'voip' => '55\\d{8}'
311             };
312             my %areanames = ();
313             $areanames{en} = {"390363", "Bergamo",
314             "390371", "Lodi",
315             "390862", "L\'Aquila",
316             "390925", "Agrigento",
317             "39079", "Sassari",
318             "39033", "Varese",
319             "39070", "Cagliari",
320             "390921", "Palermo",
321             "3906698", "Vatican\ City",
322             "3906", "Rome",
323             "390974", "Salerno",
324             "390373", "Cremona",
325             "390187", "La\ Spezia",
326             "39045", "Verona",
327             "390324", "Verbano\-Cusio\-Ossola",
328             "390365", "Brescia",
329             "390962", "Crotone",
330             "390523", "Piacenza",
331             "390825", "Avellino",
332             "390444", "Vicenza",
333             "39039", "Monza",
334             "390185", "Genoa",
335             "390574", "Prato",
336             "39030", "Brescia",
337             "390521", "Parma",
338             "390874", "Campobasso",
339             "390183", "Imperia",
340             "390141", "Asti",
341             "390322", "Novara",
342             "390823", "Caserta",
343             "39011", "Turin",
344             "390882", "Foggia",
345             "39085", "Pescara",
346             "39031", "Como",
347             "390341", "Lecco",
348             "390122", "Turin",
349             "39010", "Genoa",
350             "390933", "Caltanissetta",
351             "390732", "Ancona",
352             "390343", "Sondrio",
353             "39055", "Florence",
354             "390884", "Foggia",
355             "390783", "Oristano",
356             "390161", "Vercelli",
357             "39048", "Gorizia",
358             "39095", "Catania",
359             "390165", "Aosta\ Valley",
360             "39071", "Ancona",
361             "390423", "Treviso",
362             "390586", "Livorno",
363             "390425", "Rovigo",
364             "390171", "Cuneo",
365             "39013", "Alessandria",
366             "390734", "Fermo",
367             "390942", "Catania",
368             "390549", "San\ Marino",
369             "390421", "Venice",
370             "39015", "Biella",
371             "39050", "Pisa",
372             "39059", "Modena",
373             "390961", "Catanzaro",
374             "390924", "Trapani",
375             "390965", "Reggio\ Calabria",
376             "390963", "Vibo\ Valentia",
377             "390364", "Brescia",
378             "390376", "Mantua",
379             "390522", "Reggio\ Emilia",
380             "390975", "Potenza",
381             "390577", "Siena",
382             "390432", "Udine",
383             "39089", "Salerno",
384             "390321", "Novara",
385             "39080", "Bari",
386             "390372", "Cremona",
387             "390445", "Vicenza",
388             "390774", "Rome",
389             "390575", "Arezzo",
390             "390922", "Agrigento",
391             "390824", "Benevento",
392             "39041", "Venice",
393             "390865", "Isernia",
394             "390362", "Cremona\/Monza",
395             "390565", "Livorno",
396             "390776", "Frosinone",
397             "39099", "Taranto",
398             "39090", "Messina",
399             "390934", "Caltanissetta\ and\ Enna",
400             "390832", "Lecce",
401             "39049", "Padova",
402             "390737", "Macerata",
403             "390344", "Como",
404             "39040", "Trieste",
405             "39075", "Perugia",
406             "390532", "Ferrara",
407             "39091", "Palermo",
408             "390346", "Bergamo",
409             "390422", "Treviso",
410             "390471", "Bolzano\/Bozen",
411             "390125", "Turin",
412             "390541", "Rimini",
413             "3902", "Milan",
414             "39051", "Bologna",
415             "390881", "Foggia",
416             "390789", "Sassari",
417             "390545", "Ravenna",
418             "390342", "Sondrio",
419             "390426", "Rovigo",
420             "390733", "Macerata",
421             "390583", "Lucca",
422             "390883", "Andria\ Barletta\ Trani",
423             "390585", "Massa\-Carrara",
424             "390382", "Pavia",
425             "390166", "Aosta\ Valley",
426             "39035", "Bergamo",
427             "390461", "Trento",
428             "390543", "Forlì\-Cesena",
429             "390735", "Ascoli\ Piceno",
430             "390424", "Vicenza",
431             "39081", "Naples",
432             "390731", "Ancona",};
433             $areanames{it} = {"390975", "Sala\ Consilina",
434             "390376", "Mantova",
435             "390364", "Breno",
436             "390182", "Albenga",
437             "390721", "Pesaro",
438             "390434", "Pordenone",
439             "390578", "Chianciano\ Terme",
440             "390967", "Soverato",
441             "390871", "Chieti",
442             "390362", "Seregno",
443             "39041", "Venezia",
444             "390445", "Schio",
445             "390184", "Sanremo",
446             "390774", "Tivoli",
447             "390873", "Vasto",
448             "390766", "Civitavecchia",
449             "390439", "Feltre",
450             "390331", "Busto\ Arsizio",
451             "390346", "Clusone",
452             "390384", "Mortara",
453             "390983", "Rossano",
454             "390587", "Pontedera",
455             "390934", "Caltanissetta",
456             "390742", "Foligno",
457             "390981", "Castrovillari",
458             "390836", "Maglie",
459             "390735", "San\ Benedetto\ del\ Tronto",
460             "390534", "Porretta\ Terme",
461             "390885", "Cerignola",
462             "390932", "Ragusa",
463             "390545", "Lugo",
464             "390744", "Terni",
465             "390426", "Adria",
466             "390125", "Ivrea",
467             "390463", "Cles",
468             "390827", "Sant\'Angelo\ dei\ Lombardi",
469             "390722", "Urbino",
470             "390872", "Lanciano",
471             "3906", "Roma",
472             "390375", "Casalmaggiore",
473             "390437", "Belluno",
474             "390925", "Sciacca",
475             "390976", "Muro\ Lucano",
476             "390363", "Treviglio",
477             "390964", "Locri",
478             "39011", "Torino",
479             "390431", "Cervignano\ del\ Friuli",
480             "390564", "Grosseto",
481             "390765", "Poggio\ Mirteto",
482             "390525", "Fornovo\ di\ Taro",
483             "390773", "Latina",
484             "390433", "Tolmezzo",
485             "390771", "Formia",
486             "39019", "Savona",
487             "390933", "Caltagirone",
488             "39055", "Firenze",
489             "390381", "Vigevano",
490             "390462", "Cavalese",
491             "390931", "Siracusa",
492             "390345", "San\ Pellegrino\ Terme",
493             "390984", "Cosenza",
494             "390383", "Voghera",
495             "390785", "Macomer",
496             "390175", "Saluzzo",
497             "390584", "Viareggio",
498             "390743", "Spoleto",
499             "390332", "Varese",
500             "390163", "Borgosesia",
501             "390546", "Faenza",
502             "390464", "Rovereto",
503             "390736", "Ascoli\ Piceno",
504             "390428", "Tarvisio",
505             "390835", "Matera",
506             "390533", "Comacchio",
507             "390982", "Paola",
508             "390142", "Casale\ Monferrato",
509             "390968", "Lamezia\ Terme",
510             "390522", "Reggio\ nell\'Emilia",
511             "390971", "Potenza",
512             "390965", "Reggio\ di\ Calabria",
513             "390323", "Baveno",
514             "390924", "Alcamo",
515             "390374", "Soresina",
516             "390973", "Lagonegro",
517             "390144", "Acqui\ Terme",
518             "390573", "Pistoia",
519             "390875", "Termoli",
520             "390524", "Fidenza",
521             "390776", "Cassino",
522             "390565", "Piombino",
523             "390863", "Avezzano",
524             "390571", "Empoli",
525             "390436", "Cortina\ d\'Ampezzo",
526             "390861", "Teramo",
527             "390941", "Patti",
528             "390547", "Cesena",
529             "390172", "Savigliano",
530             "390782", "Lanusei",
531             "390985", "Scalea",
532             "390737", "Camerino",
533             "390344", "Menaggio",
534             "390386", "Ostiglia",
535             "390123", "Lanzo\ Torinese",
536             "390731", "Jesi",
537             "390465", "Tione\ di\ Trento",
538             "390746", "Rieti",
539             "390424", "Bassano\ del\ Grappa",
540             "39081", "Napoli",
541             "390166", "Saint\-Vincent",
542             "390543", "Forlì",
543             "390473", "Merano",
544             "390784", "Nuoro",
545             "390174", "Mondovì",
546             "390883", "Andria",
547             "390585", "Massa",
548             "390789", "Olbia",
549             "390121", "Pinerolo",
550             "3902", "Milano",
551             "390536", "Sassuolo",
552             "390471", "Bolzano",
553             "390429", "Este",
554             "390588", "Volterra",
555             "390365", "Salò",
556             "390923", "Trapani",
557             "390324", "Domodossola",
558             "390974", "Vallo\ della\ Lucania",
559             "390373", "Crema",
560             "390966", "Palmi",
561             "3906698", "Città\ del\ Vaticano",
562             "390921", "Cefalù",
563             "390442", "Legnago",
564             "390572", "Montecatini\ Terme",
565             "390322", "Arona",
566             "390972", "Melfi",
567             "390761", "Viterbo",
568             "390377", "Codogno",
569             "390828", "Battipaglia",
570             "390435", "Pieve\ di\ Cadore",
571             "390143", "Novi\ Ligure",
572             "390566", "Follonica",
573             "390775", "Frosinone",
574             "390185", "Rapallo",
575             "390438", "Conegliano",
576             "390763", "Orvieto",
577             "390864", "Sulmona",
578             "390385", "Stradella",
579             "39010", "Genova",
580             "390732", "Fabriano",
581             "390343", "Chiavenna",
582             "390122", "Susa",
583             "390427", "Spilimbergo",
584             "390542", "Imola",
585             "390935", "Enna",
586             "390472", "Bressanone",
587             "390882", "San\ Severo",
588             "390549", "Repubblica\ di\ San\ Marino",
589             "390421", "San\ Donà\ di\ Piave",
590             "390833", "Gallipoli",
591             "390942", "Taormina",
592             "390535", "Mirandola",
593             "390781", "Iglesias",
594             "390831", "Brindisi",
595             "390124", "Rivarolo\ Canavese",
596             "390165", "Aosta",
597             "390423", "Montebelluna",
598             "390544", "Ravenna",
599             "390474", "Brunico",
600             "390884", "Manfredonia",
601             "390173", "Alba",};
602              
603             sub new {
604 82     82 1 191 my $class = shift;
605 82         124 my $number = shift;
606 82         517 $number =~ s/(^\+39|\D)//g;
607 82         486 my $self = bless({ country_code => '39', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
608 82 100       383 return $self->is_valid() ? $self : undef;
609             }
610             1;