dynamic_time_zone 0.3.1 → 0.6.0

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: 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