dynamic_time_zone 0.3.1 → 0.6.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84f3075f7955fcf37f67f664b03c10993bb839163a4c078309940e98db9febc6
4
- data.tar.gz: c5860bb4c02c2926749209108287dca5b0a7fe60135fd3995b3f82f86fc061e4
3
+ metadata.gz: 144d2486964c275f2f0ad745f47c0998bbeba7ca9fec93d1c20ce3c84907fe91
4
+ data.tar.gz: 348f7227a746af62cf47996951027a49be3e7ac51b8e0a5f4d384843b6d3a412
5
5
  SHA512:
6
- metadata.gz: 7da51a26b381b6e64df3dae5afd70ea5c99b1531de98ccea72d116d6d54db39624e27295fbe383fc52794afec1fdba54309f8b0e319b812f7178b06699d0c5d1
7
- data.tar.gz: 4f675e03f7cd75d31173896e5433cad3b1de1b4b599b8561f87f9529d1d0e491e71ae1f8e5a46dde555e79415ef96ad9f1c683e818df7774a1ea14056b495f1f
6
+ metadata.gz: 5eeb14dfab601d17c8a4e792e460a4b6913ac93e03d29eb3e5c100521672c08d4d27509bcc69fda40e53d2ecef614d97d3881e789d52521499090f2aa3173e79
7
+ data.tar.gz: 20ac01f71d6163865095ce8a4db1c6ccfb661548e339ce4f12c8ea7cffd4d246803098eb2f36e6fb26dd08579d513f36ee907fce326d825450d318f1c0619899
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TimePatch
4
+ def compare_with_coercion(other)
5
+ if DynamicTimeZone.enabled && other.is_a?(ActiveSupport::TimeWithZone) && other.using_dynamic_time_zone?
6
+ self.utc <=> other.utc
7
+ else
8
+ super
9
+ end
10
+ end
11
+ alias_method :<=>, :compare_with_coercion
12
+ end
13
+
14
+ Time.prepend(TimePatch)
@@ -9,7 +9,11 @@ module TimeWithZonePatch
9
9
  alias_method :getlocal, :localtime
10
10
 
11
11
  def formatted_offset(*args)
12
- using_dynamic_time_zone? ? '+0000' : super
12
+ actual_formatted_offset = super
13
+ return actual_formatted_offset unless using_dynamic_time_zone?
14
+
15
+ seconds_in_24_hours = 24 * 60 * 60
16
+ utc_offset.abs > seconds_in_24_hours ? '+0000' : actual_formatted_offset
13
17
  end
14
18
 
15
19
  def using_dynamic_time_zone?
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DynamicTimeZone
4
- class TimeZoneDataSource < TZInfo::ZoneinfoDataSource
4
+ class TimeZoneDataSource < TZInfo::DataSources::ZoneinfoDataSource
5
5
  def load_timezone_info(identifier)
6
6
  return super unless DynamicTimeZone.enabled
7
7
 
@@ -12,8 +12,8 @@ module DynamicTimeZone
12
12
  offset_amount = offset_amount.to_i
13
13
  offset_amount = 0 - offset_amount if sign == '-'
14
14
 
15
- timezone_info = TZInfo::TransitionDataTimezoneInfo.new(identifier)
16
- timezone_info.offset(identifier, offset_amount, 0, 'DynamicTimeZone')
15
+ offset = TZInfo::TimezoneOffset.new(offset_amount, 0, 'DynamicTimeZone')
16
+ timezone_info = TZInfo::DataSources::ConstantOffsetDataTimezoneInfo.new(identifier, offset)
17
17
  timezone_info
18
18
  end
19
19
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DynamicTimeZone
4
- VERSION = '0.3.1'
4
+ VERSION = '0.6.0'
5
5
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'time'
4
+ require 'rails'
5
+ require 'active_support'
4
6
  require 'active_support/core_ext/date_time/conversions'
5
7
  require 'active_support/time_with_zone'
6
8
  require 'active_support/core_ext/time/zones'
@@ -21,5 +23,6 @@ require 'dynamic_time_zone/validator'
21
23
  require 'dynamic_time_zone/identifier_builder'
22
24
  require 'dynamic_time_zone/time_zone_data_source'
23
25
  require 'dynamic_time_zone/time_with_zone_patch'
26
+ require 'dynamic_time_zone/time_patch'
24
27
  require 'dynamic_time_zone/offset_format_convertor'
25
28
  require 'dynamic_time_zone/time_parser'
metadata CHANGED
@@ -1,49 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamic_time_zone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Appfolio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-27 00:00:00.000000000 Z
11
+ date: 2022-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: tzinfo
14
+ name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.2'
19
+ version: '6.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '7.1'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '6.1'
30
+ - - "<"
25
31
  - !ruby/object:Gem::Version
26
- version: '1.2'
32
+ version: '7.1'
27
33
  - !ruby/object:Gem::Dependency
28
- name: activesupport
34
+ name: railties
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
37
  - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '5.2'
39
+ version: '6.1'
34
40
  - - "<"
35
41
  - !ruby/object:Gem::Version
36
- version: '6.1'
42
+ version: '7.1'
37
43
  type: :runtime
38
44
  prerelease: false
39
45
  version_requirements: !ruby/object:Gem::Requirement
40
46
  requirements:
41
47
  - - ">="
42
48
  - !ruby/object:Gem::Version
43
- version: '5.2'
49
+ version: '6.1'
44
50
  - - "<"
45
51
  - !ruby/object:Gem::Version
46
- version: '6.1'
52
+ version: '7.1'
53
+ - !ruby/object:Gem::Dependency
54
+ name: tzinfo
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '2.0'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '2.0'
47
67
  description:
48
68
  email:
49
69
  executables: []
@@ -55,6 +75,7 @@ files:
55
75
  - lib/dynamic_time_zone/offset_format_convertor.rb
56
76
  - lib/dynamic_time_zone/test_helper.rb
57
77
  - lib/dynamic_time_zone/time_parser.rb
78
+ - lib/dynamic_time_zone/time_patch.rb
58
79
  - lib/dynamic_time_zone/time_with_zone_patch.rb
59
80
  - lib/dynamic_time_zone/time_zone_data_source.rb
60
81
  - lib/dynamic_time_zone/validator.rb
@@ -77,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
98
  - !ruby/object:Gem::Version
78
99
  version: '0'
79
100
  requirements: []
80
- rubygems_version: 3.0.8
101
+ rubygems_version: 3.3.3
81
102
  signing_key:
82
103
  specification_version: 4
83
104
  summary: Dynamically set the offset from UTC from timezone identifier