Module: Kitchen::Color

Defined in:
lib/kitchen/color.rb

Overview

Utility methods to help ouput colorized text in a terminal. The implementation is a compressed mashup of code from the Thor and Foreman projects.

Author:

Constant Summary collapse

ANSI =
{
  :reset => 0, :black => 30, :red => 31, :green => 32, :yellow => 33,
  :blue => 34, :magenta => 35, :cyan => 36, :white => 37,
  :bright_black => 90, :bright_red => 91, :bright_green => 92,
  :bright_yellow => 93, :bright_blue => 94, :bright_magenta => 95,
  :bright_cyan => 96, :bright_white => 97
}.freeze
COLORS =
%w(
  cyan yellow green magenta blue bright_cyan bright_yellow
  bright_green bright_magenta bright_blue
).freeze

Class Method Summary collapse

Class Method Details

.colorize(str, name) ⇒ String

Returns a colorized ansi escaped string with the given color.

Parameters:

  • str (String)

    a string to colorize

  • name (Symbol)

    a valid color representation, taken from Kitchen::Color::ANSI

Returns:

  • (String)

    an ansi escaped string if the color is valid and an unescaped string otherwise



60
61
62
63
# File 'lib/kitchen/color.rb', line 60

def self.colorize(str, name)
  color = escape(name)
  color.empty? ? str : "#{color}#{str}#{escape(:reset)}"
end

.escape(name) ⇒ String

Returns an ansi escaped string representing a color control sequence.

Parameters:

  • name (Symbol)

    a valid color representation, taken from Kitchen::Color::ANSI

Returns:

  • (String)

    an ansi escaped string if the color is valid and an empty string otherwise



47
48
49
50
51
# File 'lib/kitchen/color.rb', line 47

def self.escape(name)
  return "" if name.nil?
  return "" unless ansi = ANSI[name]
  "\e[#{ansi}m"
end