Возможности шаблона docutils/reStructuredText

Как я могу настроить заполнители в моем файле .rst с фактическими значениями?

Например, у меня есть файл example.rst со следующим содержимым:

Header
------------------------------------ 
${custom_text}

Я хочу заменить свойство ${custom_text} значением this is the value of custom property, выполнив следующую команду:

rst2html example.rst -o example.html -Dcustom_text="this is the value of custom property"

Также интересно, можно ли настроить шаблон с помощью файла .properties? Например, я хотел бы запустить команду rst2html example.rst -o example.html -p example.properties, используя файл example.properties со следующим содержимым:

custom_text=this is the value of custom property

Является ли это возможным? Поддерживает ли вообще reStructuredText функции шаблона?

EDIT: обратите внимание, что я хочу настроить шаблон из командной строки или с помощью обычного файла .properties (может использоваться инструментом управления сборкой Ant/Maven).


person altern    schedule 19.03.2012    source источник


Ответы (2)


Замена в файлах reStructuredText выполняется с помощью директивы replace. Например:

I am using |RST|.

.. |RST| replace:: reStructuredText

получится текст

Я использую reStructuredText.

Вы можете использовать директиву include для определения списка шаблонов подстановки. в отдельном файле. Например, для следующих двух файлов:

пример.первый:

Header
======

.. Include templates from external file (this is a comment).
.. include:: properties.rst

I can include text, like |my custom text|, from other files.

properties.rst

.. |my custom text| replace:: "example text"

получится документ:

Заголовок

Я могу включить текст, например «пример текста», из других файлов.

Здесь я использовал команду rst2html.py example.rst для создания вывода HTML.

person Chris    schedule 20.03.2012
comment
Вы дали отличный ответ о функции шаблонов reStructuredText. Должен признаться, что я не знал о возможностях шаблонов reStructuredText, хотя предполагал, что должен быть какой-то способ. Но все же, я боюсь, что это не решит мою проблему - я хочу настроить шаблон из командной строки или с помощью обычного файла .properties (может использоваться инструментом управления сборкой Ant/Maven) - person altern; 20.03.2012
comment
Вам придется писать эти вещи самостоятельно. Поскольку rst2html.py не имеет параметров -p или -D, вам понадобится какой-то скрипт-оболочка. Поведение -D можно добиться, пропустив файл reStructuredText, например, через препроцессор языка C. Я подумаю о файле свойств, когда у меня будет немного больше времени. Однако вы хотите использовать reStructuredText таким образом, который не предназначен для использования, что может доставить больше проблем, чем пользы. - person Chris; 20.03.2012
comment
Да я вижу. Кажется, вы правы - я должен использовать другой формат. - person altern; 20.03.2012
comment
Есть ли способ использовать директиву replace для замены multiline? Я не могу заставить его сделать это. - person mareoraft; 11.07.2018

Существует несколько вариантов работы с шаблонами:

а) использовать механизм внутренней замены:

шаблон.txt::

 Header
 ======

 |custom text|

пример.txt::

 .. |custom text| replace:: this is the value of custom property

преобразовать с помощью rst2html example.txt -o example.html.

Таким образом, вы можете обрабатывать встроенный текст и изображения.

б) Напишите свою собственную оболочку: скрипт Python, который читает файлы template и properties, выполняет замену и конвертирует с помощью одной из функций в Docutils.core.

person G. Milde    schedule 19.09.2019