mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Put colorize to library directory.
Same as 66299e7ca83d379d13abaa5411f3e0419334cabb
This commit is contained in:
parent
0a711b0edf
commit
e8ddbc0239
7 changed files with 6 additions and 6 deletions
50
tool/lib/colorize.rb
Normal file
50
tool/lib/colorize.rb
Normal file
|
@ -0,0 +1,50 @@
|
|||
# frozen-string-literal: true
|
||||
|
||||
class Colorize
|
||||
def initialize(color = nil, opts = ((_, color = color, nil)[0] if Hash === color))
|
||||
@colors = @reset = nil
|
||||
if color or (color == nil && STDOUT.tty?)
|
||||
if (/\A\e\[.*m\z/ =~ IO.popen("tput smso", "r", :err => IO::NULL, &:read) rescue nil)
|
||||
@beg = "\e["
|
||||
colors = (colors = ENV['TEST_COLORS']) ? Hash[colors.scan(/(\w+)=([^:\n]*)/)] : {}
|
||||
if opts and colors_file = opts[:colors_file]
|
||||
begin
|
||||
File.read(colors_file).scan(/(\w+)=([^:\n]*)/) do |n, c|
|
||||
colors[n] ||= c
|
||||
end
|
||||
rescue Errno::ENOENT
|
||||
end
|
||||
end
|
||||
@colors = colors
|
||||
@reset = "#{@beg}m"
|
||||
end
|
||||
end
|
||||
self
|
||||
end
|
||||
|
||||
DEFAULTS = {
|
||||
"pass"=>"32", "fail"=>"31;1", "skip"=>"33;1",
|
||||
"black"=>"30", "red"=>"31", "green"=>"32", "yellow"=>"33",
|
||||
"blue"=>"34", "magenta"=>"35", "cyan"=>"36", "white"=>"37",
|
||||
}
|
||||
|
||||
def decorate(str, name)
|
||||
if @colors and color = (@colors[name] || DEFAULTS[name])
|
||||
"#{@beg}#{color}m#{str}#{@reset}"
|
||||
else
|
||||
str
|
||||
end
|
||||
end
|
||||
|
||||
DEFAULTS.each_key do |name|
|
||||
define_method(name) {|str|
|
||||
decorate(str, name)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
if $0 == __FILE__
|
||||
colorize = Colorize.new
|
||||
col = ARGV.shift
|
||||
ARGV.each {|str| puts colorize.decorate(str, col)}
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue