On Monday, 12 March 2012 at 02:52:15 UTC, Andrei Alexandrescu
wrote:
On 3/11/12 9:16 PM, Chad J wrote:
I remember doing colored terminal output in Python. It was
pretty nifty,
and allows for some slick CLI design. I think D can do better
by putting
it in the standard library.
I was thinking something along the lines of this:
http://www.chadjoan.com/d/dmd.2.058/html/d/phobos/std_format.html
I figure it would probably be easy to get some of the basics
down. More
advanced stuff would probably involve messing with terminfo or
<term.h>.
Windows' (terribly bad) command prompt can have some of these
capabilities implemented too, but in a roundabout way because
Windows
defines API functions that need to be called to affect
terminal graphics
and coloring. I figure that would require the help of the I/O
routines
if I were to work on that.
If there's interest, I might take a stab at it.
So, would this sort of thing make it in?
I don't know, seems interesting but I wonder how portable that
could be. Probably I'd define a more general means a la %q to
mean "send a control sequence" and then would define control
sequences as functions or constants.
Oh, on an unrelated note, Phobos' documentation make target is
quite
broken:
blahblah/dmd.git/src/phobos $ make -fposix.mak html
make: *** No rule to make target
`../web/phobos-prerelease/index.html',
needed by `html'. Stop.
I examined the makefile and concocted this line of bash that
constructs
my desired html file:
dmd -m32 -d -c -o- -version=StdDdoc -I../druntime/import
std/format.d
std.ddoc -Dfstd_format.html
and copied std.ddoc from a release version of dmd (it's in
src/phobos).
Since recently the Phobos doc build is meant to be driven from
the site build. I'll fix the standalone thing because it's
useful too, just I don't know when.
Andrei
It could work.
In my small framework I use version blocks and I use ansi escape
sequences for posix and SetConsoleTextAttribute for windoze.
Ofcourse there would be a need to create unified enumeration with
colors as they differ on those platforms too.
public enum Font
{
Normal = 0,
Underline = 0x8000,
Reverse = 0x4000,
}
public enum Color
{
Default = 0x0000,
Blue = 0x0001,
Green = 0x0002,
Aqua = 0x0003,
Red = 0x0004,
Purple= 0x0005,
Yellow= 0x0006,
Gray = 0x0008,
LightBlue = 0x0009,
LightGreen = 0x000A,
LightAqua = 0x000B,
LightRed = 0x000C,
LightPurple= 0x000D,
}
Those are colors and font-attributes that I found to match both
Windows and Posix