Guidedog 手册 0.2.0
语言
本页内容
Guidedog / 文档 0.2.0

声明对象类型

项目可能需要标准领域不认识的名称。在 TOML 中声明对象类型后,Guidedog 无需加载 Python 扩展即可创建目标、索引项和角色。声明描述语法,不是可执行行为。

目标:add_crossref_type

[[crossref_types]]
directive = "setting"
role = "setting"
index = "pair: %s; setting"

随后,.. setting:: DEBUG 创建标识符为 setting-DEBUG 的目标及索引项,:setting:`DEBUG` 则链接至该目标,与 Sphinx 一致。index 对应 Sphinx 的 indextemplate:首个冒号前是类型(single、pair、triple、see、seealso),其后是索引项,%s 代表名称。

描述:add_object_type

[[object_types]]
directive = "django-admin"
role = "djadmin"
index = "pair: %s; django-admin command"
name = "first-word"
display = "django-admin %s"
program = true

随后,.. django-admin:: migrate [app_label] 像普通对象一样描述命令,包含签名、内容、标识符(django-admin-migrate)及索引项。Sphinx 可用 parse_node 函数解析签名,这里改用字段表达常见处理规则:

name

"whole"(默认):对象名是完整签名。"first-word":对象名为首个空格之前的内容。例如 pdb 的 b(reak) [lineno] 命名为 b(reak)。

display

签名的显示方式,%s 代表签名。默认保留原样。

program

true:名称成为后续选项所属的程序,与 .. program:: 相同。

指令的其他名称

扩展可以用另一个名称注册 Sphinx 自有的指令:

[directive_aliases]
django-admin-option = "option"
awaitablefunction = "py:function"

未指定领域的目标是标准指令,或默认领域的指令;py:function 这样的目标则明确指定领域。

迁移

guidedog migrate 找出 conf.py 所列、属于项目自身模块的扩展。它只读取 add_crossref_type、add_object_type 和 add_directive 调用,不执行代码,并写入相应表。无法声明的内容会报告:parse_node 函数(需设置 name、display、program 以匹配),以及用 Python 编写的指令、角色和事件处理器。