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