🖍 Crayon
An easy peasy tiny library for coloring console output in inline strings using ANSI escape codes.
V2
The API has changed to support background colors.
I dropped the extension methods on string and opted for the using static directive instead.
All methods now have an overload for direct input so you no longer have to end with a Text()
invocation.
Examples
using static Crayon.Output;
Console.WriteLine(Green($"green {Red($"{Bold("bold")} red")} green"));
Console.WriteLine(Bright.Blue($"Bright {Green("and normal green")}"));
Console.WriteLine(Bold().Green().Text($"starting green {Red("then red")} must be green again"));
Colors
Black()
Red()
Green()
Yellow()
Blue()
Magenta()
Cyan()
White()
Rgb(r, g, b)
Background.Blue()
Bright.Blue()
Decorations
Bold()
Dim()
Underline()
Reversed()
Text
Blue().Underline().Text("input")
Blue().Underline("input")
All colors and decorations have an overload with direct input and terminating the formatter.
Rainbows 🌈
Thanks to DevinR528 we now have rainbows!
var rainbow = new Rainbow(0.5);
for(var i = 0; i < 15; i++)
{
Console.WriteLine(rainbow.Next().Bold().Text("rainbow"));
}
How compatible is it?
It works fine on everything except for older Windows versions.
Credits
My journey for using ANSI codes in C# first brought me here: https://www.jerriepelser.com/blog/using-ansi-color-codes-in-net-console-apps/
The ANSI coloring details was inspired by this blog post: http://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html
The code for enabling ANSI colors feature on Windows was borrowed from this issue: microsoft/WSL#1873
No greater compliment than someone taking your work for inspiration. In return I peaked into his code for the RGB support!