worldwide 0.14.0 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci-typescript.yml +32 -0
  3. data/.github/workflows/npm-release.yml +38 -0
  4. data/.vscode/settings.json +8 -0
  5. data/CHANGELOG.md +5 -1
  6. data/Gemfile.lock +1 -1
  7. data/db/data/regions/BE.yml +5 -2
  8. data/db/data/regions/BR.yml +7 -4
  9. data/db/data/regions/CL.yml +7 -4
  10. data/db/data/regions/CO.yml +3 -2
  11. data/db/data/regions/ES.yml +5 -2
  12. data/db/data/regions/ID.yml +3 -2
  13. data/db/data/regions/IL.yml +5 -2
  14. data/db/data/regions/MX.yml +7 -4
  15. data/db/data/regions/NL.yml +5 -2
  16. data/db/data/regions/PH.yml +4 -2
  17. data/db/data/regions/TR.yml +4 -2
  18. data/db/data/regions/TW.yml +8 -0
  19. data/db/data/regions/VN.yml +4 -2
  20. data/db/data/regions/_default/cs.yml +27 -2
  21. data/db/data/regions/_default/da.yml +25 -1
  22. data/db/data/regions/_default/el.yml +28 -1
  23. data/db/data/regions/_default/es.yml +29 -1
  24. data/db/data/regions/_default/fi.yml +25 -1
  25. data/db/data/regions/_default/fr.yml +28 -1
  26. data/db/data/regions/_default/hi.yml +25 -1
  27. data/db/data/regions/_default/hu.yml +28 -2
  28. data/db/data/regions/_default/id.yml +26 -1
  29. data/db/data/regions/_default/ja.yml +20 -1
  30. data/db/data/regions/_default/lt.yml +28 -1
  31. data/db/data/regions/_default/ms.yml +26 -1
  32. data/db/data/regions/_default/pt-BR.yml +26 -1
  33. data/db/data/regions/_default/ro.yml +26 -1
  34. data/db/data/regions/_default/ru.yml +25 -1
  35. data/db/data/regions/_default/sk.yml +25 -1
  36. data/db/data/regions/_default/sl.yml +27 -1
  37. data/db/data/regions/_default/sv.yml +25 -1
  38. data/db/data/regions/_default/th.yml +24 -1
  39. data/db/data/regions/_default/tr.yml +24 -1
  40. data/db/data/regions/_default/vi.yml +24 -1
  41. data/db/data/regions/_default/zh-CN.yml +20 -1
  42. data/db/data/regions/_default/zh-TW.yml +20 -1
  43. data/lib/worldwide/address.rb +4 -4
  44. data/lib/worldwide/region.rb +27 -2
  45. data/lib/worldwide/regions_loader.rb +2 -1
  46. data/lib/worldwide/version.rb +1 -1
  47. data/worldwide.gemspec +1 -1
  48. metadata +5 -2
@@ -34,6 +34,7 @@ module Worldwide
34
34
  :zip_regex,
35
35
  :zip_requirement,
36
36
  :additional_address_fields,
37
+ :combined_address_format,
37
38
  ]
38
39
 
39
40
  # A region may have more than one parent.
@@ -197,9 +198,12 @@ module Worldwide
197
198
  # If true, then the province is optional for addresses in this region.
198
199
  attr_accessor :province_optional
199
200
 
200
- # A hash of additional address fields and the rules for concatening them into the standard fields
201
+ # An array of the additional address fields that are defined for this region
201
202
  attr_accessor :additional_address_fields
202
203
 
204
+ # A hash of the rules for concatening the additional address fields into the standard fields
205
+ attr_accessor :combined_address_format
206
+
203
207
  def initialize(
204
208
  alpha_three: nil,
205
209
  continent: false,
@@ -235,7 +239,8 @@ module Worldwide
235
239
  @tax_rate = tax_rate
236
240
  @use_zone_code_as_short_name = use_zone_code_as_short_name
237
241
 
238
- @additional_address_fields = {}
242
+ @additional_address_fields = []
243
+ @combined_address_format = {}
239
244
  @building_number_required = false
240
245
  @building_number_may_be_in_address2 = false
241
246
  @currency = nil
@@ -414,6 +419,21 @@ module Worldwide
414
419
  end
415
420
  end
416
421
 
422
+ # is a neighborhood required for this region?
423
+ def neighborhood_required?
424
+ additional_field_required?("neighborhood")
425
+ end
426
+
427
+ # is a street name required for this region?
428
+ def street_name_required?
429
+ additional_field_required?("streetName")
430
+ end
431
+
432
+ # is a street number required for this region?
433
+ def street_number_required?
434
+ additional_field_required?("streetNumber")
435
+ end
436
+
417
437
  # is the given postal code value valid for this region?
418
438
  def valid_zip?(zip, partial_match: false)
419
439
  normalized = Zip.normalize(
@@ -441,6 +461,11 @@ module Worldwide
441
461
  end
442
462
  end
443
463
 
464
+ def additional_field_required?(field_name)
465
+ field = additional_address_fields.find { |f| f["name"] == field_name }
466
+ field ? !!field["required"] : false
467
+ end
468
+
444
469
  def answers_to_cldr_code(search_code)
445
470
  return false if Util.blank?(search_code) || Util.blank?(cldr_code)
446
471
  return true if search_code.casecmp(cldr_code).zero?
@@ -95,7 +95,8 @@ module Worldwide
95
95
  end
96
96
 
97
97
  def apply_territory_attributes(region, spec)
98
- region.additional_address_fields = spec["additional_address_fields"] || {}
98
+ region.additional_address_fields = spec["additional_address_fields"] || []
99
+ region.combined_address_format = spec["combined_address_format"] || {}
99
100
  region.building_number_required = spec["building_number_required"] || false
100
101
  region.building_number_may_be_in_address2 = spec["building_number_may_be_in_address2"] || false
101
102
  currency_code = spec["currency"]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Worldwide
4
- VERSION = "0.14.0"
4
+ VERSION = "0.15.0"
5
5
  end
data/worldwide.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.metadata["changelog_uri"] = "https://github.com/Shopify/worldwide/blob/main/CHANGELOG.md"
19
19
 
20
20
  spec.files = %x(git ls-files -z).split("\x0").reject do |f|
21
- f.match(%r{^(rake|test|spec|features)/})
21
+ f.match(%r{^(rake|test|spec|features|lang/typescript)/})
22
22
  end
23
23
  spec.bindir = "exe"
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
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: 0.14.0
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-29 00:00:00.000000000 Z
11
+ date: 2024-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -64,11 +64,14 @@ files:
64
64
  - ".github/CONTRIBUTING.md"
65
65
  - ".github/dependabot.yml"
66
66
  - ".github/pull_request_template.md"
67
+ - ".github/workflows/ci-typescript.yml"
67
68
  - ".github/workflows/ci.yml"
68
69
  - ".github/workflows/cla.yml"
70
+ - ".github/workflows/npm-release.yml"
69
71
  - ".gitignore"
70
72
  - ".rubocop.yml"
71
73
  - ".ruby-version"
74
+ - ".vscode/settings.json"
72
75
  - CHANGELOG.md
73
76
  - Gemfile
74
77
  - Gemfile.lock