On Wednesday, 21 November 2018 at 18:36:06 UTC, Vladimirs Nordholm wrote:
https://github.com/vladdeSV/termcolor-d

https://github.com/jamadagni/textattr/

Saw a library recently which allowed you to color text, but it had an odd syntax.

Maybe the documentation, in trying to be exhaustive, hasn't showed how simple it can be. I'm not sure why it is perceived as odd. Can you clarify?

Since I already had some code for coloring text in terminals, I made this (hackish, POSIX only) project during lunch break. It in action:

    import std.stdio : writeln;
    import termcolor;

import textattr;

    // Color → Green → Foreground
    writeln(C.green.fg, "Green text", resetColor);

      writeln(ta("green"), "Green text", ta("off"));

*or* the shorter:

      writeln(ta("g"), "Green text", ta("f"));

*or* the even shorter:

      tawrite("@g", "Green text", "@f", '\n');

The @ indicates that it is an "at"tribute.

It's not an issue to add a tawriteln which adds the newline at the end. I first posted the basic library thinking to make additions as per demands later.

    // Color → Red → Background
    writeln(C.red.bg, "Red background", resetColor);

      tawrite("@/red", "Red background", "@off", '\n');

The / indicates that it's a background colour. This is stated in the HTML documentation, but maybe not clear within the limitations of the README.md. I'll see what I can do to improve it.

Having premade symbols in the library as you have done is easy enough for basic 16-colour or even attribute support, but adding 256 colour or true colour support this way would unnecessarily use up too much memory.

Reply via email to