Module: Colored

Extended by:
Colored
Included in:
Colored
Defined in:
lib/colored.rb

Overview

cute.

>> "this is red".red

>> "this is red with a blue background (read: ugly)".red_on_blue

>> "this is red with an underline".red.underline

>> "this is really bold and really blue".bold.blue

>> Colored.red "This is red" # but this part is mostly untested

Constant Summary collapse

COLORS =
{ 
  'black'   => 30,
  'red'     => 31, 
  'green'   => 32, 
  'yellow'  => 33,
  'blue'    => 34,
  'magenta' => 35,
  'cyan'    => 36,
  'white'   => 37
}
EXTRAS =
{
  'clear'     => 0, 
  'bold'      => 1,
  'underline' => 4,
  'reversed'  => 7
}

Instance Method Summary collapse

Instance Method Details

#color(color_name) ⇒ Object



83
84
85
86
87
88
# File 'lib/colored.rb', line 83

def color(color_name)
  background = color_name.to_s =~ /on_/
  color_name = color_name.to_s.sub('on_', '')
  return unless color_name && COLORS[color_name]
  "\e[#{COLORS[color_name] + (background ? 10 : 0)}m" 
end

#colorize(string, options = {}) ⇒ Object



68
69
70
71
72
# File 'lib/colored.rb', line 68

def colorize(string, options = {})
  colored = [color(options[:foreground]), color("on_#{options[:background]}"), extra(options[:extra])].compact * ''
  colored << string
  colored << extra(:clear)
end

#colorsObject



74
75
76
# File 'lib/colored.rb', line 74

def colors
  @@colors ||= COLORS.keys.sort
end

#extra(extra_name) ⇒ Object



78
79
80
81
# File 'lib/colored.rb', line 78

def extra(extra_name)
  extra_name = extra_name.to_s
  "\e[#{EXTRAS[extra_name]}m" if EXTRAS[extra_name]
end