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