[RFC] ColorD
Chad J
chadjoan at __spam.is.bad__gmail.com
Tue Oct 23 13:17:18 PDT 2012
On 10/23/2012 03:56 PM, Philippe Sigaud wrote:
>>> writefln("The %c(red,white)(widgetometer%) is a device formeasuring"); //
>>> for writing red on white
>
> Would something like the following be possible?
>
> // col is a string-accepting function that returns a correctly formatted string
> // red and white are from a general Color enum
> alias col!(Color.red, Color.white) rw;
>
> writeln("The ", rw("widgetometer"), " is a device for measuring...");
Nope. Windows requires function calls to do color formatting. It does
not use escape sequences.
That said, it is always possible to scan all text about to be sent off
to Windows and look for escape sequences, then reinterpret them as
WinAPI coloring calls. The difficulty then is getting the "rw"
construct above to know if it should emit escape sequences or not: the
text it creates might eventually be bound for a file, a network socket,
or some buffer in memory, but not a terminal. If it's heading for a
terminal it has to know which one because they might use different
escape sequences. So there always has to be some way of contextualizing
the color formatting to its destination so that it can select the right
form of output, including no formatting if its inappropriate for the
destination.
Also, it doesn't nest. It should be possible to push/pop terminal
attributes in mid-string.
More information about the Digitalmars-d
mailing list