在 ddoc 中生成符号列表(带配音)

Generating symbol list in ddoc (with dub)

我有一个相当大的单个文档页面,我想生成一个符号列表(Jump to: 关于 phobos 文档,请参阅 std.compiler) with dub --build=ddoc because it is not there by default (current documentation page

出于显而易见的原因,我不想在代码中包含所有带有链接的符号列表。

我知道这可以通过 ddox 或 javascript 实现,但是有没有什么方法可以只使用 vanilla ddoc 来做到这一点,从而将维护工作保持在最低限度?谢谢

编辑:我想为全局符号和 classes 的成员生成一个列表,并将 table 放在 class 附近。

ddoc是一个宏系统。它只是用另一种东西代替一种东西。编译器为你定义了某些宏(你可以重新定义),并且为了使用 ddoc 实际生成一个文档页面,编译器从模块中获取文档注释,它的文档符号列表等,并且基本上生成一个 .dd 页面,如创建 dlang.org 网站之类的内容时,您会遇到这种情况。这是一堆带有 ddoc 标记的文本。然后,该 ddoc 标记将替换为定义要替换的那些 ddoc 宏。默认情况下,这是一堆 html 用于创建网页,但可以重新定义这些宏以生成与默认值不同的 html 或生成完全不同的东西,如乳胶。

但是,最终,您得到的只是一个 .dd 页面,您可以在其中通过重新定义宏来影响结果,从而重新定义如何将一段文本转换为另一段文本。您迭代符号列表或做任何特别图灵完备的事情的能力为零。你得到的只是宏扩展。

这就是为什么 dlang.org 使用 javascript 来生成跳转到链接的原因,这就是为什么 dlang.org 的构建过程实际上有一个小的 D 程序运行以生成 ddoc对于带有模块列表的导航栏。 ddoc 无法执行任何操作。这就是为什么像 ddox 这样的工具使用编译器的 json 输出来获取符号列表和文档信息并生成自己的东西。

所以,不,您不能只使用标准 ddoc 来做任何您想做的事情。实际上,唯一的选择是使用 javascript 以便浏览器在查看文档时可以操纵结果,操纵 and/or 使用外部程序生成 ddoc,或者使用完全不同的工具生成文档比如ddox.

ddoc 是一个很棒的宏系统,而且相当强大,但是如果你想做任何比影响生成的文档的外观更花哨的事情,ddoc 真的不会让你到达那里 - 至少在没有帮助的情况下不会其他工具来生成或操作处理过的 ddoc 或处理 ddoc 的结果。

Ddoc 文档:https://dlang.org/spec/ddoc.html

此处列出了一些替代文档生成器(可能使用也可能不使用 ddoc):https://wiki.dlang.org/Open_Source_Projects#Documentation_Generators