File Coverage

blib/lib/Number/Phone/StubCountry/SE.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::SE;
20 2     2   1316 use base qw(Number::Phone::StubCountry);
  2         7  
  2         219  
21              
22 2     2   15 use strict;
  2         8  
  2         65  
23 2     2   12 use warnings;
  2         6  
  2         48  
24 2     2   14 use utf8;
  2         5  
  2         12  
25             our $VERSION = 1.20230614174404;
26              
27             my $formatters = [
28             {
29             'format' => '$1-$2 $3',
30             'intl_format' => '$1 $2 $3',
31             'leading_digits' => '20',
32             'national_rule' => '0$1',
33             'pattern' => '(\\d{2})(\\d{2,3})(\\d{2})'
34             },
35             {
36             'format' => '$1-$2',
37             'intl_format' => '$1 $2',
38             'leading_digits' => '
39             9(?:
40             00|
41             39|
42             44|
43             9
44             )
45             ',
46             'national_rule' => '0$1',
47             'pattern' => '(\\d{3})(\\d{4})'
48             },
49             {
50             'format' => '$1-$2 $3',
51             'intl_format' => '$1 $2 $3',
52             'leading_digits' => '
53             [12][136]|
54             3[356]|
55             4[0246]|
56             6[03]|
57             90[1-9]
58             ',
59             'national_rule' => '0$1',
60             'pattern' => '(\\d{2})(\\d{3})(\\d{2})'
61             },
62             {
63             'format' => '$1-$2 $3 $4',
64             'intl_format' => '$1 $2 $3 $4',
65             'leading_digits' => '8',
66             'national_rule' => '0$1',
67             'pattern' => '(\\d)(\\d{2,3})(\\d{2})(\\d{2})'
68             },
69             {
70             'format' => '$1-$2 $3',
71             'intl_format' => '$1 $2 $3',
72             'leading_digits' => '
73             1[2457]|
74             2(?:
75             [247-9]|
76             5[0138]
77             )|
78             3[0247-9]|
79             4[1357-9]|
80             5[0-35-9]|
81             6(?:
82             [125689]|
83             4[02-57]|
84             7[0-2]
85             )|
86             9(?:
87             [125-8]|
88             3[02-5]|
89             4[0-3]
90             )
91             ',
92             'national_rule' => '0$1',
93             'pattern' => '(\\d{3})(\\d{2,3})(\\d{2})'
94             },
95             {
96             'format' => '$1-$2 $3',
97             'intl_format' => '$1 $2 $3',
98             'leading_digits' => '
99             9(?:
100             00|
101             39|
102             44
103             )
104             ',
105             'national_rule' => '0$1',
106             'pattern' => '(\\d{3})(\\d{2,3})(\\d{3})'
107             },
108             {
109             'format' => '$1-$2 $3 $4',
110             'intl_format' => '$1 $2 $3 $4',
111             'leading_digits' => '
112             1[13689]|
113             2[0136]|
114             3[1356]|
115             4[0246]|
116             54|
117             6[03]|
118             90[1-9]
119             ',
120             'national_rule' => '0$1',
121             'pattern' => '(\\d{2})(\\d{2,3})(\\d{2})(\\d{2})'
122             },
123             {
124             'format' => '$1-$2 $3 $4',
125             'intl_format' => '$1 $2 $3 $4',
126             'leading_digits' => '
127             10|
128             7
129             ',
130             'national_rule' => '0$1',
131             'pattern' => '(\\d{2})(\\d{3})(\\d{2})(\\d{2})'
132             },
133             {
134             'format' => '$1-$2 $3 $4',
135             'intl_format' => '$1 $2 $3 $4',
136             'leading_digits' => '8',
137             'national_rule' => '0$1',
138             'pattern' => '(\\d)(\\d{3})(\\d{3})(\\d{2})'
139             },
140             {
141             'format' => '$1-$2 $3 $4',
142             'intl_format' => '$1 $2 $3 $4',
143             'leading_digits' => '
144             [13-5]|
145             2(?:
146             [247-9]|
147             5[0138]
148             )|
149             6(?:
150             [124-689]|
151             7[0-2]
152             )|
153             9(?:
154             [125-8]|
155             3[02-5]|
156             4[0-3]
157             )
158             ',
159             'national_rule' => '0$1',
160             'pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{2})'
161             },
162             {
163             'format' => '$1-$2 $3 $4',
164             'intl_format' => '$1 $2 $3 $4',
165             'leading_digits' => '9',
166             'national_rule' => '0$1',
167             'pattern' => '(\\d{3})(\\d{2})(\\d{2})(\\d{3})'
168             },
169             {
170             'format' => '$1-$2 $3 $4 $5',
171             'intl_format' => '$1 $2 $3 $4 $5',
172             'leading_digits' => '[26]',
173             'national_rule' => '0$1',
174             'pattern' => '(\\d{3})(\\d{2})(\\d{3})(\\d{2})(\\d{2})'
175             }
176             ];
177              
178             my $validators = {
179             'fixed_line' => '
180             (?:
181             (?:
182             [12][136]|
183             3[356]|
184             4[0246]|
185             6[03]|
186             8\\d
187             )\\d|
188             90[1-9]
189             )\\d{4,6}|
190             (?:
191             1(?:
192             2[0-35]|
193             4[0-4]|
194             5[0-25-9]|
195             7[13-6]|
196             [89]\\d
197             )|
198             2(?:
199             2[0-7]|
200             4[0136-8]|
201             5[0138]|
202             7[018]|
203             8[01]|
204             9[0-57]
205             )|
206             3(?:
207             0[0-4]|
208             1\\d|
209             2[0-25]|
210             4[056]|
211             7[0-2]|
212             8[0-3]|
213             9[023]
214             )|
215             4(?:
216             1[013-8]|
217             3[0135]|
218             5[14-79]|
219             7[0-246-9]|
220             8[0156]|
221             9[0-689]
222             )|
223             5(?:
224             0[0-6]|
225             [15][0-5]|
226             2[0-68]|
227             3[0-4]|
228             4\\d|
229             6[03-5]|
230             7[013]|
231             8[0-79]|
232             9[01]
233             )|
234             6(?:
235             1[1-3]|
236             2[0-4]|
237             4[02-57]|
238             5[0-37]|
239             6[0-3]|
240             7[0-2]|
241             8[0247]|
242             9[0-356]
243             )|
244             9(?:
245             1[0-68]|
246             2\\d|
247             3[02-5]|
248             4[0-3]|
249             5[0-4]|
250             [68][01]|
251             7[0135-8]
252             )
253             )\\d{5,6}
254             ',
255             'geographic' => '
256             (?:
257             (?:
258             [12][136]|
259             3[356]|
260             4[0246]|
261             6[03]|
262             8\\d
263             )\\d|
264             90[1-9]
265             )\\d{4,6}|
266             (?:
267             1(?:
268             2[0-35]|
269             4[0-4]|
270             5[0-25-9]|
271             7[13-6]|
272             [89]\\d
273             )|
274             2(?:
275             2[0-7]|
276             4[0136-8]|
277             5[0138]|
278             7[018]|
279             8[01]|
280             9[0-57]
281             )|
282             3(?:
283             0[0-4]|
284             1\\d|
285             2[0-25]|
286             4[056]|
287             7[0-2]|
288             8[0-3]|
289             9[023]
290             )|
291             4(?:
292             1[013-8]|
293             3[0135]|
294             5[14-79]|
295             7[0-246-9]|
296             8[0156]|
297             9[0-689]
298             )|
299             5(?:
300             0[0-6]|
301             [15][0-5]|
302             2[0-68]|
303             3[0-4]|
304             4\\d|
305             6[03-5]|
306             7[013]|
307             8[0-79]|
308             9[01]
309             )|
310             6(?:
311             1[1-3]|
312             2[0-4]|
313             4[02-57]|
314             5[0-37]|
315             6[0-3]|
316             7[0-2]|
317             8[0247]|
318             9[0-356]
319             )|
320             9(?:
321             1[0-68]|
322             2\\d|
323             3[02-5]|
324             4[0-3]|
325             5[0-4]|
326             [68][01]|
327             7[0135-8]
328             )
329             )\\d{5,6}
330             ',
331             'mobile' => '7[02369]\\d{7}',
332             'pager' => '74[02-9]\\d{6}',
333             'personal_number' => '75[1-8]\\d{6}',
334             'specialrate' => '(77[0-7]\\d{6})|(
335             649\\d{6}|
336             99[1-59]\\d{4}(?:
337             \\d{3}
338             )?|
339             9(?:
340             00|
341             39|
342             44
343             )[1-8]\\d{3,6}
344             )|(10[1-8]\\d{6})',
345             'toll_free' => '20\\d{4,7}',
346             'voip' => ''
347             };
348             my %areanames = ();
349             $areanames{sv} = {};
350             $areanames{en} = {"46623", "Ramsele",
351             "46644", "Hammerdal",
352             "4621", "Västerås",
353             "46155", "Nyköping\-Oxelösund",
354             "4611", "Norrköping",
355             "46253", "Idre\-Särna",
356             "46580", "Kopparberg",
357             "46320", "Kinna",
358             "46526", "Strömstad",
359             "46417", "Tomelilla",
360             "46175", "Hallstavik\-Rimbo",
361             "46173", "Öregrund\-Östhammar",
362             "46455", "Karlskrona",
363             "46923", "Kalix",
364             "46925", "Lakaträsk",
365             "46552", "Deje",
366             "46392", "Mullsjö",
367             "46304", "Orust\-Tjörn",
368             "46521", "Vänersborg",
369             "46430", "Laholm",
370             "46954", "Tärnaby",
371             "46978", "Pajala",
372             "46381", "Eksjö",
373             "46224", "Sala\-Heby",
374             "4618", "Uppsala",
375             "46243", "Borlänge",
376             "46510", "Lidköping",
377             "46143", "Vadstena",
378             "46524", "Munkedal",
379             "4640", "Malmö",
380             "46671", "Hoting",
381             "46660", "Örnsköldsvik",
382             "46301", "Hindås",
383             "46530", "Mellerud",
384             "46951", "Storuman",
385             "46587", "Nora",
386             "46651", "Ljusdal",
387             "46528", "Färgelanda",
388             "46221", "Köping",
389             "46121", "Söderköping",
390             "46971", "Jokkmokk",
391             "46410", "Trelleborg",
392             "46142", "Mjölby\-Skänninge\-Boxholm",
393             "46960", "Arvidsjaur",
394             "46472", "Alvesta\-Rydaholm",
395             "46573", "Årjäng",
396             "46480", "Kalmar",
397             "46622", "Näsåker",
398             "46152", "Strängnäs",
399             "46500", "Skövde",
400             "46976", "Vuollerim",
401             "46922", "Haparanda",
402             "46280", "Malung",
403             "4613", "Linköping",
404             "46553", "Molkom",
405             "46555", "Grums",
406             "4623", "Falun",
407             "46393", "Vaggeryd",
408             "46941", "Åsele",
409             "46690", "Ånge",
410             "46226", "Avesta\-Krylbo",
411             "46302", "Lerum",
412             "46383", "Vetlanda",
413             "46290", "Hofors\-Storvik",
414             "46156", "Trosa\-Vagnhärad",
415             "46672", "Gäddede",
416             "46523", "Lysekil",
417             "46525", "Grebbestad",
418             "46952", "Sorsele",
419             "46680", "Sveg",
420             "46476", "Älmhult",
421             "4663", "Östersund",
422             "46176", "Norrtälje",
423             "46122", "Finspång",
424             "46222", "Skinnskatteberg",
425             "46652", "Bergsjö",
426             "46980", "Kiruna",
427             "46141", "Motala",
428             "46241", "Gagnef\-Floda",
429             "46456", "Sölvesborg\-Bromölla",
430             "46490", "Västervik",
431             "46926", "Överkalix",
432             "46910", "Skellefteå",
433             "46642", "Lit",
434             "4660", "Sundsvall\-Timrå",
435             "46471", "Emmaboda",
436             "46251", "Älvdalen",
437             "46151", "Vingåker",
438             "46621", "Junsele",
439             "4635", "Halmstad",
440             "46246", "Svärdsjö\-Enviken",
441             "46907", "Umeå",
442             "46451", "Hässleholm",
443             "46921", "Boden",
444             "46171", "Enköping",
445             "46271", "Alfta\-Edsbyn",
446             "46554", "Kil",
447             "46942", "Dorotea",
448             "46474", "Åseda\-Lenhovda",
449             "46340", "Varberg",
450             "46928", "Harads",
451             "4619", "Örebro\-Kumla",
452             "46687", "Svenstavik",
453             "46571", "Charlottenberg\-Åmotfors",
454             "46297", "Ockelbo\-Hamrånge",
455             "46624", "Backe",
456             "46278", "Bollnäs",
457             "46643", "Hallen\-Oviken",
458             "46560", "Torsby",
459             "46645", "Föllinge",
460             "46478", "Lessebo",
461             "46924", "Råneå",
462             "46454", "Karlshamn\-Olofström",
463             "46930", "Nordmaling",
464             "46943", "Fredrika",
465             "46551", "Gullspång",
466             "46158", "Gnesta",
467             "46258", "Furudal",
468             "46174", "Alunda",
469             "46522", "Uddevalla",
470             "46370", "Värnamo",
471             "4646", "Lund",
472             "46459", "Ryd",
473             "46953", "Malå",
474             "46929", "Älvsbyn",
475             "46303", "Kungälv",
476             "46382", "Sävsjö",
477             "46248", "Rättvik",
478             "46590", "Filipstad",
479             "46975", "Hakkas",
480             "46479", "Osby",
481             "46973", "Porjus",
482             "46123", "Valdemarsvik",
483             "46225", "Hedemora\-Säter",
484             "46125", "Vikbolandet",
485             "46223", "Fagersta\-Norberg",
486             "46159", "Mariefred",
487             "4616", "Eskilstuna\-Torshälla",
488             "46144", "Ödeshög",
489             "46653", "Delsbo",
490             "4626", "Gävle\-Sandviken",
491             "46496", "Mariannelund",
492             "46920", "Luleå",
493             "46934", "Robertsfors",
494             "46611", "Härnösand",
495             "46692", "Liden",
496             "46270", "Söderhamn",
497             "46470", "Växjö",
498             "46911", "Piteå",
499             "4636", "Jönköping\-Huskvarna",
500             "46325", "Svenljunga\-Tranemo",
501             "46909", "Umeå",
502             "46620", "Sollefteå",
503             "4654", "Karlstad",
504             "46585", "Fjugesta\-Svartå",
505             "46150", "Katrineholm",
506             "46502", "Tidaholm",
507             "46250", "Mora\-Orsa",
508             "46583", "Askersund",
509             "46564", "Sysslebäck",
510             "46981", "Vittangi",
511             "46491", "Oskarshamn\-Högsby",
512             "46513", "Herrljunga",
513             "46240", "Ludvika\-Smedjebacken",
514             "46515", "Falköping",
515             "46140", "Tranås",
516             "46904", "Umeå",
517             "46433", "Markaryd\-Strömsnäsbruk",
518             "46435", "Klippan\-Perstorp",
519             "46291", "Hedesunda\-Österfärnebo",
520             "46662", "Björna",
521             "46532", "Åmål",
522             "46916", "Jörn",
523             "46908", "Umeå",
524             "46415", "Hörby",
525             "46413", "Eslöv\-Höör",
526             "46512", "Vara\-Nossebro",
527             "46591", "Hällefors\-Grythyttan",
528             "46457", "Ronneby",
529             "46901", "Umeå",
530             "46927", "Övertorneå",
531             "46494", "Kisa",
532             "46294", "Karlholmsbruk\-Skärplinge",
533             "46371", "Gislaved\-Anderstorp",
534             "46157", "Flen\-Malmköping",
535             "46477", "Tingsryd",
536             "46684", "Hede\-Funäsdalen",
537             "46663", "Husum",
538             "46498", "Gotland",
539             "46346", "Falkenberg",
540             "46533", "Säffle",
541             "46906", "Umeå",
542             "46695", "Stugun",
543             "46693", "Bräcke\-Gällö",
544             "46918", "Norsjö",
545             "468", "Stockholm",
546             "46247", "Leksand\-Insjön",
547             "46550", "Kristinehamn",
548             "46390", "Gränna",
549             "46485", "Öland",
550             "4644", "Kristianstad",
551             "46914", "Burträsk",
552             "46505", "Karlsborg",
553             "46503", "Hjo",
554             "46582", "Hallsberg",
555             "46499", "Mönsterås",
556             "46570", "Arvika",
557             "46322", "Alingsås\-Vårgårda",
558             "46511", "Skara\-Götene",
559             "46495", "Hultsfred\-Virserum",
560             "46493", "Gamleby",
561             "46414", "Simrishamn",
562             "46902", "Umeå",
563             "46520", "Trollhättan",
564             "46372", "Ljungby",
565             "46534", "Ed",
566             "46586", "Karlskoga\-Degerfors",
567             "46380", "Nässjö",
568             "46295", "Örbyhus\-Dannemora",
569             "4633", "Borås",
570             "46293", "Tierp\-Söderfors",
571             "46418", "Landskrona\-Svalöv",
572             "46431", "Ängelholm\-Båstad",
573             "46647", "Åre\-Järpen",
574             "46977", "Korpilombolo",
575             "46613", "Ullånger",
576             "46932", "Bjurholm",
577             "46227", "Kungsör",
578             "46657", "Los",
579             "46581", "Lindesberg",
580             "46321", "Ulricehamn",
581             "46913", "Lövånger",
582             "4642", "Helsingborg\-Höganäs",
583             "46504", "Tibro",
584             "46915", "Bastuträsk",
585             "46281", "Vansbro",
586             "46416", "Sjöbo",
587             "46691", "Torpshammar",
588             "46935", "Vännäs",
589             "46612", "Kramfors",
590             "46940", "Vilhelmina",
591             "46933", "Vindeln",
592             "46640", "Krokom",
593             "46912", "Byske",
594             "46565", "Sunne",
595             "46563", "Hagfors\-Munkfors",
596             "46584", "Laxå",
597             "46501", "Mariestad",
598             "46345", "Hyltebruk\-Torup",
599             "46481", "Nybro",
600             "46589", "Arboga",
601             "46120", "Åtvidaberg",
602             "46220", "Hallstahammar\-Surahammar",
603             "46905", "Umeå",
604             "46696", "Hammarstrand",
605             "46514", "Grästorp",
606             "46650", "Hudiksvall",
607             "46903", "Umeå",
608             "4631", "Gothenburg",
609             "46961", "Arjeplog",
610             "46411", "Ystad",
611             "46492", "Vimmerby",
612             "46970", "Gällivare",
613             "46300", "Kungsbacka",
614             "46506", "Töreboda\-Hova",
615             "46531", "Bengtsfors",
616             "46292", "Tärnsjö\-Östervåla",
617             "46661", "Bredbyn",
618             "46670", "Strömsund",
619             "46486", "Torsås",
620             "46950", "Lycksele",
621             "46682", "Rätan",};
622              
623             sub new {
624 25     25 1 58 my $class = shift;
625 25         46 my $number = shift;
626 25         157 $number =~ s/(^\+46|\D)//g;
627 25         152 my $self = bless({ country_code => '46', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
628 25 100       126 return $self if ($self->is_valid());
629 1         3 $number =~ s/^(?:0)//;
630 1         22 $self = bless({ country_code => '46', number => $number, formatters => $formatters, validators => $validators, areanames => \%areanames}, $class);
631 1 50       5 return $self->is_valid() ? $self : undef;
632             }
633             1;