timezone 1.3.5 → 1.3.10

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