phony 2.22.2 → 2.22.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/phony/countries/sweden.rb +348 -40
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0fe241f3296909cb2f3bb213070c7887bcf749eaa166c3c52852c53a73fef1a0
4
- data.tar.gz: 1a3c59539ebbfed55b9c6721d3867bb1f579ca210d81505289865c04c05721e1
3
+ metadata.gz: 2507e8773563b4b1426bedfaea567b6de1d0781d38a60721d1465633f3feb02a
4
+ data.tar.gz: 5dad20cc7d431ebe0208b3a4580e811b4835e2d09a9823aaf335b90b245f3f29
5
5
  SHA512:
6
- metadata.gz: 19dffe84289eb672be96525790c6ec5e6f0fa62b3d96298e8cc97a153ca8a8aee582645f3ff52e7361a924c905012fb403344420227c101b7e8fb406b0b80df2
7
- data.tar.gz: 172a4bd8f9266a41c410c4b8220d9a057e4219007859d7463752b2692d0f25d9959a31b7859efe93bf7dc6b32dbd8aeb4f9cca6ca3f4e448059bbff7baac2995
6
+ metadata.gz: 9bd933a2021b59df0b968518de2163a133a28f3b36a4bc961ac505f95cc8f2c11c0b13a34d4b4ad5b4f40cb5a6b88fd6dddad130e97d33b6fc20745b7eaa6beb
7
+ data.tar.gz: c0ec556ad5d1ac31cca03671d428b58e63a9fcc80fca3dab862eba4ef312ca1ae061851f57c7ad09d1195a79336a3e542a53ad9077bdfac0ca19dd52a4886ece
@@ -2,27 +2,23 @@
2
2
 
3
3
  # Sweden uses a variable-length ndc code, thus we use a separate file to not let all_other.rb explode.
4
4
  #
5
- # Note: Sweden use a variable ndc format from length 2 to 3.
6
- # To save space, we only use ndcs of length 1 and 2 (and use the fallback of 3 to handle the rest).
7
- #
8
- # Taken from: http://en.wikipedia.org/wiki/Telephone_numbers_in_Sweden
9
- # http://www.pts.se/upload/Ovrigt/Tele/Nummerfragor/bilaga-2b.pdf
5
+ # Note: Sweden use a variable ndc format with length 1 to 3.
10
6
  #
7
+ # Taken from: https://pts.se/globalassets/globala-block/nummertillstand/the-swedish-numbering-plan-for-telephony-according-to-itu---2024-01-08.pdf
8
+ # https://nummer.pts.se/NbrPlanSearch
9
+ # https://www.sosalarm.se/en/112-and-other-important-numbers/important-phone-numbers/
10
+
11
+ regional_ndcs_1 = [
12
+ '8' # Stockholm
13
+ ]
11
14
 
