File Coverage

blib/lib/Number/Phone/StubCountry/MM.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::MM;
20 2     2   1263 use base qw(Number::Phone::StubCountry);
  2         6  
  2         216  
21              
22 2     2   20 use strict;
  2         21  
  2         51  
23 2     2   16 use warnings;
  2         8  
  2         54  
24 2     2   15 use utf8;
  2         14  
  2         15  
25             our $VERSION = 1.20230614174404;
26              
27             my $formatters = [
28             {
29             'format' => '$1 $2 $3',
30             'leading_digits' => '
31             16|
32             2
33             ',
34             'national_rule' => '0$1',
35             'pattern' => '(\\d)(\\d{2})(\\d{3})'
36             },
37             {
38             'format' => '$1 $2 $3',
39             'leading_digits' => '
40             [45]|
41             6(?:
42             0[23]|
43             [1-689]|
44             7[235-7]
45             )|
46             7(?:
47             [0-4]|
48             5[2-7]
49             )|
50             8[1-6]
51             ',
52             'national_rule' => '0$1',
53             'pattern' => '(\\d{2})(\\d{2})(\\d{3})'
54             },
55             {
56             'format' => '$1 $2 $3',
57             'leading_digits' => '[12]',
58             'national_rule' => '0$1',
59             'pattern' => '(\\d)(\\d{3})(\\d{3,4})'
60             },
61             {
62             'format' => '$1 $2 $3',
63             'leading_digits' => '
64             [4-7]|
65             8[1-35]
66             ',
67             'national_rule' => '0$1',
68             'pattern' => '(\\d{2})(\\d{3})(\\d{3,4})'
69             },
70             {
71             'format' => '$1 $2 $3',
72             'leading_digits' => '
73             9(?:
74             2[0-4]|
75             [35-9]|
76             4[137-9]
77             )
78             ',
79             'national_rule' => '0$1',
80             'pattern' => '(\\d)(\\d{3})(\\d{4,6})'
81             },
82             {
83             'format' => '$1 $2 $3',
84             'leading_digits' => '2',
85             'national_rule' => '0$1',
86             'pattern' => '(\\d)(\\d{4})(\\d{4})'
87             },
88             {
89             'format' => '$1 $2 $3',
90             'leading_digits' => '8',
91             'national_rule' => '0$1',
92             'pattern' => '(\\d{3})(\\d{3})(\\d{4})'
93             },
94             {
95             'format' => '$1 $2 $3 $4',
96             'leading_digits' => '92',
97             'national_rule' => '0$1',
98             'pattern' => '(\\d)(\\d{3})(\\d{3})(\\d{3})'
99             },
100             {
101             'format' => '$1 $2 $3',
102             'leading_digits' => '9',
103             'national_rule' => '0$1',
104             'pattern' => '(\\d)(\\d{5})(\\d{4})'
105             }
106             ];
107              
108             my $validators = {
109             'fixed_line' => '
110             (?:
111             1(?:
112             (?:
113             2\\d|
114             3[56]|
115             [89][0-6]
116             )\\d|
117             4(?:
118             2[29]|
119             39|
120             62|
121             7[0-2]|
122             83
123             )|
124             6
125             )|
126             2(?:
127             2(?:
128             00|
129             8[34]
130             )|
131             4(?:
132             0\\d|
133             [26]2|
134             39|
135             7[0-2]|
136             83
137             )|
138             51\\d\\d
139             )|
140             4(?:
141             2(?:
142             2\\d\\d|
143             48[013]
144             )|
145             3(?:
146             20\\d|
147             4(?:
148             70|
149             83
150             )|
151             56
152             )|
153             420\\d|
154             5470
155             )|
156             6(?:
157             0(?:
158             [23]|
159             88\\d
160             )|
161             (?:
162             124|
163             [56]2\\d
164             )\\d|
165             2472|
166             3(?:
167             20\\d|
168             470
169             )|
170             4(?:
171             2[04]\\d|
172             472
173             )|
174             7(?:
175             (?:
176             3\\d|
177             8[01459]
178             )\\d|
179             4(?:
180             39|
181             [67]0
182             )
183             )
184             )
185             )\\d{4}|
186             5(?:
187             2(?:
188             2\\d{5,6}|
189             47[02]\\d{4}
190             )|
191             (?:
192             3472|
193             4(?:
194             2(?:
195             1|
196             86
197             )|
198             470
199             )|
200             522\\d|
201             6(?:
202             20\\d|
203             483
204             )|
205             7(?:
206             20\\d|
207             48[01]
208             )|
209             8(?:
210             20\\d|
211             47[02]
212             )|
213             9(?:
214             20\\d|
215             470
216             )
217             )\\d{4}
218             )|
219             7(?:
220             (?:
221             0470|
222             4(?:
223             25\\d|
224             470
225             )|
226             5(?:
227             202|
228             470|
229             96\\d
230             )
231             )\\d{4}|
232             1(?:
233             20\\d{4,5}|
234             4(?:
235             70|
236             83
237             )\\d{4}
238             )
239             )|
240             8(?:
241             1(?:
242             2\\d{5,6}|
243             4(?:
244             10|
245             7[01]\\d
246             )\\d{3}
247             )|
248             2(?:
249             2\\d{5,6}|
250             (?:
251             320|
252             490\\d
253             )\\d{3}
254             )|
255             (?:
256             3(?:
257             2\\d\\d|
258             470
259             )|
260             4[24-7]|
261             5(?:
262             (?:
263             2\\d|
264             51
265             )\\d|
266             4(?:
267             [1-35-9]\\d|
268             4[0-57-9]
269             )
270             )|
271             6[23]
272             )\\d{4}
273             )|
274             (?:
275             1[2-6]\\d|
276             4(?:
277             2[24-8]|
278             3[2-7]|
279             [46][2-6]|
280             5[3-5]
281             )|
282             5(?:
283             [27][2-8]|
284             3[2-68]|
285             4[24-8]|
286             5[23]|
287             6[2-4]|
288             8[24-7]|
289             9[2-7]
290             )|
291             6(?:
292             [19]20|
293             42[03-6]|
294             (?:
295             52|
296             7[45]
297             )\\d
298             )|
299             7(?:
300             [04][24-8]|
301             [15][2-7]|
302             22|
303             3[2-4]
304             )|
305             8(?:
306             1[2-689]|
307             2[2-8]|
308             [35]2\\d
309             )
310             )\\d{4}|
311             25\\d{5,6}|
312             (?:
313             2[2-9]|
314             6(?:
315             1[2356]|
316             [24][2-6]|
317             3[24-6]|
318             5[2-4]|
319             6[2-8]|
320             7[235-7]|
321             8[245]|
322             9[24]
323             )|
324             8(?:
325             3[24]|
326             5[245]
327             )
328             )\\d{4}
329             ',
330             'geographic' => '
331             (?:
332             1(?:
333             (?:
334             2\\d|
335             3[56]|
336             [89][0-6]
337             )\\d|
338             4(?:
339             2[29]|
340             39|
341             62|
342             7[0-2]|
343             83
344             )|
345             6
346             )|
347             2(?:
348             2(?:
349             00|
350             8[34]
351             )|
352             4(?:
353             0\\d|
354             [26]2|
355             39|
356             7[0-2]|
357             83
358             )|
359             51\\d\\d
360             )|
361             4(?:
362             2(?:
363             2\\d\\d|
364             48[013]
365             )|
366             3(?:
367             20\\d|
368             4(?:
369             70|
370             83
371             )|
372             56
373             )|
374             420\\d|
375             5470
376             )|
377             6(?:
378             0(?:
379             [23]|
380             88\\d
381             )|
382             (?:
383             124|
384             [56]2\\d
385             )\\d|
386             2472|
387             3(?:
388             20\\d|
389             470
390             )|
391             4(?:
392             2[04]\\d|
393             472
394             )|
395             7(?:
396             (?:
397             3\\d|
398             8[01459]
399             )\\d|
400             4(?:
401             39|
402             [67]0
403             )
404             )
405             )
406             )\\d{4}|
407             5(?:
408             2(?:
409             2\\d{5,6}|
410             47[02]\\d{4}
411             )|
412             (?:
413             3472|
414             4(?:
415             2(?:
416             1|
417             86
418             )|
419             470
420             )|
421             522\\d|
422             6(?:
423             20\\d|
424             483
425             )|
426             7(?:
427             20\\d|
428             48[01]
429             )|
430             8(?:
431             20\\d|
432             47[02]
433             )|
434             9(?:
435             20\\d|
436             470
437             )
438             )\\d{4}
439             )|
440             7(?:
441             (?:
442             0470|
443             4(?:
444             25\\d|
445             470
446             )|
447             5(?:
448             202|
449             470|
450             96\\d
451             )
452             )\\d{4}|
453             1(?:
454             20\\d{4,5}|
455             4(?:
456             70|
457             83
458             )\\d{4}
459             )
460             )|
461             8(?:
462             1(?:
463             2\\d{5,6}|
464             4(?:
465             10|
466             7[01]\\d
467             )\\d{3}
468             )|
469             2(?:
470             2\\d{5,6}|
471             (?:
472             320|
473             490\\d
474             )\\d{3}
475             )|
476             (?:
477             3(?:
478             2\\d\\d|
479             470
480             )|
481             4[24-7]|
482             5(?:
483             (?:
484             2\\d|
485             51
486             )\\d|
487             4(?:
488             [1-35-9]\\d|
489             4[0-57-9]
490             )
491             )|
492             6[23]
493             )\\d{4}
494             )|
495             (?:
496             1[2-6]\\d|
497             4(?:
498             2[24-8]|
499             3[2-7]|
500             [46][2-6]|
501             5[3-5]
502             )|
503             5(?:
504             [27][2-8]|
505             3[2-68]|
506             4[24-8]|
507             5[23]|
508             6[2-4]|
509             8[24-7]|
510             9[2-7]
511             )|
512             6(?:
513             [19]20|
514             42[03-6]|
515             (?:
516             52|
517             7[45]
518             )\\d
519             )|
520             7(?:
521             [04][24-8]|
522             [15][2-7]|
523             22|
524             3[2-4]
525             )|
526             8(?:
527             1[2-689]|
528             2[2-8]|
529             [35]2\\d
530             )
531             )\\d{4}|
532             25\\d{5,6}|
533             (?:
534             2[2-9]|
535             6(?:
536             1[2356]|
537             [24][2-6]|
538             3[24-6]|
539             5[2-4]|
540             6[2-8]|
541             7[235-7]|
542             8[245]|
543             9[24]
544             )|
545             8(?:
546             3[24]|
547             5[245]
548             )
549             )\\d{4}
550             ',
551             'mobile' => '
552             (?:
553             17[01]|
554             9(?:
555             2(?:
556             [0-4]|
557             [56]\\d\\d
558             )|
559             (?:
560             3(?:
561             [0-36]|
562             4\\d
563             )|
564             (?:
565             6\\d|
566             8[89]|
567             9[4-8]
568             )\\d|
569             7(?:
570             3|
571             40|
572             [5-9]\\d
573             )
574             )\\d|
575             4(?:
576             (?:
577             [0245]\\d|
578             [1379]
579             )\\d|
580             88
581             )|
582             5[0-6]
583             )\\d
584             )\\d{4}|
585             9[69]1\\d{6}|
586             9(?:
587             [68]\\d|
588             9[089]
589             )\\d{5}
590             ',
591             'pager' => '',
592             'personal_number' => '',
593             'specialrate' => '',
594             'toll_free' => '
595             80080(?:
596             0[1-9]|
597             2\\d
598             )\\d{3}
599             ',
600             'voip' => '
601             1333\\d{4}|
602             [12]468\\d{4}
603             '
604             };
605             my %areanames = ();
606             $areanames{en} = {"9558470", "Hpa\-An",
607             "958528", "Pyinoolwin",
608             "955851", "Myawaddy",
609             "9581471", "Shan\ \(South\)",
610             "958546", "Pyinoolwin",
611             "9545470", "Pyapon",
612             "95812822", "Moenae",
613             "951424", "Yangon",
614             "952424", "Mandalay",
615             "9582490", "Shan\ \(North\)",
616             "952483", "Mandalay",
617             "9556483", "Thanlyin",
618             "951483", "Yangon",
619             "951551", "Bahan",
620             "951550", "Bahan",
621             "9543565", "Palatwa",
622             "958529", "Padaythar\ Myothit",
623             "951552", "Bahan",
624             "9542483", "Ayeyarwaddy\/Pathein",
625             "95812824", "Moenae",
626             "951684", "Bayintnaung",
627             "9543470", "Sittwe",
628             "958620", "Mogoke",
629             "958541", "Pyinoolwin",
630             "9564472", "Meiktila",
631             "958621", "Mogoke",
632             "9585440", "Pyinoolwin",
633             "958540", "Ohn\ Chaw",
634             "958542", "Pyinoolwin",
635             "9567460", "Naypyitaw",
636             "956323", "Magway",
637             "9585448", "Pyinoolwin",
638             "95812820", "Moenae",
639             "951422", "Yangon",
640             "956525", "Ngape",
641             "952422", "Mandalay",
642             "9542481", "Pathein",
643             "956124622", "Chauk",
644             "9582320", "Manton",
645             "956124643", "Bagan",
646             "951686", "Bayintnaung",
647             "95812821", "Moenae",
648             "9569200", "Aunglan",
649             "9554470", "Taungoo",
650             "958630", "Thabeikkyin",
651             "951681", "Bayintnaung",
652             "951465", "Yangon",
653             "956124642", "Bagan",
654             "951680", "Bayintnaung",
655             "951682", "Bayintnaung",
656             "9567439", "Naypyidaw",
657             "9585447", "Pyinoolwin",
658             "9571483", "Monywa",
659             "958141", "Naungtayar",
660             "9557480", "Mawlamyine\/Thanbyuzayat",
661             "9567550", "Naypyidaw",
662             "958523", "Pyinoolwin",
663             "951426", "Yangon",
664             "9552472", "Bago",
665             "952426", "Mandalay",
666             "951470", "Yangon",
667             "952471", "Mandalay",
668             "95522223", "Bago",
669             "951471", "Yangon",
670             "952470", "Yangon",
671             "952472", "Mandalay",
672             "9585445", "Pyinoolwin",
673             "956124623", "Chauk",
674             "951472", "Yangon",
675             "9585444", "Pyinoolwin",
676             "951683", "Bayintnaung",
677             "956124640", "Bagan",
678             "95522224", "Bago",
679             "956124644", "Bagan",
680             "956124641", "Bagan",
681             "958521", "Pyinoolwin",
682             "9585441", "Pyinoolwin",
683             "958522", "Pyinoolwin",
684             "958635", "Sintkuu",
685             "9552470", "Bago",
686             "958238", "Tantyan",
687             "956260", "Kanma",
688             "9561200", "Chauk",
689             "9581470", "Taunggyi",
690             "958131", "Loilem",
691             "956124621", "Chauk",
692             "956320", "Magway",
693             "958548", "Pyinoolwin",
694             "955620", "Mandalay",
695             "9553472", "Pyay",
696             "951423", "Yangon",
697             "958130", "Pinlon",
698             "951439", "Yangon",
699             "952439", "Mandalay",
700             "956124624", "Chauk",
701             "952462", "Mandalay",
702             "956124620", "Chauk",
703             "95522222", "Bago",
704             "95712032", "Ohbotaung",
705             "951462", "Yangon",
706             "951685", "Bayintnaung",
707             "9522000", "Mingalar\ Mandalay",
708             "95642487", "Shawpin",
709             "956940", "Sinpaungwae",
710             "958547", "Pyinoolwin",
711             "958549", "Pyinoolwin",
712             "9571470", "Monywa",
713             "9585449", "Pyinoolwin",
714             "95522230", "Oathar\ Myothit",
715             "9563470", "Magway",
716             "951429", "Yangon",
717             "955645", "Tandar",
718             "9557481", "Mawlamyine",
719             "95256", "Amarapura",
720             "954353", "Buthidaung",
721             "9585442", "Pyinoolwin",
722             "958543", "Pyinoolwin",
723             "9583470", "Loikaw",
724             "9574470", "Myitkyinar\/Bahmaw",
725             "958639", "Letpanhla",
726             "95812823", "Moenae",
727             "9558472", "Hpa\-An",
728             "958149", "Sesin",
729             "9570470", "Hakha",
730             "9575470", "Shwebo",
731             "951687", "Bayintnaung",
732             "9543202", "Rakhine",
733             "9542480", "Pathein",
734             "956324", "Magway",
735             "9567470", "Naypyitaw",
736             "951688", "Bayintnaung",
737             "9543483", "Sittwe\/Thandwe",
738             "9559470", "Dawei",
739             "95522221", "Bago",
740             "951553", "Bahan",
741             "958551", "Yangon",
742             "958545", "Pyinoolwin",
743             "958625", "Kyatpyin",
744             "9562472", "Pakokku",
745             "9585443", "Pyinoolwin",};
746              
747             sub new {
748 13     13 1 31 my $class = shift;
749 13         35 my $number = shift;
750 13         104 $number =~ s/(^\+95|\D)//g;
751 13         82 my $self = bless({ country_code => '95', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
752 13 100       71 return $self if ($self->is_valid());
753 1         7 $number =~ s/^(?:0)//;
754 1         12 $self = bless({ country_code => '95', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
755 1 50       5 return $self->is_valid() ? $self : undef;
756             }
757             1;