123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- # ==========================================
- # Unity Project - A Test Framework for C
- # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
- # [Released under MIT License. Please refer to license.txt for details]
- # ==========================================
- if RUBY_PLATFORM =~ /(win|w)32$/
- begin
- require 'Win32API'
- rescue LoadError
- puts 'ERROR! "Win32API" library not found'
- puts '"Win32API" is required for colour on a windows machine'
- puts ' try => "gem install Win32API" on the command line'
- puts
- end
- # puts
- # puts 'Windows Environment Detected...'
- # puts 'Win32API Library Found.'
- # puts
- end
- class ColourCommandLine
- def initialize
- return unless RUBY_PLATFORM =~ /(win|w)32$/
- get_std_handle = Win32API.new('kernel32', 'GetStdHandle', ['L'], 'L')
- @set_console_txt_attrb =
- Win32API.new('kernel32', 'SetConsoleTextAttribute', %w(L N), 'I')
- @hout = get_std_handle.call(-11)
- end
- def change_to(new_colour)
- if RUBY_PLATFORM =~ /(win|w)32$/
- @set_console_txt_attrb.call(@hout, win32_colour(new_colour))
- else
- "\033[30;#{posix_colour(new_colour)};22m"
- end
- end
- def win32_colour(colour)
- case colour
- when :black then 0
- when :dark_blue then 1
- when :dark_green then 2
- when :dark_cyan then 3
- when :dark_red then 4
- when :dark_purple then 5
- when :dark_yellow, :narrative then 6
- when :default_white, :default, :dark_white then 7
- when :silver then 8
- when :blue then 9
- when :green, :success then 10
- when :cyan, :output then 11
- when :red, :failure then 12
- when :purple then 13
- when :yellow then 14
- when :white then 15
- else
- 0
- end
- end
- def posix_colour(colour)
- # ANSI Escape Codes - Foreground colors
- # | Code | Color |
- # | 39 | Default foreground color |
- # | 30 | Black |
- # | 31 | Red |
- # | 32 | Green |
- # | 33 | Yellow |
- # | 34 | Blue |
- # | 35 | Magenta |
- # | 36 | Cyan |
- # | 37 | Light gray |
- # | 90 | Dark gray |
- # | 91 | Light red |
- # | 92 | Light green |
- # | 93 | Light yellow |
- # | 94 | Light blue |
- # | 95 | Light magenta |
- # | 96 | Light cyan |
- # | 97 | White |
- case colour
- when :black then 30
- when :red, :failure then 31
- when :green, :success then 32
- when :yellow then 33
- when :blue, :narrative then 34
- when :purple, :magenta then 35
- when :cyan, :output then 36
- when :white, :default_white then 37
- when :default then 39
- else
- 39
- end
- end
- def out_c(mode, colour, str)
- case RUBY_PLATFORM
- when /(win|w)32$/
- change_to(colour)
- $stdout.puts str if mode == :puts
- $stdout.print str if mode == :print
- change_to(:default_white)
- else
- $stdout.puts("#{change_to(colour)}#{str}\033[0m") if mode == :puts
- $stdout.print("#{change_to(colour)}#{str}\033[0m") if mode == :print
- end
- end
- end # ColourCommandLine
- def colour_puts(role, str)
- ColourCommandLine.new.out_c(:puts, role, str)
- end
- def colour_print(role, str)
- ColourCommandLine.new.out_c(:print, role, str)
- end
|