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