Fast_Food_Nutrition 0.2.1 → 1.2.1

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
  SHA256:
3
- metadata.gz: 55d1cb56a2c7a4fa1e9eb3272758c8e750e0da0cc248e8258e658e8e95e6b613
4
- data.tar.gz: a632a5e64f6f9a2ba2261f03adaf6edc4409626e59941586bbeb7941ab5f8598
3
+ metadata.gz: 01acfb8c515ee8ae9719436e450183cd14b6e438c8fe17955822fabaa0fa738f
4
+ data.tar.gz: cf9f4250606c3eccbe6287cf32c20ed29a9e5c5639984516678cfd20560d1947
5
5
  SHA512:
6
- metadata.gz: 6dc2247d5195d3818abac17c2c0056469532ff920265f6ed7a07d0651175683dbe4dcd068dc2012393becdeaf9d2f25e161fc289b14aa6587b0f4f93c8e8819b
7
- data.tar.gz: 4c9f9c243d45a234a47aaba87ab0715679b2709c6eacac0d84eed30bd7db61f93b124360dfcfda3bed7507a2443aaab762c59103cabd0fcee68fde95cd81016d
6
+ metadata.gz: 4d53b04cbf55d642d24b4446fed918d4c712690be38ffc9fa90046b77395c1623a0c80ed9b61a9163a3644776ba8fb07afa819c2ae907409fe32f7e11c055ea1
7
+ data.tar.gz: 599b8089518e877f46aad9efd6b265aa164a511248f39351d8feb620db7d741f5e3099addf738dbc79e2dd862e56657a3d05095ee871c17bb19c7972eb43a375
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- Fast_Food_Nutrition (0.2.1)
4
+ Fast_Food_Nutrition (1.2.1)
5
5
  nokogiri (~> 1.8, >= 1.8.2)
6
6
  open_uri_redirections (~> 0.2.1)
7
7
 
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require "./lib/Fast_Food_Nutrition"
4
- Welcome.new.intro
4
+ FastFoodNutrition::Welcome.new.intro
@@ -4,3 +4,6 @@ require_relative "./Fast_Food_Nutrition/scraper"
4
4
  require_relative "./Fast_Food_Nutrition/restaurant"
5
5
  require_relative "./Fast_Food_Nutrition/category"
6
6
  require_relative "./Fast_Food_Nutrition/items"
7
+ require 'pry'
8
+ require 'Nokogiri'
9
+ require 'open-uri'
@@ -1,5 +1,5 @@
1
- class Category
2
- attr_accessor :name
1
+ class FastFoodNutrition::Category
2
+ attr_accessor :name, :items
3
3
  @@all = []
4
4
 
5
5
  def initialize(name)
@@ -11,12 +11,4 @@ class Category
11
11
  @@all
12
12
  end
13
13
 
14
- def items=(item_array)
15
- @items = item_array
16
- end
17
-
18
- def items
19
- @items
20
- end
21
-
22
14
  end
@@ -1,4 +1,4 @@
1
- class Welcome
1
+ class FastFoodNutrition::Welcome
2
2
 
3
3
  def intro
4
4
  puts "Welcome To The Fast Food Nutrition Finder"
@@ -8,37 +8,38 @@ class Welcome
8
8
  def list_restaurants
9
9
  selection = 0
10
10
  puts "\nPlease select a Restaurant by number:"
11
- Scraper.new.scrape_site_for_restaurants("http://www.nutrition-charts.com/") if Restaurant.all.size == 0
12
- Restaurant.all.each_with_index {|restaurant, i| puts "#{i + 1}: #{restaurant.name}"}
13
- selection = gets.strip.to_i until selection > 0 && selection <= Restaurant.all.size
14
- puts "\nYou selected #{Restaurant.all[selection - 1].name}"
15
- select_category(Restaurant.all[selection - 1])
11
+ FastFoodNutrition::Scraper.new.scrape_site_for_restaurants("http://www.nutrition-charts.com/") if FastFoodNutrition::Restaurant.all.size == 0
12
+ FastFoodNutrition::Restaurant.all.each_with_index {|restaurant, i| puts "#{i + 1}: #{restaurant.name}"}
13
+ # consider #between?
14
+ selection = gets.strip.to_i until selection.between?(1, FastFoodNutrition::Restaurant.all.size)
15
+ puts "\nYou selected #{FastFoodNutrition::Restaurant.all[selection - 1].name}"
16
+ select_category(FastFoodNutrition::Restaurant.all[selection - 1])
16
17
  end
