Sphinx - 生成Trac票证和变更集的自动引用

Rei*_*ica 5 python trac restructuredtext python-sphinx

狮身人面像,有没有办法像自动链接的文本#112r1023到相应门票/变更Trac的

例如:

#112  -> http://mytracsite/tickets/112
r1023 -> http://mytracsite/changeset/1023
Run Code Online (Sandbox Code Playgroud)

有关更多示例,请参阅TracLinks.

Geo*_*edy 9

如果你把它放在你的config.py中


trac_url = 'http://mytratsite/'

from docutils import nodes, utils
from docutils.parsers.rst import roles
import urllib

def trac_role(role, rawtext, text, lineno, inliner, options={}, content=[]):
  ref = trac_url + '/intertrac/' + urllib.quote(text, safe='')
  node = nodes.reference(rawtext, utils.unescape(text), refuri=ref, **options)
  return [node],[]

roles.register_canonical_role('trac', trac_role)
Run Code Online (Sandbox Code Playgroud)

然后您可以在文档中使用:trac:`#123`:trac:`r1023`.

这可能是快速链接到trac站点的最简单方法.它自动适用于所有类型的TracLink,因为它使用了链接的intertrac机制.


Kur*_*Kee 5

Sphinx 1.0现在支持使用扩展名的外部链接extlinks.使用可配置的角色名称(例如"问题"),您可以编写以下链接:

:issue:`123`
Run Code Online (Sandbox Code Playgroud)

它将被转换为http://mytracsite/123.