Замены в кодовых блоках 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 | перед рендерингом блока кода.

30
задан Danny Navarro 17 January 2012 в 16:48
поделиться

1 ответ

Нашел лучшее решение (на мой взгляд), которое можно использовать в других директивах, таких как :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}

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

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

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

2
ответ дан 28 November 2019 в 00:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: