How about colors and terminal graphics in std.format?

Damian Ziemba razriel at dzfl.pl
Sun Mar 11 20:27:40 PDT 2012


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



More information about the Digitalmars-d mailing list