timezone 1.0.0 → 1.1.0
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/CHANGES.markdown +7 -0
- data/README.markdown +24 -0
- data/data/Africa/Cairo +1001 -1
- data/data/America/Cambridge_Bay +1 -1
- data/data/America/Inuvik +1 -1
- data/data/America/Iqaluit +1 -1
- data/data/America/Pangnirtung +1 -1
- data/data/America/Rankin_Inlet +1 -1
- data/data/America/Resolute +1 -1
- data/data/America/Yellowknife +1 -1
- data/data/Antarctica/Casey +1 -1
- data/data/Antarctica/Davis +2 -2
- data/data/Antarctica/DumontDUrville +2 -2
- data/data/Antarctica/Macquarie +2 -2
- data/data/Antarctica/Mawson +1 -1
- data/data/Antarctica/Palmer +1 -1
- data/data/Antarctica/Rothera +1 -1
- data/data/Antarctica/Syowa +1 -1
- data/data/Antarctica/Troll +1 -1
- data/data/Antarctica/Vostok +1 -1
- data/data/Asia/Baku +2 -2
- data/data/Egypt +1001 -1
- data/data/Indian/Kerguelen +1 -1
- data/lib/timezone/lookup/geonames.rb +12 -1
- data/lib/timezone/lookup/test.rb +6 -1
- data/lib/timezone/version.rb +1 -2
- data/lib/timezone/zone.rb +1 -1
- data/test/mocks/lat_lon_coords_arctic.txt +1 -0
- data/test/mocks/lat_lon_coords_atlantic.txt +1 -0
- data/test/mocks/lat_lon_coords_norfolk.txt +1 -0
- data/test/mocks/lat_lon_coords_wrong_offset.txt +1 -0
- data/test/timezone/lookup/test_geonames.rb +35 -1
- data/test/timezone/lookup/test_test.rb +7 -0
- data/test/timezone/test_mathn_compatibility.rb +11 -0
- data/timezone.gemspec +13 -13
- metadata +14 -4
data/data/Indian/Kerguelen
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
-631152001:
|
1
|
+
-631152001:-00:0:0
|
2
2
|
2066860801:TFT:0:18000
|
@@ -25,7 +25,8 @@ module Timezone
|
|
25
25
|
|
26
26
|
data = JSON.parse(response.body)
|
27
27
|
|
28
|
-
|
28
|
+
timezone_id = get_timezone_id(data)
|
29
|
+
return timezone_id if timezone_id
|
29
30
|
|
30
31
|
return unless data['status']
|
31
32
|
|
@@ -36,6 +37,16 @@ module Timezone
|
|
36
37
|
|
37
38
|
private
|
38
39
|
|
40
|
+
def get_timezone_id(data)
|
41
|
+
return data['timezoneId'] if data['timezoneId']
|
42
|
+
|
43
|
+
if config.offset_etc_zones && data['gmtOffset']
|
44
|
+
return unless data['gmtOffset'].is_a? Numeric
|
45
|
+
return 'Etc/UTC' if data['gmtOffset'] == 0
|
46
|
+
"Etc/GMT#{format('%+d', -data['gmtOffset'])}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
39
50
|
def url(lat, long)
|
40
51
|
query = URI.encode_www_form(
|
41
52
|
'lat' => lat,
|
data/lib/timezone/lookup/test.rb
CHANGED
@@ -7,15 +7,20 @@ module Timezone
|
|
7
7
|
class Test < ::Timezone::Lookup::Basic
|
8
8
|
def initialize(_config)
|
9
9
|
@stubs = {}
|
10
|
+
@default_stub = nil
|
10
11
|
end
|
11
12
|
|
12
13
|
def stub(lat, long, timezone)
|
13
14
|
@stubs[key(lat, long)] = timezone
|
14
15
|
end
|
15
16
|
|
17
|
+
def default(timezone)
|
18
|
+
@default_stub = timezone
|
19
|
+
end
|
20
|
+
|
16
21
|
def lookup(lat, long)
|
17
22
|
@stubs.fetch(key(lat, long)) do
|
18
|
-
raise
|
23
|
+
@default_stub || raise(::Timezone::Error::Test, 'missing stub')
|
19
24
|
end
|
20
25
|
end
|
21
26
|
|
data/lib/timezone/version.rb
CHANGED
data/lib/timezone/zone.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
{"rawOffset":3,"dstOffset":0,"gmtOffset":3,"lng":40,"lat":89}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"rawOffset":0,"dstOffset":0,"gmtOffset":0,"lng":0,"lat":0}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"rawOffset":11.5,"dstOffset":0,"gmtOffset":11.5,"lng":167,"lat":-29}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"rawOffset":11.5,"dstOffset":0,"gmtOffset":"n/a","lng":167,"lat":-29}
|
@@ -9,10 +9,19 @@ class TestGeonames < ::Minitest::Test
|
|
9
9
|
[-34.92771808058, 138.477041423321]
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
12
|
+
def etc_data
|
13
|
+
{
|
14
|
+
arctic: { coordinates: [89, 40], name: 'Etc/GMT-3' },
|
15
|
+
atlantic: { coordinates: [0, 0], name: 'Etc/UTC' },
|
16
|
+
norfolk: { coordinates: [-29, 167], name: 'Etc/GMT-11' }
|
17
|
+
}
|
18
|
+
end
|
19
|
+
|
20
|
+
def lookup(&_block)
|
13
21
|
config = OpenStruct.new
|
14
22
|
config.username = 'timezone'
|
15
23
|
config.request_handler = HTTPTestClient
|
24
|
+
yield config if block_given?
|
16
25
|
|
17
26
|
Timezone::Lookup::Geonames.new(config)
|
18
27
|
end
|
@@ -35,6 +44,31 @@ class TestGeonames < ::Minitest::Test
|
|
35
44
|
assert_equal 'Australia/Adelaide', mine.lookup(*coordinates)
|
36
45
|
end
|
37
46
|
|
47
|
+
def test_lookup_with_etc
|
48
|
+
etc_data.each do |key, data|
|
49
|
+
mine = lookup { |c| c.offset_etc_zones = true }
|
50
|
+
mine.client.body = File.open(
|
51
|
+
mock_path + "/lat_lon_coords_#{key}.txt"
|
52
|
+
).read
|
53
|
+
|
54
|
+
assert_equal data[:name], mine.lookup(*data[:coordinates])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_wrong_offset
|
59
|
+
mine = lookup { |c| c.offset_etc_zones = true }
|
60
|
+
mine.client.body = File.open(
|
61
|
+
mock_path + '/lat_lon_coords_wrong_offset.txt'
|
62
|
+
).read
|
63
|
+
|
64
|
+
assert_nil mine.lookup(*coordinates)
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_lookup_etc_without_option
|
68
|
+
mine = lookup
|
69
|
+
assert_nil mine.lookup(*etc_data[:atlantic][:coordinates])
|
70
|
+
end
|
71
|
+
|
38
72
|
def assert_exception(lookup, message)
|
39
73
|
exception = false
|
40
74
|
|
data/timezone.gemspec
CHANGED
@@ -3,27 +3,27 @@ $:.push File.expand_path('../lib', __FILE__)
|
|
3
3
|
require 'timezone/version'
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name
|
7
|
-
s.version
|
8
|
-
s.platform
|
9
|
-
s.authors
|
10
|
-
s.email
|
11
|
-
s.homepage
|
12
|
-
|
13
|
-
s.
|
14
|
-
s.license = 'MIT'
|
6
|
+
s.name = 'timezone'
|
7
|
+
s.version = Timezone::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ['Pan Thomakos']
|
10
|
+
s.email = ['pan.thomakos@gmail.com']
|
11
|
+
s.homepage = 'https://github.com/panthomakos/timezone'
|
12
|
+
s.summary = "timezone-#{Timezone::VERSION}"
|
13
|
+
s.license = 'MIT'
|
15
14
|
s.description = 'Accurate current and historical timezones for Ruby with ' \
|
16
15
|
'support for Geonames and Google latitude - longitude lookups.'
|
17
16
|
|
18
17
|
s.rubyforge_project = 'timezone'
|
19
18
|
|
20
|
-
s.files
|
21
|
-
s.test_files
|
19
|
+
s.files = `git ls-files`.split("\n")
|
20
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
22
21
|
s.executables = `git ls-files -- bin/*`
|
23
22
|
.split("\n").map { |f| File.basename(f) }
|
23
|
+
|
24
24
|
s.extra_rdoc_files = ['README.markdown', 'License.txt']
|
25
|
-
s.rdoc_options
|
26
|
-
s.require_paths
|
25
|
+
s.rdoc_options = ['--charset=UTF-8']
|
26
|
+
s.require_paths = ['lib']
|
27
27
|
|
28
28
|
s.add_development_dependency('rake')
|
29
29
|
s.add_development_dependency('minitest', '~> 5.8')
|
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.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pan Thomakos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -698,6 +698,10 @@ files:
|
|
698
698
|
- test/mocks/invalid_latlong.json
|
699
699
|
- test/mocks/invalid_parameter.json
|
700
700
|
- test/mocks/lat_lon_coords.txt
|
701
|
+
- test/mocks/lat_lon_coords_arctic.txt
|
702
|
+
- test/mocks/lat_lon_coords_atlantic.txt
|
703
|
+
- test/mocks/lat_lon_coords_norfolk.txt
|
704
|
+
- test/mocks/lat_lon_coords_wrong_offset.txt
|
701
705
|
- test/test_timezone.rb
|
702
706
|
- test/timezone/lookup/test_basic.rb
|
703
707
|
- test/timezone/lookup/test_geonames.rb
|
@@ -706,10 +710,11 @@ files:
|
|
706
710
|
- test/timezone/test_deprecate.rb
|
707
711
|
- test/timezone/test_loader.rb
|
708
712
|
- test/timezone/test_lookup.rb
|
713
|
+
- test/timezone/test_mathn_compatibility.rb
|
709
714
|
- test/timezone/test_nil_zone.rb
|
710
715
|
- test/timezone/test_zone.rb
|
711
716
|
- timezone.gemspec
|
712
|
-
homepage:
|
717
|
+
homepage: https://github.com/panthomakos/timezone
|
713
718
|
licenses:
|
714
719
|
- MIT
|
715
720
|
metadata: {}
|
@@ -733,7 +738,7 @@ rubyforge_project: timezone
|
|
733
738
|
rubygems_version: 2.4.5.1
|
734
739
|
signing_key:
|
735
740
|
specification_version: 4
|
736
|
-
summary: timezone-1.
|
741
|
+
summary: timezone-1.1.0
|
737
742
|
test_files:
|
738
743
|
- test/data/Helsinki_rules_without_timestamps.json
|
739
744
|
- test/data/asia
|
@@ -744,6 +749,10 @@ test_files:
|
|
744
749
|
- test/mocks/invalid_latlong.json
|
745
750
|
- test/mocks/invalid_parameter.json
|
746
751
|
- test/mocks/lat_lon_coords.txt
|
752
|
+
- test/mocks/lat_lon_coords_arctic.txt
|
753
|
+
- test/mocks/lat_lon_coords_atlantic.txt
|
754
|
+
- test/mocks/lat_lon_coords_norfolk.txt
|
755
|
+
- test/mocks/lat_lon_coords_wrong_offset.txt
|
747
756
|
- test/test_timezone.rb
|
748
757
|
- test/timezone/lookup/test_basic.rb
|
749
758
|
- test/timezone/lookup/test_geonames.rb
|
@@ -752,6 +761,7 @@ test_files:
|
|
752
761
|
- test/timezone/test_deprecate.rb
|
753
762
|
- test/timezone/test_loader.rb
|
754
763
|
- test/timezone/test_lookup.rb
|
764
|
+
- test/timezone/test_mathn_compatibility.rb
|
755
765
|
- test/timezone/test_nil_zone.rb
|
756
766
|
- test/timezone/test_zone.rb
|
757
767
|
has_rdoc:
|