17
18
 
18
19
  def select_category(restaurant)
19
- restaurant.categories = Scraper.new.scrape_restaurant_categories(restaurant) if !restaurant.categories
20
+ restaurant.categories = FastFoodNutrition::Scraper.new.scrape_restaurant_categories(restaurant) if !restaurant.categories
20
21
  selection = 0
21
22
  puts "\nPlease select a Category of Menu Items:"
22
23
  restaurant.categories.each_with_index {|category, i| puts "#{i + 1}: #{category.name}"}
23
- selection = gets.strip.to_i until selection > 0 && selection <= restaurant.categories.size
24
+ selection = gets.strip.to_i until selection.between?(1, restaurant.categories.size)
24
25
  puts "\nYou selected #{restaurant.categories[selection - 1].name}"
25
26
  select_item(restaurant, selection - 1)
26
27
  end
27
28
 
28
29
  def select_item(restaurant, cat_picked)
29
- restaurant.categories[cat_picked].items = Scraper.new.scrape_category_items(restaurant, cat_picked) if !restaurant.categories[cat_picked].items
30
+ restaurant.categories[cat_picked].items = FastFoodNutrition::Scraper.new.scrape_category_items(restaurant, cat_picked) if !restaurant.categories[cat_picked].items
30
31
  selection = 0
31
32
  puts "\nPlease select an item:"
32
33
  restaurant.categories[cat_picked].items.each_with_index do |item, i|
33
34
  puts "#{i + 1}: #{item.name}"
34
35
  end
35
- selection = gets.strip.to_i until selection > 0 && selection <= restaurant.categories[cat_picked].items.size
36
+ selection = gets.strip.to_i until selection.between?(1, restaurant.categories[cat_picked].items.size)
36
37
  puts "\nYou selected #{restaurant.categories[cat_picked].items[selection - 1].name}"
37
38
  get_nutrition(restaurant, cat_picked, selection - 1)
38
39
  end
39
40
 
40
41
  def get_nutrition(restaurant, cat_picked, item_picked)
41
- restaurant.categories[cat_picked].items[item_picked].nutrition = Scraper.new.scrape_nutrition_info(restaurant, cat_picked, item_picked) if !restaurant.categories[cat_picked].items[item_picked].nutrition
42
+ restaurant.categories[cat_picked].items[item_picked].nutrition = FastFoodNutrition::Scraper.new.scrape_nutrition_info(restaurant, cat_picked, item_picked) if !restaurant.categories[cat_picked].items[item_picked].nutrition
42
43
  puts "\nHere is the nutrition information for #{restaurant.categories[cat_picked].items[item_picked].name}:"
43
44
  restaurant.categories[cat_picked].items[item_picked].nutrition.each do |item|
44
45
  puts " #{item[0]}: #{item[1]}"
@@ -1,5 +1,5 @@
1
- class Item
2
- attr_accessor :name
1
+ class FastFoodNutrition::Item
2
+ attr_accessor :name, :nutrition
3
3
  @@all = []
4
4
 
5
5
  def initialize(name)
@@ -10,12 +10,4 @@ class Item
10
10
  @@all
11
11
  end
12
12
 
13
- def nutrition=(nutrition_array)
14
- @nutrition = nutrition_array
15
- end
16
-
17
- def nutrition
18
- @nutrition
19
- end
20
-
21
13
  end
@@ -1,5 +1,5 @@
1
- class Restaurant
2
- attr_accessor :name, :url
1
+ class FastFoodNutrition::Restaurant
2
+ attr_accessor :name, :url, :categories
3
3
  @@all = []
4
4
  def initialize(name, url)
5
5
  @name = name
@@ -11,14 +11,6 @@ class Restaurant
11
11
  @@all
12
12
  end
13
13
 
14
- def categories=(category_array)
15
- @categories = category_array
16
- end
17
-
18
- def categories
19
- @categories
20
- end
21
-
22
14
  def self.find_restaurant_by_name(name)
23
15
  restaurant = ""
24
16
  self.all.each do |location|
@@ -1,21 +1,11 @@
1
- require 'pry'
2
- require 'Nokogiri'
3
- require 'open-uri'
4
-
5
- class Scraper
1
+ class FastFoodNutrition::Scraper
6
2
  def scrape_site_for_restaurants(url)
7
3
  site = Nokogiri::HTML(open(url))
8
4
  site = site.css("div.entry-content table tbody tr")
9
5
  site.each do |restaurant|
