File Coverage

blib/lib/Number/Phone/StubCountry/BD.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::BD;
20 2     2   1414 use base qw(Number::Phone::StubCountry);
  2         12  
  2         273  
21              
22 2     2   16 use strict;
  2         5  
  2         61  
23 2     2   12 use warnings;
  2         5  
  2         73  
24 2     2   11 use utf8;
  2         5  
  2         17  
25             our $VERSION = 1.20230614174401;
26              
27             my $formatters = [
28             {
29             'format' => '$1-$2',
30             'leading_digits' => '
31             31[5-8]|
32             [459]1
33             ',
34             'national_rule' => '0$1',
35             'pattern' => '(\\d{2})(\\d{4,6})'
36             },
37             {
38             'format' => '$1-$2',
39             'leading_digits' => '
40             3(?:
41             [67]|
42             8[013-9]
43             )|
44             4(?:
45             6[168]|
46             7|
47             [89][18]
48             )|
49             5(?:
50             6[128]|
51             9
52             )|
53             6(?:
54             28|
55             4[14]|
56             5
57             )|
58             7[2-589]|
59             8(?:
60             0[014-9]|
61             [12]
62             )|
63             9[358]|
64             (?:
65             3[2-5]|
66             4[235]|
67             5[2-578]|
68             6[0389]|
69             76|
70             8[3-7]|
71             9[24]
72             )1|
73             (?:
74             44|
75             66
76             )[01346-9]
77             ',
78             'national_rule' => '0$1',
79             'pattern' => '(\\d{3})(\\d{3,7})'
80             },
81             {
82             'format' => '$1-$2',
83             'leading_digits' => '
84             [13-9]|
85             22
86             ',
87             'national_rule' => '0$1',
88             'pattern' => '(\\d{4})(\\d{3,6})'
89             },
90             {
91             'format' => '$1-$2',
92             'leading_digits' => '2',
93             'national_rule' => '0$1',
94             'pattern' => '(\\d)(\\d{7,8})'
95             }
96             ];
97              
98             my $validators = {
99             'fixed_line' => '
100             (?:
101             4(?:
102             31\\d\\d|
103             423
104             )|
105             5222
106             )\\d{3}(?:
107             \\d{2}
108             )?|
109             8332[6-9]\\d\\d|
110             (?:
111             3(?:
112             03[56]|
113             224
114             )|
115             4(?:
116             22[25]|
117             653
118             )
119             )\\d{3,4}|
120             (?:
121             3(?:
122             42[47]|
123             529|
124             823
125             )|
126             4(?:
127             027|
128             525|
129             65(?:
130             28|
131             8
132             )
133             )|
134             562|
135             6257|
136             7(?:
137             1(?:
138             5[3-5]|
139             6[12]|
140             7[156]|
141             89
142             )|
143             22[589]56|
144             32|
145             42675|
146             52(?:
147             [25689](?:
148             56|
149             8
150             )|
151             [347]8
152             )|
153             71(?:
154             6[1267]|
155             75|
156             89
157             )|
158             92374
159             )|
160             82(?:
161             2[59]|
162             32
163             )56|
164             9(?:
165             03[23]56|
166             23(?:
167             256|
168             373
169             )|
170             31|
171             5(?:
172             1|
173             2[4589]56
174             )
175             )
176             )\\d{3}|
177             (?:
178             3(?:
179             02[348]|
180             22[35]|
181             324|
182             422
183             )|
184             4(?:
185             22[67]|
186             32[236-9]|
187             6(?:
188             2[46]|
189             5[57]
190             )|
191             953
192             )|
193             5526|
194             6(?:
195             024|
196             6655
197             )|
198             81
199             )\\d{4,5}|
200             (?:
201             2(?:
202             7(?:
203             1[0-267]|
204             2[0-289]|
205             3[0-29]|
206             4[01]|
207             5[1-3]|
208             6[013]|
209             7[0178]|
210             91
211             )|
212             8(?:
213             0[125]|
214             1[1-6]|
215             2[0157-9]|
216             3[1-69]|
217             41|
218             6[1-35]|
219             7[1-5]|
220             8[1-8]|
221             9[0-6]
222             )|
223             9(?:
224             0[0-2]|
225             1[0-4]|
226             2[568]|
227             3[3-6]|
228             5[5-7]|
229             6[0136-9]|
230             7[0-7]|
231             8[014-9]
232             )
233             )|
234             3(?:
235             0(?:
236             2[025-79]|
237             3[2-4]
238             )|
239             181|
240             22[12]|
241             32[2356]|
242             824
243             )|
244             4(?:
245             02[09]|
246             22[348]|
247             32[045]|
248             523|
249             6(?:
250             27|
251             54
252             )
253             )|
254             666(?:
255             22|
256             53
257             )|
258             7(?:
259             22[57-9]|
260             42[56]|
261             82[35]
262             )8|
263             8(?:
264             0[124-9]|
265             2(?:
266             181|
267             2[02-4679]8
268             )|
269             4[12]|
270             [5-7]2
271             )|
272             9(?:
273             [04]2|
274             2(?:
275             2|
276             328
277             )|
278             81
279             )
280             )\\d{4}|
281             (?:
282             2(?:
283             222|
284             [45]\\d
285             )\\d|
286             3(?:
287             1(?:
288             2[5-7]|
289             [5-7]
290             )|
291             425|
292             822
293             )|
294             4(?:
295             033|
296             1\\d|
297             [257]1|
298             332|
299             4(?:
300             2[246]|
301             5[25]
302             )|
303             6(?:
304             2[35]|
305             56|
306             62
307             )|
308             8(?:
309             23|
310             54
311             )|
312             92[2-5]
313             )|
314             5(?:
315             02[03489]|
316             22[457]|
317             32[35-79]|
318             42[46]|
319             6(?:
320             [18]|
321             53
322             )|
323             724|
324             826
325             )|
326             6(?:
327             023|
328             2(?:
329             2[2-5]|
330             5[3-5]|
331             8
332             )|
333             32[3478]|
334             42[34]|
335             52[47]|
336             6(?:
337             [18]|
338             6(?:
339             2[34]|
340             5[24]
341             )
342             )|
343             [78]2[2-5]|
344             92[2-6]
345             )|
346             7(?:
347             02|
348             21\\d|
349             [3-589]1|
350             6[12]|
351             72[24]
352             )|
353             8(?:
354             217|
355             3[12]|
356             [5-7]1
357             )|
358             9[24]1
359             )\\d{5}|
360             (?:
361             (?:
362             3[2-8]|
363             5[2-57-9]|
364             6[03-589]
365             )1|
366             4[4689][18]
367             )\\d{5}|
368             [59]1\\d{5}
369             ',
370             'geographic' => '
371             (?:
372             4(?:
373             31\\d\\d|
374             423
375             )|
376             5222
377             )\\d{3}(?:
378             \\d{2}
379             )?|
380             8332[6-9]\\d\\d|
381             (?:
382             3(?:
383             03[56]|
384             224
385             )|
386             4(?:
387             22[25]|
388             653
389             )
390             )\\d{3,4}|
391             (?:
392             3(?:
393             42[47]|
394             529|
395             823
396             )|
397             4(?:
398             027|
399             525|
400             65(?:
401             28|
402             8
403             )
404             )|
405             562|
406             6257|
407             7(?:
408             1(?:
409             5[3-5]|
410             6[12]|
411             7[156]|
412             89
413             )|
414             22[589]56|
415             32|
416             42675|
417             52(?:
418             [25689](?:
419             56|
420             8
421             )|
422             [347]8
423             )|
424             71(?:
425             6[1267]|
426             75|
427             89
428             )|
429             92374
430             )|
431             82(?:
432             2[59]|
433             32
434             )56|
435             9(?:
436             03[23]56|
437             23(?:
438             256|
439             373
440             )|
441             31|
442             5(?:
443             1|
444             2[4589]56
445             )
446             )
447             )\\d{3}|
448             (?:
449             3(?:
450             02[348]|
451             22[35]|
452             324|
453             422
454             )|
455             4(?:
456             22[67]|
457             32[236-9]|
458             6(?:
459             2[46]|
460             5[57]
461             )|
462             953
463             )|
464             5526|
465             6(?:
466             024|
467             6655
468             )|
469             81
470             )\\d{4,5}|
471             (?:
472             2(?:
473             7(?:
474             1[0-267]|
475             2[0-289]|
476             3[0-29]|
477             4[01]|
478             5[1-3]|
479             6[013]|
480             7[0178]|
481             91
482             )|
483             8(?:
484             0[125]|
485             1[1-6]|
486             2[0157-9]|
487             3[1-69]|
488             41|
489             6[1-35]|
490             7[1-5]|
491             8[1-8]|
492             9[0-6]
493             )|
494             9(?:
495             0[0-2]|
496             1[0-4]|
497             2[568]|
498             3[3-6]|
499             5[5-7]|
500             6[0136-9]|
501             7[0-7]|
502             8[014-9]
503             )
504             )|
505             3(?:
506             0(?:
507             2[025-79]|
508             3[2-4]
509             )|
510             181|
511             22[12]|
512             32[2356]|
513             824
514             )|
515             4(?:
516             02[09]|
517             22[348]|
518             32[045]|
519             523|
520             6(?:
521             27|
522             54
523             )
524             )|
525             666(?:
526             22|
527             53
528             )|
529             7(?:
530             22[57-9]|
531             42[56]|
532             82[35]
533             )8|
534             8(?:
535             0[124-9]|
536             2(?:
537             181|
538             2[02-4679]8
539             )|
540             4[12]|
541             [5-7]2
542             )|
543             9(?:
544             [04]2|
545             2(?:
546             2|
547             328
548             )|
549             81
550             )
551             )\\d{4}|
552             (?:
553             2(?:
554             222|
555             [45]\\d
556             )\\d|
557             3(?:
558             1(?:
559             2[5-7]|
560             [5-7]
561             )|
562             425|
563             822
564             )|
565             4(?:
566             033|
567             1\\d|
568             [257]1|
569             332|
570             4(?:
571             2[246]|
572             5[25]
573             )|
574             6(?:
575             2[35]|
576             56|
577             62
578             )|
579             8(?:
580             23|
581             54
582             )|
583             92[2-5]
584             )|
585             5(?:
586             02[03489]|
587             22[457]|
588             32[35-79]|
589             42[46]|
590             6(?:
591             [18]|
592             53
593             )|
594             724|
595             826
596             )|
597             6(?:
598             023|
599             2(?:
600             2[2-5]|
601             5[3-5]|
602             8
603             )|
604             32[3478]|
605             42[34]|
606             52[47]|
607             6(?:
608             [18]|
609             6(?:
610             2[34]|
611             5[24]
612             )
613             )|
614             [78]2[2-5]|
615             92[2-6]
616             )|
617             7(?:
618             02|
619             21\\d|
620             [3-589]1|
621             6[12]|
622             72[24]
623             )|
624             8(?:
625             217|
626             3[12]|
627             [5-7]1
628             )|
629             9[24]1
630             )\\d{5}|
631             (?:
632             (?:
633             3[2-8]|
634             5[2-57-9]|
635             6[03-589]
636             )1|
637             4[4689][18]
638             )\\d{5}|
639             [59]1\\d{5}
640             ',
641             'mobile' => '
642             (?:
643             1[13-9]\\d|
644             644
645             )\\d{7}|
646             (?:
647             3[78]|
648             44|
649             66
650             )[02-9]\\d{7}
651             ',
652             'pager' => '',
653             'personal_number' => '',
654             'specialrate' => '',
655             'toll_free' => '80[03]\\d{7}',
656             'voip' => '
657             96(?:
658             0[469]|
659             1[0-47]|
660             3[389]|
661             6[69]|
662             7[78]
663             )\\d{6}
664             '
665             };
666             my %areanames = ();
667             $areanames{en} = {"88027", "Dhaka",
668             "88036", "Bandarban",
669             "880441", "Patuakhali",
670             "8804653", "Fakirhat",
671             "8806922", "Gazaria",
672             "88075228", "Sirajgonj",
673             "88082298", "Jaintapur",
674             "880482", "Lohagara",
675             "880481", "Narail",
676             "8803222", "Chatkhil",
677             "8807524", "Sirajgonj",
678             "8803425", "Ramu",
679             "88075225", "Sirajganj",
680             "88082295", "Sylhet",
681             "8804223", "Bagerphara",
682             "880582", "Nageswari",
683             "880741", "Nagoan\/Santahar",
684             "880581", "Kurigram",
685             "8806822", "Kaliakoir",
686             "880433", "Banaripara",
687             "88095", "Netrokona",
688             "88093", "Nalitabari\/Nakla\/Sherpur",
689             "8806225", "Nowabgonj",
690             "880491", "Bhola",
691             "880781", "Rahanpur\/Shibganj\/Chapai\ Nobabganj",
692             "880541", "Gaibandha\/Gabindaganj",
693             "8804324", "Hizla",
694             "8803024", "Mirsharai\/Mirsari",
695             "880601", "Shariatpur\ Naria",
696             "8805329", "Bangla\ hili",
697             "8804523", "Kaligonj",
698             "8804323", "Agailjhara",
699             "8803023", "Hathazari",
700             "880461", "Pirojpur",
701             "88074267", "Nagoan",
702             "880316", "Chittagong",
703             "8808222", "Balagonj",
704             "8803221", "Begamgonj",
705             "8804627", "Swarupkhati",
706             "8804224", "Chaugacha",
707             "8807523", "Sirajgonj",
708             "880761", "Chuadanga",
709             "88081", "Homna\/Comilla",
710             "8805224", "Haragacha",
711             "880762", "Alamdanga",
712             "8804329", "Uzirpur",
713             "8803029", "Anwara",
714             "8804654", "Kachua",
715             "8805323", "Birgonj\/Gobindagonj\/Birganj",
716             "880561", "Thakurgoan",
717             "88044862", "Barguna",
718             "88074268", "Mahadevpur",
719             "8803322", "Chhagalnaiya",
720             "880902", "Phulpur\/Bhaluka\/Gouripur\/Gafargaon\/Goforgaon\/Iswarganj\/Ishwargonj\/Muktagacha",
721             "8804423", "Baufal\/Mirjagonj",
722             "8806825", "Sreepur",
723             "880721", "Rajshahi",
724             "8804320", "Banaripara",
725             "880371", "Khagrachari",
726             "880488", "Magura\/Mohammadpur",
727             "8803020", "Banskhali",
728             "880802", "Chauddagram\/Chandina\/Chandiana\/Daudkandi\/Debidwar\/Homna\/Muradnagar\/Brahmanpara\/Barura\/Burichang",
729             "8806723", "Sonargaon",
730             "8805227", "Pirgonj",
731             "880521", "Rangpur",
732             "8807227", "Paba",
733             "880903", "Mymensingh",
734             "88091", "Mymensingh",
735             "8806222", "Dhamrai",
736             "8804228", "Sharsa",
737             "8804657", "Rampal",
738             "880498", "Jhalakati",
739             "88075265", "Sirajganj",
740             "88075258", "Sirajgonj",
741             "880421", "Sharsa\ \(Benapol\)",
742             "88070", "Bheramara",
743             "8806925", "Sreenagar",
744             "8803822", "Raipura",
745             "8803033", "Chandanaish",
746             "88075268", "Sirajgonj",
747             "8804624", "Kaokhali\/Kawkhali",
748             "88075255", "Sirajganj",
749             "8807823", "Rohanpur",
750             "880565", "Boda",
751             "8803422", "Chokoria\/Chakaria",
752             "8806926", "Tongibari",
753             "8804227", "Manirampur",
754             "8804658", "Mongla\,\ Bagerhat",
755             "8803225", "Shenbag\/Senbag",
756             "8806024", "GoshairHat",
757             "8803326", "Fulgazi",
758             "880872", "Chatak\/Dharmapasha\/Jaganathpur\/Jagonnathpur",
759             "8806023", "Damudda",
760             "880871", "Sunamganj",
761             "88072258", "Godagari",
762             "8804924", "Daulatkhan",
763             "880431", "Barisal",
764             "8804623", "Bhandaria",
765             "8805424", "Palashbari",
766             "88047", "Satkhira",
767             "880451", "Jhinaidah\/Horinakunda",
768             "8803034", "Lohagara",
769             "8803027", "Snadwip",
770             "8804327", "Babugonj",
771             "8803325", "Sonagazi",
772             "88072255", "Rajshahi",
773             "880468", "Bagerhat\/Mongla\ Port",
774             "880485", "Sreepur",
775             "8805327", "Fulbari",
776             "8808226", "Fenchugonj",
777             "880732", "Bera\/Chatmohar\/Faridpur\/Ishwardi\/Shathiya\/Sathia\/Bhangura\/Sujanagar",
778             "88098", "Jamalpur\/Islampur\/Dewanganj",
779             "880568", "Panchagar\/Tetulia",
780             "880731", "Pabna\ \ Bera",
781             "880751", "Sirajganj",
782             "8807527", "Sirajgonj",
783             "8806724", "Bandar",
784             "8804328", "Bakergonj",
785             "8803028", "Barabkunda\/Sitakunda",
786             "880552", "Saidpur\/Syedpur",
787             "8808225", "Sylhet",
788             "8806255", "Raipura",
789             "880317", "Chittagong",
790             "880551", "Nilphamari\/Domar",
791             "880495", "Nalcity",
792             "880531", "Dianjpur\/Parbitipur\/Hakimpur\ \(Hili\)",
793             "8804424", "Baufal\/Mirjagonj",
794             "88051", "Bogra\/Gabtali\/Nandigram\/Sherpur",
795             "8803427", "Ukhiya",
796             "8806823", "Kaliganj",
797             "8806254", "Palash",
798             "8808224", "Biswanath",
799             "8806725", "Rupganj\/Rupgonj",
800             "880921", "Tangail",
801             "880381", "Laximpur\/Ramganj",
802             "88075295", "Sirajganj",
803             "8804222", "Abhaynagar\ \(Noapara\)",
804             "880922", "Bashail\/Bhuapur\/Ghatail\/Gopalpur\/Kalihati\/Elenga\/Kalihati\/Modhupur\/Mirzapur",
805             "88092328", "Shakhipur",
806             "8804426", "Baufal\/Mirjagonj",
807             "8806423", "Goalanda",
808             "88071", "Kushtia",
809             "880861", "Maulavibazar\/Rajnagar",
810             "880862", "Baralekha\/Komalgonj\/Kulaura\/Rajnagar\/Sreemongal",
811             "880341", "Eidgaon\/Cox\'s\ bazar",
812             "88075298", "Sirajgonj",
813             "8805024", "Dhupchachia",
814             "880823", "Sylhet",
815             "88092325", "Tangail",
816             "8805426", "Saghata\ \(Bonarpara\)",
817             "8807425", "Manda",
818             "8806923", "Lohajang",
819             "8804652", "Bagerhat",
820             "8803035", "Potia\/Potiya",
821             "8803324", "Parshuram\/Parsuram",
822             "8807825", "Shibgonj",
823             "88041", "Khulna",
824             "8804925", "Lalmohan",
825             "880403", "Dighalia",
826             "8803223", "Companiganj\ \(B\.Hat\)",
827             "8805222", "Badarganj",
828             "8803036", "Satkania\/Satkhania",
829             "8806327", "Nagarkanda",
830             "8806527", "Singair",
831             "88079", "Meherpur",
832             "8807724", "Gurudashpur",
833             "8803224", "Hatiya\ \(Oshkhali\)",
834             "880668", "Gopalgonj",
835             "8804625", "Mothbaria",
836             "88059", "Lalmonirhat",
837             "88025", "Dhaka",
838             "8803323", "Dagonbhuya",
839             "8806924", "Sirajdikhan",
840             "880842", "Hajiganj\/Kochua\/Shahrasti\/Matlab",
841             "880841", "Chandpur",
842             "880631", "Faridpur",
843             "8804626", "Nazirpur",
844             "880651", "Maninganj\/Singair\/Daulatpur\/Shibalaya",
845             "8805029", "Sherpur",
846             "8805023", "Dhunat",
847             "8803022", "Fatikchari",
848             "8804322", "Goarnadi",
849             "8806328", "Sadarpur\ \(J\.Monjil\)",
850             "88072295", "Rajshahi",
851             "8809233", "Tangail",
852             "8804029", "Terokhada",
853             "8806424", "Pangsha",
854             "88072298", "Tanore",
855             "880833", "Habiganj",
856             "8808223", "Bianibazar",
857             "8806253", "Monahardi\/Monohordi",
858             "880466", "Mongla",
859             "8806824", "Kapashia",
860             "8803032", "Boalkhali",
861             "8804655", "Mollarhat",
862             "8803823", "Ramgati\ \(Alexender\)",
863             "88028", "Dhaka",
864             "88075285", "Sirajganj",
865             "8805225", "Mithapukur",
866             "880832", "Chunarughat\/Madabpur\/Nabiganj",
867             "880852", "Akhaura\/Bancharampur\/Kashba\/Sarail\/Quashba\/Nabinagar\/Ashuganj",
868             "880831", "Habiganj",
869             "880641", "Rajbari",
870             "8804656", "Morelganj",
871             "880851", "Brahmanbaria\/Nabinagar",
872             "8804922", "Borhanuddin",
873             "88024", "Dhaka",
874             "88075288", "Sirajgonj",
875             "8804020", "Rupsha",
876             "880691", "Munsigonj\/Tongibari",
877             "8804225", "Jhikargacha",
878             "8806524", "Zitka",
879             "8806722", "Araihazar\/Arihazar",
880             "8806324", "Boalmari",
881             "880628", "Narsingdi\/Palash\ \(Ghorasal\)\/Shibpur",
882             "880572", "Panchbibi",
883             "88044863", "Barguna",
884             "880941", "Kishoreganj\/Tarail",
885             "880571", "Jhinaidah\/Panchbibi",
886             "8805020", "Sibgonj\ \(Mokamtala\)",
887             "88029", "Dhaka",
888             "8804422", "Baufal\/Mirjagonj",
889             "880942", "Bajitpur\/Bhairabbazar\/Itna\/Kotiadhi",
890             "8804226", "Keshobpur",
891             "8806223", "Dohar",
892             "8808220", "Kanaighat",
893             "880321", "Noakhali\/Chatkhil",
894             "880771", "Natore",
895             "8808218", "Sylhet",
896             "8804525", "Moheshpur",
897             "8804027", "Paikgacha",
898             "8804325", "Mehendigonj",
899             "8803025", "Rangunia",
900             "8804455", "Pathorghata",
901             "8806224", "Keranigonj",
902             "880352", "Kaptai",
903             "880331", "Feni\/Sonagazi\/Chagalnaiya\/Daganbhuyan",
904             "880351", "Rangamati",
905             "8804326", "Muladi",
906             "8803026", "Rauzan",
907             "88044235", "Dashmina\,\ Patuakhali",
908             "8806323", "Bhanga",
909             "880661", "Madaripur",
910             "8805028", "Shariakandi",
911             "8808227", "Golapgonj",
912             "8806257", "Madhabdi",
913             "8808217", "Sylhet\ MEA",
914             "88072285", "Rajshahi",
915             "8803424", "Moheshkhali",
916             "880318", "Chittagong",
917             "8805326", "Chrirbandar",
918             "88072288", "Baneswar",
919             "8803824", "Ramgonj",
920             "8805325", "Shetabgonj",};
921              
922             sub new {
923 13     13 1 27 my $class = shift;
924 13         19 my $number = shift;
925 13         83 $number =~ s/(^\+880|\D)//g;
926 13         79 my $self = bless({ country_code => '880', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
927 13 100       64 return $self if ($self->is_valid());
928 1         5 $number =~ s/^(?:0)//;
929 1         17 $self = bless({ country_code => '880', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
930 1 50       8 return $self->is_valid() ? $self : undef;
931             }
932             1;