File Coverage

blib/lib/Number/Phone/StubCountry/ID.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::ID;
20 2     2   1369 use base qw(Number::Phone::StubCountry);
  2         7  
  2         228  
21              
22 2     2   19 use strict;
  2         9  
  2         47  
23 2     2   13 use warnings;
  2         5  
  2         50  
24 2     2   15 use utf8;
  2         7  
  2         11  
25             our $VERSION = 1.20230614174403;
26              
27             my $formatters = [
28             {
29             'format' => '$1 $2 $3',
30             'leading_digits' => '15',
31             'pattern' => '(\\d)(\\d{3})(\\d{3})'
32             },
33             {
34             'format' => '$1 $2',
35             'leading_digits' => '
36             2[124]|
37             [36]1
38             ',
39             'national_rule' => '(0$1)',
40             'pattern' => '(\\d{2})(\\d{5,9})'
41             },
42             {
43             'format' => '$1 $2',
44             'leading_digits' => '800',
45             'national_rule' => '0$1',
46             'pattern' => '(\\d{3})(\\d{5,7})'
47             },
48             {
49             'format' => '$1 $2',
50             'leading_digits' => '[2-79]',
51             'national_rule' => '(0$1)',
52             'pattern' => '(\\d{3})(\\d{5,8})'
53             },
54             {
55             'format' => '$1-$2-$3',
56             'leading_digits' => '8[1-35-9]',
57             'national_rule' => '0$1',
58             'pattern' => '(\\d{3})(\\d{3,4})(\\d{3})'
59             },
60             {
61             'format' => '$1 $2',
62             'leading_digits' => '1',
63             'national_rule' => '0$1',
64             'pattern' => '(\\d{3})(\\d{6,8})'
65             },
66             {
67             'format' => '$1 $2 $3',
68             'leading_digits' => '804',
69             'national_rule' => '0$1',
70             'pattern' => '(\\d{3})(\\d{3})(\\d{4})'
71             },
72             {
73             'format' => '$1 $2 $3 $4',
74             'leading_digits' => '80',
75             'national_rule' => '0$1',
76             'pattern' => '(\\d{3})(\\d)(\\d{3})(\\d{3})'
77             },
78             {
79             'format' => '$1-$2-$3',
80             'leading_digits' => '8',
81             'national_rule' => '0$1',
82             'pattern' => '(\\d{3})(\\d{4})(\\d{4,5})'
83             },
84             {
85             'format' => '$1 $2 $3 $4',
86             'intl_format' => 'NA',
87             'leading_digits' => '001',
88             'pattern' => '(\\d{3})(\\d{3})(\\d{3})(\\d{3})'
89             },
90             {
91             'format' => '$1 $2 $3 $4',
92             'intl_format' => 'NA',
93             'pattern' => '(\\d{2})(\\d{4})(\\d{3})(\\d{4})'
94             }
95             ];
96              
97             my $validators = {
98             'fixed_line' => '
99             2[124]\\d{7,8}|
100             619\\d{8}|
101             2(?:
102             1(?:
103             14|
104             500
105             )|
106             2\\d{3}
107             )\\d{3}|
108             61\\d{5,8}|
109             (?:
110             2(?:
111             [35][1-4]|
112             6[0-8]|
113             7[1-6]|
114             8\\d|
115             9[1-8]
116             )|
117             3(?:
118             1|
119             [25][1-8]|
120             3[1-68]|
121             4[1-3]|
122             6[1-3568]|
123             7[0-469]|
124             8\\d
125             )|
126             4(?:
127             0[1-589]|
128             1[01347-9]|
129             2[0-36-8]|
130             3[0-24-68]|
131             43|
132             5[1-378]|
133             6[1-5]|
134             7[134]|
135             8[1245]
136             )|
137             5(?:
138             1[1-35-9]|
139             2[25-8]|
140             3[124-9]|
141             4[1-3589]|
142             5[1-46]|
143             6[1-8]
144             )|
145             6(?:
146             [25]\\d|
147             3[1-69]|
148             4[1-6]
149             )|
150             7(?:
151             02|
152             [125][1-9]|
153             [36]\\d|
154             4[1-8]|
155             7[0-36-9]
156             )|
157             9(?:
158             0[12]|
159             1[013-8]|
160             2[0-479]|
161             5[125-8]|
162             6[23679]|
163             7[159]|
164             8[01346]
165             )
166             )\\d{5,8}
167             ',
168             'geographic' => '
169             2[124]\\d{7,8}|
170             619\\d{8}|
171             2(?:
172             1(?:
173             14|
174             500
175             )|
176             2\\d{3}
177             )\\d{3}|
178             61\\d{5,8}|
179             (?:
180             2(?:
181             [35][1-4]|
182             6[0-8]|
183             7[1-6]|
184             8\\d|
185             9[1-8]
186             )|
187             3(?:
188             1|
189             [25][1-8]|
190             3[1-68]|
191             4[1-3]|
192             6[1-3568]|
193             7[0-469]|
194             8\\d
195             )|
196             4(?:
197             0[1-589]|
198             1[01347-9]|
199             2[0-36-8]|
200             3[0-24-68]|
201             43|
202             5[1-378]|
203             6[1-5]|
204             7[134]|
205             8[1245]
206             )|
207             5(?:
208             1[1-35-9]|
209             2[25-8]|
210             3[124-9]|
211             4[1-3589]|
212             5[1-46]|
213             6[1-8]
214             )|
215             6(?:
216             [25]\\d|
217             3[1-69]|
218             4[1-6]
219             )|
220             7(?:
221             02|
222             [125][1-9]|
223             [36]\\d|
224             4[1-8]|
225             7[0-36-9]
226             )|
227             9(?:
228             0[12]|
229             1[013-8]|
230             2[0-479]|
231             5[125-8]|
232             6[23679]|
233             7[159]|
234             8[01346]
235             )
236             )\\d{5,8}
237             ',
238             'mobile' => '8[1-35-9]\\d{7,10}',
239             'pager' => '',
240             'personal_number' => '',
241             'specialrate' => '(804\\d{7})|(809\\d{7})|(
242             (?:
243             1500|
244             8071\\d{3}
245             )\\d{3}
246             )',
247             'toll_free' => '
248             00[17]803\\d{7}|
249             (?:
250             177\\d|
251             800
252             )\\d{5,7}|
253             001803\\d{6}
254             ',
255             'voip' => ''
256             };
257             my %areanames = ();
258             $areanames{en} = {"62431", "Manado\/Tomohon\/Tondano",
259             "62418", "Takalar",
260             "62293", "Magelang\/Mungkid\/Temanggung",
261             "62380", "Kupang",
262             "62295", "Pati\/Rembang",
263             "62534", "Ketapang",
264             "62289", "Bumiayu",
265             "62326", "Masalembu\ Islands",
266             "62752", "Bukittinggi\/Padang\ Panjang\/Payakumbuh\/Batusangkar",
267             "62372", "Alas\/Taliwang",
268             "62902", "Agats",
269             "62983", "Serui",
270             "62414", "Kepulauan\ Selayar",
271             "62538", "Kuala\ Pembuang",
272             "62352", "Ponorogo",
273             "62772", "Tarempa",
274             "62511", "Banjarmasin",
275             "62231", "Cirebon",
276             "62726", "Menggala",
277             "62737", "Arga\ Makmur\/Mukomuko",
278             "62562", "Singkawang\/Sambas\/Bengkayang",
279             "62915", "Bula",
280             "62913", "Namlea",
281             "62419", "Jeneponto",
282             "62632", "Balige",
283             "62465", "Kolonedale",
284             "62463", "Bunta",
285             "62969", "Wamena",
286             "62484", "Watansoppeng",
287             "62321", "Mojokerto\/Jombang",
288             "62957", "Kaimana",
289             "62401", "Kendari",
290             "62427", "Barru",
291             "62342", "Blitar",
292             "62657", "Bakongan",
293             "62721", "Bandar\ Lampung",
294             "62265", "Tasikmalaya\/Banjar\/Ciamis",
295             "62284", "Pemalang",
296             "62263", "Cianjur",
297             "62742", "Kualatungkal\/Tebing\ Tinggi",
298             "6222", "Bandung\/Cimahi",
299             "6270", "Tebing\ Tinggi",
300             "62539", "Kuala\ Kuayan",
301             "62481", "Watampone",
302             "62324", "Pamekasan",
303             "62728", "Liwa",
304             "62527", "Amuntai",
305             "62343", "Pasuruan",
306             "62536", "Palangkaraya\/Kasongan",
307             "62563", "Ngabang",
308             "62635", "Gunung\ Tua",
309             "62565", "Sintang",
310             "62633", "Tarutung\/Dolok\ Sanggul",
311             "62387", "Waingapu\/Waikabubak",
312             "62462", "Banggai",
313             "62404", "Wanci",
314             "62328", "Sumenep",
315             "62262", "Garut",
316             "62724", "Kotabumi",
317             "62743", "Muara\ Bulian",
318             "62730", "Pagar\ Alam\/Kota\ Agung",
319             "62745", "Sarolangun",
320             "62281", "Banyumas\/Purbalingga",
321             "62966", "Sarmi",
322             "62408", "Unaaha",
323             "62420", "Enrekang",
324             "62755", "Solok",
325             "62729", "Pringsewu",
326             "62434", "Kotamobagu",
327             "62373", "Dompu",
328             "62753", "Lubuk\ Sikaping",
329             "62518", "Kotabaru\/Batulicin",
330             "62717", "Pangkal\ Pinang\/Sungailiat",
331             "62292", "Purwodadi",
332             "62531", "Sampit",
333             "62411", "Makassar\/Maros\/Sungguminasa",
334             "62773", "Ranai",
335             "62353", "Bojonegoro",
336             "62286", "Banjarnegara\/Wonosobo",
337             "62438", "Bitung",
338             "6231", "Surabaya",
339             "62355", "Tulungagung\/Trenggalek",
340             "62650", "Sinabang",
341             "62234", "Indramayu",
342             "62564", "Sanggau",
343             "62296", "Blora",
344             "62634", "Padang\ Sidempuan\/Sipirok",
345             "62620", "Pangkalan\ Brandan",
346             "62405", "Kolaka",
347             "62482", "Sinjai",
348             "62403", "Raha",
349             "62461", "Luwuk",
350             "62323", "Sampang",
351             "62325", "Sangkapura",
352             "62779", "Tanjungbatu",
353             "62911", "Ambon",
354             "62748", "Sungai\ Penuh\/Kerinci",
355             "62568", "Nanga\ Pinoh",
356             "62261", "Sumedang",
357             "62986", "Manokwari",
358             "62767", "Bagansiapiapi",
359             "62725", "Metro",
360             "62282", "East\ Cilacap",
361             "62723", "Blambangan\ Umpu",
362             "62744", "Muara\ Tebo",
363             "62916", "Tual",
364             "62532", "Pangkalan\ Bun",
365             "62291", "Demak\/Jepara\/Kudus",
366             "62778", "Batam",
367             "62358", "Nganjuk",
368             "62435", "Gorontalo",
369             "62374", "Bima",
370             "62754", "Sijunjung",
371             "62513", "Muara\ Teweh",
372             "62233", "Majalengka",
373             "62639", "Gunung\ Sitoli",
374             "62354", "Kediri",
375             "62266", "Sukabumi",
376             "62981", "Biak",
377             "62432", "Tahuna",
378             "62751", "Padang\/Pariaman",
379             "62371", "Sumbawa",
380             "62636", "Panyabungan\/Sibuhuan",
381             "62294", "Kendal",
382             "62627", "Subulussalam\/Sidikalang\/Salak",
383             "62746", "Bangko",
384             "62927", "Labuha",
385             "62901", "Timika",
386             "62457", "Donggala",
387             "62984", "Nabire",
388             "62771", "Tanjung\ Pinang",
389             "62351", "Madiun\/Magetan\/Ngawi",
390             "62512", "Pelaihari",
391             "62232", "Kuningan",
392             "62413", "Bulukumba\/Bantaeng",
393             "62298", "Salatiga\/Ambarawa",
394             "62760", "Teluk\ Kuantan",
395             "62376", "Selong",
396             "62756", "Painan",
397             "62322", "Lamongan",
398             "62631", "Sibolga\/Pandan",
399             "62561", "Pontianak\/Mempawah",
400             "62341", "Malang\/Batu",
401             "62914", "Masohi",
402             "62485", "Sengkang",
403             "6244", "Marisa",
404             "62464", "Ampana",
405             "62402", "Baubau",
406             "62285", "Pekalongan\/Batang\/Comal",
407             "6224", "Semarang\/Demak",
408             "62722", "Tanggamus",
409             "62283", "Tegal\/Brebes",
410             "62264", "Purwakarta\/Cikampek",
411             "62356", "Rembang\/Tuban",
412             "62776", "Dabosingkep",
413             "62918", "Saumlaku",
414             "62741", "Jambi\ City",
415             "62548", "Bontang",
416             "62747", "Muarabungo",
417             "62980", "Ransiki",
418             "62652", "Sabang",
419             "62276", "Boyolali",
420             "62764", "Siak\ Sri\ Indrapura",
421             "62368", "Baturiti",
422             "62422", "Majene",
423             "62952", "Teminabuan",
424             "62525", "Buntok",
425             "62567", "Putussibau",
426             "62626", "Pangururan",
427             "62385", "Labuhanbajo\/Ruteng",
428             "62768", "Tembilahan",
429             "62383", "Larantuka",
430             "62554", "Tanjung\ Redeb",
431             "62260", "Subang",
432             "62732", "Curup",
433             "62271", "Surakarta\/Sukoharjo\/Karanganyar\/Sragen",
434             "62549", "Sangatta",
435             "62777", "Karimun",
436             "62357", "Pacitan",
437             "62921", "Soasiu",
438             "62451", "Palu",
439             "62621", "Tebing\ Tinggi\/Sei\ Rampah",
440             "62757", "Balai\ Selasa",
441             "62251", "Bogor",
442             "62332", "Bondowoso",
443             "62471", "Palopo",
444             "62769", "Rengat\/Air\ Molek",
445             "62642", "Blang\ Kejeren",
446             "62910", "Bandanaira",
447             "62715", "Belinyu",
448             "62713", "Prabumulih\/Talang\ Ubi",
449             "62766", "Bengkalis",
450             "62274", "Yogyakarta",
451             "62551", "Tarakan",
452             "62628", "Kabanjahe\/Sibolangit",
453             "62733", "Lubuklinggau\/Muara\ Beliti",
454             "62924", "Tobelo",
455             "62735", "Baturaja\/Martapura\/Muaradua",
456             "62645", "Lhokseumawe",
457             "62254", "Serang\/Merak",
458             "62366", "Klungkung\/Bangli",
459             "62643", "Takengon",
460             "62624", "Panipahan\/Labuhanbatu",
461             "62297", "Karimun\ Jawa",
462             "62712", "Kayu\ Agung\/Tanjung\ Raja",
463             "62458", "Tentena",
464             "62335", "Probolinggo",
465             "62333", "Banyuwangi",
466             "62474", "Malili",
467             "62653", "Sigli",
468             "62655", "Meulaboh",
469             "6261", "Medan",
470             "62629", "Kutacane",
471             "62267", "Karawang",
472             "62761", "Pekanbaru",
473             "62975", "Tanahmerah",
474             "62556", "Nunukan",
475             "62917", "Dobo",
476             "62541", "Samarinda\/Tenggarong",
477             "62382", "Maumere",
478             "62361", "Denpasar",
479             "62955", "Bintuni",
480             "62423", "Makale\/Rantepao",
481             "62929", "Sanana",
482             "62370", "Mataram\/Praya",
483             "62522", "Ampah",
484             "62552", "Tanjungselor",
485             "62453", "Tolitoli",
486             "62734", "Muara\ Enim",
487             "62338", "Situbondo",
488             "62923", "Morotai",
489             "62275", "Purworejo",
490             "62967", "Jayapura",
491             "62273", "Wonogiri",
492             "62417", "Malino",
493             "62526", "Tamiang\ Layang\/Tanjung",
494             "62711", "Palembang",
495             "62537", "Kuala\ Kurun",
496             "62738", "Muara\ Aman",
497             "62334", "Lumajang",
498             "62473", "Masamba",
499             "62253", "Pandeglang",
500             "62386", "Kalabahi",
501             "62644", "Bireuen",
502             "6221", "Greater\ Jakarta",
503             "62623", "Kisaran\/Tanjung\ Balai",
504             "62659", "Blangpidie",
505             "62625", "Parapat\/Ajibata\/Simanindo",
506             "62428", "Polewali",
507             "62287", "Kebumen\/Karanganyar",
508             "62654", "Calang",
509             "62762", "Bangkinang\/Pasir\ Pengaraian",
510             "62381", "Ende",
511             "62542", "Balikpapan",
512             "62739", "Bintuhan\/Manna",
513             "62430", "Amurang",
514             "62716", "Muntok",
515             "62658", "Singkil",
516             "62362", "Singaraja",
517             "62719", "Manggar\/Tanjung\ Pandan",
518             "62410", "Pangkep",
519             "62763", "Selatpanjang",
520             "62388", "Kefamenanu\/Soe",
521             "62971", "Merauke",
522             "62765", "Dumai\/Duri\/Bagan\ Batu\/Ujung\ Tanjung",
523             "62727", "Kalianda",
524             "62736", "Bengkulu\ City",
525             "62651", "Banda\ Aceh\/Jantho\/Lamno",
526             "62528", "Purukcahu",
527             "62646", "Idi",
528             "62951", "Sorong",
529             "62365", "Negara\/Gilimanuk",
530             "62363", "Amlapura",
531             "62384", "Bajawa",
532             "62421", "Parepare\/Pinrang",
533             "62543", "Tanah\ Grogot",
534             "62336", "Jember",
535             "62327", "Kangean\/Masalembu",
536             "62545", "Melak",
537             "62389", "Atambua",
538             "62517", "Kandangan\/Barabai\/Rantau\/Negara",
539             "62272", "Klaten",
540             "62731", "Lahat",
541             "62656", "Tapaktuan",
542             "62718", "Koba\/Toboali",
543             "62553", "Malinau",
544             "62280", "West\ Cilacap",
545             "62452", "Poso",
546             "62922", "Jailolo",
547             "62331", "Jember",
548             "62252", "Rangkasbitung",
549             "62622", "Pematangsiantar\/Pematang\ Raya\/Limapuluh",
550             "62714", "Sekayu",
551             "62956", "Fakfak",
552             "62641", "Langsa",
553             "62426", "Mamuju",};
554             $areanames{id} = {"6221", "Jabodetabek",
555             "62280", "Cilacap\ Barat",
556             "62736", "Kota\ Bengkulu",
557             "62282", "Cilacap\ Timur",
558             "62741", "Kota\ Jambi",};
559              
560             sub new {
561 19     19 1 60 my $class = shift;
562 19         36 my $number = shift;
563 19         128 $number =~ s/(^\+62|\D)//g;
564 19         147 my $self = bless({ country_code => '62', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
565 19 100       103 return $self if ($self->is_valid());
566 1         6 $number =~ s/^(?:0)//;
567 1         10 $self = bless({ country_code => '62', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
568 1 50       8 return $self->is_valid() ? $self : undef;
569             }
570             1;