10
- Restaurant.new(restaurant.css("td")[1].css("a").text.strip, "http://www.nutrition-charts.com/#{restaurant.css("td")[1].css("a").attribute("href").value}")
11
- Restaurant.new(restaurant.css("td")[3].css("a").text.strip, "http://www.nutrition-charts.com/#{restaurant.css("td")[3].css("a").attribute("href").value}")
6
+ FastFoodNutrition::Restaurant.new(restaurant.css("td")[1].css("a").text.strip, "http://www.nutrition-charts.com/#{restaurant.css("td")[1].css("a").attribute("href").value}")
7
+ FastFoodNutrition::Restaurant.new(restaurant.css("td")[3].css("a").text.strip, "http://www.nutrition-charts.com/#{restaurant.css("td")[3].css("a").attribute("href").value}")
12
8
  end
13
- # Restaurant.all.each do |location|
14
- # puts "#{location.name}"
15
- # location.categories = scrape_restaurant_categories(location)
16
- # #binding.pry
17
- # end
18
- # binding.pry
19
9
  end
20
10
 
21
11
  def scrape_restaurant_categories(location)
@@ -23,31 +13,17 @@ class Scraper
23
13
  url = "#{location.url}"
24
14
  site = Nokogiri::HTML(open(url))
25
15
  case location.name
26
- when "Burger King"
27
- site = site.css("div table tbody td h3")
28
- site.each do |item|
29
- category = Category.new(item.text)
30
- category_list << category
31
- end
32
- category_list
33
- when "Wendys"
16
+ when "Burger King", "Wendys", "Buffalo Wild Wings", "McDonalds"
34
17
  site = site.css("div table tbody td h3")
35
18
  site.each do |item|
36
- category = Category.new(item.text)
37
- category_list << category
38
- end
39
- category_list
40
- when "Buffalo Wild Wings"
41
- site = site.css("div table tbody td h3")
42
- site.each do |item|
43
- category = Category.new(item.text)
19
+ category = FastFoodNutrition::Category.new(item.text)
44
20
  category_list << category
45
21
  end
46
22
  category_list
47
23
  when "Pizza Hut"
48
24
  site = site.css("div table tbody td strong")
49
25
  site.each do |item|
50
- category = Category.new(item.text)
26
+ category = FastFoodNutrition::Category.new(item.text)
51
27
  category_list << category
52
28
  end
53
29
  category_list
@@ -55,15 +31,14 @@ class Scraper
55
31
  site = site.css("div table tbody")
56
32
  site = site.css("tr.rowheader")
57
33
  site.each do |item|
58
- category = Category.new(item.css("td")[0].text)
34
+ category = FastFoodNutrition::Category.new(item.css("td")[0].text)
59
35
  category_list << category
60
36
  end
61
37
  category_list
62
- when "Baja Fresh" #Still having issues with this one
38
+ when "Baja Fresh"
63
39
  site = site.css("div table tbody tr")
64
40
  site.each do |item|
65
- item.to_s.include?("<th>") ? category = Category.new(item.css("th")[0].text) : ""
66
- #category = Category.new(item.css("th")[0].text)
41
+ item.to_s.include?("<th>") ? category = FastFoodNutrition::Category.new(item.css("th")[0].text) : ""
67
42
  if category
68
43
  category_list << category
69
44
  end
@@ -71,11 +46,11 @@ class Scraper
71
46
  category_list
72
47
  else
73
48
  site = site.css("div table tbody")
74
- category = Category.new(site[0].css("tr")[0].css("th")[0].text)
49
+ category = FastFoodNutrition::Category.new(site[0].css("tr")[0].css("th")[0].text)
75
50
  category_list << category
76
51
  site = site.css("tr.rowheader")
77
52
  site.each do |item|
78
- category = Category.new(item.css("th")[0].text)
53
+ category = FastFoodNutrition::Category.new(item.css("th")[0].text)
79
54
  category_list << category
80
55
  end
81
56
  category_list
@@ -87,24 +62,7 @@ class Scraper
87
62
  url = "#{restaurant.url}"
88
63
  site = Nokogiri::HTML(open(url))
89
64
  case restaurant.name
