dvb 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3159471c200d6268c8f84cb9d423a0fcb187962
4
- data.tar.gz: f72c473dc742eaa89d36685c342c3adbe313bb42
3
+ metadata.gz: ddd265ca2116093196f9fe128013800e1b0635f1
4
+ data.tar.gz: f6b1382293357803a65b1b586537b78fec89326d
5
5
  SHA512:
6
- metadata.gz: 499459ef0d22a61cdbb841da3e2275048cef45d058e4a87bc75b38b34e6fef54ee90db347174f7532862367d568954626d17c7a241a74993dcd951d67b7a29b4
7
- data.tar.gz: 0301755bd30a18969cf831908d095ae7808004c52538f817e911d4fe184b7ee393a8795eb7e3f7f5732b8756bbd8f01fa68e9d7f82c64c248363d397a790fec0
6
+ metadata.gz: 044a90608b3519ff5f9da371d34f73678506ce7a4677ef5c3a23a9d123f65b0507cb0087c3bbdf8ddbf7663e8ca324e36e89f0549366f92f7bfd020d4183318a
7
+ data.tar.gz: 5fa81b0b095b1233f32cc46485b4a8bb3b28c95a8f4562f210eb4baa2bf1e96a1009659a93142486643511b3ab2567df1db4629bdaee45aaa179bc37175bd23a
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_runtime_dependency 'rest-client', '~> 2.0'
23
+ spec.add_runtime_dependency 'geokit', '~> 1.10'
23
24
 
24
25
  spec.add_development_dependency 'bundler', '~> 1.12'
25
26
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -6,13 +6,18 @@ module DVB
6
6
  search_str.downcase!
7
7
  (stop.name.downcase.include?(search_str) || stop.search_str.downcase.include?(search_str)) && stop.region == region
8
8
  end
9
- # Would theoretically make sense, if priority values weren't so weird...
9
+ # The following would theoretically make sense, if priority values weren't so weird...
10
10
  # all_stops.sort_by { |s| s.priority }.reverse
11
11
  end
12
12
 
13
- # def self.find_near(lat, lng, radius = 500)
14
- # [lat, lng]
15
- # end
13
+ def self.find_near(lat, lng, radius = 500)
14
+ # Unfortunately some stops (exactly 100 of 4480) don't have location data associated with them
15
+ # Filtering those out here, as they're not relevant for location-based searching
16
+ all_stops = load_local_stops.reject { |s| s.lat.nil? || s.lng.nil? }
17
+ all_stops.select do |stop|
18
+ DVB::distance_between(stop.lat, stop.lng, lat, lng) <= radius
19
+ end
20
+ end
16
21
 
17
22
  def self.load_local_stops
18
23
  path = File.expand_path(File.dirname(__FILE__)) + '/VVOStops.json'
@@ -34,7 +39,9 @@ module DVB
34
39
  end
35
40
 
36
41
  def self.with_str_hash(h)
37
- Stop.new(h['id'], h['latitude'].to_f, h['longitude'].to_f, h['name'], h['priority'].to_i, h['region'], h['searchstring'], h['tarif_zones'])
42
+ lat = h['latitude'] == '999.999999' ? nil : h['latitude'].to_f
43
+ lng = h['longitude'] == '999.999999' ? nil : h['longitude'].to_f
44
+ Stop.new(h['id'], lat, lng, h['name'], h['priority'].to_i, h['region'], h['searchstring'], h['tarif_zones'])
38
45
  end
39
46
 
40
47
  def coords
@@ -1,3 +1,6 @@
1
+ require 'geokit'
2
+ Geokit::default_units = :kms
3
+
1
4
  module DVB
2
5
 
3
6
  def self.parse_mode(mode)
@@ -68,6 +71,13 @@ module DVB
68
71
  }
69
72
  end
70
73
 
74
+ def self.distance_between(lat1, lng1, lat2, lng2)
75
+ point1 = Geokit::LatLng.new(lat1, lng1)
76
+ point2 = Geokit::LatLng.new(lat2, lng2)
77
+
78
+ point1.distance_to(point2) * 1000
79
+ end
80
+
71
81
  end
72
82
 
73
83
  class String
@@ -1,3 +1,3 @@
1
1
  module DVB
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dvb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kilian Koeltzsch
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: geokit
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.10'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.10'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement