bizratr 0.0.1 → 0.0.2

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.
@@ -1,6 +1,6 @@
1
1
  module BizRatr
2
2
  class Business
3
- attr_accessor :name, :phone, :address, :state, :country, :zip, :twitter, :ids, :checkins, :users, :likes, :ratings, :review_counts, :coords, :city
3
+ attr_accessor :name, :phone, :address, :state, :country, :zip, :twitter, :ids, :checkins, :users, :likes, :ratings, :review_counts, :coords, :city, :categories
4
4
 
5
5
  def initialize(lat, lon, name)
6
6
  @ids = {}
@@ -9,12 +9,13 @@ module BizRatr
9
9
  @likes = {}
10
10
  @ratings = {}
11
11
  @review_counts = {}
12
+ @categories = {}
12
13
  @coords = [lat, lon]
13
14
  @name = name
14
15
  end
15
16
 
16
17
  def to_s
17
- attrs = [:name, :phone, :address, :state, :country, :zip, :twitter, :ids, :checkins, :users, :likes, :ratings, :review_counts, :coords, :city]
18
+ attrs = [:name, :phone, :address, :state, :country, :zip, :twitter, :ids, :checkins, :users, :likes, :ratings, :review_counts, :coords, :city, :categories]
18
19
  args = attrs.map { |k| "#{k.to_s}=#{send(k)}" }.join(", ")
19
20
  "<Business [#{args}]>"
20
21
  end
@@ -54,6 +55,15 @@ module BizRatr
54
55
  @users[connector] = users
55
56
  end
56
57
 
58
+ def add_categories(connector, categories)
59
+ @categories[connector] = categories
60
+ end
61
+
62
+ # Get all categories from all connectors.
63
+ def flattened_categories
64
+ @categories.values.flatten.map { |c| c.downcase }.uniq
65
+ end
66
+
57
67
  def add_likes(connector, likes)
58
68
  @users[connector] = likes
59
69
  end
@@ -88,7 +98,8 @@ module BizRatr
88
98
  end
89
99
 
90
100
  def name_distance_to(other)
91
- Levenshtein::normalized_distance(@name, other.name)
101
+ name = other.is_a?(Business) ? other.name : other
102
+ Levenshtein::normalized_distance(@name, name)
92
103
  end
93
104
 
94
105
  def ==(other)
@@ -29,6 +29,7 @@ module BizRatr
29
29
  def make_business(item)
30
30
  b = Business.new(item.lat, item.lng, item.name)
31
31
  b.add_id(:google_places, item.id)
32
+ b.add_categories(:google_places, item.types)
32
33
  b.phone = item.formatted_phone_number
33
34
  b.city = item.city || item.vicinity.split(',').last
34
35
  b.country = item.country
@@ -56,6 +57,8 @@ module BizRatr
56
57
  def make_business(item)
57
58
  b = Business.new(item['location']['lat'], item['location']['lng'], item['name'])
58
59
  b.add_id(:foursquare, item['id'])
60
+ categories = item.categories.map { |c| [ c.name ] + c.parents }.flatten
61
+ b.add_categories(:foursquare, categories)
59
62
  b.phone = item['contact'].fetch('phone', nil)
60
63
  b.twitter = item['contact'].fetch('twitter', nil)
61
64
  b.state = item['location']['state']
@@ -87,6 +90,7 @@ module BizRatr
87
90
  def make_business(item)
88
91
  b = Business.new(item['location']['coordinate']['latitude'], item['location']['coordinate']['longitude'], item['name'])
89
92
  b.add_id(:yelp, item['id'])
93
+ b.add_categories(:yelp, item['categories'].map(&:first))
90
94
  b.state = item['location']['state_code']
91
95
  b.zip = item['location']['postal_code']
92
96
  b.country = item['location']['country_code']
@@ -120,6 +124,14 @@ module BizRatr
120
124
  }
121
125
  end
122
126
 
127
+ # Search a location (just like search_location) but only return the best
128
+ # matching business (based on name).
129
+ def search_location_strictly(location, name)
130
+ search_location(location, name).inject(nil) { |a,b|
131
+ (a.nil? or b.name_distance_to(name) < a.name_distance_to(name)) ? b : a
132
+ }
133
+ end
134
+
123
135
  private
124
136
  def merge(lists)
125
137
  lists.inject([]) { |o,t| merge_lists(o, t) }
@@ -1,3 +1,3 @@
1
1
  module BizRatr
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bizratr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-09-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: foursquare2
16
- requirement: &70329591509040 !ruby/object:Gem::Requirement
16
+ requirement: &70324969386460 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70329591509040
24
+ version_requirements: *70324969386460
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: yelpster
27
- requirement: &70329591508340 !ruby/object:Gem::Requirement
27
+ requirement: &70324969385780 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70329591508340
35
+ version_requirements: *70324969385780
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: google_places
38
- requirement: &70329591507700 !ruby/object:Gem::Requirement
38
+ requirement: &70324969385140 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70329591507700
46
+ version_requirements: *70324969385140
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: levenshtein
49
- requirement: &70329591507040 !ruby/object:Gem::Requirement
49
+ requirement: &70324969384480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70329591507040
57
+ version_requirements: *70324969384480
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: google_places
60
- requirement: &70329591506420 !ruby/object:Gem::Requirement
60
+ requirement: &70324969383840 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70329591506420
68
+ version_requirements: *70324969383840
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: geocoder
71
- requirement: &70329591505820 !ruby/object:Gem::Requirement
71
+ requirement: &70324969383200 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: '0'
77
77
  type: :runtime
78
78
  prerelease: false
79
- version_requirements: *70329591505820
79
+ version_requirements: *70324969383200
80
80
  description: Get business ratings.
81
81
  email: bamuller@gmail.com
82
82
  executables: []