Подтвердить что ты не робот

Замены в кодовых блоках Sphinx

В этом примере reST, предназначенном для отображения Sphinx, | yaco_url | не заменяется, потому что это в кодовом блоке:

.. |yaco_url| replace:: http://yaco.es/

You can use wget to download it:

.. code-block:: console

    $ wget |yaco_url|package.tar.gz

Интересно, есть ли способ принудительно заменить | yaco_url | перед рендерингом блока кода.

4b9b3361

Ответ 2

Нашел лучшее решение (на мой взгляд), которое можно использовать в других директивах, таких как :samp: и может быть полезно для будущих читателей.

config.py:

def ultimateReplace(app, docname, source):
    result = source[0]
    for key in app.config.ultimate_replacements:
        result = result.replace(key, app.config.ultimate_replacements[key])
    source[0] = result

ultimate_replacements = {
    "{TEST}" : "replaced"
}

def setup(app):
   app.add_config_value('ultimate_replacements', {}, True)
   app.connect('source-read', ultimateReplace)

И такая разметка:

.. http:get:: testing/replacement/{TEST}

Правильно генерирует как:

testing/replacement/replaced

Обратите внимание, что при использовании этого для замены аргумента в директиве :samp: требуется двойная скобка {.

:samp:'func({{TEST}})'.

источник: https://github.com/sphinx-doc/sphinx/issues/4054