class Jigit::Informator
This class is heavily based on the Interviewer class from the Danger gem The original link is github.com/danger/danger/blob/master/lib/danger/commands/init_helpers/interviewer.rb
Attributes
no_delay[RW]
no_waiting[RW]
ui[RW]
Public Class Methods
new(cork_board)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 9 def initialize(cork_board) @ui = cork_board end
Public Instance Methods
ask(question)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 60 def ask(question) STDIN.reopen(File.open("/dev/tty", "r")) answer = "" loop do ui.puts "\n#{question}?" show_prompt answer = STDIN.gets.chomp break unless answer.empty? ui.print "\nYou need to provide an answer." end answer end
ask_with_answers(question, possible_answers, is_numerated = false)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 77 def ask_with_answers(question, possible_answers, is_numerated = false) STDIN.reopen(File.open("/dev/tty", "r")) ui.print("\n#{question}? [") possible_answers_to_print = is_numerated ? possible_answers.map.with_index { |answer, index| "#{index}. #{answer}" } : possible_answers print_possible_answers(possible_answers_to_print) answer = "" loop do show_prompt answer = read_answer(possible_answers) if is_numerated numerated_answer = begin Integer(answer) rescue break end break if numerated_answer < 0 && possible_answers.count <= numerated_answer answer = possible_answers[numerated_answer] end break if possible_answers.include? answer ui.print "\nPossible answers are [" print_possible_answers(possible_answers) end answer end
error(message)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 50 def error(message) ui.puts(message.red) end
header(title)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 33 def header(title) say title.yellow say "" pause 0.6 end
important(message)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 39 def important(message) i = message.length + 8 inform("-" * i) inform("--- " + message + " ---") inform("-" * i) end
inform(message)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 21 def inform(message) ui.puts(message.green) end
link(url)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 25 def link(url) say " -> " + url.underline + "\n" end
pause(time)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 29 def pause(time) sleep(time) unless @no_waiting end
say(message)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 17 def say(message) ui.puts(message) end
show_prompt()
click to toggle source
# File lib/jigit/helpers/informator.rb, line 13 def show_prompt ui.print("> ".bold.green) end
wait_for_return()
click to toggle source
# File lib/jigit/helpers/informator.rb, line 54 def wait_for_return STDOUT.flush STDIN.gets unless @no_delay ui.puts end
warn(message)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 46 def warn(message) ui.puts(message.yellow) end
Private Instance Methods
print_possible_answers(possible_answers)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 122 def print_possible_answers(possible_answers) possible_answers.each_with_index do |answer, i| the_answer = i.zero? ? answer.underline : answer ui.print " " + the_answer ui.print(" /") if i != possible_answers.length - 1 end ui.print " ]\n" end
read_answer(possible_answers)
click to toggle source
# File lib/jigit/helpers/informator.rb, line 108 def read_answer(possible_answers) answer = @no_waiting ? possible_answers[0] : STDIN.gets answer = answer.chomp unless answer.nil? answer = "yes" if answer == "y" answer = "no" if answer == "n" # default to first answer if answer == "" answer = possible_answers[0] ui.puts "Using: " + answer.yellow end answer end