worldwide 1.10.0 → 1.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -1
- data/Gemfile.lock +1 -1
- data/db/data/regions/BE.yml +3 -0
- data/db/data/regions/BR.yml +2 -0
- data/db/data/regions/CL.yml +2 -0
- data/db/data/regions/DE.yml +3 -0
- data/db/data/regions/ES.yml +2 -0
- data/db/data/regions/IL.yml +3 -0
- data/db/data/regions/MX.yml +2 -0
- data/db/data/regions/NL.yml +2 -0
- data/lib/worldwide/deprecated_time_zone_mapper.rb +1 -0
- data/lib/worldwide/phone.rb +9 -4
- data/lib/worldwide/region.rb +5 -0
- data/lib/worldwide/regions_loader.rb +1 -0
- data/lib/worldwide/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7b1b899bdd7349cec9a36e0468737cd103b14587aa6db1eec80199e4240f9d23
|
4
|
+
data.tar.gz: 9a6d60fed160223ada223c51781df60010a8b5b9abd44b58dbef2ccd80bf1d41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a75e2c881aef0bb5ca318696c4e53d14f5524bb67f91737f74bc1ce1a4a30b4903656e2201f4306df463224f04809968ec622671083d1b2910c0c318614f6365
|
7
|
+
data.tar.gz: f44bbef128f4da580f363d32866752c0e1acaea9d04f85cb1113faf4a5cca37ae941581db624740870f20a955e14ffd2ebec466dc4790ee80dc3ebcc86d3a824
|
data/CHANGELOG.md
CHANGED
@@ -27,9 +27,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
27
27
|
|
28
28
|
## [Unreleased]
|
29
29
|
- Nil.
|
30
|
-
|
31
30
|
---
|
32
31
|
|
32
|
+
## [1.11.1] - 2024-10-02
|
33
|
+
- Configure regexp timeout in Worldwide#Phone [#290](https://github.com/Shopify/worldwide/pull/290)
|
34
|
+
|
35
|
+
## [1.11.0] - 2024-10-02
|
36
|
+
- Add address1_regex to regions [#281](https://github.com/Shopify/worldwide/pull/281)
|
37
|
+
- Add address1_regex for BE, CL, MX, ES, IL [#282](https://github.com/Shopify/worldwide/pull/282)
|
38
|
+
- Add address1_regex for DE [#286](https://github.com/Shopify/worldwide/pull/286)
|
39
|
+
- Update legacy timezone mappings for Europe/Kiev [#288](https://github.com/Shopify/worldwide/pull/288)
|
40
|
+
|
41
|
+
|
33
42
|
## [1.10.0] - 2024-09-16
|
34
43
|
- Add alternate Arabic names for UAE zones [#283](https://github.com/Shopify/worldwide/pull/283)
|
35
44
|
|
data/Gemfile.lock
CHANGED
data/db/data/regions/BE.yml
CHANGED
@@ -31,6 +31,9 @@ format:
|
|
31
31
|
show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city}_{country}_{phone}"
|
32
32
|
format_extended:
|
33
33
|
edit: "{country}_{firstName}{lastName}_{company}_{streetName}{streetNumber}_{address2}_{zip}{city}_{phone}"
|
34
|
+
address1_regex:
|
35
|
+
- "^(?<streetName>[^\\d,]+),? (?<streetNumber>\\d+(?: ?[a-z])?)$"
|
36
|
+
- "^(?<streetNumber>\\d+(?: ?[a-z])?),? (?<streetName>[^\\d,]+)$"
|
34
37
|
additional_address_fields:
|
35
38
|
- name: streetName
|
36
39
|
required: true
|
data/db/data/regions/BR.yml
CHANGED
@@ -28,6 +28,8 @@ format:
|
|
28
28
|
show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city} {province}_{country}_{phone}"
|
29
29
|
format_extended:
|
30
30
|
edit: "{country}_{firstName}{lastName}_{company}_{zip}_{streetName}{streetNumber}_{line2}{neighborhood}_{city}{province}_{phone}"
|
31
|
+
address1_regex:
|
32
|
+
- "^(?<streetName>(?!.*\\bnúmero\\b)[^\\d,]+(?<!\\s))(?:,? ?)(?<streetNumber>\\d+(?: ?[a-z])?)$"
|
31
33
|
additional_address_fields:
|
32
34
|
- name: streetName
|
33
35
|
required: true
|
data/db/data/regions/CL.yml
CHANGED
@@ -16,6 +16,8 @@ format:
|
|
16
16
|
show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city}_{province}_{country}_{phone}"
|
17
17
|
format_extended:
|
18
18
|
edit: "{country}_{firstName}{lastName}_{company}_{streetName}{streetNumber}_{line2}{neighborhood}_{zip}{city}_{province}_{phone}"
|
19
|
+
address1_regex:
|
20
|
+
- "^(?<streetName>[^\\d,]+?),? (?<streetNumber>(?:n|n\\.|nº|número|no\\.|no|#)? ?\\d+(?: ?[a-z])?)$"
|
19
21
|
additional_address_fields:
|
20
22
|
- name: streetName
|
21
23
|
required: true
|
data/db/data/regions/DE.yml
CHANGED
@@ -29,6 +29,9 @@ format:
|
|
29
29
|
show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city}_{country}_{phone}"
|
30
30
|
format_extended:
|
31
31
|
edit: "{country}_{firstName}{lastName}_{company}_{streetName}{streetNumber}_{address2}_{zip}{city}_{phone}"
|
32
|
+
address1_regex:
|
33
|
+
- "^(?<streetName>[^\\d,]+?\\.?)[, ]{1,2}(?<streetNumber>\\d+(?: ?[a-z])?)$"
|
34
|
+
- "^(?<streetName>[^\\d,]+\\.)(?<streetNumber>\\d+(?: ?[a-z])?)$"
|
32
35
|
additional_address_fields:
|
33
36
|
- name: streetName
|
34
37
|
required: true
|
data/db/data/regions/ES.yml
CHANGED
@@ -29,6 +29,8 @@ format:
|
|
29
29
|
show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city}_{province}_{country}_{phone}"
|
30
30
|
format_extended:
|
31
31
|
edit: "{country}_{firstName}{lastName}_{company}_{streetName}{streetNumber}_{address2}_{zip}{city}{province}_{phone}"
|
32
|
+
address1_regex:
|
33
|
+
- "^(?<streetName>[^\\d,]+?),? (?<streetNumber>(?:n|n\\.|nº|número|no\\.|no|#)? ?\\d+(?: ?[a-z])?)$"
|
32
34
|
additional_address_fields:
|
33
35
|
- name: streetName
|
34
36
|
required: true
|
data/db/data/regions/IL.yml
CHANGED
@@ -18,6 +18,9 @@ format:
|
|
18
18
|
show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city}_{country}_{phone}"
|
19
19
|
format_extended:
|
20
20
|
edit: "{country}_{firstName}{lastName}_{company}_{streetName}{streetNumber}_{address2}_{zip}{city}_{phone}"
|
21
|
+
address1_regex:
|
22
|
+
- "^(?<streetName>[^\\d,]+),? (?<streetNumber>\\d+(?:\/\\d+)?)$"
|
23
|
+
- "^(?<streetNumber>\\d+(?:\/\\d+)?),? (?<streetName>[^\\d,]+)$"
|
21
24
|
additional_address_fields:
|
22
25
|
- name: streetName
|
23
26
|
required: true
|
data/db/data/regions/MX.yml
CHANGED
@@ -17,6 +17,8 @@ format:
|
|
17
17
|
show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city} {province}_{country}_{phone}"
|
18
18
|
format_extended:
|
19
19
|
edit: "{country}_{firstName}{lastName}_{company}_{streetName}{streetNumber}_{line2}{neighborhood}_{zip}{city}{province}_{phone}"
|
20
|
+
address1_regex:
|
21
|
+
- "^(?<streetName>[^\\d,]+?),? (?<streetNumber>(?:n|n\\.|nº|número|no\\.|no|#)? ?\\d+(?: ?[a-z])?)$"
|
20
22
|
additional_address_fields:
|
21
23
|
- name: streetName
|
22
24
|
required: true
|
data/db/data/regions/NL.yml
CHANGED
@@ -30,6 +30,8 @@ format:
|
|
30
30
|
show: "{firstName} {lastName}_{company}_{address1}_{address2}_{zip} {city}_{country}_{phone}"
|
31
31
|
format_extended:
|
32
32
|
edit: "{country}_{firstName}{lastName}_{company}_{streetName}{streetNumber}_{address2}_{zip}{city}_{phone}"
|
33
|
+
address1_regex:
|
34
|
+
- "^(?<streetName>[^\\d]+) (?<streetNumber>\\d+(?: ?[a-z])?)$"
|
33
35
|
additional_address_fields:
|
34
36
|
- name: streetName
|
35
37
|
required: true
|
data/lib/worldwide/phone.rb
CHANGED
@@ -137,14 +137,19 @@ module Worldwide
|
|
137
137
|
number = input.downcase
|
138
138
|
|
139
139
|
["ext", "x", ";"].each do |separator|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
140
|
+
next unless number.include?(separator)
|
141
|
+
|
142
|
+
m = number.match(Regexp.new(
|
143
|
+
"(?<base>[0-9a-z +-]*)\\s*#{separator}\\.?\\s*(?<ext>.*)",
|
144
|
+
timeout: 1,
|
145
|
+
))
|
146
|
+
return [m["base"], m["ext"]] unless m.nil?
|
144
147
|
end
|
145
148
|
|
146
149
|
# If we get this far, then we have not found an extension, and assume that the full input is just a public number
|
147
150
|
[input, nil]
|
151
|
+
rescue Regexp::TimeoutError
|
152
|
+
[input, nil]
|
148
153
|
end
|
149
154
|
|
150
155
|
# Convert exotic characters to ASCII
|
data/lib/worldwide/region.rb
CHANGED
@@ -36,6 +36,7 @@ module Worldwide
|
|
36
36
|
:zip_requirement,
|
37
37
|
:additional_address_fields,
|
38
38
|
:combined_address_format,
|
39
|
+
:address1_regex,
|
39
40
|
]
|
40
41
|
|
41
42
|
# A region may have more than one parent.
|
@@ -208,6 +209,9 @@ module Worldwide
|
|
208
209
|
# A hash of the rules for concatening the additional address fields into the standard fields
|
209
210
|
attr_accessor :combined_address_format
|
210
211
|
|
212
|
+
# An array of regex patterns of the address1 field, capturing the supported additional address fields
|
213
|
+
attr_accessor :address1_regex
|
214
|
+
|
211
215
|
def initialize(
|
212
216
|
alpha_three: nil,
|
213
217
|
continent: false,
|
@@ -245,6 +249,7 @@ module Worldwide
|
|
245
249
|
|
246
250
|
@additional_address_fields = []
|
247
251
|
@combined_address_format = {}
|
252
|
+
@address1_regex = []
|
248
253
|
@building_number_required = false
|
249
254
|
@building_number_may_be_in_address2 = false
|
250
255
|
@currency = nil
|
@@ -97,6 +97,7 @@ module Worldwide
|
|
97
97
|
def apply_territory_attributes(region, spec)
|
98
98
|
region.additional_address_fields = spec["additional_address_fields"] || []
|
99
99
|
region.combined_address_format = spec["combined_address_format"] || {}
|
100
|
+
region.address1_regex = spec["address1_regex"] || []
|
100
101
|
region.building_number_required = spec["building_number_required"] || false
|
101
102
|
region.building_number_may_be_in_address2 = spec["building_number_may_be_in_address2"] || false
|
102
103
|
currency_code = spec["currency"]
|
data/lib/worldwide/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: worldwide
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -8505,7 +8505,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
8505
8505
|
- !ruby/object:Gem::Version
|
8506
8506
|
version: '0'
|
8507
8507
|
requirements: []
|
8508
|
-
rubygems_version: 3.5.
|
8508
|
+
rubygems_version: 3.5.21
|
8509
8509
|
signing_key:
|
8510
8510
|
specification_version: 4
|
8511
8511
|
summary: Internationalization and localization APIs
|