module Colorize::InstanceMethods
Public Instance Methods
Source
# File lib/colorize/instance_methods.rb, line 21 def colorize(params) return self if self.class.disable_colorization scan_for_colors.inject(self.class.new) do |str, match| colors_from_params(match, params) defaults_colors(match) str << colorized_string(match[0], match[1], match[2], match[3]) end end
Change color of string
Examples:
puts "This is blue".colorize(:blue) puts "This is light blue".colorize(:light_blue) puts "This is also blue".colorize(:color => :blue) puts "This is light blue with red background".colorize(:color => :light_blue, :background => :red) puts "This is light blue with red background".colorize(:light_blue ).colorize( :background => :red) puts "This is blue text on red".blue.on_red puts "This is red on blue".colorize(:red).on_blue puts "This is red on blue and underline".colorize(:red).on_blue.underline puts "This is blue text on red".blue.on_red.blink puts "This is uncolorized".blue.on_red.uncolorize
Source
# File lib/colorize/instance_methods.rb, line 43 def colorized? scan_for_colors.inject([]) do |colors, match| colors << match.tap(&:pop) end.flatten.compact.any? end
Return true if string is colorized
Source
# File lib/colorize/instance_methods.rb, line 34 def uncolorize scan_for_colors.inject(self.class.new) do |str, match| str << match[3] end end
Return uncolorized string
Private Instance Methods
Source
# File lib/colorize/instance_methods.rb, line 117 def background_color(color) self.class.color_codes[color] + 10 if self.class.color_codes[color] end
Color for background (offset 10)
Source
# File lib/colorize/instance_methods.rb, line 110 def color(color) self.class.color_codes[color] end
Color for foreground
Source
# File lib/colorize/instance_methods.rb, line 99 def color_from_symbol(match, symbol) if self.class.prevent_colors && color(symbol) match[1] ||= color(symbol) else match[1] = color(symbol) end end
Set color from params symbol
Source
# File lib/colorize/instance_methods.rb, line 54 def colorized_string(mode, color, background_color, previous) if self.class.enable_readline_support "\001\033[#{mode};#{color};#{background_color}m\002#{previous}\001\033[0m\002" else "\033[#{mode};#{color};#{background_color}m#{previous}\033[0m" end end
Generate string with escape colors
Source
# File lib/colorize/instance_methods.rb, line 84 def colors_from_hash(match, hash) if self.class.prevent_colors match[0] ||= mode(hash[:mode]) if mode(hash[:mode]) match[1] ||= color(hash[:color]) if color(hash[:color]) match[2] ||= background_color(hash[:background]) if background_color(hash[:background]) else match[0] = mode(hash[:mode]) if mode(hash[:mode]) match[1] = color(hash[:color]) if color(hash[:color]) match[2] = background_color(hash[:background]) if background_color(hash[:background]) end end
Set colors from params hash
Source
# File lib/colorize/instance_methods.rb, line 74 def colors_from_params(match, params) case params when Hash then colors_from_hash(match, params) when Symbol then color_from_symbol(match, params) end end
Set color from params
Source
# File lib/colorize/instance_methods.rb, line 65 def defaults_colors(match) match[0] ||= mode(:default) match[1] ||= color(:default) match[2] ||= background_color(:default) end
Set default colors
Source
# File lib/colorize/instance_methods.rb, line 124 def mode(mode) self.class.mode_codes[mode] end
Mode
Source
# File lib/colorize/instance_methods.rb, line 160 def require_windows_libs require 'Win32/Console/ANSI' if RUBY_VERSION < '2.0.0' && RUBY_PLATFORM.include?('win32') rescue LoadError raise 'You must gem install win32console to use colorize on Windows' end
Require windows libs
Source
# File lib/colorize/instance_methods.rb, line 142 def scan_for_colors scan(scan_for_colors_regex).map do |match| split_colors(match) end end
Scan for colorized string
Source
# File lib/colorize/instance_methods.rb, line 131 def scan_for_colors_regex if self.class.enable_readline_support /\001?\033\[([0-9;]+)m\002?(.+?)\001?\033\[0m\002?|([^\001\033]+)/m else /\033\[([0-9;]+)m(.+?)\033\[0m|([^\033]+)/m end end
Generate regex for color scanner
Source
# File lib/colorize/instance_methods.rb, line 148 def split_colors(match) colors = (match[0] || '').split(';') array = Array.new(3) array[0], array[1], array[2] = colors if colors.length == 3 array[1] = colors if colors.length == 1 array[3] = match[1] || match[2] array end