robustify Ansi module a bit
This commit is contained in:
1 parent
7869d38dd8
commit
88fd4bd405
2 files changed
+123
-26
No files matched your search
+53
-21
@@ -3,6 +3,8 @@ module Rscons
|
||||
module Ansi
|
||||
class << self
|
||||
|
||||
RESET = "\e[0m"
|
||||
|
||||
# Write a message to an IO with ANSI escape codes.
|
||||
#
|
||||
# @param io [IO]
|
||||
@@ -17,27 +19,57 @@ module Rscons
|
||||
do_color = do_ansi?(io)
|
||||
end
|
||||
out = ""
|
||||
message.each do |m|
|
||||
if m.is_a?(String)
|
||||
out += m
|
||||
elsif do_color
|
||||
case m
|
||||
when :red
|
||||
out += "\e[0;31m"
|
||||
when :green
|
||||
out += "\e[0;32m"
|
||||
when :yellow
|
||||
out += "\e[0;33m"
|
||||
when :blue
|
||||
out += "\e[0;34m"
|
||||
when :magenta
|
||||
out += "\e[0;35m"
|
||||
when :cyan
|
||||
out += "\e[0;36m"
|
||||
when :white
|
||||
out += "\e[0;37m"
|
||||
when :reset
|
||||
out += "\e[0m"
|
||||
if do_color
|
||||
current_color = RESET
|
||||
desired_color = RESET
|
||||
message.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
|
||||
message.each do |m|
|
||||
if m.is_a?(String)
|
||||
out += m
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in new issue
Block a user