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   1266 use base qw(Number::Phone::StubCountry);
  2         10  
  2         227  
21              
22 2     2   16 use strict;
  2         6  
  2         51  
23 2     2   17 use warnings;
  2         7  
  2         56  
24 2     2   13 use utf8;
  2         19  
  2         19  
25             our $VERSION = 1.20230614174405;
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} = {"263652080", "Macheke",
483             "26326208", "Juliasdale",
484             "26330", "Gutu",
485             "26326209", "Hauna",
486             "263942", "Mabutewni",
487             "26353", "Chegutu",
488             "26355", "Kwekwe",
489             "26329", "Bulawayo",
490             "263292800", "Esigodini",
491             "263941", "Mabutewni",
492             "263628", "Selous",
493             "26317", "Filabusi",
494             "263242150", "Beatrice",
495             "263812875", "Jotsholo",
496             "263398", "Lupane",
497             "263273", "Ruwa",
498             "263376", "Glendale",
499             "26366212", "Mount\ Darwin",
500             "26327522", "Mt\.\ Darwin",
501             "26327204", "Chipinge",
502             "26352", "Shurugwi",
503             "26342728", "Marondera",
504             "26327541", "Mt\.\ Darwin",
505             "263278", "Murewa",
506             "263292809", "Matopos",
507             "2636523", "Marondera",
508             "263205", "Pengalonga",
509             "263517", "Mataga",
510             "26342729", "Marondera",
511             "26326", "Chimanimani",
512             "26331233", "Triangle",
513             "26327540", "Mt\.\ Darwin",
514             "263286", "Beitbridge",
515             "263383", "Matopose",
516             "263227", "Chipinge",
517             "263292821", "Nyamandlovu",
518             "263229", "Juliasdale",
519             "26320200", "Odzi",
520             "26389280", "Plumtree",
521             "2632024", "Penhalonga",
522             "263272317", "Checheche",
523             "2635525", "Battle\ Fields\/Kwekwe\/Redcliff",
524             "26324214", "Arcturus",
525             "26324213", "Ruwa",
526             "263379", "Macheke",
527             "263921", "Northend",
528             "26368216", "Sanyati",
529             "263672198", "Raffingora",
530             "263842801", "Filabusi",
531             "2638128", "Baobab\/Hwange",
532             "2632753", "Mt\.\ Darwin",
533             "26339230", "Gutu",
534             "263274", "Arcturus",
535             "263552558", "Nkayi",
536             "263420089", "Selous",
537             "263688", "Chakari",
538             "263420088", "Selous",
539             "26360", "Mhangura",
540             "263612140", "Chirundu",
541             "263392360", "Mberengwa",
542             "26325206", "Murambinda",
543             "26356", "Chivhu",
544             "263275219", "Mazowe",
545             "263542532", "Mvuma",
546             "2632421", "Chitungwiza",
547             "263219", "Plumtree",
548             "263392380", "Nyaningwe",
549             "2632582", "Headlands",
550             "263948", "Nkulumane",
551             "26367214", "Banket\/Mhangura",
552             "26368215", "Chegutu",
553             "26327203", "Birchenough\ Bridge",
554             "26325207", "Headlands",
555             "263420110", "Norton",
556             "263698", "Trelawney",
557             "2639228", "Queensdale",
558             "263420108", "Norton",
559             "26327527", "Mt\.\ Darwin",
560             "26366217", "Guruve",
561             "263420109", "Norton",
562             "263668", "Mutorashanga",
563             "263943", "Mabutewni",
564             "263338", "Nyika",
565             "263924", "Hillside",
566             "263272046", "Chipangayi",
567             "263672136", "Trelawney",
568             "26361215", "Karoi",
569             "26367", "Chinhoyi",
570             "263287", "Tsholotsho",
571             "263312337", "Rutenga",
572             "263812847", "Binga",
573             "263312370", "Ngundu",
574             "263289", "Jotsholo",
575             "26366216", "Mvurwi",
576             "263204", "Odzi",
577             "26327526", "Mt\.\ Darwin",
578             "263272", "Mutoko",
579             "26323", "Chiredzi",
580             "263271", "Bindura",
581             "26359", "Gokwe",
582             "2632020", "Mutare",
583             "26325", "Rusape",
584             "26366219", "Christon\ Bank\/Concession\/Mazowe",
585             "26327525", "Mt\.\ Darwin",
586             "26327529", "Mt\.\ Darwin",
587             "2639", "Bulawayo",
588             "2638428", "Gwanda",
589             "26354", "Gweru",
590             "263952", "Luveve",
591             "26329246", "Bellevue",
592             "263420085", "Selous",
593             "26339234", "Jerera",
594             "26327528", "Mt\.\ Darwin",
595             "263557", "Munyati",
596             "26366218", "Glendale",
597             "26358", "Guruve",
598             "26342722", "Chitungwiza",
599             "263292861", "Tsholotsho",
600             "26366", "Banket",
601             "26339245", "Mashava",
602             "263387", "Nyamandhlovu",
603             "263842835", "Collen\ Bawn",
604             "263929", "Killarney",
605             "26335", "Mashava",
606             "263371", "Shamva",
607             "263261", "Kariba",
608             "26333", "Triangle",
609             "263672192", "Darwendale",
610             "26366210", "Bindura\/Centenary",
611             "263946", "Bellevue",
612             "26365213", "Mutoko",
613             "263284", "Gwanda",
614             "263662137", "Shamva",
615             "263682189", "Chakari",
616             "263212", "Murambinda",
617             "263392308", "Chatsworth",
618             "263940", "Mabutewni",
619             "263225", "Rusape",
620             "263220201", "Chikanga\/Mutare",
621             "26342723", "Chitungwiza",
622             "26361", "Kariba",
623             "26355259", "Gokwe",
624             "263292804", "Figtree",
625             "26367215", "Murombedzi",
626             "2636521", "Murewa",
627             "26350", "Shanagani",
628             "263513", "Zvishavane",
629             "26342009", "Selous",
630             "263242", "Harare",
631             "26354252", "Shurugwi",
632             "263264", "Karoi",
633             "26385", "BeitBridge",
634             "2634", "Harare",
635             "26364", "Karoi",
636             "26383", "Victoria\ Falls",
637             "263675", "Murombedzi",
638             "263518", "Mberengwa",
639             "263282", "Kezi",
640             "263279", "Marondera",
641             "263637", "Chirundu",
642             "263281", "Hwange",
643             "263277", "Mvurwi",
644             "26368", "Kadoma",
645             "263812856", "Lupane",
646             "263252055", "Nyazura",
647             "263812835", "Dete",
648             "26332", "Mvuma",
649             "26327524", "Mt\.\ Darwin",
650             "263292807", "Kezi",
651             "26357", "Centenary",
652             "263317", "Checheche",
653             "26342010", "Selous",
654             "263228", "Hauna",
655             "26339235", "Zvishavane",
656             "26313", "Victoria\ Falls",
657             "26315", "Binga",
658             "26369", "Darwendale",
659             "2632021", "Dangamvura",
660             "26365", "Beatrice",
661             "26363", "Makuti",
662             "26319", "Plumtree",
663             "263920", "Northend",
664             "26329252", "Luveve",
665             "26336", "Ngundu",
666             "263687", "Sanyati",
667             "263251", "Zvishavane",
668             "2639226", "Queensdale",
669             "263514", "Zvishavane",
670             "26327523", "Mt\.\ Darwin",
671             "263612141", "Makuti",
672             "263285", "Turkmine",
673             "2632583", "Nyazura",
674             "263206", "Mutare",
675             "26318", "Dete",
676             "263420086", "Selous",
677             "263947", "Bellevue",
678             "263552557", "Munyati",
679             "26331", "Chiredzi",
680             "263420087", "Selous",
681             "2635483", "Lalapanzi",
682             "263949", "Nkulumane",
683             "26354212", "Chivhu",
684             "263262098", "Nyanga",
685             "26314", "Rutenga",
686             "263283", "Figtree",
687             "263672196", "Mutorashanga",
688             "263329", "Nyanga",
689             "263213", "Victoria\ Falls",
690             "263254", "Gweru",
691             "26334", "Jerera",
692             "263375", "Concession",
693             "263292802", "Shangani",
694             "263288", "Esigodini",
695             "263220202", "Mutare",
696             "263392366", "Mataga",
697             "26327205", "Chimanimani",
698             "26365208", "Wedza",
699             "263392323", "Nyika",
700             "263308", "Chatsworth",
701             "263667", "Raffingora",
702             "263248", "Birchenough\ Bridge",
703             "263542548", "Lalapanzi",
704             "263512", "Zvishavane",
705             "263956", "Luveve",
706             "263270", "Chitungwiza",
707             "263337", "Nyaningwe",
708             "263558", "Nkayi",
709             "263222", "Wedza",
710             "2636821", "Kadoma\/Selous",
711             "263221", "Murambinda",
712             "26362", "Norton",
713             "263842808", "West\ Nicholson",
714             "26339", "Masvingo",
715             "263292803", "Turkmine",
716             "263220203", "Dangamvura",
717             "26324215", "Norton",
718             "263420106", "Norton",
719             "263420107", "Norton",
720             "26316", "West\ Nicholson",};
721              
722             sub new {
723 13     13 1 35 my $class = shift;
724 13         27 my $number = shift;
725 13         85 $number =~ s/(^\+263|\D)//g;
726 13         89 my $self = bless({ country_code => '263', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
727 13 100       65 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       6 return $self->is_valid() ? $self : undef;
731             }
732             1;