timezone 1.3.5 → 1.3.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGES.markdown +20 -0
  4. data/CONTRIBUTING.markdown +8 -2
  5. data/Rakefile +3 -1
  6. data/benchmark.rb +16 -29
  7. data/data/Africa/Algiers +2 -2
  8. data/data/Africa/Casablanca +11 -11
  9. data/data/Africa/El_Aaiun +11 -11
  10. data/data/America/Dawson +2 -38
  11. data/data/America/Detroit +5 -1
  12. data/data/America/Edmonton +1 -5
  13. data/data/America/Indiana/Tell_City +9 -12
  14. data/data/America/Kentucky/Louisville +4 -4
  15. data/data/America/Louisville +4 -4
  16. data/data/America/Nuuk +120 -0
  17. data/data/America/Vancouver +2 -2
  18. data/data/America/Whitehorse +2 -38
  19. data/data/Antarctica/Casey +6 -1
  20. data/data/Antarctica/Macquarie +56 -1
  21. data/data/Asia/Chongqing +3 -1
  22. data/data/Asia/Chungking +3 -1
  23. data/data/Asia/Gaza +41 -41
  24. data/data/Asia/Harbin +3 -1
  25. data/data/Asia/Hebron +41 -41
  26. data/data/Asia/Hong_Kong +1 -1
  27. data/data/Asia/Istanbul +22 -36
  28. data/data/Asia/Seoul +9 -1
  29. data/data/Asia/Shanghai +3 -1
  30. data/data/Canada/Mountain +1 -5
  31. data/data/Canada/Pacific +2 -2
  32. data/data/Canada/Yukon +2 -38
  33. data/data/Europe/Brussels +2 -2
  34. data/data/Europe/Budapest +24 -24
  35. data/data/Europe/Istanbul +22 -36
  36. data/data/Europe/Kaliningrad +6 -5
  37. data/data/Europe/Monaco +3 -3
  38. data/data/Europe/Paris +3 -3
  39. data/data/Europe/Vienna +2 -2
  40. data/data/Hongkong +1 -1
  41. data/data/PRC +3 -1
  42. data/data/Pacific/Fiji +32 -32
  43. data/data/Pacific/Norfolk +42 -3
  44. data/data/ROK +9 -1
  45. data/data/Turkey +22 -36
  46. data/data/US/Michigan +5 -1
  47. data/lib/timezone/parser.rb +28 -14
  48. data/lib/timezone/version.rb +1 -1
  49. data/timezone.gemspec +0 -2
  50. metadata +8 -8
  51. data/data/US/Pacific-New +0 -189
@@ -12,14 +12,12 @@
12
12
  12178800:EEST:1:10800
13
13
  18320400:EET:0:7200
14
14
  13215600:EEST:1:10800
15
- 465354000:EET:0:7200
15
+ 465440400:EET:0:7200
16
16
  8377200:EEST:1:10800
17
- 4928400:EET:0:7200
17
+ 4842000:EET:0:7200
18
18
  25398000:EEST:1:10800
19
19
  16592400:EET:0:7200
20
- 18486000:EEST:1:10800
21
- 76294800:EET:0:7200
22
- 16326000:EEST:1:10800
20
+ 111106800:EEST:1:10800
23
21
  20394000:EET:0:7200
24
22
  10537200:EEST:1:10800
25
23
  17370000:EET:0:7200
@@ -28,44 +26,32 @@
28
26
  14511600:EEST:1:10800
29
27
  16333200:EET:0:7200
30
28
  15116400:EEST:1:10800
31
- 17197200:EET:0:7200
32
- 14857200:EEST:1:10800
33
29
  16938000:EET:0:7200
34
- 14598000:EEST:1:10800
35
- 339814800:EET:0:7200
36
- 7340400:EEST:1:10800
37
- 50547600:EET:0:7200
30
+ 15116400:EEST:1:10800
31
+ 16938000:EET:0:7200
32
+ 14511600:EEST:1:10800
33
+ 339901200:EET:0:7200
34
+ 40777200:EEST:1:10800
35
+ 17110800:EET:0:7200
38
36
  12006000:EEST:1:10800
39
- 176259600:EET:0:7200
40
- 13302000:EEST:1:10800
41
- 18147600:EET:0:7200
42
- 13302000:EEST:1:10800
43
- 18752400:EET:0:7200
44
- 13302000:EEST:1:10800
45
- 20570400:EET:0:7200
46
- 13309200:EEST:1:10800
47
- 12700800:EET:0:7200
48
- 18756000:EEST:1:10800
49
- 12686400:EET:0:7200
50
- 18140400:EEST:1:10800
51
- 18925200:EET:0:7200
52
- 13129200:EEST:1:10800
37
+ 273636000:EET:0:7200
38
+ 13305600:EEST:1:10800
39
+ 12704400:EET:0:7200
40
+ 18745200:EEST:1:10800
41
+ 12013200:EET:0:7200
42
+ 19436400:EEST:1:10800
43
+ 12099600:EET:0:7200
44
+ 19350000:EEST:1:10800
53
45
  13309200:EET:0:7200
54
46
  16930800:EEST:1:10800
55
47
  14518800:EET:0:7200
