module RetroCasts

Constants

VERSION

Public Class Methods

start(klass: RetroCasts::RailsCasts) click to toggle source
# File lib/retro_casts.rb, line 16
def self.start(klass: RetroCasts::RailsCasts)
  retro_welcome
  welcome

  if !ARGV.empty?
    site = klass.new(search: ARGV.join(" "))
  else
    site ||= klass.new
  end

  message = ""
  exit_all_loops = false

  loop do
    break if exit_all_loops

    display("#" * 50)
    site.list_episodes

    puts "*** #{message} ***" unless message == ""
    message = ""

    puts "Please select an option..."
    puts "Episodes: 1 to #{site.episodes.length}  | home | search {search terms} | next | back | exit"
    print ">"
    input = $stdin.gets.chomp.split(" ")
    command = input.shift
    argument = input.join(" ")

    if integer?(command) && site.episode?(command.to_i)
      loop do
        episode = site.episode(command.to_i)
        site.show_episode_detail(command.to_i)

        puts "Type 'back' to go back, 'open' to open the episode in your browser, or 'exit' to exit."
        print ">"

        case $stdin.gets.chomp.downcase
        when "exit"
          exit_all_loops = true
          break
        when "back"
          break
        when "open"
          `open #{episode.link}`
        else
          puts "Please choose 'back' or 'open'."
          print ">"
        end
      end
    elsif command == nil
      message = "Enter is not a valid selection."
    else
      case command.downcase
      when "home"
        puts "Going back to the homepage..."
        site.get_search(nil)
      when "search"
        puts "Searching for \"#{argument}\"..."
        site.get_search(argument)
      when "next"
        puts "Opening page #{site.page + 1}..."
        site.next_page
      when "back"
        puts "Opening page #{site.page - 1}..."
        site.prev_page
      when "exit"
        break
      else
        message = "#{command} is not a valid selection."
      end
    end
  end
end

Private Class Methods

integer?(number) click to toggle source
# File lib/retro_casts.rb, line 92
def self.integer?(number)
  begin
    Integer(number)
    true
  rescue
    false
  end
end