diff options
Diffstat (limited to 'sphinx/ext/extlinks.py')
-rw-r--r-- | sphinx/ext/extlinks.py | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/sphinx/ext/extlinks.py b/sphinx/ext/extlinks.py index dbd55e4b4..53b051c45 100644 --- a/sphinx/ext/extlinks.py +++ b/sphinx/ext/extlinks.py @@ -8,11 +8,11 @@ This adds a new config value called ``extlinks`` that is created like this:: - extlinks = {'exmpl': ('http://example.com/%s.html', prefix), ...} + extlinks = {'exmpl': ('https://example.invalid/%s.html', prefix), ...} Now you can use e.g. :exmpl:`foo` in your documents. This will create a - link to ``http://example.com/foo.html``. The link caption depends on the - *prefix* value given: + link to ``https://example.invalid/foo.html``. The link caption depends on + the *prefix* value given: - If it is ``None``, the caption will be the full URL. - If it is a string (empty or not), the caption will be the prefix prepended @@ -24,15 +24,25 @@ :license: BSD, see LICENSE for details. """ +from typing import TYPE_CHECKING + from docutils import nodes, utils from six import iteritems import sphinx from sphinx.util.nodes import split_explicit_title +if TYPE_CHECKING: + from typing import Any, Dict, List, Tuple # NOQA + from docutils.parsers.rst.states import Inliner # NOQA + from sphinx.application import Sphinx # NOQA + from sphinx.util.typing import RoleFunction # NOQA + def make_link_role(base_url, prefix): + # type: (unicode, unicode) -> RoleFunction def role(typ, rawtext, text, lineno, inliner, options={}, content=[]): + # type: (unicode, unicode, unicode, int, Inliner, Dict, List[unicode]) -> Tuple[List[nodes.Node], List[nodes.Node]] # NOQA text = utils.unescape(text) has_explicit_title, title, part = split_explicit_title(text) try: @@ -54,11 +64,13 @@ def make_link_role(base_url, prefix): def setup_link_roles(app): + # type: (Sphinx) -> None for name, (base_url, prefix) in iteritems(app.config.extlinks): app.add_role(name, make_link_role(base_url, prefix)) def setup(app): + # type: (Sphinx) -> Dict[unicode, Any] app.add_config_value('extlinks', {}, 'env') app.connect('builder-inited', setup_link_roles) return {'version': sphinx.__display_version__, 'parallel_read_safe': True} |