Substitutionen in Sphinx -Codeblöcken
-
27-10-2019 - |
Frage
In diesem REST -Beispiel, das von Sphinx gerendert werden soll, | yaco_url | wird nicht ersetzt, weil es in einem Code-Block ist:
.. |yaco_url| replace:: http://yaco.es/
You can use wget to download it:
.. code-block:: console
$ wget |yaco_url|package.tar.gz
Ich frage mich, ob es einen Weg gibt, den Ersatz von | yaco_url | zu erzwingen Vor dem Rendern des Codeblocks.
Lösung
Verwenden Sie die Anweisung "Parsed-Literal".
.. parsed-literal::
./home/user/somecommand-|version|
Quelle: https://groups.google.com/forum/?fromGroups=#!topic/Sphinx-dev/abzauicfo_8:
Andere Tipps
Fand eine bessere Lösung (meiner Meinung nach), die in anderen Richtlinien wie verwendet werden kann :samp:
und könnte für zukünftige Leser nützlich sein.
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)
Und diese Art von Markup:
.. http:get:: testing/replacement/{TEST}
Erzeugt richtig wie:
testing/replacement/replaced
Beachten Sie, dass, wenn dies verwendet wird, um ein Argument in der zu ersetzen :samp:
Richtlinie, eine Doppelklammer {
ist erforderlich.
:samp:`func({{TEST}})`.