def colorize(obj, color, mode=nil)
      string = obj.to_s
      return string unless colorize?
      return string unless COLOR_CODES.key?(color)

      result = mode == :bold ? "\e[1;" : "\e[0;"
      result << COLOR_CODES.fetch(color).to_s
      result << ";49m#{string}\e[0m"
    end
def colorize(obj, color, mode=nil)
      string = obj.to_s
      return string unless colorize?
      return string unless COLOR_CODES.key?(color)

      result = mode == :bold ? "\e[1;" : "\e[0;"
      result << COLOR_CODES.fetch(color).to_s
      result << ";49m#{string}\e[0m"
    end
Converts the given obj to string and surrounds in the appropriate ANSI
 color escape sequence, based on the specified color and mode. The color
 must be a symbol (see COLOR_CODES for a complete list).

 If the underlying output does not support ANSI color (see `colorize?),
 the string will be not be colorized. Likewise if the specified color
 symbol is unrecognized, the string will not be colorized.

 Note that the only mode currently support is :bold. All other values
 will be silently ignored (i.e. treated the same as mode=nil).