beer_me 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/beer_me.gemspec +1 -1
- data/bin/beer-me +14 -3
- data/lib/beer_me/beer.rb +13 -18
- data/lib/beer_me/cli.rb +11 -17
- data/lib/beer_me/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9a8e3bff05c9bef9bc2de1dd3ce7bc8adc4db8f
|
4
|
+
data.tar.gz: 2ed209f325e0cb6942693b9528480414681c2fa2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ddc650e8b44dbef6efc4ce33dd5f66e24170aee90802777e80552a6a2010ff5f1fe3ced4bfaa6f2814d170ba2f986ffe636791c3944946173395bb4e6585d3f
|
7
|
+
data.tar.gz: abb2dac40ee45dc3edd54e64a663888ce8c9ba69fd87e29deb93c9906b32d6e19d9e6cd7bf3f489282379c8b93562c3f98da8cb1e8f9d21b64c6cb796a3c813f
|
data/beer_me.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ["lguzman@me.com"]
|
11
11
|
|
12
12
|
spec.summary = %q{BeerMe CLI is a gem that gets the Top New Beers of the Month and provides info on the beers}
|
13
|
-
spec.description = %q{
|
13
|
+
spec.description = %q{BeerMe CLI is a gem that gets the Top New Beers of the Month and provides info on the beers}
|
14
14
|
spec.homepage = "http://github.com"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
data/bin/beer-me
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
#shebang
|
2
3
|
|
3
4
|
|
4
5
|
#when first creating the file, we need to give it permission to be executed.
|
@@ -6,10 +7,20 @@
|
|
6
7
|
#To give permission we need to change them using 'chmod +x beer-me' in bin/
|
7
8
|
#puts "Hello World!"
|
8
9
|
|
9
|
-
|
10
|
+
#require is for external
|
10
11
|
require "bundler/setup"
|
11
|
-
|
12
|
+
#require_relative is for internal files. The '..' goes 1 up from the bin
|
13
|
+
require_relative "../lib/beer_me"
|
12
14
|
|
13
15
|
# We do not want the actual CLI in the bin file.
|
14
16
|
# We have a class called CLI that we instaniate and can create a call method that will start the program
|
15
|
-
BeerMe::CLI.new.call
|
17
|
+
BeerMe::CLI.new.call
|
18
|
+
|
19
|
+
#my app code
|
20
|
+
# require 'beer-me'
|
21
|
+
|
22
|
+
# class MyApp::CLI
|
23
|
+
|
24
|
+
# end
|
25
|
+
|
26
|
+
# MyApp::CLI.new
|
data/lib/beer_me/beer.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
class BeerMe::Beer
|
2
|
-
attr_accessor :name
|
2
|
+
attr_accessor :name, :style, :reviews, :score
|
3
3
|
|
4
4
|
#set the inital value of beers to be an empty array that can hold the beers
|
5
5
|
@@beers = []
|
6
6
|
|
7
|
-
def
|
7
|
+
def initialize
|
8
8
|
@@beers << self
|
9
|
-
|
10
9
|
end
|
11
10
|
|
12
11
|
def self.all
|
@@ -14,31 +13,27 @@ class BeerMe::Beer
|
|
14
13
|
end
|
15
14
|
|
16
15
|
def self.scrape_beers_site
|
17
|
-
#
|
16
|
+
#obtains the page from ratebeer as nokogiri elements
|
18
17
|
doc = Nokogiri::HTML(open("https://www.ratebeer.com/Ratings/TopOfTheMonth.asp"))
|
19
18
|
|
20
19
|
#List the beers of the month
|
21
|
-
#Use 'tr' to get
|
20
|
+
#Use 'tr' to get the rows that contains the info for each beer
|
22
21
|
#each row is an array of items
|
23
22
|
#the name of the beer is the [1] element
|
24
23
|
beer_rows = doc.css('tr')
|
25
|
-
|
24
|
+
|
26
25
|
beer_rows.each_with_index do |row, i|
|
27
|
-
beer = BeerMe::Beer.new
|
28
|
-
beer.name = row.css('td')[1].text
|
29
26
|
#since the iteration will bring back the first row and that row has no info we want to skip the first one
|
30
|
-
|
31
|
-
|
32
|
-
|
27
|
+
if i != 0
|
28
|
+
beer = BeerMe::Beer.new
|
29
|
+
beer.name = row.css('td')[1].text
|
30
|
+
beer.style = row.css('td')[4].text
|
31
|
+
beer.reviews = row.css('td')[3].text
|
32
|
+
beer.score = row.css('td')[2].text
|
33
|
+
|
33
34
|
end
|
34
|
-
puts "#{i}. #{beer.name}"
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
|
39
|
-
#scrapes the table and only gets the info from the rows
|
40
|
-
doc = Nokogiri::HTML(open("https://www.ratebeer.com/Ratings/TopOfTheMonth.asp"))
|
41
|
-
|
42
|
-
beer_rows = doc.css("tr")
|
43
|
-
end
|
38
|
+
|
44
39
|
end
|
data/lib/beer_me/cli.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
#CLI Controller
|
2
|
+
require 'pry'
|
2
3
|
|
3
4
|
class BeerMe::CLI
|
4
5
|
|
@@ -10,20 +11,18 @@ class BeerMe::CLI
|
|
10
11
|
puts "******** " + month_title + "*********"
|
11
12
|
puts "*****************************************"
|
12
13
|
puts ""
|
13
|
-
|
14
|
+
BeerMe::Beer.scrape_beers_site
|
14
15
|
list_beers
|
15
16
|
menu
|
16
|
-
beer_info
|
17
17
|
goodbye
|
18
18
|
end
|
19
19
|
|
20
20
|
def list_beers
|
21
|
-
|
21
|
+
BeerMe::Beer.all.each.with_index(1) do |beer,i|
|
22
|
+
puts "#{i}. #{beer.name}"
|
23
|
+
end
|
22
24
|
end
|
23
25
|
|
24
|
-
def beer_info
|
25
|
-
@@info = BeerMe::Beer.scrape_beer_info
|
26
|
-
end
|
27
26
|
|
28
27
|
def menu
|
29
28
|
input = nil
|
@@ -32,16 +31,13 @@ class BeerMe::CLI
|
|
32
31
|
puts "Enter beer number to display Beer Info or type 'list' to see the list again or type 'exit':"
|
33
32
|
input = gets.strip.downcase
|
34
33
|
|
35
|
-
if input.to_i
|
34
|
+
if input.to_i.between?(1, BeerMe::Beer.all.length)
|
36
35
|
#grabs the row based on input number and pulls the info for style, score and review number using nokogiri.
|
37
|
-
|
38
|
-
beer_style = info.css('td')[4].text
|
39
|
-
beer_score = info.css('td')[2].text
|
40
|
-
beer_reviews = info.css('td')[3].text
|
36
|
+
beer = BeerMe::Beer.all[input.to_i - 1]
|
41
37
|
|
42
|
-
puts "Beer Style: #{
|
43
|
-
puts "Beer Score: #{
|
44
|
-
puts "Beer Reviews: #{
|
38
|
+
puts "Beer Style: #{beer.style}"
|
39
|
+
puts "Beer Score: #{beer.score}"
|
40
|
+
puts "Beer Reviews: #{beer.reviews}"
|
45
41
|
|
46
42
|
elsif input == "list"
|
47
43
|
list_beers
|
@@ -49,9 +45,7 @@ class BeerMe::CLI
|
|
49
45
|
elsif input == "exit"
|
50
46
|
|
51
47
|
elsif
|
52
|
-
puts "Please choose a valid number."
|
53
|
-
|
54
|
-
|
48
|
+
puts "Please choose a valid number."
|
55
49
|
end
|
56
50
|
end
|
57
51
|
end
|
data/lib/beer_me/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beer_me
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- leog7one
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -80,7 +80,8 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
description:
|
83
|
+
description: BeerMe CLI is a gem that gets the Top New Beers of the Month and provides
|
84
|
+
info on the beers
|
84
85
|
email:
|
85
86
|
- lguzman@me.com
|
86
87
|
executables: []
|
@@ -125,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
126
|
version: '0'
|
126
127
|
requirements: []
|
127
128
|
rubyforge_project:
|
128
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.5.1
|
129
130
|
signing_key:
|
130
131
|
specification_version: 4
|
131
132
|
summary: BeerMe CLI is a gem that gets the Top New Beers of the Month and provides
|