Skip to content

Colorify - C# .Net Console Library with Text Format: colors, alignment and lot more [ Win+Mac+Linux ]

License

Notifications You must be signed in to change notification settings

deinsoftware/colorify

Repository files navigation

dein Colorify [ Win+Mac+Linux ]

github-actions-build github-actions-pack nuget-version nuget-download Sonar-reliability sonar-security sonar-maintainability license

Colorify

Colorify was created to simplify and automate tasks related to .Net console formatting. Was born in HardHat project as a Class. Now grown up as a library and can be used by other console applications.

The Code is Dark and Full of Errors! Console is your friend ... don't be afraid!

Menu


Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Prerequisites

What things you need to install?

Colorify supports netstandard2.1, netcoreapp3.1, net5.0, net6.0 and net7.0 target frameworks.

Installing

Colorify is available as project or package. We strong recommend add as a NuGet package if don't need make modifications directly on the source code library.

Follow these instructions to add Colorify in your project.

Recommended Dependencies

Add As Package

In your project folder, where is located .csproj file run this command on terminal:

dotnet add package dein.Colorify

If you want to use OS class highly recommend use ToolBox project.

dotnet add package dein.ToolBox

Official documentation: dotnet add package

Add As Reference

Clone Colorify from GitHub on recommended path. Using this command on terminal:

OS Command
win git clone https://github.com/deinsoftware/colorify.git "D:\Developer\DEIN\Projects\_devCC"
mac git clone https://github.com/deinsoftware/colorify.git ~/Developer/DEIN/Projects/_devCC

In your project folder, where is located .csproj file run this command on terminal:

OS Command
win dotnet add reference "D:\Developer\DEIN\Projects\_devCC\Colorify\Colorify.csproj"
mac dotnet add reference ~/Developer/DEIN/Projects/_devCC/Colorify/Colorify.csproj

Official documentation: dotnet add reference

Instantiate Library

On the main class Program, add a static property Format and inside the Main method create an instance of the library according the Operative System.

class Program
{
    public static Format _colorify {get; set;}

    static void Main(string[] args)
    {
        switch (OS.GetCurrent())
        {
            case "win":
            case "gnu":
                _colorify = new Format(Theme.Dark);
                break;
            case "mac":
                _colorify = new Format(Theme.Light);
                break;
        }
        //Foo()
        //Bar()
        _colorify.ResetColor();
        _colorify.Clear();
    }
}

Take note that _colorify.ResetColor(); command is important in order to reset default terminal colors when programs finish.

If you want use themes with current user color use _colorify = new Format(new ThemeLight()); or _colorify = new Format(new ThemeDark());

If you want to use _colorify in other class, add a static using to Program class:

using static Namesapace.Program;

replace Namespace with a defined namespace in your project.

Back to menu


Usage

Keep calm, you are almost done. Review this usage steps and enjoy life.

To understand how this library works, take a look inside Sample folder. Better easy to use a guide than words.

Just go to Sample project folder and run this command on terminal:

cd Sample
dotnet run

Colors

Colorify colors was created inspired on Bootstrap colors a list whit a meaning easy to remember.

_colorify.WriteLine("Text Default", Colors.txtDefault);
_colorify.WriteLine("Text Muted", Colors.txtMuted);
_colorify.WriteLine("Text Primary", Colors.txtPrimary);
_colorify.WriteLine("Text Success", Colors.txtSuccess);
_colorify.WriteLine("Text Info", Colors.txtInfo);
_colorify.WriteLine("Text Warning", Colors.txtWarning);
_colorify.WriteLine("Text Danger", Colors.txtDanger);
_colorify.WriteLine("Background Default", Colors.bgDefault);
_colorify.WriteLine("Background Muted", Colors.bgMuted);
_colorify.WriteLine("Background Primary", Colors.bgPrimary);
_colorify.WriteLine("Background Success", Colors.bgSuccess);
_colorify.WriteLine("Background Info", Colors.bgInfo);
_colorify.WriteLine("Background Warning", Colors.bgWarning);
_colorify.WriteLine("Background Danger", Colors.bgDanger);

Light (for macOS):

Light

Dark (for Windows and Linux):

Dark

Colors are defined on Theme folder. There is two themes Light (for macOS) and Dark (for Windows and Linux). You can edit the ThemeLight.cs or ThemeDark.cs files or create a new one implementing the ITheme interface.

Take a look on official documentation: ConsoleColor Enumeration

Write

_colorify.Write work like Console.Write but wrapped with colors. If you don't specify a color will use the Colors.txtDefault by default.

_colorify.Write("Text");
_colorify.Write("Text", Colors.bgDefault);

