more color support for UI

This commit is contained in:
stereobooster 2011-06-20 05:26:44 -07:00
parent e4514ab298
commit 3464d59cb7

View File

@ -1,5 +1,24 @@
module Guard module Guard
module UI module UI
ANSI_ESCAPE_BLACK = "30"
ANSI_ESCAPE_RED = "31"
ANSI_ESCAPE_GREEN = "32"
ANSI_ESCAPE_YELLOW = "33"
ANSI_ESCAPE_BLUE = "34"
ANSI_ESCAPE_MAGENTA = "35"
ANSI_ESCAPE_CYAN = "36"
ANSI_ESCAPE_WHITE = "37"
ANSI_ESCAPE_BGBLACK = "40"
ANSI_ESCAPE_BGRED = "41"
ANSI_ESCAPE_BGGREEN = "42"
ANSI_ESCAPE_BGYELLOW = "43"
ANSI_ESCAPE_BGBLUE = "44"
ANSI_ESCAPE_BGMAGENTA = "45"
ANSI_ESCAPE_BGCYAN = "46"
ANSI_ESCAPE_BGWHITE = "47"
class << self class << self
color_enabled = nil color_enabled = nil
@ -7,14 +26,14 @@ module Guard
def info(message, options = {}) def info(message, options = {})
unless ENV["GUARD_ENV"] == "test" unless ENV["GUARD_ENV"] == "test"
reset_line if options[:reset] reset_line if options[:reset]
puts reset_color(message) if message != '' puts color(message) if message != ''
end end
end end
def error(message, options = {}) def error(message, options = {})
unless ENV["GUARD_ENV"] == "test" unless ENV["GUARD_ENV"] == "test"
reset_line if options[:reset] reset_line if options[:reset]
puts "#{color('ERROR:', ';31')} #{message}" puts color('ERROR:', :red) + message
end end
end end
@ -35,11 +54,22 @@ module Guard
private private
# @deprecated
def reset_color(text) def reset_color(text)
color(text, "") color(text, "")
end end
def color(text, color_code) def color(text, *color_options)
color_code = ""
color_options.each do |color_option|
color_option = color_option.to_s
if color_option != ""
if !(color_option =~ /\d+/)
color_option = const_get("ANSI_ESCAPE_#{color_option.upcase}")
end
color_code += ";" + color_option
end
end
color_enabled? ? "\e[0#{color_code}m#{text}\e[0m" : text color_enabled? ? "\e[0#{color_code}m#{text}\e[0m" : text
end end