56
- 16930800:EEST:1:10800
57
- 31532400:+04:1:14400
58
- 15048000:+03:0:10800
59
- 16401600:+04:1:14400
60
- 14443200:+03:0:10800
61
- 17006400:+04:1:14400
62
- 14443200:+03:0:10800
63
- 17006400:+04:1:14400
64
- 25318800:+03:0:10800
48
+ 7592400:EEST:1:10800
49
+ 160538400:+03:0:10800
65
50
  5439600:+04:1:14400
66
- 48906000:+03:0:10800
51
+ 34218000:+03:0:10800
52
+ 14688000:EET:0:7200
67
53
  13910400:EEST:1:10800
68
- 15818400:EET:0:7200
54
+ 15811200:EET:0:7200
69
55
  15724800:EEST:1:10800
70
56
  15724800:EET:0:7200
71
57
  15724800:EEST:1:10800
@@ -5,7 +5,11 @@
5
5
  3999600:EPT:1:-14400
6
6
  81046800:EST:0:-18000
7
7
  13302000:EDT:1:-14400
8
- 775962000:EST:0:-18000
8
+ 590540460:EST:0:-18000
9
+ 11840340:EDT:1:-14400
10
+ 15728400:EST:0:-18000
11
+ 15721200:EDT:1:-14400
12
+ 142131600:EST:0:-18000
9
13
  15721200:EDT:1:-14400
10
14
  6051600:EST:0:-18000
11
15
  25398000:EDT:1:-14400
@@ -11,28 +11,42 @@ module Timezone
11
11
 
12
12
  LINE = /\s*(.+)\s*=\s*(.+)\s*isdst=(\d+)\s*gmtoff=([\+\-]*\d+)/
13
13
 
14
- ZONEINFO_DIR = '/usr/share/zoneinfo'.freeze
14
+ # Bookkeeping files that we do not want to parse.
15
+ IGNORE = ['leapseconds', 'posixrules', 'tzdata.zi'].freeze
15
16
 
16
- attr_reader :zoneinfo
17
-
18
- def initialize(zoneinfo = ZONEINFO_DIR)
19
- @zoneinfo = zoneinfo
17
+ def initialize(root)
18
+ @config = Config.new(root)
20
19
  end
21
20
 
22
21
  def perform
23
22
  FileUtils.rm_rf('data')
24
23
 
25
- Dir["#{zoneinfo}/posix/**/*"].each do |file|
24
+ Dir["#{@config.zoneinfo}/**/*"].each do |file|
26
25
  next if File.directory?(file)
26
+ next if file.end_with?('.tab')
27
+ next if IGNORE.include?(File.basename(file))
27
28
  parse(file)
28
29
  end
29
30
  end
30
31
 
32
+ # Represents a timezone database config.
33
+ class Config
34
+ def initialize(root)
35
+ @root = root
36
+ @zoneinfo = File.join(@root, 'usr/share/zoneinfo')
37
+ @zdump = File.join(@root, 'usr/bin/zdump')
38
+ end
39
+
40
+ attr_reader :root, :zoneinfo, :zdump
41
+ end
42
+
43
+ private_constant :Config
44
+
31
45
  # Represents a single timezone data file line for a reference timezone.
32
46
  class RefLine
33
- def initialize(zone)
47
+ def initialize(config, file)
34
48
  first =
35
- `zdump -i posix/#{zone}`
49
+ `#{config.zdump} -i #{file}`
36
50
  .split("\n")
37
51
  .reject(&:empty?)
38
52
  .reject { |line| line.start_with?('TZ=') }
@@ -85,15 +99,15 @@ module Timezone
85
99
  private
86
100
 
87
101
  def parse(file)
88
- zone = file.gsub("#{zoneinfo}/posix/", '')
102
+ zone = file.gsub("#{@config.zoneinfo}/", '')
89
103
  print "Parsing #{zone}... "
90
- data = zdump(zone)
104
+ data = zdump(file)
91
105
 
92
106
  last = 0
93
107
  result = []
94
108
 
95
109
  data.split("\n").each do |line|
96
- match = line.gsub('posix/' + zone + ' ', '').match(LINE)
110
+ match = line.gsub(/^#{file}\s+/, '').match(LINE)
97
111
  next if match.nil?
98
112
 
99
113
  line = Line.new(match)
@@ -112,14 +126,14 @@ module Timezone
112
126
  result << line
113
127
  end
114
128
 
115
- result << RefLine.new(zone) if result.empty?
129
+ result << RefLine.new(@config, file) if result.empty?
116
130
 
117
131
  write(zone, result)
118
132
  puts 'DONE'
119
133
  end
120
134
 
121
- def zdump(zone)
122
- `zdump -v -c #{MIN_YEAR},#{MAX_YEAR} posix/#{zone}`
135
+ def zdump(file)
136
+ `#{@config.zdump} -v -c #{MIN_YEAR},#{MAX_YEAR} #{file}`
123
137
  end
124
138
 
125
139
  def write(zone, data)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Timezone
4
- VERSION = '1.3.5'.freeze
4
+ VERSION = '1.3.10'.freeze
5
5
  end
@@ -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.5
4
+ version: 1.3.10
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: 2019-07-15 00:00:00.000000000 Z
11
+ date: 2020-11-05 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.0.1
748
- signing_key:
747
+ rubygems_version: 3.1.2
748
+ signing_key:
749
749
  specification_version: 4
750
- summary: timezone-1.3.5
750
+ summary: timezone-1.3.10
751
751
  test_files:
752
752
  - test/data/Helsinki_rules_without_timestamps.json
753
753
  - test/data/asia
@@ -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