in src/Microsoft.Atlas.CommandLine/ConsoleOutput/ColorConsole.cs [34:87]
public void Write(string message)
{
var escapeScan = 0;
for (; ;)
{
var escapeIndex = message.IndexOf("\x1b{", escapeScan, StringComparison.Ordinal);
if (escapeIndex == -1)
{
var text = message.Substring(escapeScan);
Writer.Write(text);
break;
}
else
{
var text = message.Substring(escapeScan, escapeIndex - escapeScan);
Writer.Write(text);
var startIndex = escapeIndex + 2;
var endIndex = startIndex;
while (endIndex != message.Length &&
message[endIndex] >= 0x20 &&
message[endIndex] <= 0x3f)
{
endIndex += 1;
}
if (endIndex == message.Length)
{
break;
}
switch (message[endIndex])
{
case '}':
int value;
if (int.TryParse(message.Substring(startIndex, endIndex - startIndex), out value))
{
if (value == -1)
{
PopColor();
}
else
{
PushColor((ConsoleColor)value);
}
}
break;
}
escapeScan = endIndex + 1;
}
}
}