mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	 25aec0b835
			
		
	
	
		25aec0b835
		
	
	
	
	
		
			
			* 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
		
			
				
	
	
		
			41 lines
		
	
	
	
		
			995 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			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
 |