nearest_time_zone_jruby 0.0.3
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 +7 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/Gemfile +4 -0
- data/Guardfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +44 -0
- data/Rakefile +19 -0
- data/data/cities.txt +134119 -0
- data/data/time_zones.txt +388 -0
- data/lib/nearest_time_zone.rb +16 -0
- data/lib/nearest_time_zone/city.rb +69 -0
- data/lib/nearest_time_zone/time_zone.rb +38 -0
- data/lib/nearest_time_zone/version.rb +3 -0
- data/nearest_time_zone.gemspec +34 -0
- data/spec/city_spec.rb +46 -0
- data/spec/nearest_time_zone_spec.rb +13 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/time_zone_spec.rb +20 -0
- metadata +223 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
module NearestTimeZone
|
2
|
+
class TimeZone
|
3
|
+
|
4
|
+
attr_accessor :id, :name
|
5
|
+
|
6
|
+
def initialize(id, name)
|
7
|
+
self.id, self.name = id, name
|
8
|
+
end
|
9
|
+
|
10
|
+
def id=(value)
|
11
|
+
@id = value.to_i
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.all
|
15
|
+
@all ||= load_all
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.find(id)
|
19
|
+
all[id.to_i]
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def self.load_all
|
25
|
+
begin
|
26
|
+
Marshal.load(File.read(File.expand_path("../../../data/time_zones.dump", __FILE__)))
|
27
|
+
rescue
|
28
|
+
time_zones = CSV.open(File.expand_path("../../../data/time_zones.txt", __FILE__))
|
29
|
+
Hash[
|
30
|
+
time_zones.collect do |time_zone|
|
31
|
+
[time_zone[0].to_i, NearestTimeZone::TimeZone.new(time_zone[0].to_i, time_zone[1])]
|
32
|
+
end
|
33
|
+
]
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'nearest_time_zone/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "nearest_time_zone_jruby"
|
8
|
+
spec.version = NearestTimeZone::VERSION
|
9
|
+
spec.authors = ["Sean Devine", "Benjamen Brescka", "Chason Choate"]
|
10
|
+
spec.email = ["benjamen.brescka@digitalreasoning.com", "chason.choate@digitalreasoning.com"]
|
11
|
+
spec.description = %q{Quickly find the name of a time zone for a latitude and longitude without relying on a web service.}
|
12
|
+
spec.summary = %q{Quickly find the name of a time zone for a latitude and longitude without relying on a web service.}
|
13
|
+
spec.homepage = "https://github.com/digitalreasoning/nearest_time_zone"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_development_dependency "guard"
|
25
|
+
spec.add_development_dependency "guard-rspec"
|
26
|
+
spec.add_development_dependency "terminal-notifier-guard"
|
27
|
+
spec.add_development_dependency "rb-fsevent", '~> 0.9.1'
|
28
|
+
spec.add_development_dependency "ruby-debug" if RUBY_PLATFORM == 'java'
|
29
|
+
spec.add_development_dependency "debugger" if not RUBY_PLATFORM == 'java'
|
30
|
+
|
31
|
+
spec.add_dependency "require_all"
|
32
|
+
spec.add_dependency "geokdtree"
|
33
|
+
spec.add_dependency "andand"
|
34
|
+
end
|
data/spec/city_spec.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module NearestTimeZone
|
4
|
+
describe City do
|
5
|
+
|
6
|
+
let(:id) { 321123 }
|
7
|
+
let(:latitude) { 12 }
|
8
|
+
let(:longitude) { 21 }
|
9
|
+
let(:time_zone_id) { 4 }
|
10
|
+
subject { City.new(id, latitude, longitude, time_zone_id) }
|
11
|
+
|
12
|
+
it "should have the right latitude" do
|
13
|
+
subject.latitude.should == latitude
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should have the right longitude" do
|
17
|
+
subject.longitude.should == longitude
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should have the right time zone id" do
|
21
|
+
subject.time_zone_id.should == time_zone_id
|
22
|
+
end
|
23
|
+
|
24
|
+
it "the class should have a kdtree method" do
|
25
|
+
City.kdtree.should be_a_kind_of Geokdtree::Tree
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should expose all the cities as a hash with the id as the key" do
|
29
|
+
City.all.first[0].should be_a_kind_of Integer
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should have a nearest method that finds the right city" do
|
33
|
+
City.nearest(37.2,68.9).should == City.find(220)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should have a time zone" do
|
37
|
+
City.all.first[1].time_zone.should be_a_kind_of TimeZone
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should ask for the right time zone" do
|
41
|
+
city = City.all.first[1]
|
42
|
+
TimeZone.should_receive(:find).with(city.time_zone_id)
|
43
|
+
city.time_zone
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe NearestTimeZone do
|
4
|
+
|
5
|
+
it "should have the method to" do
|
6
|
+
expect { NearestTimeZone.to(1, 3) }.to_not raise_error
|
7
|
+
end
|
8
|
+
|
9
|
+
it "should find the time zone name nearest to coordinates" do
|
10
|
+
NearestTimeZone.to(41.8500, -87.6500).should == "America/Chicago"
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
|
4
|
+
require 'nearest_time_zone'
|
5
|
+
|
6
|
+
RSpec.configure do |config|
|
7
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
8
|
+
config.run_all_when_everything_filtered = true
|
9
|
+
config.filter_run :focus
|
10
|
+
config.order = 'random'
|
11
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module NearestTimeZone
|
4
|
+
describe TimeZone do
|
5
|
+
|
6
|
+
it "should expose all of the time zones with a hash with ids as keys" do
|
7
|
+
TimeZone.all.first[0].should be_a_kind_of Integer
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should expose all of the time zones as a hash with time zone objects as values" do
|
11
|
+
TimeZone.all.first[1].should be_a_kind_of TimeZone
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should have the class method find that returns the right time zone" do
|
15
|
+
id = TimeZone.all.first[0]
|
16
|
+
TimeZone.find(id).should == TimeZone.all.first[1]
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,223 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nearest_time_zone_jruby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Sean Devine
|
8
|
+
- Benjamen Brescka
|
9
|
+
- Chason Choate
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2014-11-08 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bundler
|
17
|
+
version_requirements: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
requirement: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
prerelease: false
|
28
|
+
type: :development
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rake
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
prerelease: false
|
42
|
+
type: :development
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: rspec
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
requirement: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
prerelease: false
|
56
|
+
type: :development
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: guard
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
prerelease: false
|
70
|
+
type: :development
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: guard-rspec
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
requirement: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
prerelease: false
|
84
|
+
type: :development
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: terminal-notifier-guard
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
prerelease: false
|
98
|
+
type: :development
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: rb-fsevent
|
101
|
+
version_requirements: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ~>
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: 0.9.1
|
106
|
+
requirement: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ~>
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.9.1
|
111
|
+
prerelease: false
|
112
|
+
type: :development
|
113
|
+
- !ruby/object:Gem::Dependency
|
114
|
+
name: ruby-debug
|
115
|
+
version_requirements: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
requirement: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
prerelease: false
|
126
|
+
type: :development
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: require_all
|
129
|
+
version_requirements: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
requirement: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
prerelease: false
|
140
|
+
type: :runtime
|
141
|
+
- !ruby/object:Gem::Dependency
|
142
|
+
name: geokdtree
|
143
|
+
version_requirements: !ruby/object:Gem::Requirement
|
144
|
+
requirements:
|
145
|
+
- - '>='
|
146
|
+
- !ruby/object:Gem::Version
|
147
|
+
version: '0'
|
148
|
+
requirement: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
prerelease: false
|
154
|
+
type: :runtime
|
155
|
+
- !ruby/object:Gem::Dependency
|
156
|
+
name: andand
|
157
|
+
version_requirements: !ruby/object:Gem::Requirement
|
158
|
+
requirements:
|
159
|
+
- - '>='
|
160
|
+
- !ruby/object:Gem::Version
|
161
|
+
version: '0'
|
162
|
+
requirement: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
prerelease: false
|
168
|
+
type: :runtime
|
169
|
+
description: Quickly find the name of a time zone for a latitude and longitude without relying on a web service.
|
170
|
+
email:
|
171
|
+
- benjamen.brescka@digitalreasoning.com
|
172
|
+
- chason.choate@digitalreasoning.com
|
173
|
+
executables: []
|
174
|
+
extensions: []
|
175
|
+
extra_rdoc_files: []
|
176
|
+
files:
|
177
|
+
- .gitignore
|
178
|
+
- .rspec
|
179
|
+
- Gemfile
|
180
|
+
- Guardfile
|
181
|
+
- LICENSE.txt
|
182
|
+
- README.md
|
183
|
+
- Rakefile
|
184
|
+
- data/cities.txt
|
185
|
+
- data/time_zones.txt
|
186
|
+
- lib/nearest_time_zone.rb
|
187
|
+
- lib/nearest_time_zone/city.rb
|
188
|
+
- lib/nearest_time_zone/time_zone.rb
|
189
|
+
- lib/nearest_time_zone/version.rb
|
190
|
+
- nearest_time_zone.gemspec
|
191
|
+
- spec/city_spec.rb
|
192
|
+
- spec/nearest_time_zone_spec.rb
|
193
|
+
- spec/spec_helper.rb
|
194
|
+
- spec/time_zone_spec.rb
|
195
|
+
homepage: https://github.com/digitalreasoning/nearest_time_zone
|
196
|
+
licenses:
|
197
|
+
- MIT
|
198
|
+
metadata: {}
|
199
|
+
post_install_message:
|
200
|
+
rdoc_options: []
|
201
|
+
require_paths:
|
202
|
+
- lib
|
203
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
204
|
+
requirements:
|
205
|
+
- - '>='
|
206
|
+
- !ruby/object:Gem::Version
|
207
|
+
version: '0'
|
208
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
209
|
+
requirements:
|
210
|
+
- - '>='
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: '0'
|
213
|
+
requirements: []
|
214
|
+
rubyforge_project:
|
215
|
+
rubygems_version: 2.1.9
|
216
|
+
signing_key:
|
217
|
+
specification_version: 4
|
218
|
+
summary: Quickly find the name of a time zone for a latitude and longitude without relying on a web service.
|
219
|
+
test_files:
|
220
|
+
- spec/city_spec.rb
|
221
|
+
- spec/nearest_time_zone_spec.rb
|
222
|
+
- spec/spec_helper.rb
|
223
|
+
- spec/time_zone_spec.rb
|