Существует ли простой способ экранирования магических символов, используемых для подстановки переменных в конфигурации buildout , такой, что строка остается одна. Другими словами, где я говорю:
[part]
attribute = ${variable}
На самом деле я не хочу, чтобы он расширял $ {variable}, но оставлял его как буквальное значение.
На практике конкретная проблема, с которой я сталкиваюсь, заключается не в самом файле конфигурации компоновки, а в файле шаблона, обработанном рецептом "коллективной. Recipe.template". При этом используется тот же механизм подстановки переменных из buildout, который используется в файлах конфигурации. Проблема в том, что файл, который я хочу использовать в качестве шаблона, уже использует синтаксис «$ {variable}» для своих собственных целей в сочетании с системой конфигурации приложения, которая в конечном итоге использует файл.
Единственный способ обойти проблему - использовать что-то вроде:
[server-xml]
recipe = collective.recipe.template
input = templates/server.xml.in
output = ${product:build-directory}/conf/server.xml
dollar = $
В файле ввода шаблона тогда есть:
${dollar}{variable}
вместо:
${variable}
что уже было.
То, что это делает, вызывает поиск атрибута «доллар» в разделе с использованием шаблона и заменяет его на «$».
Вместо того, чтобы делать это, я надеялся, что можно сделать:
\${variable}
или, возможно, даже:
$${variable}
и избавьте от необходимости иметь фиктивный атрибут, чтобы заставить его делать то, что я хочу.
Глядя на исходный код для компоновки, то, как он соответствует подстановке переменных, похоже, не обеспечивает механизм перехода.
Если пути действительно нет, то, возможно, кто-то знает альтернативный рецептурный шаблон для компоновки, который может выполнять расширение переменных, но предоставляет механизм перехода для любого способа, которым он указывает переменные, так что можно избежать проблем, когда могут возникнуть конфликт между механизмом расширения шаблонных систем и литеральными данными в шаблонируемом файле.