class ProjectEulerCli::CLI

Manages the command line interface for the program.

Public Class Methods

new() click to toggle source
# File lib/project_euler_cli/cli.rb, line 6
def initialize
  @av = ArchiveViewer.new
  @as = ArchiveSearcher.new
end

Public Instance Methods

banner() click to toggle source
main_menu() click to toggle source
page_menu(page) click to toggle source
problem_menu(id) click to toggle source
# File lib/project_euler_cli/cli.rb, line 97
def problem_menu(id)
  @av.display_problem(id)

  puts
  puts "(b)ack e(x)it"

  input = prompt

  if input == 'b'
    if @as.searching
      search_results_menu
    else
      page = Problem.page(id)
      page == 0 ? recent_menu : page_menu(page)
    end
  elsif input == 'x'
    return
  else
    problem_menu(id)
  end
end
prompt() click to toggle source
# File lib/project_euler_cli/cli.rb, line 16
def prompt
  print "e: "
  gets.strip
end
recent_menu() click to toggle source
# File lib/project_euler_cli/cli.rb, line 53
def recent_menu
  @av.display_recent

  puts
  puts "e(x)it"

  input = prompt

  if input.to_i.between?(Problem.total - 9, Problem.total)
    problem_menu(input.to_i)
  elsif input == 'x'
    return
  else
    recent_menu
  end
end
search_menu() click to toggle source
# File lib/project_euler_cli/cli.rb, line 119
def search_menu
  print "search: "

  search_terms = gets.strip
  @as.search(search_terms)
  search_results_menu
end
search_results_menu() click to toggle source
# File lib/project_euler_cli/cli.rb, line 127
def search_results_menu
  @av.display_custom_page(@as.results)

  puts
  puts "(s)earch e(x)it"

  input = prompt

  if @as.results.include?(input.to_i)
    problem_menu(input.to_i)
  elsif input == 's'
    search_menu
  elsif input == 'x'
    @as.searching = false
    return
  else
    search_results_menu
  end
end
start() click to toggle source
# File lib/project_euler_cli/cli.rb, line 11
def start
  banner
  main_menu
end