class BeerAdvocate::CLI
Attributes
beer_list[RW]
beers[RW]
find_beer[RW]
find_brewery[RW]
find_style[RW]
reviews[RW]
styles[RW]
Public Class Methods
new()
click to toggle source
# File lib/beer_advocate/cli.rb, line 4 def initialize @beer_list = BeerAdvocate::Beer.create_from_collection(BeerAdvocate::Scraper.scrape_list_page) end
Public Instance Methods
beer_table_interaction()
click to toggle source
# File lib/beer_advocate/cli.rb, line 327 def beer_table_interaction show_beers_table show_beer(take_input) end
run()
click to toggle source
# File lib/beer_advocate/cli.rb, line 332 def run welcome welcome_input end
show_beer(beer)
click to toggle source
# File lib/beer_advocate/cli.rb, line 120 def show_beer(beer) @find_beer = @beer_list.find do |listed_beer| listed_beer[:name].downcase == beer.downcase end if @find_beer == nil puts "" puts "Invalid. Please type the beer exactly as it appears in the beer list:".bold show_beer(take_input) end if BeerAdvocate::Scraper.find_url(find_beer[:name_url]) == nil beer_page_details = BeerAdvocate::Scraper.scrape_name_page(find_beer[:name_url]) else beer_page_details = BeerAdvocate::Scraper.find_url_details(find_beer[:name_url]) end @reviews = beer_page_details[:top_reviews] puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "#{find_beer[:name]}".yellow.bold puts " " puts "Brewery: #{find_beer[:brewery]} || Style: #{find_beer[:style]} || ABV: #{find_beer[:abv]} || Score: #{find_beer[:score]} || Review count: #{find_beer[:review_count]}" puts " " puts "1. Top reviews | 2. Brewery details | 3. Style details".light_blue.bold puts "Choose an option above.".yellow.bold puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue show_beer_input end
show_beer_input()
click to toggle source
# File lib/beer_advocate/cli.rb, line 89 def show_beer_input case take_input when "1" @reviews.each do |review| puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "#{review}" puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts " " end puts "Type 'menu':".yellow.bold puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue menu_from_reviews when "2" show_brewery(find_beer[:brewery]) when "3" show_style(find_beer[:style]) else puts "" puts "Invalid. Please type 1-3:".bold show_beer_input end end
show_beers_table()
click to toggle source
# File lib/beer_advocate/cli.rb, line 51 def show_beers_table puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "Choose a range: || 1 - Most popular ".yellow.bold puts " || 250 - Least popular ".yellow.bold puts " " puts "1. 1-50 | 2. 51-100 | 3. 101-150 | 4. 151-200 | 5. 201-250" puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue show_beers_table_input green_beer = "Name".green.bold blue_brewery = "Brewery".light_blue.bold abv = abv = " | ABV | " bold_rating = "Score".red.bold the_rest = " | Review count" complete_beer = green_beer << " | " << blue_brewery << abv << bold_rating << the_rest puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "Type a beer name for more info.".yellow.bold puts complete_beer puts " " puts " " @beers.each do |beer| green_beer1 = "#{beer[:name]}".green.bold blue_brewery1 = "#{beer[:brewery]}".light_blue.bold abv1 = " | #{beer[:abv]} | " bold_rating1 = "#{beer[:score]}".red.bold rest1 = " | #{beer[:review_count]}" complete_beer1 = green_beer1 << " | " << blue_brewery1 << abv1 << bold_rating1 << rest1 puts complete_beer1 puts " " end puts " " puts complete_beer puts "Type a beer name for more info.".yellow.bold puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue end
show_beers_table_input()
click to toggle source
# File lib/beer_advocate/cli.rb, line 32 def show_beers_table_input case take_input when "1" @beers = @beer_list[0..49] when "2" @beers = @beer_list[50..99] when "3" @beers = @beer_list[100..149] when "4" @beers = @beer_list[150..199] when "5" @beers = @beer_list[200..249] else puts "" puts "Invalid. Please type 1-5:".bold show_beers_table_input end end
show_brewery(brewery)
click to toggle source
# File lib/beer_advocate/cli.rb, line 293 def show_brewery(brewery) @find_brewery = @beer_list.find do |listed_beer| listed_beer[:brewery].downcase == brewery.downcase end if find_brewery == nil puts "" puts "Invalid. Please type the brewery exactly as it appears in the beer list:".bold show_brewery(take_input) end if BeerAdvocate::Scraper.find_url(find_brewery[:brewery_url]) == nil brewery_page_details = BeerAdvocate::Scraper.scrape_brewery_page(find_brewery[:brewery_url]) else brewery_page_details = BeerAdvocate::Scraper.find_url_details(find_brewery[:brewery_url]) end puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "#{find_brewery[:brewery]}".yellow.bold puts " " puts "#{brewery_page_details[:type]}" puts " " puts "#{brewery_page_details[:address]}" puts " " puts "#{brewery_page_details[:phone_number]}" puts " " puts "#{brewery_page_details[:website]}" puts " " puts "Press '1' for a list of beers from this brewery.".yellow.bold puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue show_brewery_input end
show_brewery_input()
click to toggle source
# File lib/beer_advocate/cli.rb, line 250 def show_brewery_input case take_input when "1" beers = BeerAdvocate::Brewery.find_brewery(@find_brewery[:brewery]).beers green_beer = "Name".green.bold interlude = " | " bold_style = "Style".red.bold abv = "ABV".bold score = "Score".yellow.bold complete_beer = green_beer << interlude << bold_style << interlude << abv << interlude << score puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "#{find_brewery[:brewery]}".bold puts " " puts "Type a beer name for more info.".yellow.bold puts complete_beer puts " " colored_beers = beers.collect do |beer| green_beer1 = "#{beer.name}".green.bold interlude1 = " | " bold_style1 = "#{beer.style.name}".red.bold abv1 = "#{beer.abv}".bold score1 = "#{beer.score}".yellow.bold complete_beer1 = green_beer1 << interlude1 << bold_style1 << interlude1 << abv1 << interlude1 << score1 complete_beer1 end puts colored_beers.uniq.sort puts " " puts complete_beer puts "Type a beer name for more info.".yellow.bold puts " " puts "#{find_brewery[:brewery]}".bold puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue show_beer(take_input) else puts "" puts "Type '1':".bold show_brewery_input end end
show_style(style)
click to toggle source
# File lib/beer_advocate/cli.rb, line 224 def show_style(style) @find_style = beer_list.find do |listed_beer| listed_beer[:style].downcase == style.downcase end if BeerAdvocate::Scraper.find_url(find_style[:style_url]) == nil style_page_details = BeerAdvocate::Scraper.scrape_style_page(find_style[:style_url]) else style_page_details = BeerAdvocate::Scraper.find_url_details(find_style[:style_url]) end puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "#{find_style[:style]}".yellow.bold puts " " puts "#{style_page_details[:description]}" puts " " puts "#{style_page_details[:abv]}".bold puts "#{style_page_details[:ibu]}".bold puts "#{style_page_details[:glassware]}".bold puts " " puts "Press '1' for a list of beers of this style.".yellow.bold puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue show_style_input end
show_style_input()
click to toggle source
# File lib/beer_advocate/cli.rb, line 180 def show_style_input case take_input when "1" beers = BeerAdvocate::Style.find_style(find_style[:style]).beers green_beer = "Name".green.bold interlude = " | " bold_brewery = "Brewery".red.bold abv = "ABV".bold score = "Score".yellow.bold complete_beer = green_beer << interlude << bold_brewery << interlude << abv << interlude << score puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "#{find_style[:style]}".bold puts " " puts "Type a beer name for more info.".yellow.bold puts complete_beer puts " " new_beers = beers.collect do |beer| green_beer1 = "#{beer.name}".green.bold interlude1 = " | " bold_brewery1 = "#{beer.brewery.name}".red.bold abv1 = "#{beer.abv}".bold score1 = "#{beer.score}".yellow.bold complete_beer1 = green_beer1 << interlude1 << bold_brewery1 << interlude1 << abv1 << interlude1 << score1 complete_beer1 end puts new_beers.uniq.sort puts " " puts complete_beer puts "Type a beer name for more info.".yellow.bold puts " " puts "#{find_style[:style]}".bold puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue show_beer(take_input) else puts "" puts "Type '1':".bold show_style_input end end
show_styles_list()
click to toggle source
# File lib/beer_advocate/cli.rb, line 149 def show_styles_list @styles = @beer_list.collect do |beer| beer[:style] end @styles.uniq! @styles.sort! puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "Type a style number:".yellow.bold puts " " @styles.each do |style| puts "#{styles.index(style) + 1}. #{style}" end puts " " puts "Type a style number:".yellow.bold puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue show_styles_list_input end
show_styles_list_input()
click to toggle source
# File lib/beer_advocate/cli.rb, line 169 def show_styles_list_input numerized_input = take_input.to_i if numerized_input.between?(1, @styles.length) show_style(@styles[numerized_input - 1]) else puts "" puts "Invalid. Please type a style number:".bold show_styles_list_input end end
take_input()
click to toggle source
# File lib/beer_advocate/cli.rb, line 18 def take_input input = gets.strip.downcase if input == "exit" puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue puts "Goodbye!" puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue exit elsif input == "menu" run else input end end
welcome()
click to toggle source
# File lib/beer_advocate/cli.rb, line 8 def welcome puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue beer_advocate_cli_text = "Beer Advocate CLI".yellow.bold puts("Welcome to the " << beer_advocate_cli_text << "! At any time, type 'exit' to quit the program, or 'menu' to return to this menu.") puts " " puts " 1. Browse by beer || 3. Search by beer" puts " 2. Browse by style || 4. Search by brewery" puts " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ".light_blue end
welcome_input()
click to toggle source
# File lib/beer_advocate/cli.rb, line 337 def welcome_input case take_input when "1" beer_table_interaction when "2" show_styles_list when "3" puts "" puts "Type beer name:".bold show_beer(take_input) when "4" puts "" puts "Type brewery name:".bold show_brewery(take_input) else puts "" puts "Invalid. Please type 1-4:".bold welcome_input end end