class BrewerySearch::CLI

Constants

VALID_STATES

Public Instance Methods

breweries_by_city() click to toggle source

will return a list of breweries in the specified city

# File lib/brewery_search/cli.rb, line 79
def breweries_by_city
    city_input = nil
    puts "Please enter the name of the city you would like to filter by:"
    city_input = gets.strip.downcase.split.map{|word| word.capitalize}.join(' ')
    
    @last_search = BrewerySearch::Brewery.find_by_city(city_input)

    puts "Displaying results:"
    @last_search.each.with_index {|brewery, index| puts "#{index + 1}. #{brewery.name} -- #{brewery.city}, #{brewery.state} -- #{brewery.type != "" ? brewery.type : "N/A" }"}

    self.menu
end
ind_brewery_info(brewery) click to toggle source

returns an info sheet for a given brewery

# File lib/brewery_search/cli.rb, line 139
def ind_brewery_info(brewery)
    puts "\n*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*"
    puts "Brewery Name: #{brewery.name}"
    puts "Brewery Address: #{brewery.address != nil ? brewery.address : "N/A"}"
    puts "Brewery Location: #{brewery.city}, #{brewery.state}"
    puts "Brewery Phone #: #{brewery.phone != nil ? brewery.phone : "N/A"}"
    puts "Brewery Type: #{brewery.type != "" ? brewery.type : "N/A" }"
    puts "Brewery Website: #{brewery.website != nil ? brewery.website : "N/A" }"
    puts "Brewery Facebook: #{brewery.facebook != nil ? brewery.facebook : "N/A" }"
    puts "Brewery Twitter: #{brewery.twitter != nil ? brewery.twitter : "N/A" }"
    puts "Brewery Instagram: #{brewery.instagram != nil ? brewery.instagram : "N/A" }"
    puts "Brewery Youtube: #{brewery.youtube != nil ? brewery.youtube  : "N/A" }"
    puts ""
    puts "Brewery Overview: #{brewery.overview.strip}"
    puts "*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*"
    puts "\nYou can say 'Website', 'Facebook', 'Twitter', 'Instagram', or"
    puts "'Youtube' to visit the page. Otherwise say 'menu' if you'd like"
    puts "to return, or 'exit' if you'd like to quit."
end
list_breweries(state_input) click to toggle source

it will return a list of breweries from the state specified by the user, in alphabetical order by Brewery name

# File lib/brewery_search/cli.rb, line 64
def list_breweries(state_input)
    #checking to ensure we have not already scraped the state being searched
    if BrewerySearch::Brewery.find_by_state(state_input) != []
        @last_search = BrewerySearch::Brewery.find_by_state(state_input)
    else 
        BrewerySearch::Scraper.scrape_state(state_input)
        @last_search = BrewerySearch::Brewery.find_by_state(state_input)
    end

    puts "Displaying results:"
    puts ""
    @last_search.each.with_index {|brewery, index| puts "#{index + 1}. #{brewery.name} -- #{brewery.city}, #{brewery.state} -- #{brewery.type != "" ? brewery.type : "N/A" }"}
end
menu() click to toggle source

creates flow for allowing user to select a specific brewery and obtain additional info or take other actions

quit() click to toggle source

it will terminate the program if the user so chooses

# File lib/brewery_search/cli.rb, line 160
def quit
    puts "Thank you for using Brewery Search. Have a great day!"
    exit
end
start() click to toggle source
# File lib/brewery_search/cli.rb, line 44
def start
    puts "Please enter the abbreviation for the state you'd like to search:"
    
    @last_searched_state = gets.strip.upcase
  
    if VALID_STATES.include?(@last_searched_state)
        self.list_breweries(@last_searched_state)
    elsif @last_searched_state.downcase == "exit"
        self.quit
    elsif @last_searched_state.downcase == "brewbound"
        Launchy.open("https://www.brewbound.com/")
        self.start
    else
        puts "Invalid entry received."
        self.start
    end
  self.menu    
end
welcome_screen() click to toggle source

launches the CLI and greets the user with a welcome screen, prompts user to enter a state to search

# File lib/brewery_search/cli.rb, line 10
def welcome_screen
    puts "*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*"
    puts "AL                      ..,,,,,,...   .. .. .  ..                MT"     
    puts "AK                      (#                       *               NE"
    puts "AZ                      ,#   .','.'.'.'.'.'.'.   ,               NV"
    puts "AR                      .,,.,.............    ,.,                NH"
    puts "CA                      ,******,,,,,,,,,,,....***@,     /        NJ"
    puts "CO                      ,/((#(#%##%####((///*,(((&               NM"    
    puts "CT  Welcome             *((#(#############(((/((/#     ,,.  *    NY"
    puts "DE                      *(((###############(((((//       *.      NC"
    puts "FL     to               *((((#######%#####(((/((/(       .,. *   ND"
    puts "GA                      *((((#############(((/((//        ,. (   OH"
    puts "HI    Brewery           */((##############((((((/*        *. ,   OK"
    puts "ID                      *((((#############(((/((/*        *. (   OR"  
    puts "IL      Search          *(((##############((((((/*        *. .   PA"  
    puts "IN                      *(((###############(((((/*        *. (   RI" 
    puts "IA                      /(((###############(((((/*        ,. *   SC"
    puts "KA                      /((########%%%#%###(((((/*        ,. /   SD"
    puts "KY                      /((######%%%%%%%####((#(/*        *,.*   TN" 
    puts "LA                      /(#####%%%%%%%%%%###((#(/*       *. /    TX"
    puts "ME                      /(####%%%%%%%%%%%###((#(%/      ,.. .    UT"
    puts "MD                      .((###%%%%%%%%%%%%%###(#(@ ......        VT"
    puts "MA                      .((###%%%%%%%%%%%%%###(#(@ ....  .       VA" 
    puts "MI                      ,(###%%%%%%%%%%%%%%###(##/               WA"
    puts "MN                      ,.*#//%/###(#(##(#//.  ,,/               WV"
    puts "MS                      , ./***             ,,,*./               WI"
    puts "MO                      , /..             .**...//               WY"
    puts "*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*"
    puts "*     All information contained is referenced from BrewBound.     *"
    puts "*                Type 'BrewBound' to visit them!                  *"
    puts "*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*"
    self.start
end