声明对象类型¶
项目可能需要标准领域不认识的名称。在 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 编写的指令、角色和事件处理器。