1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/tool/colorize.rb
nobu 25aec0b835 distinguish pass and fail by highlight [ci skip]
* tool/colorize.rb: remove highlight attribute from "pass" to make
  distinguishable from "fail" by other than red-green colors.

* tool/ifchange: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60179 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-10-14 02:17:07 +00:00

41 lines
995 B
Ruby

# frozen-string-literal: true
class Colorize
def initialize(color = nil)
@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]*)/)] : {}
@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