File Coverage

blib/lib/Number/Phone/StubCountry/NL.pm
Criterion Covered Total %
statement 20 20 100.0
branch 4 4 100.0
condition n/a
subroutine 5 5 100.0
pod 1 1 100.0
total 30 30 100.0


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::NL;
20 3     3   1837 use base qw(Number::Phone::StubCountry);
  3         7  
  3         349  
21              
22 3     3   21 use strict;
  3         8  
  3         65  
23 3     3   15 use warnings;
  3         9  
  3         97  
24 3     3   18 use utf8;
  3         8  
  3         25  
25             our $VERSION = 1.20230903131448;
26              
27             my $formatters = [
28             {
29             'format' => '$1',
30             'intl_format' => 'NA',
31             'leading_digits' => '
32             1[238]|
33             [34]
34             ',
35             'pattern' => '(\\d{4})'
36             },
37             {
38             'format' => '$1 $2',
39             'intl_format' => 'NA',
40             'leading_digits' => '14',
41             'pattern' => '(\\d{2})(\\d{3,4})'
42             },
43             {
44             'format' => '$1',
45             'intl_format' => 'NA',
46             'leading_digits' => '1',
47             'pattern' => '(\\d{6})'
48             },
49             {
50             'format' => '$1 $2',
51             'leading_digits' => '[89]0',
52             'national_rule' => '0$1',
53             'pattern' => '(\\d{3})(\\d{4,7})'
54             },
55             {
56             'format' => '$1 $2',
57             'leading_digits' => '66',
58             'national_rule' => '0$1',
59             'pattern' => '(\\d{2})(\\d{7})'
60             },
61             {
62             'format' => '$1 $2',
63             'leading_digits' => '6',
64             'national_rule' => '0$1',
65             'pattern' => '(\\d)(\\d{8})'
66             },
67             {
68             'format' => '$1 $2 $3',
69             'leading_digits' => '
70             1[16-8]|
71             2[259]|
72             3[124]|
73             4[17-9]|
74             5[124679]
75             ',
76             'national_rule' => '0$1',
77             'pattern' => '(\\d{3})(\\d{3})(\\d{3})'
78             },
79             {
80             'format' => '$1 $2 $3',
81             'leading_digits' => '
82             [1-578]|
83             91
84             ',
85             'national_rule' => '0$1',
86             'pattern' => '(\\d{2})(\\d{3})(\\d{4})'
87             },
88             {
89             'format' => '$1 $2 $3',
90             'leading_digits' => '9',
91             'national_rule' => '0$1',
92             'pattern' => '(\\d{3})(\\d{3})(\\d{5})'
93             }
94             ];
95              
96             my $validators = {
97             'fixed_line' => '
98             (?:
99             1(?:
100             [035]\\d|
101             1[13-578]|
102             6[124-8]|
103             7[24]|
104             8[0-467]
105             )|
106             2(?:
107             [0346]\\d|
108             2[2-46-9]|
109             5[125]|
110             9[479]
111             )|
112             3(?:
113             [03568]\\d|
114             1[3-8]|
115             2[01]|
116             4[1-8]
117             )|
118             4(?:
119             [0356]\\d|
120             1[1-368]|
121             7[58]|
122             8[15-8]|
123             9[23579]
124             )|
125             5(?:
126             [0358]\\d|
127             [19][1-9]|
128             2[1-57-9]|
129             4[13-8]|
130             6[126]|
131             7[0-3578]
132             )|
133             7\\d\\d
134             )\\d{6}
135             ',
136             'geographic' => '
137             (?:
138             1(?:
139             [035]\\d|
140             1[13-578]|
141             6[124-8]|
142             7[24]|
143             8[0-467]
144             )|
145             2(?:
146             [0346]\\d|
147             2[2-46-9]|
148             5[125]|
149             9[479]
150             )|
151             3(?:
152             [03568]\\d|
153             1[3-8]|
154             2[01]|
155             4[1-8]
156             )|
157             4(?:
158             [0356]\\d|
159             1[1-368]|
160             7[58]|
161             8[15-8]|
162             9[23579]
163             )|
164             5(?:
165             [0358]\\d|
166             [19][1-9]|
167             2[1-57-9]|
168             4[13-8]|
169             6[126]|
170             7[0-3578]
171             )|
172             7\\d\\d
173             )\\d{6}
174             ',
175             'mobile' => '
176             (?:
177             6[1-58]|
178             970\\d
179             )\\d{7}
180             ',
181             'pager' => '66\\d{7}',
182             'personal_number' => '',
183             'specialrate' => '(90[069]\\d{4,7})|(
184             140(?:
185             1[035]|
186             2[0346]|
187             3[03568]|
188             4[0356]|
189             5[0358]|
190             8[458]
191             )|
192             (?:
193             140(?:
194             1[16-8]|
195             2[259]|
196             3[124]|
197             4[17-9]|
198             5[124679]|
199             7
200             )|
201             8[478]\\d{6}
202             )\\d
203             )',
204             'toll_free' => '800\\d{4,7}',
205             'voip' => '
206             (?:
207             85|
208             91
209             )\\d{7}
210             '
211             };
212             my %areanames = ();
213             $areanames{en} = {"31544", "Lichtenvoorde",
214             "31342", "Barneveld",
215             "31184", "Sliedrecht",
216             "31513", "Heerenveen",
217             "31341", "Harderwijk",
218             "3115", "Delft",
219             "31224", "Schagen",
220             "31317", "Wageningen",
221             "3145", "Heerlen",
222             "31523", "Hardenberg",
223             "31111", "Zierikzee",
224             "31488", "Zetten",
225             "31572", "Raalte",
226             "31571", "Twello",
227             "31411", "Boxtel",
228             "3120", "Amsterdam",
229             "31548", "Rijssen",
230             "31595", "Warffum",
231             "31252", "Nieuw\-Vennep",
232             "31412", "Oss",
233             "31228", "Enkhuizen",
234             "31316", "Zevenaar",
235             "31251", "Beverwijk",
236             "3173", "\'s\-Hertogenbosch",
237             "31519", "Dokkum",
238             "31164", "Bergen\ op\ Zoom",
239             "31596", "Delfzijl",
240             "3133", "Amersfoort",
241             "31315", "Terborg",
242             "31566", "Grou",
243             "31529", "Dalfsen",
244             "3146", "Sittard",
245             "31168", "Zevenbergen",
246             "31597", "Winschoten",
247             "3177", "Venlo",
248             "31299", "Purmerend",
249             "31495", "Weert",
250             "31343", "Driebergen\-Rijsenburg",
251             "31511", "Veenwouden",
252             "31172", "Alphen\ aan\ den\ Rijn",
253             "31314", "Doetinchem",
254             "31512", "Drachten",
255             "31487", "Druten",
256             "31227", "Medemblik",
257             "3158", "Leeuwarden",
258             "31187", "Middelharnis",
259             "31165", "Roosendaal",
260             "31547", "Goor",
261             "3130", "Utrecht",
262             "31522", "Meppel",
263             "31486", "Grave",
264             "31573", "Lochem",
265             "31113", "Goes",
266             "31521", "Steenwijk",
267             "3155", "Apeldoorn",
268             "31546", "Almelo",
269             "31186", "Oud\-Beijerland",
270             "31318", "Veenendaal",
271             "31413", "Uden",
272             "31226", "Noord\ Scharwoude",
273             "31485", "Cuyk",
274             "31497", "Eersel",
275             "31545", "Eibergen",
276             "31598", "Veendam",
277             "31167", "Steenbergen",
278             "3171", "Leiden",
279             "31594", "Zuidhorn",
280             "31570", "Deventer",
281             "3170", "The\ Hague",
282             "3123", "Haarlem",
283             "31166", "Tholen",
284             "3172", "Alkmaar",
285             "31478", "Venray",
286             "31524", "Coevorden",
287             "3135", "Hilversum",
288             "31321", "Dronten",
289             "31117", "Oostburg",
290             "3176", "Breda",
291             "31346", "Maarssen",
292             "31577", "Elspeet",
293             "31518", "St\.\ Annaparochie",
294             "3179", "Zoetermeer",
295             "31174", "Naaldwijk",
296             "31183", "Gorinchem",
297             "31543", "Winterswijk",
298             "31223", "Den\ Helder",
299             "31416", "Waalwijk",
300             "31514", "Lemmer",
301             "3138", "Zwolle",
302             "31528", "Hoogeveen",
303             "31347", "Vianen",
304             "3150", "Groningen",
305             "31499", "Best",
306             "3124", "Nijmegen",
307             "31592", "Assen",
308             "3143", "Maastricht",
309             "31255", "IJmuiden",
310             "31561", "Wolvega",
311             "31591", "Emmen",
312             "31562", "West\-Terschelling",
313             "3113", "Tilburg",
314             "31575", "Zutphen",
315             "31115", "Terneuzen",
316             "3178", "Dordrecht",
317             "3175", "Zaandam",
318             "31229", "Horn",
319             "31180", "Barendrecht",
320             "31297", "Aalsmeer",
321             "31345", "Culemborg",
322             "31493", "Deurne",
323             "3136", "Almere",
324             "31599", "Stadskanaal",
325             "3140", "Eindhoven",
326             "31114", "Hulst",
327             "31348", "Woerden",
328             "3110", "Rotterdam",
329             "31527", "Emmeloord",
330             "31516", "Oosterwolde",
331             "31344", "Tiel",
332             "31182", "Gouda",
333             "31222", "Den\ Burg",
334             "31541", "Oldenzaal",
335             "31181", "Spijkenisse",
336             "31418", "Zaltbommel",
337             "31313", "Dieren",
338             "31517", "Harlingen",
339             "31578", "Epe",
340             "31118", "Middelburg",
341             "31481", "Bemmel",
342             "31593", "Beilen",
343             "31320", "Lelystad",
344             "31525", "Elburg",
345             "3126", "Arnhem",
346             "31475", "Roermond",
347             "31161", "Rijen",
348             "31162", "Oosterhout",
349             "31294", "Weesp",
350             "31492", "Helmond",
351             "3153", "Enschede",
352             "3174", "Hengelo",
353             "31515", "Sneek",};
354             $areanames{nl} = {"31486", "Schaijk",
355             "3170", "Den\ Haag",
356             "31229", "Hoorn",
357             "31481", "Elst",};
358              
359             sub new {
360 30     30 1 59 my $class = shift;
361 30         60 my $number = shift;
362 30         189 $number =~ s/(^\+31|\D)//g;
363 30         268 my $self = bless({ country_code => '31', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
364 30 100       142 return $self if ($self->is_valid());
365 5         25 $number =~ s/^(?:0)//;
366 5         49 $self = bless({ country_code => '31', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
367 5 100       37 return $self->is_valid() ? $self : undef;
368             }
369             1;