class String
Colorize String
class extension.
Borrowed directly from the colorize gem. It hasn't changed in 4 years and I didn't want to add a gem dependency.
Constants
- COLORS
Colors Hash
- MODES
Modes Hash
Public Class Methods
color_matrix(txt = "[X]")
click to toggle source
Display color matrix with color names.
# File lib/colorize.rb, line 180 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
colors()
click to toggle source
Return array of available colors used by colorize method
# File lib/colorize.rb, line 169 def colors keys = [] COLORS.each_key do |key| keys << key end keys end
modes()
click to toggle source
Return array of available modes used by colorize method
# File lib/colorize.rb, line 158 def modes keys = [] MODES.each_key do |key| keys << key end keys end
Public Instance Methods
colorize(params)
click to toggle source
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
rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
# File lib/colorize.rb, line 78 def colorize(params) return self unless STDOUT.isatty begin require "Win32/Console/ANSI" if RUBY_PLATFORM.match?(/win32/) rescue LoadError raise "You must gem install win32console to use colorize on Windows" end color_parameters = {} if params.instance_of?(Hash) color_parameters[:color] = COLORS[params[:color]] color_parameters[:background] = COLORS[params[:background]] color_parameters[:mode] = MODES[params[:mode]] elsif params.instance_of?(Symbol) color_parameters[:color] = COLORS[params] end color_parameters[:color] ||= @color ||= COLORS[:default] color_parameters[:background] ||= @background ||= COLORS[:default] color_parameters[:mode] ||= @mode ||= MODES[:default] color_parameters[:uncolorized] ||= @uncolorized ||= dup # calculate bright mode color_parameters[:color] += 50 if color_parameters[:color] > 10 color_parameters[:background] += 50 if color_parameters[:background] > 10 "\033[#{color_parameters[:mode]};#{color_parameters[:color] + 30};"\ "#{color_parameters[:background] + 40}m#{color_parameters[:uncolorized]}\033[0m"\ .color_parameters(color_parameters) end
colorized?()
click to toggle source
Return true if sting is colorized
# File lib/colorize.rb, line 124 def colorized? !defined?(@uncolorized).nil? end
uncolorize()
click to toggle source
Return uncolorized string
# File lib/colorize.rb, line 117 def uncolorize @uncolorized || self end
Protected Instance Methods
color_parameters(params)
click to toggle source
Set color values in new string intance
# File lib/colorize.rb, line 49 def color_parameters(params) return unless params.instance_of?(Hash) @color = params[:color] @background = params[:background] @mode = params[:mode] @uncolorized = params[:uncolorized] self end