【问题标题】:Generating symbol list in ddoc (with dub)在 ddoc 中生成符号列表(带配音)
【发布时间】:2018-02-16 23:50:37
【问题描述】:

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

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

我知道使用 ddox 或 javascript 可以做到这一点,但是有没有办法只使用 vanilla ddoc 来做到这一点,以便将维护工作保持在最低限度?谢谢

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

【问题讨论】:

    标签: d dub ddoc


    【解决方案1】:

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

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

    这就是为什么 dlang.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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 2010-11-28
      • 2014-11-21
      • 2022-12-08
      • 1970-01-01
      相关资源
      最近更新 更多