class VimGolf::CLI::UI
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/vimgolf/ui.rb, line 9 def initialize super @hl = HighLine.new($stdin) end
Public Instance Methods
ask_question(message, options = {})
click to toggle source
# File lib/vimgolf/ui.rb, line 67 def ask_question(message, options = {}) begin message = color_string(message, options[:type]) details = Proc.new do |q| q.readline = !$stdin.tty? end @hl.ask(message, options[:choices] || [], &details) rescue EOFError # be sure to exit, don't loop error "Argh! Forced quit due to EOF error. Please report this problem so we can fix it!" return :quit end end
color_string(str, type)
click to toggle source
# File lib/vimgolf/ui.rb, line 81 def color_string(str, type) @hl.color( str, case type when :info then :green when :warn then :yellow when :error then :red when :debug then :cyan else nil end ) end
debug(name, message = nil)
click to toggle source
# File lib/vimgolf/ui.rb, line 55 def debug(name, message = nil) return unless ENV["DEBUG"] if message message = message.inspect unless message.is_a?(String) say_status name, message, :blue elsif name name = name.inspect unless name.is_a?(String) say name, :cyan end end
error(name, message = nil)
click to toggle source
# File lib/vimgolf/ui.rb, line 14 def error(name, message = nil) begin orig_out, $stdout = $stdout, $stderr if message say_status name, message, :red elsif name say name, :red end ensure $stdout = orig_out end end
info(name, message = nil)
click to toggle source
# File lib/vimgolf/ui.rb, line 35 def info(name, message = nil) if message say_status name, message, :green elsif name say name, :green end end
print_envs(apps, default_env_name = nil, simple = false)
click to toggle source
# File lib/vimgolf/ui.rb, line 94 def print_envs(apps, default_env_name = nil, simple = false) if simple envs = apps.map{ |a| a.environments } envs.flatten.map{|x| x.name}.uniq.each do |env| puts env end else apps.each do |app| puts "#{app.name} (#{app.account.name})" if app.environments.any? app.environments.each do |env| short_name = env.shorten_name_for(app) icount = env.instances_count iname = (icount == 1) ? "instance" : "instances" default_text = env.name == default_env_name ? " [default]" : "" puts " #{short_name}#{default_text} (#{icount} #{iname})" end else puts " (This application is not in any environments; you can make one at #{EY.config.endpoint})" end puts "" end end end
print_exception(e)
click to toggle source
# File lib/vimgolf/ui.rb, line 123 def print_exception(e) if e.message.empty? || (e.message == e.class.to_s) message = nil else message = e.message end if ENV["DEBUG"] error(e.class, message) e.backtrace.each{|l| say(" "*3 + l) } else error(message || e.class.to_s) end end
print_help(table)
click to toggle source
# File lib/vimgolf/ui.rb, line 138 def print_help(table) print_table(table, :ident => 2, :truncate => true, :colwidth => 20) end
print_log(strokes)
click to toggle source
Take list of keystrokes, pretty-print them
# File lib/vimgolf/ui.rb, line 44 def print_log(strokes) strokes.each do |stroke| if stroke.length == 1 # not a special character say stroke, color=nil, force_new_line=false else say stroke, color=:red, force_new_line=false end end say end
set_color(string, *colors)
click to toggle source
Calls superclass method
# File lib/vimgolf/ui.rb, line 142 def set_color(string, *colors) ($stdout.tty? || ENV['THOR_SHELL']) ? super : string end
warn(name, message = nil)
click to toggle source
# File lib/vimgolf/ui.rb, line 27 def warn(name, message = nil) if message say_status name, message, :yellow elsif name say name, :yellow end end