class String
Colorize String class extension.
def color_matrix(txt = '[X]')
Display color matrix with color names
def color_matrix(txt = '[X]') size = String.colors.length String.colors.each do |color| String.colors.each do |back| print txt.colorize(:color => color, :background => back) end puts " < #{color}" end String.colors.reverse.each_with_index do |back, index| puts "#{"|".rjust(txt.length)*(size-index)} < #{back}" end '' end
def colorize(params)
puts "This is uncolorized".blue.on_red.uncolorize
puts "This is blue text on red".blue.on_red.blink
puts "This is red on blue and underline".colorize(:red).on_blue.underline
puts "This is red on blue".colorize(:red).on_blue
puts "This is blue text on red".blue.on_red
puts "This is light blue with red background".colorize(:light_blue ).colorize( :background => :red)
puts "This is light blue with red background".colorize(:color => :light_blue, :background => :red)
puts "This is also blue".colorize(:color => :blue)
puts "This is light blue".colorize(:light_blue)
puts "This is blue".colorize(:blue)
Examples:
Change color of string
def colorize(params) begin require 'Win32/Console/ANSI' if RUBY_PLATFORM =~ /win32/ rescue LoadError raise 'You must gem install win32console to use colorize on Windows' end self.scan(REGEXP_PATTERN).inject("") do |str, match| match[0] ||= MODES[:default] match[1] ||= COLORS[:default] + COLOR_OFFSET match[2] ||= COLORS[:default] + BACKGROUND_OFFSET match[3] ||= match[4] if (params.instance_of?(Hash)) match[0] = MODES[params[:mode]] if params[:mode] match[1] = COLORS[params[:color]] + COLOR_OFFSET if params[:color] match[2] = COLORS[params[:background]] + BACKGROUND_OFFSET if params[:background] elsif (params.instance_of?(Symbol)) match[1] = COLORS[params] +COLOR_OFFSET if params end str << "\033[#{match[0]};#{match[1]};#{match[2]}m#{match[3]}\033[0m" end end
def colorized?
Return true if string is colorized
def colorized? self.scan(REGEXP_PATTERN).reject do |match| match.last end.any? end
def colors
Return array of available colors used by colorize method
def colors COLORS.keys end
def modes
Return array of available modes used by colorize method
def modes MODES.keys end
def uncolorize
Return uncolorized string
def uncolorize self.scan(REGEXP_PATTERN).inject("") do |str, match| str << (match[3] || match[4]) end end