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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e95f2e0fb163b3ca71052724364003e66adaede98d891ba85b9fcb950bb45403
4
- data.tar.gz: 87597cf4738a6cad9e32d1a13f1aad9bca0dc67c49999e18ab712fa9bc0b4ced
3
+ metadata.gz: 7b1b899bdd7349cec9a36e0468737cd103b14587aa6db1eec80199e4240f9d23
4
+ data.tar.gz: 9a6d60fed160223ada223c51781df60010a8b5b9abd44b58dbef2ccd80bf1d41
5
5
  SHA512:
6
- metadata.gz: c9d46c593759a7470a3c2c3cab66ea9100f1afdada955c54cdedcb63ab6a9fb1ca2365596e69301fd8f8194f5f82a19a042ea95096cee6c766cad85fc58dbb5a
7
- data.tar.gz: 90a72f40fb35d3f782f190833f52c7e09625a32f7972fb757edb3d9ebb097050c0c38037846b293e5e84f637feb3e014faf185b5ea0dffbdba953759ea76b252
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
@@ -13,7 +13,7 @@ GIT
13
13
  PATH
14
14
  remote: .
15
15
  specs:
16
- worldwide (1.10.0)
16
+ worldwide (1.11.1)
17
17
  activesupport (>= 7.0)
18
18
  i18n
19
19
  phonelib (~> 0.8)
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -57,6 +57,7 @@ module Worldwide
57
57
  "Etc/UCT": "UTC",
58
58
  "Etc/Universal": "UTC",
59
59
  "Etc/Zulu": "UTC",
60
+ "Europe/Kiev": "Europe/Kyiv",
60
61
  GB: "Europe/London",
61
62
  "GB-Eire": "Europe/London",
62
63
  "GMT+0": "Etc/GMT",
@@ -137,14 +137,19 @@ module Worldwide
137
137
  number = input.downcase
138
138
 
139
139
  ["ext", "x", ";"].each do |separator|
140
- if number.include?(separator)
141
- m = number.match(Regexp.new("(?<base>[0-9a-z +-]*)\\s*#{separator}\\.?\\s*(?<ext>.*)"))
142
- return [m["base"], m["ext"]] unless m.nil?
143
- end
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
@@ -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"]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Worldwide
4
- VERSION = "1.10.0"
4
+ VERSION = "1.11.1"
5
5
  end
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.10.0
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-09-16 00:00:00.000000000 Z
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.18
8508
+ rubygems_version: 3.5.21
8509
8509
  signing_key:
8510
8510
  specification_version: 4
8511
8511
  summary: Internationalization and localization APIs