代码之家  ›  专栏  ›  技术社区  ›  Ross Rogers

在sphinx中,我可以注册一组应该始终转换为链接的关键字吗?

  •  5
  • Ross Rogers  · 技术社区  · 16 年前

    我的doc字符串引用了我定义的其他python类。每次sphinx遇到其中一个类时,我希望它插入到另一个类的文档的链接。在狮身人面像里有可能吗?

    具体来说,我有一个doc字符串,比如:

    '''This class contains a bunch of Foo objects'''
    

    我可以写:

    '''This class contains a bunch of :class:`~foo.Foo` objects'''
    

    但我更希望斯芬克斯找到所有匹配的文本 Foo 就好像我打过字 类别: ~foo.Foo

    2 回复  |  直到 14 年前
        1
  •  8
  •   hcs42    16 年前

    可以使用宏。

    在我的项目中,我有一个头文件,其中包含所有“重要”类和全局函数及其缩写。两行示例:

    .. |PostItem| replace:: :class:`PostItem <hklib.PostItem>`
    .. |PostNotFoundError| replace:: :class:`PostNotFoundError <hklib.PostNotFoundError>`
    

    在我的 rst 文件,我包括这个头文件。然后我可以在任何 RST 文件:

    .. include:: defs.hrst
    
    |PostItem| is a nice class. |PostNotFoundError|, on the other hand is not.
    

    (也可以使用 autogen 延伸。其中的宏也将被替换。)

    关于你的例子:我要补充 Foo 到头文件并以这种方式写入docstring:

    '''This class contains a bunch of |Foo| objects'''
    
        2
  •  2
  •   S.Lott    16 年前

    狮身人面像有大量的解释文本角色。

    http://sphinx.pocoo.org/markup/inline.html#cross-referencing-python-objects

    我想进入foo,让sphinx把它解释成我写的:类: ~foo.Foo

    听起来不切实际。它似乎会麻痹你的第一次尝试分析你的文本。查找解释文本和rst支持的少数引用规则( *_|` )是关于实际的极限。

    你的要求可能会导致第一次花一整天来检查每个实例 Foo 在每一个可能的上下文和推理出你是否想要一个链接。你只想在没有装饰的情况下 ;琐碎的搜索和替换是行不通的。

    您可以干扰docstring的预处理。

    http://sphinx.pocoo.org/ext/autodoc.html#docstring-preprocessing

    这可能允许您对docstring文本尝试全局搜索和替换策略。