File Coverage

blib/lib/Number/Phone/StubCountry/ZW.pm
Criterion Covered Total %
statement 20 20 100.0
branch 3 4 75.0
condition n/a
subroutine 5 5 100.0
pod 1 1 100.0
total 29 30 96.6


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::ZW;
20 2     2   1400 use base qw(Number::Phone::StubCountry);
  2         6  
  2         232  
21              
22 2     2   20 use strict;
  2         9  
  2         47  
23 2     2   11 use warnings;
  2         12  
  2         54  
24 2     2   14 use utf8;
  2         7  
  2         23  
25             our $VERSION = 1.20230903131449;
26              
27             my $formatters = [
28             {
29             'format' => '$1 $2',
30             'leading_digits' => '
31             2(?:
32             0[45]|
33             2[278]|
34             [49]8
35             )|
36             3(?:
37             [09]8|
38             17
39             )|
40             6(?:
41             [29]8|
42             37|
43             75
44             )|
45             [23][78]|
46             (?:
47             33|
48             5[15]|
49             6[68]
50             )[78]
51             ',
52             'national_rule' => '0$1',
53             'pattern' => '(\\d{3})(\\d{3,5})'
54             },
55             {
56             'format' => '$1 $2 $3',
57             'leading_digits' => '[49]',
58             'national_rule' => '0$1',
59             'pattern' => '(\\d)(\\d{3})(\\d{2,4})'
60             },
61             {
62             'format' => '$1 $2',
63             'leading_digits' => '80',
64             'national_rule' => '0$1',
65             'pattern' => '(\\d{3})(\\d{4})'
66             },
67             {
68             'format' => '$1 $2',
69             'leading_digits' => '
70             2(?:
71             02[014]|
72             4|
73             [56]20|
74             [79]2
75             )|
76             392|
77             5(?:
78             42|
79             525
80             )|
81             6(?:
82             [16-8]21|
83             52[013]
84             )|
85             8[13-59]
86             ',
87             'national_rule' => '(0$1)',
88             'pattern' => '(\\d{2})(\\d{7})'
89             },
90             {
91             'format' => '$1 $2 $3',
92             'leading_digits' => '7',
93             'national_rule' => '0$1',
94             'pattern' => '(\\d{2})(\\d{3})(\\d{4})'
95             },
96             {
97             'format' => '$1 $2 $3',
98             'leading_digits' => '
99             2(?:
100             1[39]|
101             2[0157]|
102             [378]|
103             [56][14]
104             )|
105             3(?:
106             123|
107             29
108             )
109             ',
110             'national_rule' => '0$1',
111             'pattern' => '(\\d{3})(\\d{3})(\\d{3,4})'
112             },
113             {
114             'format' => '$1 $2',
115             'leading_digits' => '8',
116             'national_rule' => '0$1',
117             'pattern' => '(\\d{4})(\\d{6})'
118             },
119             {
120             'format' => '$1 $2',
121             'leading_digits' => '
122             1|
123             2(?:
124             0[0-36-9]|
125             12|
126             29|
127             [56]
128             )|
129             3(?:
130             1[0-689]|
131             [24-6]
132             )|
133             5(?:
134             [0236-9]|
135             1[2-4]
136             )|
137             6(?:
138             [013-59]|
139             7[0-46-9]
140             )|
141             (?:
142             33|
143             55|
144             6[68]
145             )[0-69]|
146             (?:
147             29|
148             3[09]|
149             62
150             )[0-79]
151             ',
152             'national_rule' => '0$1',
153             'pattern' => '(\\d{2})(\\d{3,5})'
154             },
155             {
156             'format' => '$1 $2 $3',
157             'leading_digits' => '
158             29[013-9]|
159             39|
160             54
161             ',
162             'national_rule' => '0$1',
163             'pattern' => '(\\d{2})(\\d{3})(\\d{3,4})'
164             },
165             {
166             'format' => '$1 $2',
167             'leading_digits' => '
168             258|
169             5483
170             ',
171             'national_rule' => '0$1',
172             'pattern' => '(\\d{4})(\\d{3,5})'
173             }
174             ];
175              
176             my $validators = {
177             'fixed_line' => '
178             (?:
179             1(?:
180             (?:
181             3\\d|
182             9
183             )\\d|
184             [4-8]
185             )|
186             2(?:
187             (?:
188             (?:
189             0(?:
190             2[014]|
191             5
192             )|
193             (?:
194             2[0157]|
195             31|
196             84|
197             9
198             )\\d\\d|
199             [56](?:
200             [14]\\d\\d|
201             20
202             )|
203             7(?:
204             [089]|
205             2[03]|
206             [35]\\d\\d
207             )
208             )\\d|
209             4(?:
210             2\\d\\d|
211             8
212             )
213             )\\d|
214             1(?:
215             2|
216             [39]\\d{4}
217             )
218             )|
219             3(?:
220             (?:
221             123|
222             (?:
223             29\\d|
224             92
225             )\\d
226             )\\d\\d|
227             7(?:
228             [19]|
229             [56]\\d
230             )
231             )|
232             5(?:
233             0|
234             1[2-478]|
235             26|
236             [37]2|
237             4(?:
238             2\\d{3}|
239             83
240             )|
241             5(?:
242             25\\d\\d|
243             [78]
244             )|
245             [689]\\d
246             )|
247             6(?:
248             (?:
249             [16-8]21|
250             28|
251             52[013]
252             )\\d\\d|
253             [39]
254             )|
255             8(?:
256             [1349]28|
257             523
258             )\\d\\d
259             )\\d{3}|
260             (?:
261             4\\d\\d|
262             9[2-9]
263             )\\d{4,5}|
264             (?:
265             (?:
266             2(?:
267             (?:
268             (?:
269             0|
270             8[146]
271             )\\d|
272             7[1-7]
273             )\\d|
274             2(?:
275             [278]\\d|
276             92
277             )|
278             58(?:
279             2\\d|
280             3
281             )
282             )|
283             3(?:
284             [26]|
285             9\\d{3}
286             )|
287             5(?:
288             4\\d|
289             5
290             )\\d\\d
291             )\\d|
292             6(?:
293             (?:
294             (?:
295             [0-246]|
296             [78]\\d
297             )\\d|
298             37
299             )\\d|
300             5[2-8]
301             )
302             )\\d\\d|
303             (?:
304             2(?:
305             [569]\\d|
306             8[2-57-9]
307             )|
308             3(?:
309             [013-59]\\d|
310             8[37]
311             )|
312             6[89]8
313             )\\d{3}
314             ',
315             'geographic' => '
316             (?:
317             1(?:
318             (?:
319             3\\d|
320             9
321             )\\d|
322             [4-8]
323             )|
324             2(?:
325             (?:
326             (?:
327             0(?:
328             2[014]|
329             5
330             )|
331             (?:
332             2[0157]|
333             31|
334             84|
335             9
336             )\\d\\d|
337             [56](?:
338             [14]\\d\\d|
339             20
340             )|
341             7(?:
342             [089]|
343             2[03]|
344             [35]\\d\\d
345             )
346             )\\d|
347             4(?:
348             2\\d\\d|
349             8
350             )
351             )\\d|
352             1(?:
353             2|
354             [39]\\d{4}
355             )
356             )|
357             3(?:
358             (?:
359             123|
360             (?:
361             29\\d|
362             92
363             )\\d
364             )\\d\\d|
365             7(?:
366             [19]|
367             [56]\\d
368             )
369             )|
370             5(?:
371             0|
372             1[2-478]|
373             26|
374             [37]2|
375             4(?:
376             2\\d{3}|
377             83
378             )|
379             5(?:
380             25\\d\\d|
381             [78]
382             )|
383             [689]\\d
384             )|
385             6(?:
386             (?:
387             [16-8]21|
388             28|
389             52[013]
390             )\\d\\d|
391             [39]
392             )|
393             8(?:
394             [1349]28|
395             523
396             )\\d\\d
397             )\\d{3}|
398             (?:
399             4\\d\\d|
400             9[2-9]
401             )\\d{4,5}|
402             (?:
403             (?:
404             2(?:
405             (?:
406             (?:
407             0|
408             8[146]
409             )\\d|
410             7[1-7]
411             )\\d|
412             2(?:
413             [278]\\d|
414             92
415             )|
416             58(?:
417             2\\d|
418             3
419             )
420             )|
421             3(?:
422             [26]|
423             9\\d{3}
424             )|
425             5(?:
426             4\\d|
427             5
428             )\\d\\d
429             )\\d|
430             6(?:
431             (?:
432             (?:
433             [0-246]|
434             [78]\\d
435             )\\d|
436             37
437             )\\d|
438             5[2-8]
439             )
440             )\\d\\d|
441             (?:
442             2(?:
443             [569]\\d|
444             8[2-57-9]
445             )|
446             3(?:
447             [013-59]\\d|
448             8[37]
449             )|
450             6[89]8
451             )\\d{3}
452             ',
453             'mobile' => '
454             7(?:
455             [178]\\d|
456             3[1-9]
457             )\\d{6}
458             ',
459             'pager' => '',
460             'personal_number' => '',
461             'specialrate' => '',
462             'toll_free' => '
463             80(?:
464             [01]\\d|
465             20|
466             8[0-8]
467             )\\d{3}
468             ',
469             'voip' => '
470             86(?:
471             1[12]|
472             22|
473             30|
474             44|
475             55|
476             77|
477             8[368]
478             )\\d{6}
479             '
480             };
481             my %areanames = ();
482             $areanames{en} = {"26318", "Dete",
483             "263687", "Sanyati",
484             "263292861", "Tsholotsho",
485             "26366210", "Bindura\/Centenary",
486             "263279", "Marondera",
487             "263221", "Murambinda",
488             "26327523", "Mt\.\ Darwin",
489             "26366219", "Christon\ Bank\/Concession\/Mazowe",
490             "263420087", "Selous",
491             "263274", "Arcturus",
492             "263308", "Chatsworth",
493             "263947", "Bellevue",
494             "263542532", "Mvuma",
495             "263213", "Victoria\ Falls",
496             "26327204", "Chipinge",
497             "26331233", "Triangle",
498             "26362", "Norton",
499             "263941", "Mabutewni",
500             "26361", "Kariba",
501             "26342009", "Selous",
502             "263254", "Gweru",
503             "263812875", "Jotsholo",
504             "26366217", "Guruve",
505             "263272", "Mutoko",
506             "26336", "Ngundu",
507             "26324213", "Ruwa",
508             "263672136", "Trelawney",
509             "263338", "Nyika",
510             "263227", "Chipinge",
511             "263943", "Mabutewni",
512             "26316", "West\ Nicholson",
513             "263514", "Zvishavane",
514             "263220202", "Mutare",
515             "263242150", "Beatrice",
516             "263667", "Raffingora",
517             "2639228", "Queensdale",
518             "26327541", "Mt\.\ Darwin",
519             "263842835", "Collen\ Bawn",
520             "26369", "Darwendale",
521             "263557", "Munyati",
522             "263652080", "Macheke",
523             "263286", "Beitbridge",
524             "26353", "Chegutu",
525             "263292802", "Shangani",
526             "26326", "Chimanimani",
527             "263292821", "Nyamandlovu",
528             "263317", "Checheche",
529             "263929", "Killarney",
530             "263552557", "Munyati",
531             "263512", "Zvishavane",
532             "263205", "Pengalonga",
533             "263420107", "Norton",
534             "263379", "Macheke",
535             "2635525", "Battle\ Fields\/Kwekwe\/Redcliff",
536             "2639226", "Queensdale",
537             "263675", "Murombedzi",
538             "26327205", "Chimanimani",
539             "2632582", "Headlands",
540             "263842801", "Filabusi",
541             "26350", "Shanagani",
542             "26320200", "Odzi",
543             "263392366", "Mataga",
544             "263924", "Hillside",
545             "26361215", "Karoi",
546             "263242", "Harare",
547             "2632421", "Chitungwiza",
548             "263420109", "Norton",
549             "26326209", "Hauna",
550             "263420085", "Selous",
551             "263420086", "Selous",
552             "26327529", "Mt\.\ Darwin",
553             "263273", "Ruwa",
554             "263698", "Trelawney",
555             "26313", "Victoria\ Falls",
556             "263942", "Mabutewni",
557             "263637", "Chirundu",
558             "26367214", "Banket\/Mhangura",
559             "263229", "Juliasdale",
560             "2636821", "Kadoma\/Selous",
561             "263271", "Bindura",
562             "26365", "Beatrice",
563             "263219", "Plumtree",
564             "263682189", "Chakari",
565             "2634", "Harare",
566             "26356", "Chivhu",
567             "263392308", "Chatsworth",
568             "26323", "Chiredzi",
569             "263812835", "Dete",
570             "26327527", "Mt\.\ Darwin",
571             "263277", "Mvurwi",
572             "263222", "Wedza",
573             "2632020", "Mutare",
574             "26355259", "Gokwe",
575             "263212", "Murambinda",
576             "26342728", "Marondera",
577             "263949", "Nkulumane",
578             "26325206", "Murambinda",
579             "26367", "Chinhoyi",
580             "263251", "Zvishavane",
581             "26385", "BeitBridge",
582             "263672196", "Mutorashanga",
583             "263262098", "Nyanga",
584             "263285", "Turkmine",
585             "263392360", "Mberengwa",
586             "26339230", "Gutu",
587             "263272317", "Checheche",
588             "263513", "Zvishavane",
589             "26358", "Guruve",
590             "26330", "Gutu",
591             "263288", "Esigodini",
592             "263392380", "Nyaningwe",
593             "26367215", "Murombedzi",
594             "263952", "Luveve",
595             "263628", "Selous",
596             "263275219", "Mazowe",
597             "2639", "Bulawayo",
598             "263292803", "Turkmine",
599             "263292804", "Figtree",
600             "263329", "Nyanga",
601             "263517", "Mataga",
602             "263371", "Shamva",
603             "263420106", "Norton",
604             "263420089", "Selous",
605             "263220203", "Dangamvura",
606             "26364", "Karoi",
607             "263206", "Mutare",
608             "26333", "Triangle",
609             "26342722", "Chitungwiza",
610             "263921", "Northend",
611             "263264", "Karoi",
612             "263552558", "Nkayi",
613             "263225", "Rusape",
614             "26335", "Mashava",
615             "263612141", "Makuti",
616             "263220201", "Chikanga\/Mutare",
617             "263420108", "Norton",
618             "263542548", "Lalapanzi",
619             "263612140", "Chirundu",
620             "263312337", "Rutenga",
621             "2632583", "Nyazura",
622             "263812847", "Binga",
623             "26327524", "Mt\.\ Darwin",
624             "26352", "Shurugwi",
625             "263398", "Lupane",
626             "26366216", "Mvurwi",
627             "263228", "Hauna",
628             "263337", "Nyaningwe",
629             "26366218", "Glendale",
630             "263292800", "Esigodini",
631             "26314", "Rutenga",
632             "26327203", "Birchenough\ Bridge",
633             "26354212", "Chivhu",
634             "263842808", "West\ Nicholson",
635             "263688", "Chakari",
636             "26342723", "Chitungwiza",
637             "263292807", "Kezi",
638             "26339235", "Zvishavane",
639             "263940", "Mabutewni",
640             "26339245", "Mashava",
641             "263948", "Nkulumane",
642             "26324214", "Arcturus",
643             "2632753", "Mt\.\ Darwin",
644             "26339234", "Jerera",
645             "263284", "Gwanda",
646             "2636523", "Marondera",
647             "26366212", "Mount\ Darwin",
648             "26360", "Mhangura",
649             "26365208", "Wedza",
650             "26342010", "Selous",
651             "26383", "Victoria\ Falls",
652             "263672198", "Raffingora",
653             "26317", "Filabusi",
654             "263672192", "Darwendale",
655             "26368216", "Sanyati",
656             "26324215", "Norton",
657             "263289", "Jotsholo",
658             "263558", "Nkayi",
659             "26327525", "Mt\.\ Darwin",
660             "263282", "Kezi",
661             "263376", "Glendale",
662             "26325", "Rusape",
663             "263668", "Mutorashanga",
664             "26363", "Makuti",
665             "2638128", "Baobab\/Hwange",
666             "26334", "Jerera",
667             "2632024", "Penhalonga",
668             "263420088", "Selous",
669             "26315", "Binga",
670             "26359", "Gokwe",
671             "263392323", "Nyika",
672             "26327526", "Mt\.\ Darwin",
673             "263261", "Kariba",
674             "26326208", "Juliasdale",
675             "263278", "Murewa",
676             "263270", "Chitungwiza",
677             "26327528", "Mt\.\ Darwin",
678             "26357", "Centenary",
679             "263312370", "Ngundu",
680             "263387", "Nyamandhlovu",
681             "26325207", "Headlands",
682             "26354252", "Shurugwi",
683             "26366", "Banket",
684             "26342729", "Marondera",
685             "263272046", "Chipangayi",
686             "26355", "Kwekwe",
687             "26365213", "Mutoko",
688             "26319", "Plumtree",
689             "2635483", "Lalapanzi",
690             "263662137", "Shamva",
691             "263383", "Matopose",
692             "26329246", "Bellevue",
693             "26368215", "Chegutu",
694             "26329", "Bulawayo",
695             "2638428", "Gwanda",
696             "26331", "Chiredzi",
697             "263946", "Bellevue",
698             "26332", "Mvuma",
699             "26354", "Gweru",
700             "263248", "Birchenough\ Bridge",
701             "263281", "Hwange",
702             "263292809", "Matopos",
703             "2632021", "Dangamvura",
704             "263956", "Luveve",
705             "263283", "Figtree",
706             "26389280", "Plumtree",
707             "26339", "Masvingo",
708             "263518", "Mberengwa",
709             "26327522", "Mt\.\ Darwin",
710             "263420110", "Norton",
711             "26368", "Kadoma",
712             "2636521", "Murewa",
713             "263920", "Northend",
714             "26329252", "Luveve",
715             "263204", "Odzi",
716             "263252055", "Nyazura",
717             "263812856", "Lupane",
718             "263287", "Tsholotsho",
719             "26327540", "Mt\.\ Darwin",
720             "263375", "Concession",};
721              
722             sub new {
723 13     13 1 35 my $class = shift;
724 13         32 my $number = shift;
725 13         115 $number =~ s/(^\+263|\D)//g;
726 13         77 my $self = bless({ country_code => '263', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
727 13 100       77 return $self if ($self->is_valid());
728 1         3 $number =~ s/^(?:0)//;
729 1         11 $self = bless({ country_code => '263', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
730 1 50       15 return $self->is_valid() ? $self : undef;
731             }
732             1;