class StarWarsComics::CLI

Public Instance Methods

call() click to toggle source
# File lib/star-wars-comics/cli.rb, line 2
def call
  start
end
get_input(picking, min, max) click to toggle source
# File lib/star-wars-comics/cli.rb, line 188
def get_input(picking, min, max)
  puts "\nPick #{picking}--please enter by number or name. Type \"back\" to go back or \"exit\" to quit."

  loop do
    input = gets.strip

    if input.downcase == "exit" || input.downcase == "quit"
      exit
    elsif input.to_i.between?(min, max)
      return input.to_i
    elsif !input.match(/0+/) && input.to_i == 0
      return input
    else
      puts "Please enter a name, a number between #{min} and #{max}, or type \"exit.\""
    end
  end
end
list_all_artists() click to toggle source
# File lib/star-wars-comics/cli.rb, line 135
def list_all_artists
  puts " _____________________________________________________________________________ "
  puts "|:..                                                             ``:::%%%%%%HH|"
  puts "|%%%:::::..          C o m i c    B o o k    A r t i s t s          `:::::%%%%|"
  puts "|HH%%%%%:::::.....______________________________________________________::::::|\n\n"
  puts "Downloading all artist info. This could take a while..."

  StarWarsComics::Series.all.each do |series|
    StarWarsComics::Scraper.scrape_issues(series) if series.issues.empty?
  end

  StarWarsComics::Artist.sort_alpha

  puts "Done! Listing...\n\n"
  sleep(2)

  StarWarsComics::Artist.all.each_with_index do |artist, i|
    puts "#{i+1}. #{artist.name}"
  end

  loop do
    input = get_input("an artist", 1, StarWarsComics::Artist.all.length)

    if input.class == Fixnum
      show_info_for_artist(StarWarsComics::Artist.find(input))
      list_all_artists
      break
    elsif input == "back"
      break
    elsif StarWarsComics::Artist.find_by_name(input) != nil
      show_info_for_artist(StarWarsComics::Artist.find_by_name(input))
      list_all_artists
      break
    else
      puts "Could not find an artist with that name. Please try again!"
      sleep(1)
    end
  end

end
list_all_series() click to toggle source
# File lib/star-wars-comics/cli.rb, line 53
def list_all_series
  puts " _____________________________________________________________________________ "
  puts "|:..                                                             ``:::%%%%%%HH|"
  puts "|%%%:::::..           C o m i c    B o o k    S e r i e s           `:::::%%%%|"
  puts "|HH%%%%%:::::.....______________________________________________________::::::|\n\n"

  sleep(1)

  StarWarsComics::Series.all.each_with_index do |series, i|
    puts "#{i+1}. #{series.name}"
  end

  loop do
    input = get_input("a series", 1, StarWarsComics::Series.all.length)

    if input.class == Fixnum
      list_issues_for_series(StarWarsComics::Series.find(input))
      list_all_series
      break
    elsif input == "back"
      break
    elsif StarWarsComics::Series.find_by_name(input) != nil
      list_issues_for_series(StarWarsComics::Series.find_by_name(input))
      list_all_series
      break
    else
      puts "Could not find a series with that name. Please try again!"
      sleep(1)
    end
  end

end
list_issues_for_series(series) click to toggle source
# File lib/star-wars-comics/cli.rb, line 86
def list_issues_for_series(series)
  if series.issues.empty?
    puts "\nGetting issues for #{series.name}..."
    StarWarsComics::Scraper.scrape_issues(series)
    puts "Done! Listing...\n\n"
    sleep(2)
  end

  put_title(series.name)

  series.issues.each_with_index do |issue, i|
    puts "#{i+1}. #{issue.name}"
  end

  loop do
    input = get_input("an issue", 1, series.issues.length)

    if input.class == Fixnum
      show_info_for_issue(series.issues[input-1])
      list_issues_for_series(series)
      break
    elsif input == "back"
      break
    elsif StarWarsComics::Issue.find_by_name(input)
      show_info_for_issue(StarWarsComics::Issue.find_by_name(input))
      list_issues_for_series(series)
      break
    else
      puts "\nCould not find an issue with that name. Please try again!"
      sleep(1)
    end
  end

