timezone 1.3.4 → 1.3.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/.travis.yml +1 -0
- data/CHANGES.markdown +23 -0
- data/CONTRIBUTING.markdown +10 -6
- data/Rakefile +3 -1
- data/benchmark.rb +16 -29
- 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/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 +40 -40
- data/data/Asia/Harbin +3 -1
- data/data/Asia/Hebron +40 -40
- data/data/Asia/Hong_Kong +19 -19
- data/data/Asia/Istanbul +22 -36
- data/data/Asia/Seoul +9 -1
- data/data/Asia/Shanghai +3 -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/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/PRC +3 -1
- data/data/Pacific/Fiji +32 -32
- data/data/Pacific/Norfolk +42 -3
- data/data/ROK +9 -1
- data/data/Turkey +22 -36
- 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 -8
- 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.9
|
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-19 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,10 +744,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
744
744
|
- !ruby/object:Gem::Version
|
745
745
|
version: '0'
|
746
746
|
requirements: []
|
747
|
-
rubygems_version: 3.
|
748
|
-
signing_key:
|
747
|
+
rubygems_version: 3.1.2
|
748
|
+
signing_key:
|
749
749
|
specification_version: 4
|
750
|
-
summary: timezone-1.3.
|
750
|
+
summary: timezone-1.3.9
|
751
751
|
test_files:
|
752
752
|
- test/data/Helsinki_rules_without_timestamps.json
|
753
753
|
- test/data/asia
|
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
|