class TopStockMovers::CLI

Public Instance Methods

call() click to toggle source
# File lib/top_stock_movers/cli.rb, line 3
def call
  list_viewing_options
  list_stocks
  menu
end
goodbye() click to toggle source
# File lib/top_stock_movers/cli.rb, line 108
def goodbye
  puts ""
  puts "Thanks for using top-stock-movers!! Have a good day!"
end
list_stocks() click to toggle source
# File lib/top_stock_movers/cli.rb, line 22
def list_stocks
  puts ""
  puts "Today's Top 25 #{@selection.name} stocks"
  puts "------------------------------"

  #The line below allows me to scrape 7 different url's by changing the url according to the users selection
  TopStockMovers::Scraper.scrape_tradingview(@selection.name.downcase) if TopStockMovers::Stocks.find_by_category(@selection.name.downcase).length == 0
  @stocks = TopStockMovers::Stocks.find_by_category(@selection.name.downcase)
  #This case statement is using the Viewing_options instance originally selected by the user to output
  #the most relevant data per the selection and sorts accordingly. For example "% change" for Gainers, or "volume" for Active
  case @selection.sorter
  when "percent_change-pos"
    @stocks.sort{|a,b| b.percent_change <=> a.percent_change}.each.with_index(1) do |stock, i|
      puts "#{i}. #{stock.percent_change}% - #{stock.ticker_symbol} - #{stock.name}"
      break if i == 25
    end
  when "percent_change-neg"
    @stocks.sort{|a,b| a.percent_change <=> b.percent_change}.each.with_index(1) do |stock, i|
      puts "#{i}. #{stock.percent_change}% - #{stock.ticker_symbol} - #{stock.name}"
      break if i == 25
    end
  when "percent_change-abs"
    @stocks.sort{|a,b| b.percent_change.abs <=> a.percent_change.abs}.each.with_index(1) do |stock, i|
      puts "#{i}. #{stock.percent_change}% - #{stock.ticker_symbol} - #{stock.name}"
      break if i == 25
    end
  when "volume"
    @stocks.sort{|a,b| b.volume <=> a.volume}.each.with_index(1) do |stock, i|
      puts "#{i}. #{stock.volume}M -Vol   #{stock.ticker_symbol} - #{stock.name}"
      break if i == 25
    end
  when "rating"
    @stocks.sort{|a,b| b.rating <=> a.rating}.each.with_index(1) do |stock, i|
      puts "#{i}. #{stock.rating} -Rating - #{stock.percent_change}- #{stock.ticker_symbol} - #{stock.name}"
      break if i == 25
    end
  when "market_cap"
    @stocks.sort{|a,b| b.market_cap <=> a.market_cap}.each.with_index(1) do |stock, i|
      puts "#{i}. #{stock.market_cap}M  -MktCap- #{stock.ticker_symbol} - #{stock.name}"
      break if i == 25
    end
  end
end
list_viewing_options() click to toggle source
# File lib/top_stock_movers/cli.rb, line 11
def list_viewing_options
  puts ""
  puts "How would you like to view today's Stock Market?? please enter corresponding number"
  puts ""
  TopStockMovers::Viewing_options.all.each.with_index(1) do |option, i|
    puts "#{i}. #{option.name} -- #{option.desc}"
  end
  input = gets.strip.to_i - 1
  @selection = TopStockMovers::Viewing_options.all[input]
end
menu() click to toggle source