sphinx.ext.linkcode -- ソースコードへの外部リンクを追加

モジュールの作者: Pauli Virtanen

Added in version 1.2.

この拡張はオブジェクトの説明( .. class::.. function:: など)を見て、web上にホストされているコードへの外部リンクを追加します。この意図は sphinx.ext.viewcode 拡張と似ていますが、インターネット上のどこかにソースコードがあることを前提としています。

設定ファイルでそのオブジェクトのURLベースを返す linkcode_resolve 関数を指定する必要があります。

設定

linkcode_resolve
Type:
Callable[[str, dict[str, str]], str | None] | None
Default:
None

この linkcode_resolve(domain, info) 関数は、与えられた情報と与えられたドメインを使って、あるオブジェクトに対応するソースコードのURLを返す必要があります。

もし追加するリンクがない場合、 None を返す必要があります。

domain 引数はオブジェクトが属する言語ドメインを指定します。 info 引数は以下に示す、前提となっているキーを含む辞書型です(どのようなキーが必要かは各言語ドメインに依存します)。

  • py: module (モジュール名)、 fullname (オブジェクト名)

  • c: names (そのオブジェクトに対する名前のリスト)

  • cpp: names (そのオブジェクトに対する名前のリスト)

  • javascript: object (オブジェクトの名前), fullname (そのアイテム名)

例:

def linkcode_resolve(domain, info):
    if domain != 'py':
        return None
    if not info['module']:
        return None
    filename = info['module'].replace('.', '/')
    return "https://somesite/sourcerepo/%s.py" % filename

Third-party domains

Support for other domains can be added by extensions with add_linkcode_domain(). For example, a Sphinx extension that provides a php domain could use the following code to support linkcode:

from sphinx.ext.linkcode import add_linkcode_domain

def setup(app):
    add_linkcode_domain('php', ['namespace', 'class', 'fullname'])
sphinx.ext.linkcode.add_linkcode_domain(domain: str, keys: list[str], override: bool = False) None[ソース]

Register a new list of keys to use for a domain.

Added in version 8.2.