# initialize API
@GetStdHandle = Win32API.new("kernel32","GetStdHandle",['L'],'L')
@GetConsoleScreenBufferInfo = Win32API.new("kernel32","GetConsoleScreenBufferInfo",['L','P'],'L')
@SetConsoleTextAttribute = Win32API.new("kernel32","SetConsoleTextAttribute",['L','l'],'L')
@hConsoleHandle = @GetStdHandle.Call(STD_OUTPUT_HANDLE)
end
def write(msg)
rest = msg
while (rest =~ Regexp.new("([^\e]*)\e\\[([0-9;]+)m"))
@origstream.write($1)
rest = $' # save it now since setcolor may clobber it
$2.split(";").each do |color|
setcolor(color.to_i)
end
end
@origstream.write(rest)
end