class Kaizoku::CommandLineInterface

Your code goes here…

Public Instance Methods

exit_screen() click to toggle source
# File lib/kaizoku.rb, line 7
def exit_screen
  puts "Thank you for using Kaizoku!"
  separator
  exit
end
gem_description(subcategory) click to toggle source
# File lib/kaizoku.rb, line 118
def gem_description(subcategory)
  url = "https://www.ruby-toolbox.com" + subcategory[0].css("a").attribute("href").value
  doc = Nokogiri::HTML(open(url))
  doc
end
gem_description_output(doc) click to toggle source
# File lib/kaizoku.rb, line 124
def gem_description_output(doc)
  puts "Here's the gem for the job!"
  puts "  "
  puts "#{pastel.bright_yellow(doc.css(".is-size-4").first.children.text)}"
  puts "  "
  puts "#{pastel.bright_yellow('score: ')}" + doc.css(".score").first.css("span").text
  puts "#{pastel.bright_yellow('description: ')}" + doc.css(".description.column").first.text
  puts "#{pastel.bright_yellow('github: ')}" + doc.css(".links.column").first.css(".button.is-white")[1].attributes["href"].text
  separator
  exit_screen
end
get_category() click to toggle source
# File lib/kaizoku.rb, line 45
def get_category
  doc = Nokogiri::HTML(open("https://www.ruby-toolbox.com"))
  doc.css(".category-group").each do |category|
    puts category.css("h3").text
  end
  get_subcategory_screen
end
get_category_screen() click to toggle source
# File lib/kaizoku.rb, line 29
def get_category_screen
  get_category_validation
end
get_category_validation() click to toggle source
# File lib/kaizoku.rb, line 33
def get_category_validation
  input = gets.chomp
  separator
  if input == "list"
    get_category
  elsif input == "exit"
    exit_screen
  else
    unrecognized_input
  end
end
get_gem_screen() click to toggle source
# File lib/kaizoku.rb, line 91
def get_gem_screen
  separator
  puts "Type the subcategory to see the best gem for that category."
  puts "#{pastel.bright_yellow('back')} - go back to the main screen."
  puts "#{pastel.bright_yellow('exit')} - go quit the app."
  separator
  input = gets.chomp
  separator
  if input == "exit"
    exit_screen
  elsif input == "back"
    greeting_screen
  else
    match_input_with_subcategory(input)
    subcategory = match_input_with_subcategory(input)
    doc = gem_description(subcategory)
    gem_description_output(doc)
  end

end
get_subcategory(input) click to toggle source
# File lib/kaizoku.rb, line 72
def get_subcategory(input)
  separator
  doc = Nokogiri::HTML(open("https://www.ruby-toolbox.com"))
  @subcategories = []
  doc.css(".category-group").each do |category|
    if category.css("h3").text == input
      @category = category
      puts "Here are the #{pastel.bright_yellow('subcategories')}, if any:"
      puts "  "
      category.css(".column.is-half-desktop").each do |subcategory|
        @subcategories << subcategory
        puts subcategory.css("a span").text
      end
      get_gem_screen
    end
  end
end
get_subcategory_screen() click to toggle source
# File lib/kaizoku.rb, line 54
def get_subcategory_screen
  separator
  puts "Please make a selection:"
  puts "  "
  puts "#{pastel.bright_yellow('[category]')} - enter one of the categories see gem subcategories."
  puts "#{pastel.bright_yellow('back')} - go back to the main screen."
  puts "#{pastel.bright_yellow('exit')} - go quit the app."
  separator
  input = gets.chomp
  if input == "exit"
    exit_screen
  elsif input == "back"
    greeting_screen
  else
    get_subcategory(input)
  end
end
greeting_screen() click to toggle source
# File lib/kaizoku.rb, line 19
def greeting_screen
  separator
  puts "Welcome to #{pastel.bright_yellow('Kaizoku')}!"
  puts "                                                      "
  puts "Easily find the best gem for the task at hand."
  puts "Type #{pastel.bright_yellow('list')} to see a list of gem categories."
  separator
  get_category_screen
end
match_input_with_subcategory(input) click to toggle source
# File lib/kaizoku.rb, line 112
def match_input_with_subcategory(input)
  @subcategories.select do |subcategory|
    input == subcategory.css("a span").text
  end
end
pastel() click to toggle source
# File lib/kaizoku.rb, line 136
def pastel
  pastel = Pastel.new
  pastel
end
run() click to toggle source
# File lib/kaizoku.rb, line 148
def run
  greeting_screen
end
separator() click to toggle source
# File lib/kaizoku.rb, line 141
def separator
  pastel
  puts "                                                      "
  puts pastel.bright_magenta("======================================================")
  puts "                                                      "
end
unrecognized_input() click to toggle source
# File lib/kaizoku.rb, line 13
def unrecognized_input
  puts "Input not recognized."
  exit_screen
end