Module: Rscons::Ansi
- Defined in:
- lib/rscons/ansi.rb
Overview
Module to contain logic to write ANSI color escape codes.
Constant Summary collapse
- RESET =
ANSI terminal reset sequence.
"\e[0m"
Class Method Summary collapse
-
.write(io, *message) ⇒ void
Write a message to an IO with ANSI escape codes.
Class Method Details
.write(io, *message) ⇒ void
This method returns an undefined value.
Write a message to an IO with ANSI escape codes.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/rscons/ansi.rb', line 17 def write(io, *) do_color = Rscons.application.do_ansi_color if do_color.nil? do_color = do_ansi?(io) end out = "" if do_color current_color = RESET desired_color = RESET .each do |m| if m.is_a?(String) lines = m.split("\n", -1) lines.each_with_index do |line, i| if line != "" if current_color != desired_color out += desired_color current_color = desired_color end out += line end if i < lines.size - 1 # A newline follows if current_color != RESET out += RESET current_color = RESET end out += "\n" end end else case m when :red; desired_color = "\e[0;31m" when :green; desired_color = "\e[0;32m" when :yellow; desired_color = "\e[0;33m" when :blue; desired_color = "\e[0;34m" when :magenta; desired_color = "\e[0;35m" when :cyan; desired_color = "\e[0;36m" when :white; desired_color = "\e[0;37m" when :boldred; desired_color = "\e[1;31m" when :boldgreen; desired_color = "\e[1;32m" when :boldyellow; desired_color = "\e[1;33m" when :boldblue; desired_color = "\e[1;34m" when :boldmagenta; desired_color = "\e[1;35m" when :boldcyan; desired_color = "\e[1;36m" when :boldwhite; desired_color = "\e[1;37m" when :bold; desired_color = "\e[1m" when :reset; desired_color = RESET end end end if current_color != RESET out += RESET end else .each do |m| if m.is_a?(String) out += m end end end io.write(out) end |