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