Donald Meyers / Mbed OS evan
Committer:
djmeyers
Date:
Sat Mar 18 22:37:16 2017 +0000
Revision:
0:06ee5f8a484a
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djmeyers 0:06ee5f8a484a 1 # ==========================================
djmeyers 0:06ee5f8a484a 2 # Unity Project - A Test Framework for C
djmeyers 0:06ee5f8a484a 3 # Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
djmeyers 0:06ee5f8a484a 4 # [Released under MIT License. Please refer to license.txt for details]
djmeyers 0:06ee5f8a484a 5 # ==========================================
djmeyers 0:06ee5f8a484a 6
djmeyers 0:06ee5f8a484a 7 if RUBY_PLATFORM =~/(win|w)32$/
djmeyers 0:06ee5f8a484a 8 begin
djmeyers 0:06ee5f8a484a 9 require 'Win32API'
djmeyers 0:06ee5f8a484a 10 rescue LoadError
djmeyers 0:06ee5f8a484a 11 puts "ERROR! \"Win32API\" library not found"
djmeyers 0:06ee5f8a484a 12 puts "\"Win32API\" is required for colour on a windows machine"
djmeyers 0:06ee5f8a484a 13 puts " try => \"gem install Win32API\" on the command line"
djmeyers 0:06ee5f8a484a 14 puts
djmeyers 0:06ee5f8a484a 15 end
djmeyers 0:06ee5f8a484a 16 # puts
djmeyers 0:06ee5f8a484a 17 # puts 'Windows Environment Detected...'
djmeyers 0:06ee5f8a484a 18 # puts 'Win32API Library Found.'
djmeyers 0:06ee5f8a484a 19 # puts
djmeyers 0:06ee5f8a484a 20 end
djmeyers 0:06ee5f8a484a 21
djmeyers 0:06ee5f8a484a 22 class ColourCommandLine
djmeyers 0:06ee5f8a484a 23 def initialize
djmeyers 0:06ee5f8a484a 24 if RUBY_PLATFORM =~/(win|w)32$/
djmeyers 0:06ee5f8a484a 25 get_std_handle = Win32API.new("kernel32", "GetStdHandle", ['L'], 'L')
djmeyers 0:06ee5f8a484a 26 @set_console_txt_attrb =
djmeyers 0:06ee5f8a484a 27 Win32API.new("kernel32","SetConsoleTextAttribute",['L','N'], 'I')
djmeyers 0:06ee5f8a484a 28 @hout = get_std_handle.call(-11)
djmeyers 0:06ee5f8a484a 29 end
djmeyers 0:06ee5f8a484a 30 end
djmeyers 0:06ee5f8a484a 31
djmeyers 0:06ee5f8a484a 32 def change_to(new_colour)
djmeyers 0:06ee5f8a484a 33 if RUBY_PLATFORM =~/(win|w)32$/
djmeyers 0:06ee5f8a484a 34 @set_console_txt_attrb.call(@hout,self.win32_colour(new_colour))
djmeyers 0:06ee5f8a484a 35 else
djmeyers 0:06ee5f8a484a 36 "\033[30;#{posix_colour(new_colour)};22m"
djmeyers 0:06ee5f8a484a 37 end
djmeyers 0:06ee5f8a484a 38 end
djmeyers 0:06ee5f8a484a 39
djmeyers 0:06ee5f8a484a 40 def win32_colour(colour)
djmeyers 0:06ee5f8a484a 41 case colour
djmeyers 0:06ee5f8a484a 42 when :black then 0
djmeyers 0:06ee5f8a484a 43 when :dark_blue then 1
djmeyers 0:06ee5f8a484a 44 when :dark_green then 2
djmeyers 0:06ee5f8a484a 45 when :dark_cyan then 3
djmeyers 0:06ee5f8a484a 46 when :dark_red then 4
djmeyers 0:06ee5f8a484a 47 when :dark_purple then 5
djmeyers 0:06ee5f8a484a 48 when :dark_yellow, :narrative then 6
djmeyers 0:06ee5f8a484a 49 when :default_white, :default, :dark_white then 7
djmeyers 0:06ee5f8a484a 50 when :silver then 8
djmeyers 0:06ee5f8a484a 51 when :blue then 9
djmeyers 0:06ee5f8a484a 52 when :green, :success then 10
djmeyers 0:06ee5f8a484a 53 when :cyan, :output then 11
djmeyers 0:06ee5f8a484a 54 when :red, :failure then 12
djmeyers 0:06ee5f8a484a 55 when :purple then 13
djmeyers 0:06ee5f8a484a 56 when :yellow then 14
djmeyers 0:06ee5f8a484a 57 when :white then 15
djmeyers 0:06ee5f8a484a 58 else
djmeyers 0:06ee5f8a484a 59 0
djmeyers 0:06ee5f8a484a 60 end
djmeyers 0:06ee5f8a484a 61 end
djmeyers 0:06ee5f8a484a 62
djmeyers 0:06ee5f8a484a 63 def posix_colour(colour)
djmeyers 0:06ee5f8a484a 64 # ANSI Escape Codes - Foreground colors
djmeyers 0:06ee5f8a484a 65 # | Code | Color |
djmeyers 0:06ee5f8a484a 66 # | 39 | Default foreground color |
djmeyers 0:06ee5f8a484a 67 # | 30 | Black |
djmeyers 0:06ee5f8a484a 68 # | 31 | Red |
djmeyers 0:06ee5f8a484a 69 # | 32 | Green |
djmeyers 0:06ee5f8a484a 70 # | 33 | Yellow |
djmeyers 0:06ee5f8a484a 71 # | 34 | Blue |
djmeyers 0:06ee5f8a484a 72 # | 35 | Magenta |
djmeyers 0:06ee5f8a484a 73 # | 36 | Cyan |
djmeyers 0:06ee5f8a484a 74 # | 37 | Light gray |
djmeyers 0:06ee5f8a484a 75 # | 90 | Dark gray |
djmeyers 0:06ee5f8a484a 76 # | 91 | Light red |
djmeyers 0:06ee5f8a484a 77 # | 92 | Light green |
djmeyers 0:06ee5f8a484a 78 # | 93 | Light yellow |
djmeyers 0:06ee5f8a484a 79 # | 94 | Light blue |
djmeyers 0:06ee5f8a484a 80 # | 95 | Light magenta |
djmeyers 0:06ee5f8a484a 81 # | 96 | Light cyan |
djmeyers 0:06ee5f8a484a 82 # | 97 | White |
djmeyers 0:06ee5f8a484a 83
djmeyers 0:06ee5f8a484a 84 case colour
djmeyers 0:06ee5f8a484a 85 when :black then 30
djmeyers 0:06ee5f8a484a 86 when :red, :failure then 31
djmeyers 0:06ee5f8a484a 87 when :green, :success then 32
djmeyers 0:06ee5f8a484a 88 when :yellow then 33
djmeyers 0:06ee5f8a484a 89 when :blue, :narrative then 34
djmeyers 0:06ee5f8a484a 90 when :purple, :magenta then 35
djmeyers 0:06ee5f8a484a 91 when :cyan, :output then 36
djmeyers 0:06ee5f8a484a 92 when :white, :default_white then 37
djmeyers 0:06ee5f8a484a 93 when :default then 39
djmeyers 0:06ee5f8a484a 94 else
djmeyers 0:06ee5f8a484a 95 39
djmeyers 0:06ee5f8a484a 96 end
djmeyers 0:06ee5f8a484a 97 end
djmeyers 0:06ee5f8a484a 98
djmeyers 0:06ee5f8a484a 99 def out_c(mode, colour, str)
djmeyers 0:06ee5f8a484a 100 case RUBY_PLATFORM
djmeyers 0:06ee5f8a484a 101 when /(win|w)32$/
djmeyers 0:06ee5f8a484a 102 change_to(colour)
djmeyers 0:06ee5f8a484a 103 $stdout.puts str if mode == :puts
djmeyers 0:06ee5f8a484a 104 $stdout.print str if mode == :print
djmeyers 0:06ee5f8a484a 105 change_to(:default_white)
djmeyers 0:06ee5f8a484a 106 else
djmeyers 0:06ee5f8a484a 107 $stdout.puts("#{change_to(colour)}#{str}\033[0m") if mode == :puts
djmeyers 0:06ee5f8a484a 108 $stdout.print("#{change_to(colour)}#{str}\033[0m") if mode == :print
djmeyers 0:06ee5f8a484a 109 end
djmeyers 0:06ee5f8a484a 110 end
djmeyers 0:06ee5f8a484a 111 end # ColourCommandLine
djmeyers 0:06ee5f8a484a 112
djmeyers 0:06ee5f8a484a 113 def colour_puts(role,str) ColourCommandLine.new.out_c(:puts, role, str) end
djmeyers 0:06ee5f8a484a 114 def colour_print(role,str) ColourCommandLine.new.out_c(:print, role, str) end
djmeyers 0:06ee5f8a484a 115