]> CyberLeo.Net >> Repos - FreeBSD/releng/10.2.git/blob - contrib/ntp/sntp/unity/auto/colour_prompt.rb
- Copy stable/10@285827 to releng/10.2 in preparation for 10.2-RC1
[FreeBSD/releng/10.2.git] / contrib / ntp / sntp / unity / auto / colour_prompt.rb
1 # ==========================================
2 #   Unity Project - A Test Framework for C
3 #   Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams
4 #   [Released under MIT License. Please refer to license.txt for details]
5 # ========================================== 
6
7 if RUBY_PLATFORM =~/(win|w)32$/
8         begin
9                 require 'Win32API'
10         rescue LoadError
11                 puts "ERROR! \"Win32API\" library not found"
12                 puts "\"Win32API\" is required for colour on a windows machine"
13                 puts "  try => \"gem install Win32API\" on the command line"
14                 puts
15         end
16         # puts
17   # puts 'Windows Environment Detected...'
18         # puts 'Win32API Library Found.'
19         # puts
20 end
21
22 class ColourCommandLine
23   def initialize
24     if RUBY_PLATFORM =~/(win|w)32$/  
25       get_std_handle = Win32API.new("kernel32", "GetStdHandle", ['L'], 'L')
26       @set_console_txt_attrb =
27       Win32API.new("kernel32","SetConsoleTextAttribute",['L','N'], 'I')
28       @hout = get_std_handle.call(-11)
29     end
30   end
31   
32   def change_to(new_colour)
33     if RUBY_PLATFORM =~/(win|w)32$/
34       @set_console_txt_attrb.call(@hout,self.win32_colour(new_colour))
35     else
36                 "\033[30;#{posix_colour(new_colour)};22m"
37                 end
38   end
39   
40   def win32_colour(colour)
41     case colour
42       when :black then 0  
43       when :dark_blue then 1
44       when :dark_green then 2
45       when :dark_cyan then 3
46       when :dark_red then 4
47       when :dark_purple then 5
48       when :dark_yellow, :narrative then 6
49       when :default_white, :default, :dark_white then 7
50       when :silver then 8
51       when :blue then 9
52       when :green, :success then 10
53       when :cyan, :output then 11
54       when :red, :failure then 12
55       when :purple then 13
56       when :yellow then 14
57       when :white then 15
58       else
59         0
60     end
61   end
62         
63         def posix_colour(colour)
64           case colour
65       when :black then 30  
66       when :red, :failure then 31
67       when :green, :success then 32
68                         when :yellow then 33
69       when :blue, :narrative then 34
70       when :purple, :magenta then 35
71       when :cyan, :output then 36
72       when :white, :default_white, :default then 37
73       else
74         30
75     end
76   end
77         
78   def out_c(mode, colour, str)
79     case RUBY_PLATFORM
80                         when /(win|w)32$/
81                           change_to(colour)
82                                  $stdout.puts str if mode == :puts
83                                  $stdout.print str if mode == :print
84                           change_to(:default_white)
85                         else
86                                 $stdout.puts("#{change_to(colour)}#{str}\033[0m") if mode == :puts
87                                 $stdout.print("#{change_to(colour)}#{str}\033[0m") if mode == :print
88                 end                     
89   end
90 end # ColourCommandLine
91
92 def colour_puts(role,str)  ColourCommandLine.new.out_c(:puts, role, str)  end
93 def colour_print(role,str) ColourCommandLine.new.out_c(:print, role, str) end
94