dpldocs: xlinking and Documented destructors and postblits

Adam D. Ruppe via Digitalmars-d digitalmars-d at puremagic.com
Wed Mar 1 21:25:51 PST 2017


On Thursday, 2 March 2017 at 00:06:17 UTC, Adam D. Ruppe wrote:
> Though it is important to note that adrdox does NOT support 
> user-defined ddoc macros

But, it DOES now support a footnote kind of thing. Behold:

http://dpldocs.info/experimental-docs/test.html#footnotes

In ddoc, I was tempted to define a $(RANGE_CONCEPT Input) macro 
or something like that, which would expand do $(REF 
std,range,primitives,is$1Range, $1 range) or something along 
those lines (of course, ddoc is so underpowered that wouldn't 
even be that good..) because right now we repeat those references 
a LOT.

(Actually, I don't love linking to isInputRange's function 
definition. I'd prefer a higher-level overview of ranges when we 
link it, but isInputRange is the best we have written right now 
outside our various books.)

adrdox makes it a bit nicer, `[isInputRange|input range]` will do 
what's needed, as long as `std.range.primitives` is imported in 
scope (which it typically is for the constraint anyway), but what 
if we write a new conceptual article and want to change the links?

That's what led me to the Link_References idea. By defining:

concept_input_range = [isInputRange|input range]

we can just reference text like `It must be an 
[concept_input_range]` and be a bit more DRY (and btw 
concept_input_range is easier on my autocomplete algorithms than 
isInputRange|input range... and infinitely better than the ddoc 
macro mess.)

So, I went ahead and implemented that today. And footnotes, 
images, and popup text is easy to do in the same framework and 
sometimes useful too, so I just did it all together.


My generator isn't just about reading more semantics out of D, it 
is also about making something easier to use than ddoc.


More information about the Digitalmars-d mailing list