Improving ddoc

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Thu Jan 1 14:38:04 PST 2015


On 2014-12-31 20:50, Andrei Alexandrescu wrote:

> In wake of the recent discussions on improving ddoc syntax we're looking
> at doing something about it. Please discuss any ideas you might have
> here. Thanks!

I think there are two big issues with Ddoc: its syntax and its lack of 
functionality. I think the major reason for these issues is that Ddoc is 
a general text macro tool. Personally I would just throw out Ddoc and 
start completely fresh, I know that is too extreme so I'm not suggesting 
that.

I think the solution is to use Ddoc as it is today, with full support 
for Github flavored Markdown added and a couple of other enhancements. 
The reason is listed below:

I'm not going to argue so much about the syntax since many others have 
already done so.

The functionality that I feel is missing:

* Automatically generating cross-references

* Inhering documentation. Methods that override some other method should 
automatically inherit the documentation of the overridden method, unless 
there's already documentation present for that method or explicitly 
disable the inheritance with a command.

* A list of summary with all symbols should be automatically generated 
for a module

* Documentation for private symbols should be generated but hidden by 
default in the output with a button to show them

* A nice tree view with all packages and modules with filter for all symbols

* Automatically create links to the source code for each symbol. This 
could either be to syntax highlighted source code Ddoc generates or to 
Github. There could be a flag (or some other way) to specify which 
Github project to link to

* Simplified signatures. Template constraints and default values which 
are special symbols like __FILE__ or __LINE__ should be hidden by default

The following should automatically be generated for a given class:

* Links to all base classes and interfaces of a class
* Links to all symbols from all base classes and interfaces
* Links to all known subclasses

That are just a couple of suggestions. Just take a look at some existing 
documentation for other language and see what's missing [1], [2].

[1] 
http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.isv%2Freference%2Fapi%2Foverview-summary.html

[2] http://www.scala-lang.org/api/current/#scala.collection.Iterable

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list