[RFC] ColorD
Chad J
chadjoan at __spam.is.bad__gmail.com
Tue Oct 23 13:55:09 PDT 2012
On 10/23/2012 04:42 PM, Jens Mueller wrote:
> Jens Mueller wrote:
>> Chad J wrote:
>>>
>>> That's a reasonable suggestion. The only thing that can't be solved
>>> is the trailing ) enclosing the text to be formatted. That needs a
>>> % before it to prevent ambiguity with parentheses in the text
>>> itself. So I could make your example:
>>>
>>>> writefln("The %c(red,white)(widgetometer%) is a device
>>> formeasuring"); // for writing red on white
>>>
>>> I was also considering the possibility of separating layout and
>>> style by allowing some kind of style specification before the
>>> printing, with a limited formatting spec for using the styles:
>>>
>>> stdout.addTermTextStyle("id=myStyle, fg=red, bg=white, dark, underline");
>>>
>>> writefln("The %c(myStyle)(widgetometer%) is a device for measuring");
>>
>> Ideally, we get some users and ask them what they find easy to read. Or
>> look how other languages solve this.
>> Because I myself don't color my terminals that much I find it hard to
>> imagine.
>> I searched for some ruby libraries. I find ruby syntax often very easy.
>> We could use UFCS, e.g.
>> "some string".red
>> or
>> "some string".foreground(Color.red)
>>
>> What do you think?
>> I find this way easier than format strings.
>
> Just read the other post. This has the same problem.
>
> Jens
Also I'm intentionally shooting for something very concise. If
verbosity conflicts, then it loses. I say verbosity because I find that
things get /less/ readable in situations like these if the syntax/naming
is lengthy. It causes alignment issues, text wrapping, noise, etc.
The thing I liked about the styling notion is that it allows things to
be spelled out more, but places this noise outside of the string being
formatted.
More thoughts:
// Do style parsing at compile-time if desired.
const myStyle = parseTermTextStyle("id=myStyle, fg=red, bg=white, dark,
underline"
// At runtime, stdout is told to use this.
stdout.addTermTextStyle(myStyle);
// I'm thinking it might look better by dropping a pair of parens,
// but using a . to make it clear where the formatter type ends
// and the style id begins.
writefln("The %C.myStyle(widgetometer%) is a device for measuring");
// Overloaded for convenience.
stdout.addTermTextStyle("id=rw, fg=red, bg=white, dark, underline");
// The user can choose how verbose they want their formatter to look.
// This is a very concise one.
writefln("The %C.rw(widgetometer%) is a device for measuring");
// Other note: %C is necessary. %c can't be used because that is
// already used for formatting single characters.
More information about the Digitalmars-d
mailing list