The ugly truth about ddoc

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Sun Jan 18 18:18:35 PST 2015


TL;DR: I've uploaded new menu colors at http://erdani.com/d/, this time 
aiming for a more martian red ethos. Please let me know.

==================

So I was looking at the css today (original at 
http://paste.ofcode.org/fHGT24YASrWu3rnMYLdm4C taken from the zip at 
http://cssmenumaker.com/menu/modern-jquery-accordion-menu) and it was 
quite unwieldy to experiment with. For example, the same color appears 
hardcoded in a number of places; whenever changing one I'd need to 
change all, or miss some important instances (as it happened with my 
first experiment).

I'm sure experts must have tools for allowing things like variables and 
macros for css creation. Indeed there are a number of CSS editors that 
features things like variables, substitutions, and code generations, but 
most come at a cost and require quite some involvement.

So I slapped something much simpler together using... ddoc.

1. I aded this at the top of the original file:

Ddoc

and then this at the bottom:

Macros:

DDOC=$(BODY)
DDOC_COMMENT=/*$0*/
ESCAPES=/</</ />/>/ /&/&/

then saved the file as cssmenu.css.dd. Now I suddenly had a file 
compilable with ddoc, which produced itself (sans the heading and the 
macros). Here's the cmdline:

dmd -c -o- -Dfweb/css/cssmenu.css css/cssmenu.css.dd

It's a bit of a bummer that I need to define three unintuitive macros to 
get idempotent generation, but I guess that's that. We should document 
that somewhere.

2. Now the fun begins. Now with macros I could define things like 
variables and even functions, and change all by changing one. Cool! So I 
started looking for all colors in the document and converted them to macros.

After a short time I had http://paste.ofcode.org/3agBQ3t6C3UJsqMfRe4GeQL 
working. With that in hand, it was trivially easy to test different 
colors and see how they impact the look.

The result is as I mentioned at http://erdani.com/d. I trust you'll hate 
the colors but maybe not the hack.

So, may I add a pull request of this without anyone having an apoplexy 
attack? When we pass the site for styling we can pass the generated css.


Andrei


More information about the Digitalmars-d mailing list