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   1885 use base qw(Number::Phone::StubCountry);
  3         9  
  3         378  
21              
22 3     3   23 use strict;
  3         12  
  3         71  
23 3     3   19 use warnings;
  3         9  
  3         104  
24 3     3   17 use utf8;
  3         7  
  3         23  
25             our $VERSION = 1.20230614174404;
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{nl} = {"3170", "Den\ Haag",
214             "31481", "Elst",
215             "31486", "Schaijk",
216             "31229", "Hoorn",};
217             $areanames{en} = {"3175", "Zaandam",
218             "3170", "The\ Hague",
219             "31184", "Sliedrecht",
220             "31165", "Roosendaal",
221             "31516", "Oosterwolde",
222             "31227", "Medemblik",
223             "31251", "Beverwijk",
224             "31488", "Zetten",
225             "3130", "Utrecht",
226             "31313", "Dieren",
227             "31342", "Barneveld",
228             "3135", "Hilversum",
229             "3177", "Venlo",
230             "31315", "Terborg",
231             "31597", "Winschoten",
232             "31321", "Dronten",
233             "31562", "West\-Terschelling",
234             "31578", "Epe",
235             "31511", "Veenwouden",
236             "31592", "Assen",
237             "31493", "Deurne",
238             "31495", "Weert",
239             "31118", "Middelburg",
240             "31525", "Elburg",
241             "31347", "Vianen",
242             "3173", "\'s\-Hertogenbosch",
243             "31523", "Hardenberg",
244             "31544", "Lichtenvoorde",
245             "31222", "Den\ Burg",
246             "3174", "Hengelo",
247             "31114", "Hulst",
248             "31418", "Zaltbommel",
249             "3133", "Amersfoort",
250             "31548", "Rijssen",
251             "3146", "Sittard",
252             "31522", "Meppel",
253             "31317", "Wageningen",
254             "31514", "Lemmer",
255             "31595", "Warffum",
256             "31541", "Oldenzaal",
257             "31186", "Oud\-Beijerland",
258             "31593", "Beilen",
259             "31492", "Helmond",
260             "31411", "Boxtel",
261             "31111", "Zierikzee",
262             "31486", "Grave",
263             "31518", "St\.\ Annaparochie",
264             "31167", "Steenbergen",
265             "3171", "Leiden",
266             "31223", "Den\ Helder",
267             "3126", "Arnhem",
268             "31181", "Spijkenisse",
269             "31546", "Almelo",
270             "31416", "Waalwijk",
271             "31297", "Aalsmeer",
272             "3178", "Dordrecht",
273             "31571", "Twello",
274             "31162", "Oosterhout",
275             "31519", "Dokkum",
276             "31478", "Venray",
277             "31497", "Eersel",
278             "31527", "Emmeloord",
279             "31345", "Culemborg",
280             "3138", "Zwolle",
281             "31343", "Driebergen\-Rijsenburg",
282             "31481", "Bemmel",
283             "31174", "Naaldwijk",
284             "31228", "Enkhuizen",
285             "31487", "Druten",
286             "31166", "Tholen",
287             "31594", "Zuidhorn",
288             "31521", "Steenwijk",
289             "31412", "Oss",
290             "3155", "Apeldoorn",
291             "31515", "Sneek",
292             "31513", "Heerenveen",
293             "3150", "Groningen",
294             "31224", "Schagen",
295             "31598", "Veendam",
296             "31577", "Elspeet",
297             "31316", "Zevenaar",
298             "3179", "Zoetermeer",
299             "31187", "Middelharnis",
300             "31348", "Woerden",
301             "3176", "Breda",
302             "31182", "Gouda",
303             "31229", "Horn",
304             "3153", "Enschede",
305             "31255", "IJmuiden",
306             "31475", "Roermond",
307             "31161", "Rijen",
308             "31117", "Oostburg",
309             "31572", "Raalte",
310             "31320", "Lelystad",
311             "3136", "Almere",
312             "31344", "Tiel",
313             "31599", "Stadskanaal",
314             "31547", "Goor",
315             "31573", "Lochem",
316             "31575", "Zutphen",
317             "31299", "Purmerend",
318             "31318", "Veenendaal",
319             "3143", "Maastricht",
320             "31252", "Nieuw\-Vennep",
321             "31596", "Delfzijl",
322             "31164", "Bergen\ op\ Zoom",
323             "3124", "Nijmegen",
324             "31183", "Gorinchem",
325             "31485", "Cuyk",
326             "31529", "Dalfsen",
327             "31341", "Harderwijk",
328             "31180", "Barendrecht",
329             "3123", "Haarlem",
330             "3113", "Tilburg",
331             "31314", "Doetinchem",
332             "31499", "Best",
333             "31561", "Wolvega",
334             "31172", "Alphen\ aan\ den\ Rijn",
335             "31168", "Zevenbergen",
336             "31570", "Deventer",
337             "31517", "Harlingen",
338             "31226", "Noord\ Scharwoude",
339             "3140", "Eindhoven",
340             "31413", "Uden",
341             "3145", "Heerlen",
342             "31524", "Coevorden",
343             "31543", "Winterswijk",
344             "31591", "Emmen",
345             "31512", "Drachten",
346             "31545", "Eibergen",
347             "3158", "Leeuwarden",
348             "31294", "Weesp",
349             "31528", "Hoogeveen",
350             "31566", "Grou",
351             "3120", "Amsterdam",
352             "31115", "Terneuzen",
353             "3115", "Delft",
354             "31346", "Maarssen",
355             "3172", "Alkmaar",
356             "31113", "Goes",
357             "3110", "Rotterdam",};
358              
359             sub new {
360 30     30 1 67 my $class = shift;
361 30         51 my $number = shift;
362 30         194 $number =~ s/(^\+31|\D)//g;
363 30         203 my $self = bless({ country_code => '31', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
364 30 100       168 return $self if ($self->is_valid());
365 5         21 $number =~ s/^(?:0)//;
366 5         47 $self = bless({ country_code => '31', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
367 5 100       25 return $self->is_valid() ? $self : undef;
368             }
369             1;