代码之家  ›  专栏  ›  技术社区  ›  WebFreak001 Ryan

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

  •  1
  • WebFreak001 Ryan  · 技术社区  · 7 年前

    我有一个相当大的文档页面,我想生成一个符号列表( Jump to: 关于phobos文档,请参见 std.compiler )使用 dub --build=ddoc 因为默认情况下不存在( current documentation page )

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

    我知道这在ddox或javascript中是可能的,但是否有任何方法可以仅使用普通ddoc来做到这一点,以便将维护工作量保持在最低限度?谢谢

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

    1 回复  |  直到 7 年前
        1
  •  1
  •   Jonathan M Davis    7 年前

    Ddoc是一个宏观系统。它只是用其他东西代替了一件东西。编译器为您定义了某些宏(您可以重新定义),为了使用ddoc实际生成文档页面,编译器从模块、其文档符号列表等中获取文档注释,并基本上生成。dd页面,就像您在创建类似dlang的东西时一样。org网站。这是一组带有ddoc标记的文本。然后,该ddoc标记将替换为定义为替换的ddoc宏。默认情况下,这是一组面向创建网页的html,但是可以重新定义这些宏以生成与默认html不同的html,或者生成与latex完全不同的东西。

    然而,归根结底,你所得到的只是一个。dd页面,通过重新定义宏,从而重新定义如何将一段文本转换为另一段文本,可以影响结果。您没有迭代符号列表或执行任何特定图灵完成操作的能力。您所得到的只是宏扩展。

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

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

    ddoc是一个很棒的宏系统,功能相当强大,但如果您试图做任何比影响生成的文档外观更为奇特的事情,ddoc真的无法实现这一目标-至少在没有其他工具的帮助下,无法生成或操纵已处理的ddoc或处理ddoc的结果。

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

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