You can stack a multiple _colorify.Write, just remember define the last one as WriteLine.

_colorify.Write(" Default ", Colors.bgDefault);
_colorify.Write(" Muted   ", Colors.bgMuted);
_colorify.Write(" Primary ", Colors.bgPrimary);
_colorify.Write(" Success ", Colors.bgSuccess);
_colorify.Write(" Info    ", Colors.bgInfo);
_colorify.Write(" Warning ", Colors.bgWarning);
_colorify.WriteLine(" Danger  ", Colors.bgDanger);

Write

WriteLine

_colorify.WriteLine work like Console.WriteLine with a line terminator after the text but wrapped with colors. If you don't specify a color will use the Colors.txtDefault by default.

_colorify.WriteLine("Text with line terminator");
_colorify.WriteLine("Text with line terminator", Colors.bgDefault);
_colorify.Write("Short Text at First Preceded with a ", Colorify.Colors.bgInfo);
_colorify.WriteLine(" Long Multi line text with Line Wrap that bring a new line", Colorify.Colors.bgSuccess);

WriteLine

Word Wrap

_colorify.Wrap works like Console.WriteLine with a line terminator after the text but wrapped with colors. If you don't specify a color then it will use the Colors.txtDefault by default.

_colorify.Wrap("Very long text with gentle word wrapping at the end of console");
_colorify.Wrap("Very long text with gentle word wrapping at the end of console", Colors.bgDefault);

Automatic line wrap or word wrap with long text:

_colorify.Wrap("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer sed turpis in ligula aliquet ornare tristique sed ante. Nam pretium ullamcorper condimentum. Aliquam quis sodales ex, vitae gravida metus. Suspendisse potenti. Maecenas nunc sapien, semper vel tincidunt sed, scelerisque ut est. Nunc eu venenatis libero. Nulla consectetur pretium leo. Nullam suscipit scelerisque neque fringilla volutpat. Aliquam condimentum, neque quis malesuada ultrices, mauris velit tincidunt arcu, vel sodales tortor felis quis velit. Aliquam tempus ullamcorper orci, vitae pretium leo maximus ut. Aliquam iaculis leo sed tempor mattis.", bgWarning);

WordWrap

Align

All the align methods (Center/Left/Right) works like Console.WriteLine but with align operation and wrapped with colors. If you don't specify a color will use the Colors.txtDefault by default.

_colorify.AlignCenter("Text Aligned to Center");
_colorify.AlignRight("Text Aligned to Right");
_colorify.AlignLeft("Text Aligned to Left");
_colorify.AlignCenter("Text Aligned to Center", Colors.bgInfo);
_colorify.AlignRight("Text Aligned to Right", Colors.txtDefault);
_colorify.AlignLeft("Text Aligned to Left", Colors.txtDanger);

AlignSplit is the way to show two values on the same line. The text will be split with pipe | character, the first element will be aligned to left and second aligned to right.

_colorify.AlignSplit("<-Text to Left| Text to Right->");
_colorify.AlignSplit("<-Text to Left| Text to Right->", Colors.bgSuccess);

Align

BlankLines

_colorify.BlankLines works like Console.WriteLine but without text. You can combine the amount of lines and colors. Default values will be 1 line and Colors.txtDefault.

_colorify.BlankLines();
_colorify.BlankLines(Colorify.Colors.bgDanger);

BlankLines

_colorify.BlankLines(3);
_colorify.BlankLines(3, Colors.bgSuccess);

BlankLines x 3

DivisionLine

_colorify.DivisionLine works like Console.WriteLine but without the same character as full-width text. If you don't specify a color will use the Colors.txtDefault by default.

_colorify.DivisionLine('-', Colors.bgDefault);
_colorify.DivisionLine('+', Colors.bgMuted);
_colorify.DivisionLine('~', Colors.bgPrimary);
_colorify.DivisionLine('=', Colors.bgSuccess);
_colorify.DivisionLine('-', Colors.bgInfo);
_colorify.DivisionLine('*', Colors.bgWarning);
_colorify.DivisionLine('.', Colors.bgDanger);

DivisionLine

Back to menu


About

Built With

  • .Net - .Net is a free and open-source web framework, developed by Microsoft and the community.
  • VS Code - Code editing redefined.
  • SonarQube - Continuous code quality.

Contributing

Please read CONTRIBUTING for details on our code of conduct, and the process for submitting pull requests to us.

Versioning

We use SemVer for versioning. For the versions available, see the Colorify on GitHub.

Authors

See also the list of contributors who participated in this project.

Sponsors

If this project help you reduce time to develop, you can give me a cup of coffee.

GitHub Sponsors paypal

No sponsors yet! Will you be the first?

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Back to menu