class VimGolfFinder::CLI
Public Class Methods
start(*)
click to toggle source
Calls superclass method
# File lib/vimgolf_finder/cli.rb, line 18 def self.start(*) Thor::Base.shell = VimGolfFinder::CLI::UI super end
Public Instance Methods
list()
click to toggle source
# File lib/vimgolf_finder/cli.rb, line 31 def list order = options[:order] desc = options[:desc] limit = options[:limit].to_i page = options[:page].to_i challenges = VimGolfFinder.parser.fetch_challenges case order when 'title' challenges.sort! { |a, b| b.title <=> a.title } if desc challenges.sort! { |a, b| a.title <=> b.title } if !desc when 'entries' challenges.sort! { |a, b| b.entries <=> a.entries } if desc challenges.sort! { |a, b| a.entries <=> b.entries } if !desc when 'id' challenges.sort! { |a, b| b.id <=> a.id } if desc challenges.sort! { |a, b| a.id <=> b.id } if !desc end challenges = challenges[(limit * (page-1))...(limit * page)] challenges.each_with_index do |challenge, index| challenge.print(index+1) end number = VimGolfFinder.ui.ask 'Choose challenge number.' number = number.to_i if number.instance_of? Fixnum if number < 1 or number > limit VimGolfFinder.ui.error 'Invalid number' return end id = challenges[number-1].id print_challenge(id) play(id) end end
random()
click to toggle source
# File lib/vimgolf_finder/cli.rb, line 70 def random challenges = VimGolfFinder.parser.fetch_challenges challenge = challenges.shuffle.first challenge.print id = challenge.id print_challenge(id) play(id) end
solves()
click to toggle source
# File lib/vimgolf_finder/cli.rb, line 81 def solves challenges = VimGolfFinder.parser.fetch_challenges solved_challenges = [] challenges.each do |challenge| if challenge.solved? solved_challenges << challenge end end solved_challenges.each_with_index do |challenge, index| challenge.print(index+1) end number = VimGolfFinder.ui.ask 'Choose challenge number.' number = number.to_i if number.instance_of? Fixnum if number < 1 or number > solved_challenges.count VimGolfFinder.ui.error 'Invalid number' return end id = challenges[number-1].id print_challenge(id) play(id) end end
Private Instance Methods
play(id)
click to toggle source
# File lib/vimgolf_finder/cli.rb, line 123 def play(id) result = VimGolfFinder.ui.ask 'Do you want to play? (y/n)' if result.eql?('y') || result.eql?('yes') system("vimgolf put #{id}") solves = VimGolfFinder.ui.ask 'Solves? (y/n)' if solves.eql?('y') || solves.eql?('yes') VimGolfFinder::Challenge.solve(id) VimGolfFinder.ui.info "[\u2713] Checked!" end end end
print_challenge(id)
click to toggle source
# File lib/vimgolf_finder/cli.rb, line 110 def print_challenge(id) VimGolfFinder.ui.log '' result = VimGolfFinder.ui.ask 'Open your web browser? (y/n)' if result.eql?('y') || result.eql?('yes') Launchy.open("http://vimgolf.com/challenges/#{id}") else VimGolfFinder.ui.warn 'Waiting...' challenge = VimGolfFinder.parser.get_challenge(id) challenge.print_detail end end