90
- when "Burger King"
91
- site = site.css("div table tbody tr")
92
- site.each do |item|
93
- if item.to_s.include?("<h3>")
94
- if item.css("h3")[0].text == restaurant.categories[category].name
95
- next_item = item.next_element
96
- begin
97
- if next_item.to_s.include?("<td>") && !next_item.to_s.include?("<span") && !next_item.to_s.include?("header")
98
- item_list << Item.new(next_item.css("td")[0].text)
99
- end
100
- next_item = next_item.next_element
101
- next_item == nil ? next_item = "<h3>" : next_item
102
- end while !next_item.to_s.include?("<h3>")
103
- end
104
- end
105
- end
106
- item_list
107
- when "Wendys"
65
+ when "Burger King", "Wendys", "McDonalds"
108
66
  site = site.css("div table tbody tr")
109
67
  site.each do |item|
110
68
  if item.to_s.include?("<h3>")
@@ -112,7 +70,7 @@ class Scraper
112
70
  next_item = item.next_element
113
71
  begin
114
72
  if next_item.to_s.include?("<td>") && !next_item.to_s.include?("<span") && !next_item.to_s.include?("header")
115
- item_list << Item.new(next_item.css("td")[0].text)
73
+ item_list << FastFoodNutrition::Item.new(next_item.css("td")[0].text)
116
74
  end
117
75
  next_item = next_item.next_element
118
76
  next_item == nil ? next_item = "<h3>" : next_item
@@ -129,7 +87,7 @@ class Scraper
129
87
  next_item = item.next_element
130
88
  begin
131
89
  if next_item.to_s.include?("<td>") && !next_item.to_s.include?("<span") && !next_item.to_s.include?("header") && next_item.css("td")[0].text != " "
132
- item_list << Item.new(next_item.css("td")[0].text)
90
+ item_list << FastFoodNutrition::Item.new(next_item.css("td")[0].text)
133
91
  end
134
92
  next_item = next_item.next_element
135
93
  next_item == nil ? next_item = "<h3>" : next_item
@@ -145,7 +103,7 @@ class Scraper
145
103
  if item.css("strong")[0].text == restaurant.categories[category].name
146
104
  next_item = item.next_element
147
105
  begin
148
- item_list << Item.new(next_item.css("td")[0].text) if !next_item.to_s.include?("<span")
106
+ item_list << FastFoodNutrition::Item.new(next_item.css("td")[0].text) if !next_item.to_s.include?("<span")
149
107
  next_item = next_item.next_element
150
108
  next_item == nil ? next_item = "<strong>" : next_item
151
109
  end while !next_item.to_s.include?("<strong>")
@@ -160,7 +118,7 @@ class Scraper
160
118
  if item.css("td")[0].text == restaurant.categories[category].name
161
119
  next_item = item.next_element
162
120
  begin
163
- item_list << Item.new(next_item.css("td")[0].text) if !next_item.to_s.include?("<span")
121
+ item_list << FastFoodNutrition::Item.new(next_item.css("td")[0].text) if !next_item.to_s.include?("<span")
164
122
  next_item = next_item.next_element
165
123
  next_item == nil ? next_item = "<rowheader>" : next_item
166
124
  end while !next_item.to_s.include?("rowheader")
@@ -175,7 +133,7 @@ class Scraper
175
133
  if item.css("th")[0].text == restaurant.categories[category].name
176
134
  next_item = item.next_element
177
135
  begin
178
- item_list << Item.new(next_item.css("td")[0].text) if !next_item.to_s.include?("<span")
136
+ item_list << FastFoodNutrition::Item.new(next_item.css("td")[0].text) if !next_item.to_s.include?("<span")
179
137
  next_item = next_item.next_element
180
138
  next_item == nil ? next_item = "<th>" : next_item
181
139
  end while !next_item.to_s.include?("<th>")
@@ -205,7 +163,7 @@ class Scraper
205
163
  end
206
164
  end
207
165
  end
208
- end #do
166
+ end
209
167
  nutrition_list.shift
210
168
  nutrition_list
211
169
  when "Pizza Hut"
@@ -222,7 +180,7 @@ class Scraper
222
180
  end
223
181
  end
224
182
  end
225
- end #do
183
+ end
226
184
  nutrition_list.shift
227
185
  nutrition_list
228
186
  else
@@ -239,7 +197,7 @@ class Scraper
239
197
  end
240
198
  end
241
199
  end
242
- end #do
200
+ end
243
201
  nutrition_list.shift
244
202
  nutrition_list
245
203
  end
@@ -1,3 +1,3 @@
1
1
  module FastFoodNutrition
2
- VERSION = "0.2.1"
2
+ VERSION = "1.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Fast_Food_Nutrition
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Hernandez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-06-17 00:00:00.000000000 Z
11
+ date: 2018-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: open_uri_redirections