recursing ddoc macros two arguments at a time

Andrei Alexandrescu via Digitalmars-d digitalmars-d at puremagic.com
Fri Jan 16 19:07:44 PST 2015


On 1/16/15 6:39 PM, Walter Bright wrote:
> On 1/16/2015 4:11 PM, Andrei Alexandrescu wrote:
>> I thought this isn't possible: http://goo.gl/QTAUFb. This:
>>
>> $(TOCENTRY comparison.html, D Feature List)
>> $(TOCENTRY builtin.html,    Rationale for Builtins)
>> $(TOCENTRY ctod.html,       Converting C to D)
>> $(TOCENTRY cpptod.html,     Converting C++ to D)
>> $(TOCENTRY pretod.html, The C Preprocessor vs D)
>> $(TOCENTRY cppcontracts.html,     D Contract Programming vs C++)
>>
>> can be simplified to this:
>>
>> $(TOCENTRIES
>>          comparison,   D Feature List,
>>          builtin,      Rationale for Builtins,
>>          ctod,         Converting C to D,
>>          cpptod,       Converting C++ to D,
>>          pretod,       The C Preprocessor vs D,
>>          cppcontracts, D Contract Programming vs C++
>> )
>>
>> (The .html elimination is a minor detail.)
>>
>> The trick is to recurse twice using $+ every time:
>>
>> TOCENTRIES=$(TOCENTRY $1, $2) $(TOCENTRIES_REC $+)
>> TOCENTRIES_REC=$(TOCENTRIES $+)
>>
>> Thought this is worth sharing. We could simplify a few more things
>> with this.
>
> Two thoughts:
>
> 1. Need to add this to the Ddoc documentation! Or at least a tip sheet
> on Ddoc.

Who wanna do that? Other good examples are ENUMERATE and ITEMIZE.

> 2. Why use url shorteners like http://goo.gl/QTAUFb ? I don't generally
> care to click on links that I have no idea where they go. Here's the
> real link:
>
> https://github.com/D-Programming-Language/dlang.org/pull/776/files#diff-582d0a2140b180aec5d08a9e6176399aR71

Looks better on the page.


Andrei


More information about the Digitalmars-d mailing list