end
put_title(title) click to toggle source
# File lib/star-wars-comics/cli.rb, line 206
def put_title(title)
  puts " ______________________________________________________________________"
  puts "|:..                                                      ``:::%%%%%%HH|"
  puts "|%%%:::::.." +              title.center(50)              + "`:::::%%%%|"
  puts "|HH%%%%%:::::....._______________________________________________::::::|\n\n"
end
show_info_for_artist(artist) click to toggle source
# File lib/star-wars-comics/cli.rb, line 176
def show_info_for_artist(artist)
  puts "Artist: #{artist.name}"
  puts "  Artist type: #{artist.class}".gsub("StarWarsComics::Artists::", "")
  puts "  Issues:"

  artist.issues.each {|issue| puts "    #{issue.name}"}

  puts "\nPress \[Enter\] to return to the previous menu."
  gets
end
show_info_for_issue(issue) click to toggle source
# File lib/star-wars-comics/cli.rb, line 121
def show_info_for_issue(issue)
  puts "\nIssue: #{issue.name}"
  puts "  Series: #{issue.series.name}"
  puts "  Publication date: #{issue.pub_date}"
  puts "  Pages: #{issue.pages}"
  puts "  Artists:"
  puts "    Writer: #{issue.writer.name if issue.writer}"
  puts "    Penciller: #{issue.penciller.name if issue.penciller}"
  puts "    Letterer: #{issue.letterer.name if issue.letterer}"
  puts "    Colorist: #{issue.colorist.name if issue.colorist}"
  puts "\nPress \[Enter\] to return to the previous menu."
  gets
end
start() click to toggle source
# File lib/star-wars-comics/cli.rb, line 6
def start
  puts "    .           .        .                     .        .            ."
  puts "              .               .    .          .              .   .         ."
  puts "                _________________      ____         __________"
  puts "  .       .    /                 |    /    \\    .  |          \\"
  puts "      .       /    ______   _____| . /      \\      |    ___    |     .     ."
  puts "              \\    \\    |   |       /   /\\   \\     |   |___>   |"
  puts "            .  \\    \\   |   |      /   /__\\   \\  . |         _/               ."
  puts "  .     ________>    |  |   | .   /            \\   |   |\\    \\_______    ."
  puts "       |            /   |   |    /    ______    \\  |   | \\           |"
  puts "       |___________/    |___|   /____/      \\____\\ |___|  \\__________|    ."
  puts "   .     ____    __  . _____   ____      .  __________   .  _________"
  puts "        \\    \\  /  \\  /    /  /    \\       |          \\    /         |      ."
  puts "         \\    \\/    \\/    /  /      \\      |    ___    |  /    ______|  ."
  puts "          \\              /  /   /\\   \\ .   |   |___>   |  \\    \\"
  puts "    .      \\            /  /   /__\\   \\    |         _/.   \\    \\            +"
  puts "            \\    /\\    /  /            \\   |   |\\    \\______>    |   ."
  puts "             \\  /  \\  /  /    ______    \\  |   | \\              /          ."
  puts "  .       .   \\/    \\/  /____/      \\____\\ |___|  \\____________/  LS"
  puts "                                .                                        ."
  puts "      .                           .         .               .                 ."
  puts "                 .                                   .            ."

  puts "Welcome to Star Wars Comics! Getting all the series..."
  StarWarsComics::Series.all
  puts "Done!"

  loop do
    puts "\nWould you like to list series (fast) or by artist (will need additional download)?"
    puts "Or, type \"exit\" to quit."
    input = gets.strip
    input.downcase!

    if input == "exit" || input == "quit"
      exit
    elsif input.include?("series")
      list_all_series
    elsif input.include?("artist")
      list_all_artists
    else
      puts "\nPlease enter \"series,\" \"artist,\" or \"exit.\""
      sleep(2)
    end
  end

end