文字列がそのままになるように、ビルドアウト構成で変数置換に使用される魔法の文字をエスケープする簡単な方法はありますか? 言い換えれば、私が言うところ:
[part]
attribute = ${variable}
実際には ${variable} を展開したくありませんが、リテラル値のままにしておきます。
実際に私が遭遇している特定の問題は、ビルドアウト構成ファイル自体ではなく、レシピ「collective.recipe.template」によって処理されるテンプレート ファイルにあります。これは、構成ファイルで使用されるビルドアウトと同じ変数置換エンジンを使用します。問題は、テンプレートとして使用したいファイルが、最終的にファイルを消費するアプリケーション構成システムと組み合わせて、独自の目的で「${variable}」構文を既に使用していることです。
この問題を回避するために私が見つけた唯一の方法は、次のようなものを使用することです。
[server-xml]
recipe = collective.recipe.template
input = templates/server.xml.in
output = ${product:build-directory}/conf/server.xml
dollar = $
テンプレート入力ファイルには、次のものがあります。
${dollar}{variable}
それ以外の:
${variable}
すでに持っていたこと。
これが行っていることは、テンプレートを使用してセクションに対して「dollar」属性を検索し、「$」に置き換えることです。
それをしなければならないのではなく、できることを望んでいました:
\${variable}
またはおそらく:
$${variable}
そして、私が望むことをさせるためにダミーの属性を持つ必要がなくなります。
buildout のソース コードを見ると、変数置換に一致する方法では、エスケープ メカニズムが提供されていないようです。
実際に方法がない場合は、おそらく誰かが、変数展開を実行できるビルドアウトの代替テンプレート レシピを知っていますが、それが変数を示す方法に関係なくエスケープ メカニズムを提供します。テンプレート システムの展開メカニズムと、テンプレート化されるファイル内のリテラル データ。