Andrei's Google Talk
Johannes Pfau
spam at example.com
Sun Aug 15 15:10:53 PDT 2010
On 15.08.2010 23:27, Walter Bright wrote:
> retard wrote:
>> - the markup/macro syntax is NIH new.
>
> Not really. The macro syntax is copied from make. And it's utterly trivial.
>
> I'd like to know how the macro system is inadequate for generating
> Latex, man, etc. format.
I think it's not a problem with the macro system, but with the few
macros emitted by dmd: There are enough macros for the doc comments
(DDOC_SUMMARY, DDOC_DESCRIPTION, ...) but not for the types. DDOC_DECL,
DDOC_DECL_DD and DDOC_*_MEMBERS are just not enough to extract detailed
information. This also puts quite some restrictions on the layout of the
resulting documentation. In this case ddoc is very tied to html: These
macros seem modeled directly after the DD DT DL html elements.
I tried to enhance the ddoc output over the last few weeks and it's not
ready to be released yet, but for example this is the macro structure
I've chosen for function definitions:
DDOC_FUNCTION
DDOC_FUNCTION_HEADER_CONTAINER
DDOC_FUNCTION_TEMPLATE_HEADER
DDOC_FUNCTION_HEADER
DDOC_TYPE_FUNCTION
DDOC_FUNCTION_PREFIX
DDOC_TYPE_MODIFIER
DDOC_EXTRA_MODIFIER
DDOC_TRUST
DDOC_FUNCTION_RETURN_TYPE
DDOC_FUNCTION_NAME
DDOC_FUNCTION_PARAMETERS
DDOC_FUNCTION_LPAREN
DDOC_FUNCTION_PARAMETER
DDOC_FUNCTION_PARAMETER_STC (storage class)
DDOC_FUNCTION_PARAMETER_TYPE
DDOC_FUNCTION_PARAMETER_NAME
[DDOC_FUNCTION_PARAMETER_DEFAULT]
[DDOC_FUNCTION_COMMA]
[DDOC_FUNCTION_VARARGS]
DDOC_FUNCTION_RPAREN
DDOC_DECLARATION_SEMICOLON
DDOC_DITTO
DDOC_FUNCTION_HEADER...
DDOC_FUNCTION_TEMPLATE_HEADER...
DDOC_TEMPLATE_HEADER
DDOC_FUNCTION_DOC
One major aspect in my changes is that there should be no hardcoded
output: everything can be redefined through macros, though sane defaults
should be provided. Example:
DDOC_DECLARATION_SEMICOLON=;
DDOC_FUNCTION_VARARGS=...;
DDOC_FUNCTION_COMMA=,;
With more macros you can generate advanced looking documentation, for
example, this is what I currently have:
druntime docs: http://jpf.byethost10.com/druntime/doc/object.html
simple tests:
http://jpf.byethost10.com/demo/doc/ddoc/tests/simple/vars.html (druntime
2.047 in the right upper corner is still hardcoded...)
I also have xml output, but the xml ddoc file isn't complete yet
(template support is missing)
http://jpf.byethost10.com/demo_xml/ddoc/tests/simple/
And there's also a problem with phobos:in some cases the sources contain
html. In other cases there are custom macros in modules which can only
emit html(std.math, TABLE_SV, ...) and afaik you can't override module
level macros with .ddoc files?
--
Johannes Pfau
More information about the Digitalmars-d
mailing list