12
- ndcs = [
13
- # '7', # Non-geographic - conflicts with mobile
14
- '8', # Stockholm
15
- '10', # VOIP
15
+ regional_ndcs_2 = [
16
16
  '11', # Norrköping
17
17
  '13', # Linköping
18
18
  '16', # Eskilstuna-Torshälla
19
- '18', # Uppsala
20
- '19', # Örebro-Kumla
21
- '20', # toll-free
22
19
  '21', # Västerås
23
20
  '23', # Falun
24
21
  '26', # Gävle-Sandviken
25
- '31', # Göteborg
26
22
  '33', # Borås
27
23
  '35', # Halmstad
28
24
  '36', # Jönköping-Huskvarna
@@ -30,33 +26,314 @@ ndcs = [
30
26
  '42', # Helsingborg-Höganäs
31
27
  '44', # Kristianstad
32
28
  '46', # Lund
33
- '54', # Karlstad
34
29
  '60', # Sundsvall-Timrå
35
30
  '63', # Östersund
36
- '90', # Umeå
37
- '77' # Dalarna
31
+ '90' # Umeå; NB: Conflicts with 900 (Premium cost services)
38
32
  ]
39
- mobile = [
40
- '70', # Mobile
41
- '71', # Telematics
42
- '72', # Mobile
43
- '73', # Mobile
44
- '74', # Pagers
45
- '76', # Mobile
46
- '79' # Mobile
33
+
34
+ large_regional_ndcs_2 = [
35
+ '18', # Uppsala
36
+ '19', # Örebro-Kumla
37
+ '31', # Göteborg
38
+ '54' # Karlstad
47
39
  ]
48
- services = [
49
- '112', # Emergency Service
50
- '1177', # Health Care Advice
51
- '11414' # Police
40
+
41
+ regional_ndcs_3 = [
42
+ '120', # Åtvidaberg
43
+ '121', # Söderköping
44
+ '122', # Finspång
45
+ '123', # Valdemarsvik
46
+ '125', # Vikbolandet
47
+ '140', # Tranås
48
+ '141', # Motala
49
+ '142', # Mjöby-Skänninge-Boxholm
50
+ '143', # Vadstena
51
+ '144', # Ödeshög
52
+ '150', # Katrineholm
53
+ '151', # Vingåker
54
+ '152', # Strängnäs
55
+ '155', # Nyköping-Oxelösund
56
+ '156', # Trosa-Vagnhärad
57
+ '157', # Flen Malmköping
58
+ '158', # Gnesta
59
+ '159', # Mariefred
60
+ '171', # Enköping
61
+ '173', # Öregrund-Östhammar
62
+ '174', # Alunda
63
+ '175', # Hallstavik-Rimbo
64
+ '176', # Norrtälje
65
+ '220', # Hallstahammar-Surahammar
66
+ '221', # Köping
67
+ '222', # Skinnskatteberg
68
+ '223', # Fagersta-Norberg
69
+ '224', # Sala-Heby
70
+ '225', # Hedemora-Säter
71
+ '226', # Avesta-Krylbo
72
+ '227', # Kungsör
73
+ '240', # Ludvika-Smedjebacken
74
+ '241', # Gagnef-Floda
75
+ '243', # Borlänge
76
+ '246', # Svärdsjö-Enviken
77
+ '247', # Leksand-Insjön
78
+ '248', # Rättvik
79
+ '250', # Mora-Orsa
80
+ '251', # Älvdalen
81
+ '253', # Idre-Särna
82
+ '258', # Furudal
83
+ '270', # Söderhamn
84
+ '271', # Alfta-Edsbyn
85
+ '278', # Bollnäs
86
+ '280', # Malung
87
+ '281', # Vansbro
88
+ '290', # Hofors-Storvik
89
+ '291', # Hedesunda-Österfärnebo
90
+ '292', # Tärnsjö-Östervåla
91
+ '293', # Tierp-Söderfors
92
+ '294', # Karlholmsbruk-Skärplinge
93
+ '295', # Örbyhus-Dannemora
94
+ '297', # Ockelbo-Hamrånge
95
+ '300', # Kungsbacka
96
+ '301', # Hindås
97
+ '302', # Lerum
98
+ '303', # Kungälv
99
+ '304', # Orust-Tjörn
100
+ '320', # Kinna
101
+ '321', # Ulricehamn
102
+ '322', # Alingsås-Vårgårda
103
+ '325', # Svenljunga-Tranemo
104
+ '340', # Varberg
105
+ '345', # Hyltebruk-Torup
106
+ '346', # Falkenberg
107
+ '370', # Värnamo
108
+ '371', # Gislaved-Anderstorp
109
+ '372', # Ljungby
110
+ '380', # Nässjö
111
+ '381', # Eksjö
112
+ '382', # Sävsjö
113
+ '383', # Vetlanda
114
+ '390', # Gränna
115
+ '392', # Mullsjö
116
+ '393', # Vaggeryd
117
+ '410', # Trelleborg
118
+ '411', # Ystad
119
+ '413', # Eslöv-Höör
120
+ '414', # Simrishamn
121
+ '415', # Hörby
122
+ '416', # Sjöbo
123
+ '417', # Tomelilla
124
+ '418', # Landskrona-Svalöv
125
+ '430', # Laholm
126
+ '431', # Ängelholm-Båstad
127
+ '433', # Markaryd-Strömsnäsbruk
128
+ '435', # Klippan-Perstorp
129
+ '451', # Hässleholm
130
+ '454', # Karlshamn-Olofström
131
+ '455', # Karlskrona
132
+ '456', # Sölvesborg-Bromölla
133
+ '457', # Ronneby
134
+ '459', # Ryd
135
+ '470', # Växjö
136
+ '471', # Emmaboda
137
+ '472', # Alvesta-Rydaholm
138
+ '474', # Åseda-Lenhovda
139
+ '476', # Älmhult
140
+ '477', # Tingsryd
141
+ '478', # Lessebo
142
+ '479', # Osby
143
+ '480', # Kalmar
144
+ '481', # Nybro
145
+ '485', # Öland
146
+ '486', # Torsås
147
+ '490', # Västervik
148
+ '491', # Oskarshamn-Högsby
149
+ '492', # Vimmerby
150
+ '493', # Gamleby
151
+ '494', # Kisa
152
+ '495', # Hultsfred-Virserum
153
+ '496', # Mariannelund
154
+ '498', # Gotland
155
+ '499', # Mönsterås
156
+ '500', # Skövde
157
+ '501', # Mariestad
158
+ '502', # Tidaholm
159
+ '503', # Hjo
160
+ '504', # Tibro
161
+ '505', # Karlsborg
162
+ '506', # Töreboda-Hova
163
+ '510', # Lidköping
164
+ '511', # Skara-Götene
165
+ '512', # Vara-Nossebro
166
+ '513', # Herrljunga
167
+ '514', # Grästorp
168
+ '515', # Falköping
169
+ '520', # Trollhättan
170
+ '521', # Vänerborg
171
+ '522', # Uddevalla
172
+ '523', # Lysekil
173
+ '524', # Munkedal
174
+ '525', # Grebbestad
175
+ '526', # Strömstad
176
+ '528', # Färgelanda
177
+ '530', # Mellerud
178
+ '531', # Bengtsfors
179
+ '532', # Åmål
180
+ '533', # Säffle
181
+ '534', # Ed
182
+ '550', # Kristinehamn
183
+ '551', # Gullspång
184
+ '552', # Deje
185
+ '553', # Molkom
186
+ '554', # Kil
187
+ '555', # Grums
188
+ '560', # Torsby
189
+ '563', # Hagfors-Munkfors
190
+ '564', # Sysslebäck
191
+ '565', # Sunne
192
+ '570', # Arvika
193
+ '571', # Charlottenberg-Åmotfors
194
+ '573', # Årjäng
195
+ '580', # Kopparberg
196
+ '581', # Lindesberg
197
+ '582', # Hallsberg
198
+ '583', # Askersund
199
+ '584', # Laxå
200
+ '585', # Fjugesta-Svartå
201
+ '586', # Karlskoga-Degerfors
202
+ '587', # Nora
203
+ '589', # Arboga
204
+ '590', # Filipstad
205
+ '591', # Hällefors-Grythyttan
206
+ '611', # Härnösand
207
+ '612', # Kramfors
208
+ '613', # Ullånger
209
+ '620', # Sollefteå
210
+ '621', # Junsele
211
+ '622', # Näsåker
212
+ '623', # Ramsele
213
+ '624', # Backe
214
+ '640', # Krokom
215
+ '642', # Lit
216
+ '643', # Hallen-Oviken
217
+ '644', # Hammerdal
218
+ '645', # Föllinge
219
+ '647', # Åre-Järpen
220
+ '650', # Hudiksvall
221
+ '651', # Ljusdal
222
+ '652', # Bergsjö
223
+ '653', # Delsbo
224
+ '657', # Los
225
+ '660', # Örnsköldsvik
226
+ '661', # Bredbyn
227
+ '662', # Björna
228
+ '663', # Husum
229
+ '670', # Strömsund
230
+ '671', # Hoting
231
+ '672', # Gäddede
232
+ '680', # Sveg
233
+ '682', # Rätan
234
+ '684', # Hede-Funäsdalen
235
+ '687', # Svenstavik
236
+ '690', # Ånge
237
+ '691', # Torpshammar
238
+ '692', # Liden
239
+ '693', # Bräcke-Gällö
240
+ '695', # Stugun
241
+ '696', # Hammarstrand
242
+ '910', # Skellefteå
243
+ '911', # Piteå
244
+ '912', # Byske
245
+ '913', # Lövånger
246
+ '914', # Burträsk
247
+ '915', # Bastuträsk
248
+ '916', # Jörn
249
+ '918', # Norsjö
250
+ '920', # Luleå
251
+ '921', # Boden
252
+ '922', # Haparanda
253
+ '923', # Kalix
254
+ '924', # Råneå
255
+ '925', # Lakaträsk
256
+ '926', # Överkalix
257
+ '927', # Övertorneå
258
+ '928', # Harads
259
+ '929', # Älvsbyn
260
+ '930', # Nordmaling
261
+ '932', # Bjurholm
262
+ '933', # Vindeln
263
+ '934', # Robertsfors
264
+ '935', # Vännäs
265
+ '940', # Vilhelmina
266
+ '941', # Åsele
267
+ '942', # Dorotea
268
+ '943', # Fredrika
269
+ '950', # Lycksele
270
+ '951', # Storuman
271
+ '952', # Sorsele
272
+ '953', # Malå
273
+ '954', # Tärnaby
274
+ '960', # Arvidsjaur
275
+ '961', # Arjeplog
276
+ '970', # Gällivare
277
+ '971', # Jokkmokk
278
+ '973', # Porjus
279
+ '975', # Hakkas
280
+ '976', # Vuollerim
281
+ '977', # Korpilombolo
282
+ '978', # Pajala
283
+ '980', # Kiruna
284
+ '981' # Vittangi
285
+ ]
286
+
287
+ location_independent_ndcs = [
288
+ '10', # Location independent services (VoIP)
289
+ '70', # Mobile telephony services
290
+ '72', # Mobile telephony services
291
+ '73', # Mobile telephony services
292
+ '74', # Paging services
293
+ '75', # Personal numbering services
294
+ '76', # Mobile telephony services
295
+ '77', # Shared cost services
296
+ '79' # Mobile telephony services
52
297
  ]
298
+
53
299
  service_ndcs = [
54
- '99', # Premium Rate
55
- '900', # Premium Rate
56
- '939', # Premium Rate
57
- '944' # Premium Rate
300
+ '20', # Toll-free services
301
+ '900', # Premium cost services; NB: Conflicts with 90 (Umeå)
302
+ '939', # Premium cost services
303
+ '944' # Premium cost services
304
+ ]
305
+
306
+ mobile_telematic_service_ndcs = ['71']
307
+ fixed_telematic_service_ndcs = ['378']
308
+ operator_specific_ndcs = ['78']
309
+ mass_call_service_ndcs = ['99']
310
+ routing_ndcs = [
311
+ '252', # Routing address - Assigned to Tele2 Sverige AB
312
+ '254', # Routing address – Assigned to Tele2 Sverige AB
313
+ '255', # Routing address – Assigned to Telenor Sverige AB
314
+ '673', # Routing address – Assigned to TeliaSonera Sverige AB
315
+ '674', # Routing address – Assigned to Telenor Sverige AB
316
+ '675', # Routing address – Assigned to Hi3G Access AB
317
+ '676', # Routing address – Assigned to Spring Mobil AB
318
+ '678' # Routing address – Assigned to Götalandsnätet AB
58
319
  ]
59
- three_digit_service = [
320
+
321
+ misc_ndcs = [
322
+ '649', # Routing address – Assigned to Eniro 118118 AB
323
+ '655', # Sample number (national use)
324
+ '656', # Sample number (national use)
325
+ '958' # Routing address – Assigned to TeliaSonera Sverige AB
326
+ ]
327
+
328
+ services = [
329
+ '112', # For emergencies when there is a danger to life, property, or the environment
330
+ '1177', # Healthcare advice for private individuals
331
+ '11313', # National information number for severe accidents and crises
332
+ '11414', # National police number for non-urgent police matters
333
+ '116000' # EU-wide hotline number to report missing children
334
+ ]
335
+
336
+ three_digit_service_ndcs = [
60
337
  '116', # Psychological Help (116 xxx)
61
338
  '118' # Number enquiries (118 xxx)
62
339
  ]
@@ -65,16 +342,47 @@ Phony.define do
65
342
  country '46',
66
343
  trunk('0') |
67
344
  match(/^(#{services.join('|')})$/) >> split(0) |
68
- one_of(service_ndcs) >> split(3, 3) |
69
- match(/^(#{three_digit_service.join('|')})\d{3}$/) >> split(3) |
70
- one_of(ndcs + mobile) >> matched_split(
345
+ match(/^(#{three_digit_service_ndcs.join('|')})\d{3}$/) >> split(3) |
346
+ one_of(service_ndcs) >> matched_split( # NB: Must be *before* the regional NDCs due to ambiguity of 0900
347
+ /^\d{4}$/ => [4],
71
348
  /^\d{5}$/ => [3, 2],
72
349
  /^\d{6}$/ => [2, 2, 2],
73
- /^\d{7}$/ => [3, 2, 2],
74
- /^\d{8}$/ => [3, 2, 3]
350
+ /^\d{7}$/ => [3, 2, 2]
75
351
  ) |
76
- fixed(3) >> matched_split(
352
+ one_of(fixed_telematic_service_ndcs) >> split(3, 2, 2) |
353
+ one_of(routing_ndcs) >> split(3, 3, 3) |
354
+ one_of(regional_ndcs_3) >> matched_split(
355
+ /^11\d$/ => [3],
356
+ /^95\d{2}$/ => [4],
77
357
  /^\d{5}$/ => [3, 2],
78
358
  /^\d{6}$/ => [2, 2, 2]
79
- )
359
+ ) |
360
+ one_of(large_regional_ndcs_2) >> matched_split(
361
+ /^11\d$/ => [3],
362
+ /^95\d{2}$/ => [4],
363
+ /^90\d{3}$/ => [3, 2],
364
+ /^\d{6}$/ => [2, 2, 2],
365
+ /^\d{7}$/ => [3, 2, 2]
366
+ ) |
367
+ one_of(regional_ndcs_2) >> matched_split(
368
+ /^11\d$/ => [3],
369
+ /^95\d{2}$/ => [4],
370
+ /^\d{5}$/ => [3, 2],
371
+ /^\d{6}$/ => [2, 2, 2],
372
+ /^\d{7}$/ => [3, 2, 2]
373
+ ) |
374
+ one_of(location_independent_ndcs) >> split(3, 2, 2) |
375
+ one_of(mobile_telematic_service_ndcs) >> split(3, 3, 3, 2) |
376
+ one_of(mass_call_service_ndcs) >> split(3, 2) |
377
+ one_of(regional_ndcs_1) >> matched_split(
378
+ /^11\d$/ => [3],
379
+ /^95\d$/ => [3],
380
+ /^95\d{2}$/ => [4],
381
+ /^90\d{3}$/ => [3, 2],
382
+ /^\d{6}$/ => [3, 3],
383
+ /^\d{7}$/ => [3, 2, 2],
384
+ /^\d{8}$/ => [3, 2, 3]
385
+ ) |
386
+ one_of(operator_specific_ndcs) >> split(1..11) |
387
+ one_of(misc_ndcs) >> split(1..10)
80
388
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phony
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.22.2
4
+ version: 2.22.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Hanke
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-23 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: 'Fast international phone number (E164 standard) normalizing, splitting
13
13
  and formatting. Lots of formatting options: International (+.., 00..), national
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  requirements: []
99
- rubygems_version: 3.6.2
99
+ rubygems_version: 3.6.9
100
100
  specification_version: 4
101
101
  summary: Fast international phone number (E164 standard) normalizing, splitting and
102
102
  formatting.