timezone 1.2.8 → 1.2.9
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 +4 -4
- data/.rubocop.yml +28 -24
- data/.travis.yml +1 -1
- data/CHANGES.markdown +5 -0
- data/CODE_OF_CONDUCT.md +46 -0
- data/Gemfile +2 -0
- data/README.markdown +5 -0
- data/Rakefile +3 -1
- data/benchmark.rb +1 -0
- data/data/Africa/Casablanca +2 -924
- data/data/Africa/Ceuta +0 -922
- data/data/Africa/El_Aaiun +2 -924
- data/data/Africa/Juba +2 -2
- data/data/Africa/Khartoum +2 -1
- data/data/Africa/Windhoek +3 -967
- data/data/America/Adak +2 -924
- data/data/America/Anchorage +2 -924
- data/data/America/Asuncion +0 -922
- data/data/America/Atka +2 -924
- data/data/America/Bahia_Banderas +0 -922
- data/data/America/Boise +0 -922
- data/data/America/Cambridge_Bay +0 -922
- data/data/America/Campo_Grande +0 -922
- data/data/America/Chicago +0 -922
- data/data/America/Chihuahua +0 -922
- data/data/America/Cuiaba +0 -922
- data/data/America/Dawson +0 -922
- data/data/America/Denver +0 -922
- data/data/America/Detroit +1 -925
- data/data/America/Edmonton +0 -922
- data/data/America/Ensenada +0 -922
- data/data/America/Fort_Wayne +0 -922
- data/data/America/Glace_Bay +0 -922
- data/data/America/Godthab +0 -922
- data/data/America/Goose_Bay +0 -922
- data/data/America/Grand_Turk +43 -1
- data/data/America/Halifax +0 -922
- data/data/America/Havana +0 -922
- data/data/America/Indiana/Indianapolis +0 -922
- data/data/America/Indiana/Knox +0 -922
- data/data/America/Indiana/Marengo +0 -922
- data/data/America/Indiana/Petersburg +0 -922
- data/data/America/Indiana/Tell_City +0 -922
- data/data/America/Indiana/Vevay +0 -922
- data/data/America/Indiana/Vincennes +0 -922
- data/data/America/Indiana/Winamac +0 -922
- data/data/America/Indianapolis +0 -922
- data/data/America/Inuvik +0 -922
- data/data/America/Iqaluit +0 -922
- data/data/America/Juneau +2 -924
- data/data/America/Kentucky/Louisville +0 -922
- data/data/America/Kentucky/Monticello +0 -922
- data/data/America/Knox_IN +0 -922
- data/data/America/Los_Angeles +0 -922
- data/data/America/Louisville +0 -922
- data/data/America/Matamoros +0 -922
- data/data/America/Mazatlan +0 -922
- data/data/America/Menominee +0 -922
- data/data/America/Merida +0 -922
- data/data/America/Metlakatla +2 -924
- data/data/America/Mexico_City +0 -922
- data/data/America/Miquelon +0 -922
- data/data/America/Moncton +0 -922
- data/data/America/Monterrey +0 -922
- data/data/America/Montreal +0 -922
- data/data/America/Nassau +0 -922
- data/data/America/New_York +0 -922
- data/data/America/Nipigon +0 -922
- data/data/America/Nome +2 -924
- data/data/America/North_Dakota/Beulah +0 -922
- data/data/America/North_Dakota/Center +0 -922
- data/data/America/North_Dakota/New_Salem +0 -922
- data/data/America/Ojinaga +0 -922
- data/data/America/Pangnirtung +0 -922
- data/data/America/Port-au-Prince +0 -922
- data/data/America/Rainy_River +0 -922
- data/data/America/Rankin_Inlet +0 -922
- data/data/America/Resolute +0 -922
- data/data/America/Santa_Isabel +0 -922
- data/data/America/Santiago +0 -922
- data/data/America/Sao_Paulo +0 -922
- data/data/America/Scoresbysund +0 -922
- data/data/America/Shiprock +0 -922
- data/data/America/Sitka +2 -924
- data/data/America/St_Johns +0 -922
- data/data/America/Thule +0 -922
- data/data/America/Thunder_Bay +0 -922
- data/data/America/Tijuana +0 -922
- data/data/America/Toronto +0 -922
- data/data/America/Vancouver +0 -922
- data/data/America/Whitehorse +0 -922
- data/data/America/Winnipeg +0 -922
- data/data/America/Yakutat +2 -924
- data/data/America/Yellowknife +0 -922
- data/data/Antarctica/McMurdo +0 -922
- data/data/Antarctica/South_Pole +0 -922
- data/data/Antarctica/Troll +0 -922
- data/data/Arctic/Longyearbyen +0 -922
- data/data/Asia/Amman +0 -922
- data/data/Asia/Beirut +0 -922
- data/data/Asia/Calcutta +5 -3
- data/data/Asia/Damascus +0 -922
- data/data/Asia/Famagusta +44 -1
- data/data/Asia/Gaza +0 -922
- data/data/Asia/Hebron +0 -922
- data/data/Asia/Jerusalem +0 -922
- data/data/Asia/Kolkata +5 -3
- data/data/Asia/Nicosia +0 -922
- data/data/Asia/Rangoon +3 -3
- data/data/Asia/Tehran +0 -922
- data/data/Asia/Tel_Aviv +0 -922
- data/data/Asia/Yangon +3 -3
- data/data/Atlantic/Azores +0 -922
- data/data/Atlantic/Bermuda +0 -922
- data/data/Atlantic/Canary +0 -922
- data/data/Atlantic/Faeroe +0 -922
- data/data/Atlantic/Faroe +0 -922
- data/data/Atlantic/Jan_Mayen +0 -922
- data/data/Atlantic/Madeira +0 -922
- data/data/Australia/ACT +0 -922
- data/data/Australia/Adelaide +0 -922
- data/data/Australia/Broken_Hill +0 -922
- data/data/Australia/Canberra +0 -922
- data/data/Australia/Currie +0 -922
- data/data/Australia/Hobart +0 -922
- data/data/Australia/LHI +0 -922
- data/data/Australia/Lord_Howe +0 -922
- data/data/Australia/Melbourne +0 -922
- data/data/Australia/NSW +0 -922
- data/data/Australia/South +0 -922
- data/data/Australia/Sydney +0 -922
- data/data/Australia/Tasmania +0 -922
- data/data/Australia/Victoria +0 -922
- data/data/Australia/Yancowinna +0 -922
- data/data/Brazil/East +0 -922
- data/data/CET +0 -922
- data/data/CST6CDT +0 -922
- data/data/Canada/Atlantic +0 -922
- data/data/Canada/Central +0 -922
- data/data/Canada/Eastern +0 -922
- data/data/Canada/Mountain +0 -922
- data/data/Canada/Newfoundland +0 -922
- data/data/Canada/Pacific +0 -922
- data/data/Canada/Yukon +0 -922
- data/data/Chile/Continental +0 -922
- data/data/Chile/EasterIsland +0 -922
- data/data/Cuba +0 -922
- data/data/EET +0 -922
- data/data/EST5EDT +0 -922
- data/data/Eire +4 -926
- data/data/Europe/Amsterdam +0 -922
- data/data/Europe/Andorra +0 -922
- data/data/Europe/Athens +0 -922
- data/data/Europe/Belfast +0 -922
- data/data/Europe/Belgrade +0 -922
- data/data/Europe/Berlin +0 -922
- data/data/Europe/Bratislava +0 -922
- data/data/Europe/Brussels +0 -922
- data/data/Europe/Bucharest +0 -922
- data/data/Europe/Budapest +0 -922
- data/data/Europe/Busingen +0 -922
- data/data/Europe/Chisinau +0 -922
- data/data/Europe/Copenhagen +0 -922
- data/data/Europe/Dublin +4 -926
- data/data/Europe/Gibraltar +0 -922
- data/data/Europe/Guernsey +0 -922
- data/data/Europe/Helsinki +0 -922
- data/data/Europe/Isle_of_Man +0 -922
- data/data/Europe/Jersey +0 -922
- data/data/Europe/Kiev +0 -922
- data/data/Europe/Lisbon +0 -922
- data/data/Europe/Ljubljana +0 -922
- data/data/Europe/London +0 -922
- data/data/Europe/Luxembourg +0 -922
- data/data/Europe/Madrid +0 -922
- data/data/Europe/Malta +0 -922
- data/data/Europe/Mariehamn +0 -922
- data/data/Europe/Monaco +0 -922
- data/data/Europe/Nicosia +0 -922
- data/data/Europe/Oslo +0 -922
- data/data/Europe/Paris +0 -922
- data/data/Europe/Podgorica +0 -922
- data/data/Europe/Prague +0 -922
- data/data/Europe/Riga +0 -922
- data/data/Europe/Rome +0 -922
- data/data/Europe/San_Marino +0 -922
- data/data/Europe/Sarajevo +0 -922
- data/data/Europe/Skopje +0 -922
- data/data/Europe/Sofia +0 -922
- data/data/Europe/Stockholm +0 -922
- data/data/Europe/Tallinn +0 -922
- data/data/Europe/Tirane +0 -922
- data/data/Europe/Tiraspol +0 -922
- data/data/Europe/Uzhgorod +0 -922
- data/data/Europe/Vaduz +0 -922
- data/data/Europe/Vatican +0 -922
- data/data/Europe/Vienna +0 -922
- data/data/Europe/Vilnius +0 -922
- data/data/Europe/Warsaw +0 -922
- data/data/Europe/Zagreb +0 -922
- data/data/Europe/Zaporozhye +0 -922
- data/data/Europe/Zurich +0 -922
- data/data/GB +0 -922
- data/data/GB-Eire +0 -922
- data/data/Iran +0 -922
- data/data/Israel +0 -922
- data/data/MET +0 -922
- data/data/MST7MDT +0 -922
- data/data/Mexico/BajaNorte +0 -922
- data/data/Mexico/BajaSur +0 -922
- data/data/Mexico/General +0 -922
- data/data/NZ +0 -922
- data/data/NZ-CHAT +0 -922
- data/data/Navajo +0 -922
- data/data/PST8PDT +0 -922
- data/data/Pacific/Apia +2 -924
- data/data/Pacific/Auckland +0 -922
- data/data/Pacific/Chatham +0 -922
- data/data/Pacific/Easter +0 -922
- data/data/Pacific/Fiji +1 -923
- data/data/Pacific/Midway +2 -2
- data/data/Pacific/Pago_Pago +2 -2
- data/data/Pacific/Samoa +2 -2
- data/data/Pacific/Tongatapu +1 -966
- data/data/Poland +0 -922
- data/data/Portugal +0 -922
- data/data/US/Alaska +2 -924
- data/data/US/Aleutian +2 -924
- data/data/US/Central +0 -922
- data/data/US/East-Indiana +0 -922
- data/data/US/Eastern +0 -922
- data/data/US/Indiana-Starke +0 -922
- data/data/US/Michigan +1 -925
- data/data/US/Mountain +0 -922
- data/data/US/Pacific +0 -922
- data/data/US/Pacific-New +0 -922
- data/data/US/Samoa +2 -2
- data/data/WET +0 -922
- data/lib/timezone.rb +3 -1
- data/lib/timezone/deprecate.rb +2 -0
- data/lib/timezone/error.rb +2 -0
- data/lib/timezone/loader.rb +2 -0
- data/lib/timezone/lookup.rb +2 -0
- data/lib/timezone/lookup/basic.rb +2 -0
- data/lib/timezone/lookup/geonames.rb +11 -8
- data/lib/timezone/lookup/google.rb +10 -8
- data/lib/timezone/lookup/test.rb +2 -0
- data/lib/timezone/net_http_client.rb +3 -1
- data/lib/timezone/nil_zone.rb +4 -2
- data/lib/timezone/parser.rb +2 -0
- data/lib/timezone/version.rb +3 -1
- data/lib/timezone/zone.rb +19 -8
- data/test/http_test_client.rb +3 -2
- data/test/test_timezone.rb +2 -0
- data/test/threadsafe_lookup.rb +2 -0
- data/test/timezone/lookup/test_basic.rb +2 -0
- data/test/timezone/lookup/test_geonames.rb +2 -0
- data/test/timezone/lookup/test_google.rb +2 -0
- data/test/timezone/lookup/test_test.rb +2 -0
- data/test/timezone/test_deprecate.rb +2 -0
- data/test/timezone/test_loader.rb +2 -0
- data/test/timezone/test_lookup.rb +2 -0
- data/test/timezone/test_mathn_compatibility.rb +2 -0
- data/test/timezone/test_nil_zone.rb +2 -0
- data/test/timezone/test_zone.rb +33 -21
- data/timezone.gemspec +3 -1
- metadata +6 -5
data/lib/timezone.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'timezone/zone'
|
|
2
4
|
require 'timezone/nil_zone'
|
|
3
5
|
require 'timezone/lookup'
|
|
@@ -41,7 +43,7 @@ module Timezone
|
|
|
41
43
|
return ::Timezone::Zone.new(name) if Loader.valid?(name)
|
|
42
44
|
|
|
43
45
|
if block_given? && default != :__block
|
|
44
|
-
warn('warning: block supersedes default value argument'
|
|
46
|
+
warn('warning: block supersedes default value argument')
|
|
45
47
|
end
|
|
46
48
|
|
|
47
49
|
return block.call(name) if block_given?
|
data/lib/timezone/deprecate.rb
CHANGED
data/lib/timezone/error.rb
CHANGED
data/lib/timezone/loader.rb
CHANGED
data/lib/timezone/lookup.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'timezone/lookup/basic'
|
|
2
4
|
require 'timezone/error'
|
|
3
5
|
require 'json'
|
|
@@ -15,11 +17,11 @@ module Timezone
|
|
|
15
17
|
|
|
16
18
|
def initialize(config)
|
|
17
19
|
if config.username.nil?
|
|
18
|
-
raise(::Timezone::Error::InvalidConfig, 'missing username'
|
|
20
|
+
raise(::Timezone::Error::InvalidConfig, 'missing username')
|
|
19
21
|
end
|
|
20
22
|
|
|
21
|
-
config.protocol ||= 'http'
|
|
22
|
-
config.url ||= 'api.geonames.org'
|
|
23
|
+
config.protocol ||= 'http'
|
|
24
|
+
config.url ||= 'api.geonames.org'
|
|
23
25
|
|
|
24
26
|
super
|
|
25
27
|
end
|
|
@@ -48,11 +50,12 @@ module Timezone
|
|
|
48
50
|
def get_timezone_id(data)
|
|
49
51
|
return data['timezoneId'] if data['timezoneId']
|
|
50
52
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
return unless config.offset_etc_zones
|
|
54
|
+
return unless data['gmtOffset']
|
|
55
|
+
return unless data['gmtOffset'].is_a? Numeric
|
|
56
|
+
|
|
57
|
+
return 'Etc/UTC' if data['gmtOffset'].zero?
|
|
58
|
+
"Etc/GMT#{format('%+d', -data['gmtOffset'])}"
|
|
56
59
|
end
|
|
57
60
|
|
|
58
61
|
def url(lat, long)
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'timezone/lookup/basic'
|
|
2
4
|
require 'timezone/error'
|
|
3
5
|
require 'json'
|
|
@@ -16,11 +18,11 @@ module Timezone
|
|
|
16
18
|
|
|
17
19
|
def initialize(config)
|
|
18
20
|
if config.api_key.nil?
|
|
19
|
-
raise(::Timezone::Error::InvalidConfig, 'missing api key'
|
|
21
|
+
raise(::Timezone::Error::InvalidConfig, 'missing api key')
|
|
20
22
|
end
|
|
21
23
|
|
|
22
|
-
config.protocol ||= 'https'
|
|
23
|
-
config.url ||= 'maps.googleapis.com'
|
|
24
|
+
config.protocol ||= 'https'
|
|
25
|
+
config.url ||= 'maps.googleapis.com'
|
|
24
26
|
|
|
25
27
|
super
|
|
26
28
|
end
|
|
@@ -28,20 +30,20 @@ module Timezone
|
|
|
28
30
|
def lookup(lat, long)
|
|
29
31
|
response = client.get(url(lat, long))
|
|
30
32
|
|
|
31
|
-
if response.code == '403'
|
|
32
|
-
raise(Timezone::Error::Google, '403 Forbidden'
|
|
33
|
+
if response.code == '403'
|
|
34
|
+
raise(Timezone::Error::Google, '403 Forbidden')
|
|
33
35
|
end
|
|
34
36
|
|
|
35
37
|
return unless response.code =~ /^2\d\d$/
|
|
36
38
|
data = JSON.parse(response.body)
|
|
37
39
|
|
|
38
|
-
return if data['status'
|
|
40
|
+
return if data['status'] == NO_TIMEZONE_INFORMATION
|
|
39
41
|
|
|
40
|
-
if data['status'
|
|
42
|
+
if data['status'] != 'OK'
|
|
41
43
|
raise(Timezone::Error::Google, data['errorMessage'])
|
|
42
44
|
end
|
|
43
45
|
|
|
44
|
-
data['timeZoneId'
|
|
46
|
+
data['timeZoneId']
|
|
45
47
|
rescue => e
|
|
46
48
|
raise(Timezone::Error::Google, e.message)
|
|
47
49
|
end
|
data/lib/timezone/lookup/test.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'uri'
|
|
2
4
|
require 'net/http'
|
|
3
5
|
|
|
@@ -19,7 +21,7 @@ module Timezone
|
|
|
19
21
|
@http = Net::HTTP.new(config.uri.host, config.uri.port)
|
|
20
22
|
@http.open_timeout = config.open_timeout || 5
|
|
21
23
|
@http.read_timeout = config.read_timeout || 5
|
|
22
|
-
@http.use_ssl = (config.protocol == 'https'
|
|
24
|
+
@http.use_ssl = (config.protocol == 'https')
|
|
23
25
|
end
|
|
24
26
|
|
|
25
27
|
def get(url)
|
data/lib/timezone/nil_zone.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module Timezone
|
|
2
4
|
# A "nil" timezone object - representative of a missing timezone.
|
|
3
5
|
class NilZone
|
|
@@ -12,14 +14,14 @@ module Timezone
|
|
|
12
14
|
#
|
|
13
15
|
# @return [String]
|
|
14
16
|
def to_s
|
|
15
|
-
'NilZone'
|
|
17
|
+
'NilZone'
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
# A stubbed timezone debug string.
|
|
19
21
|
#
|
|
20
22
|
# @return [String]
|
|
21
23
|
def inspect
|
|
22
|
-
'#<Timezone::NilZone>'
|
|
24
|
+
'#<Timezone::NilZone>'
|
|
23
25
|
end
|
|
24
26
|
|
|
25
27
|
# If this is a valid timezone.
|
data/lib/timezone/parser.rb
CHANGED
data/lib/timezone/version.rb
CHANGED
data/lib/timezone/zone.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'json'
|
|
2
4
|
require 'date'
|
|
3
5
|
require 'time'
|
|
@@ -120,7 +122,16 @@ module Timezone
|
|
|
120
122
|
|
|
121
123
|
utc = utc_to_local(time)
|
|
122
124
|
offset = utc_offset(time)
|
|
123
|
-
|
|
125
|
+
|
|
126
|
+
Time.new(
|
|
127
|
+
utc.year,
|
|
128
|
+
utc.month,
|
|
129
|
+
utc.day,
|
|
130
|
+
utc.hour,
|
|
131
|
+
utc.min,
|
|
132
|
+
utc.sec + utc.subsec,
|
|
133
|
+
offset
|
|
134
|
+
)
|
|
124
135
|
end
|
|
125
136
|
|
|
126
137
|
# The timezone abbreviation, at the given time.
|
|
@@ -248,15 +259,15 @@ module Timezone
|
|
|
248
259
|
|
|
249
260
|
mid = (from + to).div(2)
|
|
250
261
|
|
|
251
|
-
|
|
252
|
-
return mid if mid == 0
|
|
253
|
-
|
|
254
|
-
return mid unless yield(time, private_rules[mid - 1])
|
|
255
|
-
|
|
256
|
-
binary_search(time, from, mid - 1, &block)
|
|
257
|
-
else
|
|
262
|
+
unless yield(time, private_rules[mid])
|
|
258
263
|
return binary_search(time, mid + 1, to, &block)
|
|
259
264
|
end
|
|
265
|
+
|
|
266
|
+
return mid if mid.zero?
|
|
267
|
+
|
|
268
|
+
return mid unless yield(time, private_rules[mid - 1])
|
|
269
|
+
|
|
270
|
+
binary_search(time, from, mid - 1, &block)
|
|
260
271
|
end
|
|
261
272
|
end
|
|
262
273
|
end
|
data/test/http_test_client.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
class HTTPTestClient
|
|
2
4
|
Response = Struct.new(:body) do
|
|
3
5
|
def code; '200'; end
|
|
@@ -5,8 +7,7 @@ class HTTPTestClient
|
|
|
5
7
|
|
|
6
8
|
attr_accessor :body
|
|
7
9
|
|
|
8
|
-
def initialize(_config)
|
|
9
|
-
end
|
|
10
|
+
def initialize(_config); end
|
|
10
11
|
|
|
11
12
|
def get(_url)
|
|
12
13
|
HTTPTestClient::Response.new(body)
|
data/test/test_timezone.rb
CHANGED
data/test/threadsafe_lookup.rb
CHANGED
data/test/timezone/test_zone.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'timecop'
|
|
2
4
|
require 'timezone/zone'
|
|
3
5
|
require 'minitest/autorun'
|
|
@@ -31,7 +33,7 @@ class TestZone < ::Minitest::Test
|
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
def test_abbr
|
|
34
|
-
assert_equal 'PDT', la.abbr(Time.new(2011, 6,
|
|
36
|
+
assert_equal 'PDT', la.abbr(Time.new(2011, 6, 5))
|
|
35
37
|
assert_equal 'PST', la.abbr(Time.new(2011, 11, 20))
|
|
36
38
|
end
|
|
37
39
|
|
|
@@ -75,20 +77,20 @@ class TestZone < ::Minitest::Test
|
|
|
75
77
|
end
|
|
76
78
|
|
|
77
79
|
def test_utc_offsets
|
|
78
|
-
assert_equal(36_000, utc_offset('Australia/Sydney', 2011,
|
|
79
|
-
assert_equal(-25_200, utc_offset('America/Los_Angeles', 2011,
|
|
80
|
-
assert_equal(20_700, utc_offset('Asia/Kathmandu', 2011,
|
|
81
|
-
assert_equal(-18_000, utc_offset('America/New_York', 2011,
|
|
82
|
-
assert_equal(-14_400, utc_offset('America/New_York', 2011,
|
|
80
|
+
assert_equal(36_000, utc_offset('Australia/Sydney', 2011, 6, 5))
|
|
81
|
+
assert_equal(-25_200, utc_offset('America/Los_Angeles', 2011, 6, 5))
|
|
82
|
+
assert_equal(20_700, utc_offset('Asia/Kathmandu', 2011, 6, 5))
|
|
83
|
+
assert_equal(-18_000, utc_offset('America/New_York', 2011, 1, 11))
|
|
84
|
+
assert_equal(-14_400, utc_offset('America/New_York', 2011, 6, 11))
|
|
83
85
|
end
|
|
84
86
|
|
|
85
87
|
def test_dst
|
|
86
|
-
refute dst?('Australia/Sydney', 2011,
|
|
87
|
-
assert dst?('America/Los_Angeles', 2011,
|
|
88
|
-
refute dst?('Asia/Kathmandu', 2011,
|
|
88
|
+
refute dst?('Australia/Sydney', 2011, 6, 5)
|
|
89
|
+
assert dst?('America/Los_Angeles', 2011, 6, 5)
|
|
90
|
+
refute dst?('Asia/Kathmandu', 2011, 6, 5)
|
|
89
91
|
|
|
90
|
-
refute dst?('America/New_York', 2011,
|
|
91
|
-
assert dst?('America/New_York', 2011,
|
|
92
|
+
refute dst?('America/New_York', 2011, 1, 11)
|
|
93
|
+
assert dst?('America/New_York', 2011, 6, 11)
|
|
92
94
|
end
|
|
93
95
|
|
|
94
96
|
def test_gmt_timezone
|
|
@@ -150,21 +152,31 @@ class TestZone < ::Minitest::Test
|
|
|
150
152
|
local = Time.new(2011, 1, 4, 9, 36, 29, 20_700)
|
|
151
153
|
assert_equal local.to_s, zone('Asia/Kathmandu').time_with_offset(utc).to_s
|
|
152
154
|
|
|
153
|
-
utc = Time.utc(2014, 12, 15, 22,
|
|
154
|
-
local = Time.new(2014, 12, 15, 14,
|
|
155
|
+
utc = Time.utc(2014, 12, 15, 22, 0, 0)
|
|
156
|
+
local = Time.new(2014, 12, 15, 14, 0, 0, '-08:00')
|
|
155
157
|
assert_equal(
|
|
156
158
|
local.to_s,
|
|
157
159
|
zone('America/Los_Angeles').time_with_offset(utc).to_s
|
|
158
160
|
)
|
|
159
161
|
|
|
160
|
-
utc = Time.utc(2014, 4, 5, 22,
|
|
161
|
-
local = Time.new(2014, 4, 5, 15,
|
|
162
|
+
utc = Time.utc(2014, 4, 5, 22, 0, 0)
|
|
163
|
+
local = Time.new(2014, 4, 5, 15, 0, 0, '-07:00')
|
|
162
164
|
assert_equal(
|
|
163
165
|
local.to_s,
|
|
164
166
|
zone('America/Los_Angeles').time_with_offset(utc).to_s
|
|
165
167
|
)
|
|
166
168
|
end
|
|
167
169
|
|
|
170
|
+
def test_time_with_offset_and_fractional_seconds
|
|
171
|
+
utc = Time.utc(2011, 1, 4, 3, 51, 29.123)
|
|
172
|
+
time_with_offset = zone('Asia/Kathmandu').time_with_offset(utc)
|
|
173
|
+
assert_equal 123_000, time_with_offset.usec
|
|
174
|
+
|
|
175
|
+
utc = Time.utc(2011, 1, 4, 3, 51, 29, 123_456)
|
|
176
|
+
time_with_offset = zone('Asia/Kathmandu').time_with_offset(utc)
|
|
177
|
+
assert_equal 123_456, time_with_offset.usec
|
|
178
|
+
end
|
|
179
|
+
|
|
168
180
|
def test_australian_timezone_with_dst
|
|
169
181
|
utc = Time.utc(2010, 12, 23, 19, 37, 15)
|
|
170
182
|
local = Time.utc(2010, 12, 24, 6, 7, 15)
|
|
@@ -218,12 +230,12 @@ class TestZone < ::Minitest::Test
|
|
|
218
230
|
assert_equal timezone.utc_offset(utc), 10_800
|
|
219
231
|
end
|
|
220
232
|
|
|
221
|
-
EQUIVALENCE_METHODS = [
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
233
|
+
EQUIVALENCE_METHODS = %i[
|
|
234
|
+
time
|
|
235
|
+
local_to_utc
|
|
236
|
+
time_with_offset
|
|
237
|
+
dst?
|
|
238
|
+
utc_offset
|
|
227
239
|
].freeze
|
|
228
240
|
|
|
229
241
|
def check_equivalence(name, time, other)
|
data/timezone.gemspec
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# -*- encoding: utf-8 -*-
|
|
3
|
+
|
|
2
4
|
$:.push File.expand_path('../lib', __FILE__)
|
|
3
5
|
require 'timezone/version'
|
|
4
6
|
|
|
@@ -27,6 +29,6 @@ Gem::Specification.new do |s|
|
|
|
27
29
|
|
|
28
30
|
s.add_development_dependency('rake')
|
|
29
31
|
s.add_development_dependency('minitest', '~> 5.8')
|
|
30
|
-
s.add_development_dependency('rubocop', '= 0.
|
|
32
|
+
s.add_development_dependency('rubocop', '= 0.49.1')
|
|
31
33
|
s.add_development_dependency('timecop', '~> 0.8')
|
|
32
34
|
end
|