Замены в кодовых блоках Сфинкса - PullRequest
29 голосов
/ 11 января 2012

В этом примере 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 | перед рендерингом кодового блока.

Ответы [ 2 ]

23 голосов
/ 28 сентября 2012

Используйте директиву parsed-literal.

.. parsed-literal::

    ./home/user/somecommand-|version|

Источник: https://groups.google.com/forum/?fromgroups=#!topic/sphinx-dev/ABzaUiCfO_8:

2 голосов
/ 27 мая 2019

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

...