timezone 1.3.3 → 1.3.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +2 -1
- data/CHANGES.markdown +23 -0
- data/CONTRIBUTING.markdown +10 -6
- data/Rakefile +3 -1
- data/data/Africa/Algiers +2 -2
- data/data/Africa/Casablanca +12 -10
- data/data/Africa/El_Aaiun +12 -10
- data/data/America/Campo_Grande +1 -40
- data/data/America/Cuiaba +1 -40
- data/data/America/Dawson +2 -38
- data/data/America/Detroit +5 -1
- data/data/America/Edmonton +1 -5
- data/data/America/Indiana/Tell_City +9 -12
- data/data/America/Kentucky/Louisville +4 -4
- data/data/America/Louisville +4 -4
- data/data/America/Metlakatla +2 -1
- data/data/America/Nuuk +120 -0
- data/data/America/Sao_Paulo +1 -40
- data/data/America/Vancouver +2 -2
- data/data/America/Whitehorse +2 -38
- data/data/Antarctica/Casey +6 -1
- data/data/Antarctica/Macquarie +56 -1
- data/data/Asia/Chongqing +3 -1
- data/data/Asia/Chungking +3 -1
- data/data/Asia/Gaza +45 -41
- data/data/Asia/Harbin +3 -1
- data/data/Asia/Hebron +45 -41
- data/data/Asia/Hong_Kong +19 -19
- data/data/Asia/Istanbul +22 -36
- data/data/Asia/Jerusalem +5 -1
- data/data/Asia/Seoul +9 -1
- data/data/Asia/Shanghai +3 -1
- data/data/Asia/Tel_Aviv +5 -1
- data/data/Brazil/East +1 -40
- data/data/Canada/Mountain +1 -5
- data/data/Canada/Pacific +2 -2
- data/data/Canada/Yukon +2 -38
- data/data/Etc/UCT +1 -1
- data/data/Europe/Brussels +2 -2
- data/data/Europe/Budapest +24 -24
- data/data/Europe/Istanbul +22 -36
- data/data/Europe/Kaliningrad +6 -5
- data/data/Europe/Monaco +3 -3
- data/data/Europe/Paris +3 -3
- data/data/Europe/Rome +2 -2
- data/data/Europe/San_Marino +2 -2
- data/data/Europe/Vatican +2 -2
- data/data/Europe/Vienna +2 -2
- data/data/Hongkong +19 -19
- data/data/Israel +5 -1
- data/data/PRC +3 -1
- data/data/Pacific/Fiji +31 -31
- data/data/Pacific/Norfolk +42 -3
- data/data/ROK +9 -1
- data/data/Turkey +22 -36
- data/data/UCT +1 -1
- data/data/US/Michigan +5 -1
- data/lib/timezone/loader.rb +6 -3
- data/lib/timezone/parser.rb +28 -14
- data/lib/timezone/version.rb +1 -1
- data/lib/timezone/zone.rb +17 -16
- data/timezone.gemspec +0 -2
- metadata +8 -10
- data/data/US/Pacific-New +0 -189
data/lib/timezone/version.rb
CHANGED
data/lib/timezone/zone.rb
CHANGED
@@ -179,10 +179,6 @@ module Timezone
|
|
179
179
|
|
180
180
|
private
|
181
181
|
|
182
|
-
def private_rules
|
183
|
-
@rules ||= Loader.load(name)
|
184
|
-
end
|
185
|
-
|
186
182
|
def sanitize(time)
|
187
183
|
time.to_time
|
188
184
|
end
|
@@ -200,11 +196,15 @@ module Timezone
|
|
200
196
|
|
201
197
|
def rule_for_local(local)
|
202
198
|
local = local.to_i
|
199
|
+
rules = Loader.load(name)
|
203
200
|
|
204
201
|
# For each rule, convert the local time into the UTC equivalent for
|
205
202
|
# that rule offset, and then check if the UTC time matches the rule.
|
206
|
-
index =
|
207
|
-
|
203
|
+
index =
|
204
|
+
binary_search(rules, local) do |t, r|
|
205
|
+
match?(t - r[OFFSET_BIT], r)
|
206
|
+
end
|
207
|
+
match = rules[index]
|
208
208
|
|
209
209
|
utc = local - match[OFFSET_BIT]
|
210
210
|
|
@@ -213,7 +213,7 @@ module Timezone
|
|
213
213
|
return RuleSet.new(:missing, [match]) if rule_for_utc(utc) != match
|
214
214
|
|
215
215
|
# If the match is the last rule, then return it.
|
216
|
-
return RuleSet.new(:single, [match]) if index ==
|
216
|
+
return RuleSet.new(:single, [match]) if index == rules.length - 1
|
217
217
|
|
218
218
|
# If the UTC equivalent time falls within the last hour(s) of the time
|
219
219
|
# change which were replayed during a fall-back in time, then return
|
@@ -234,10 +234,10 @@ module Timezone
|
|
234
234
|
last_hour =
|
235
235
|
match[SOURCE_BIT] -
|
236
236
|
match[OFFSET_BIT] +
|
237
|
-
|
237
|
+
rules[index + 1][OFFSET_BIT]
|
238
238
|
|
239
239
|
if utc > last_hour
|
240
|
-
RuleSet.new(:double,
|
240
|
+
RuleSet.new(:double, rules[index..(index + 1)])
|
241
241
|
else
|
242
242
|
RuleSet.new(:single, [match])
|
243
243
|
end
|
@@ -245,27 +245,28 @@ module Timezone
|
|
245
245
|
|
246
246
|
def rule_for_utc(time)
|
247
247
|
time = time.to_i
|
248
|
+
rules = Loader.load(name)
|
248
249
|
|
249
|
-
|
250
|
+
rules[binary_search(rules, time) { |t, r| match?(t, r) }]
|
250
251
|
end
|
251
252
|
|
252
253
|
# Find the first rule that matches using binary search.
|
253
|
-
def binary_search(time, from = 0, to = nil, &block)
|
254
|
-
to =
|
254
|
+
def binary_search(rules, time, from = 0, to = nil, &block)
|
255
|
+
to = rules.length - 1 if to.nil?
|
255
256
|
|
256
257
|
return from if from == to
|
257
258
|
|
258
259
|
mid = (from + to).div(2)
|
259
260
|
|
260
|
-
unless yield(time,
|
261
|
-
return binary_search(time, mid + 1, to, &block)
|
261
|
+
unless yield(time, rules[mid])
|
262
|
+
return binary_search(rules, time, mid + 1, to, &block)
|
262
263
|
end
|
263
264
|
|
264
265
|
return mid if mid.zero?
|
265
266
|
|
266
|
-
return mid unless yield(time,
|
267
|
+
return mid unless yield(time, rules[mid - 1])
|
267
268
|
|
268
|
-
binary_search(time, from, mid - 1, &block)
|
269
|
+
binary_search(rules, time, from, mid - 1, &block)
|
269
270
|
end
|
270
271
|
end
|
271
272
|
end
|
data/timezone.gemspec
CHANGED
@@ -16,8 +16,6 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.description = 'Accurate current and historical timezones for Ruby with ' \
|
17
17
|
'support for Geonames and Google latitude - longitude lookups.'
|
18
18
|
|
19
|
-
s.rubyforge_project = 'timezone'
|
20
|
-
|
21
19
|
s.files = `git ls-files`.split("\n")
|
22
20
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
21
|
s.executables = `git ls-files -- bin/*`
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timezone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pan Thomakos
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -263,6 +263,7 @@ files:
|
|
263
263
|
- data/America/North_Dakota/Beulah
|
264
264
|
- data/America/North_Dakota/Center
|
265
265
|
- data/America/North_Dakota/New_Salem
|
266
|
+
- data/America/Nuuk
|
266
267
|
- data/America/Ojinaga
|
267
268
|
- data/America/Panama
|
268
269
|
- data/America/Pangnirtung
|
@@ -675,7 +676,6 @@ files:
|
|
675
676
|
- data/US/Michigan
|
676
677
|
- data/US/Mountain
|
677
678
|
- data/US/Pacific
|
678
|
-
- data/US/Pacific-New
|
679
679
|
- data/US/Samoa
|
680
680
|
- data/UTC
|
681
681
|
- data/Universal
|
@@ -728,7 +728,7 @@ homepage: https://github.com/panthomakos/timezone
|
|
728
728
|
licenses:
|
729
729
|
- MIT
|
730
730
|
metadata: {}
|
731
|
-
post_install_message:
|
731
|
+
post_install_message:
|
732
732
|
rdoc_options:
|
733
733
|
- "--charset=UTF-8"
|
734
734
|
require_paths:
|
@@ -744,11 +744,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
744
744
|
- !ruby/object:Gem::Version
|
745
745
|
version: '0'
|
746
746
|
requirements: []
|
747
|
-
|
748
|
-
|
749
|
-
signing_key:
|
747
|
+
rubygems_version: 3.1.2
|
748
|
+
signing_key:
|
750
749
|
specification_version: 4
|
751
|
-
summary: timezone-1.3.
|
750
|
+
summary: timezone-1.3.8
|
752
751
|
test_files:
|
753
752
|
- test/data/Helsinki_rules_without_timestamps.json
|
754
753
|
- test/data/asia
|
@@ -777,4 +776,3 @@ test_files:
|
|
777
776
|
- test/timezone/test_mathn_compatibility.rb
|
778
777
|
- test/timezone/test_nil_zone.rb
|
779
778
|
- test/timezone/test_zone.rb
|
780
|
-
has_rdoc:
|
data/data/US/Pacific-New
DELETED
@@ -1,189 +0,0 @@
|
|
1
|
-
-2717640001:LMT:0:-28378
|
2
|
-
1084370400:PST:0:-28800
|
3
|
-
18140400:PDT:1:-25200
|
4
|
-
13309200:PST:0:-28800
|
5
|
-
18140400:PDT:1:-25200
|
6
|
-
703472400:PST:0:-28800
|
7
|
-
110811600:PWT:1:-25200
|
8
|
-
4010400:PPT:1:-25200
|
9
|
-
77418060:PST:0:-28800
|
10
|
-
25311540:PDT:1:-25200
|
11
|
-
41817600:PST:0:-28800
|
12
|
-
12700800:PDT:1:-25200
|
13
|
-
18748800:PST:0:-28800
|
14
|
-
13305600:PDT:1:-25200
|
15
|
-
18144000:PST:0:-28800
|
16
|
-
13305600:PDT:1:-25200
|
17
|
-
18144000:PST:0:-28800
|
18
|
-
13305600:PDT:1:-25200
|
19
|
-
18144000:PST:0:-28800
|
20
|
-
13305600:PDT:1:-25200
|
21
|
-
18144000:PST:0:-28800
|
22
|
-
13305600:PDT:1:-25200
|
23
|
-
18748800:PST:0:-28800
|
24
|
-
13305600:PDT:1:-25200
|
25
|
-
18144000:PST:0:-28800
|
26
|
-
13305600:PDT:1:-25200
|
27
|
-
18144000:PST:0:-28800
|
28
|
-
13305600:PDT:1:-25200
|
29
|
-
18144000:PST:0:-28800
|
30
|
-
13305600:PDT:1:-25200
|
31
|
-
18144000:PST:0:-28800
|
32
|
-
13305600:PDT:1:-25200
|
33
|
-
18748800:PST:0:-28800
|
34
|
-
12700800:PDT:1:-25200
|
35
|
-
18748800:PST:0:-28800
|
36
|
-
15724800:PDT:1:-25200
|
37
|
-
15724800:PST:0:-28800
|
38
|
-
15724800:PDT:1:-25200
|
39
|
-
15724800:PST:0:-28800
|
40
|
-
15724800:PDT:1:-25200
|
41
|
-
15724800:PST:0:-28800
|
42
|
-
16329600:PDT:1:-25200
|
43
|
-
15120000:PST:0:-28800
|
44
|
-
16329600:PDT:1:-25200
|
45
|
-
15728400:PST:0:-28800
|
46
|
-
15721200:PDT:1:-25200
|
47
|
-
15728400:PST:0:-28800
|
48
|
-
15721200:PDT:1:-25200
|
49
|
-
15728400:PST:0:-28800
|
50
|
-
15721200:PDT:1:-25200
|
51
|
-
15728400:PST:0:-28800
|
52
|
-
15721200:PDT:1:-25200
|
53
|
-
15728400:PST:0:-28800
|
54
|
-
16326000:PDT:1:-25200
|
55
|
-
15728400:PST:0:-28800
|
56
|
-
15721200:PDT:1:-25200
|
57
|
-
15728400:PST:0:-28800
|
58
|
-
15721200:PDT:1:-25200
|
59
|
-
6051600:PST:0:-28800
|
60
|
-
25398000:PDT:1:-25200
|
61
|
-
10285200:PST:0:-28800
|
62
|
-
21164400:PDT:1:-25200
|
63
|
-
15728400:PST:0:-28800
|
64
|
-
16326000:PDT:1:-25200
|
65
|
-
15123600:PST:0:-28800
|
66
|
-
16326000:PDT:1:-25200
|
67
|
-
15728400:PST:0:-28800
|
68
|
-
15721200:PDT:1:-25200
|
69
|
-
15728400:PST:0:-28800
|
70
|
-
15721200:PDT:1:-25200
|
71
|
-
15728400:PST:0:-28800
|
72
|
-
15721200:PDT:1:-25200
|
73
|
-
15728400:PST:0:-28800
|
74
|
-
15721200:PDT:1:-25200
|
75
|
-
15728400:PST:0:-28800
|
76
|
-
16326000:PDT:1:-25200
|
77
|
-
15123600:PST:0:-28800
|
78
|
-
16326000:PDT:1:-25200
|
79
|
-
15728400:PST:0:-28800
|
80
|
-
15721200:PDT:1:-25200
|
81
|
-
15728400:PST:0:-28800
|
82
|
-
15721200:PDT:1:-25200
|
83
|
-
15728400:PST:0:-28800
|
84
|
-
15721200:PDT:1:-25200
|
85
|
-
13914000:PST:0:-28800
|
86
|
-
17535600:PDT:1:-25200
|
87
|
-
13914000:PST:0:-28800
|
88
|
-
18140400:PDT:1:-25200
|
89
|
-
13309200:PST:0:-28800
|
90
|
-
18140400:PDT:1:-25200
|
91
|
-
13309200:PST:0:-28800
|
92
|
-
18140400:PDT:1:-25200
|
93
|
-
13914000:PST:0:-28800
|
94
|
-
17535600:PDT:1:-25200
|
95
|
-
13914000:PST:0:-28800
|
96
|
-
17535600:PDT:1:-25200
|
97
|
-
13914000:PST:0:-28800
|
98
|
-
18140400:PDT:1:-25200
|
99
|
-
13309200:PST:0:-28800
|
100
|
-
18140400:PDT:1:-25200
|
101
|
-
13309200:PST:0:-28800
|
102
|
-
18140400:PDT:1:-25200
|
103
|
-
13914000:PST:0:-28800
|
104
|
-
17535600:PDT:1:-25200
|
105
|
-
13914000:PST:0:-28800
|
106
|
-
17535600:PDT:1:-25200
|
107
|
-
13914000:PST:0:-28800
|
108
|
-
17535600:PDT:1:-25200
|
109
|
-
13914000:PST:0:-28800
|
110
|
-
18140400:PDT:1:-25200
|
111
|
-
13309200:PST:0:-28800
|
112
|
-
18140400:PDT:1:-25200
|
113
|
-
13309200:PST:0:-28800
|
114
|
-
18140400:PDT:1:-25200
|
115
|
-
13914000:PST:0:-28800
|
116
|
-
17535600:PDT:1:-25200
|
117
|
-
13914000:PST:0:-28800
|
118
|
-
17535600:PDT:1:-25200
|
119
|
-
13914000:PST:0:-28800
|
120
|
-
18140400:PDT:1:-25200
|
121
|
-
13309200:PST:0:-28800
|
122
|
-
18140400:PDT:1:-25200
|
123
|
-
13309200:PST:0:-28800
|
124
|
-
18140400:PDT:1:-25200
|
125
|
-
11494800:PST:0:-28800
|
126
|
-
20559600:PDT:1:-25200
|
127
|
-
10890000:PST:0:-28800
|
128
|
-
20559600:PDT:1:-25200
|
129
|
-
10890000:PST:0:-28800
|
130
|
-
20559600:PDT:1:-25200
|
131
|
-
11494800:PST:0:-28800
|
132
|
-
20559600:PDT:1:-25200
|
133
|
-
10890000:PST:0:-28800
|
134
|
-
20559600:PDT:1:-25200
|
135
|
-
10890000:PST:0:-28800
|
136
|
-
20559600:PDT:1:-25200
|
137
|
-
10890000:PST:0:-28800
|
138
|
-
20559600:PDT:1:-25200
|
139
|
-
10890000:PST:0:-28800
|
140
|
-
20559600:PDT:1:-25200
|
141
|
-
10890000:PST:0:-28800
|
142
|
-
20559600:PDT:1:-25200
|
143
|
-
11494800:PST:0:-28800
|
144
|
-
20559600:PDT:1:-25200
|
145
|
-
10890000:PST:0:-28800
|
146
|
-
20559600:PDT:1:-25200
|
147
|
-
10890000:PST:0:-28800
|
148
|
-
20559600:PDT:1:-25200
|
149
|
-
10890000:PST:0:-28800
|
150
|
-
20559600:PDT:1:-25200
|
151
|
-
10890000:PST:0:-28800
|
152
|
-
20559600:PDT:1:-25200
|
153
|
-
11494800:PST:0:-28800
|
154
|
-
20559600:PDT:1:-25200
|
155
|
-
10890000:PST:0:-28800
|
156
|
-
20559600:PDT:1:-25200
|
157
|
-
10890000:PST:0:-28800
|
158
|
-
20559600:PDT:1:-25200
|
159
|
-
10890000:PST:0:-28800
|
160
|
-
20559600:PDT:1:-25200
|
161
|
-
10890000:PST:0:-28800
|
162
|
-
20559600:PDT:1:-25200
|
163
|
-
10890000:PST:0:-28800
|
164
|
-
20559600:PDT:1:-25200
|
165
|
-
11494800:PST:0:-28800
|
166
|
-
20559600:PDT:1:-25200
|
167
|
-
10890000:PST:0:-28800
|
168
|
-
20559600:PDT:1:-25200
|
169
|
-
10890000:PST:0:-28800
|
170
|
-
20559600:PDT:1:-25200
|
171
|
-
10890000:PST:0:-28800
|
172
|
-
20559600:PDT:1:-25200
|
173
|
-
10890000:PST:0:-28800
|
174
|
-
20559600:PDT:1:-25200
|
175
|
-
11494800:PST:0:-28800
|
176
|
-
20559600:PDT:1:-25200
|
177
|
-
10890000:PST:0:-28800
|
178
|
-
20559600:PDT:1:-25200
|
179
|
-
10890000:PST:0:-28800
|
180
|
-
20559600:PDT:1:-25200
|
181
|
-
10890000:PST:0:-28800
|
182
|
-
20559600:PDT:1:-25200
|
183
|
-
10890000:PST:0:-28800
|
184
|
-
20559600:PDT:1:-25200
|
185
|
-
10890000:PST:0:-28800
|
186
|
-
20559600:PDT:1:-25200
|
187
|
-
11494800:PST:0:-28800
|
188
|
-
20559600:PDT:1:-25200
|
189
|
-
1:PST:0:-28800
|