ほとんど文書化されていないesc
プラグマを使用して、テンプレートブロックにグローバルコンテキストを適用できます。あなたの2番目の質問については
{
"hello": "Hello & World"
}
{%esc:s}
This applies |s to everything inside the pragma
{hello} <-- will not escape the ampersand
{/esc}
、それはあなたのヘルパーが何をしているかに依存します。あなたのヘルパーが、例えばChunk.render
を介して何らかのチャンクを返す場合は、フィルタを手動で適用する必要があります。ヘルパーが値を返す場合、その値は存在する任意のfilters
に渡されます。ここにいくつかの例があります:助手を持っていれば、それに渡されたものだけがvalue
として返されます。あなたのヘルパーから値を返す
はfilters
を意味尊敬されている:あなたのヘルパーからのチャンクを返す
dust.helpers.val = function(chunk, context, bodies, params) {
return params.value;
};
{@val value="Hello & World" /} <-- Hello & World
{@val value="Hello & World" filters="s" /} <-- Hello & World
がfilters
を無視します:
dust.helpers.val = function(chunk, context, bodies, params) {
return chunk.write(params.value);
};
{@val value="Hello & World" /} <-- Hello & World
まだ2番目の質問への解決策を見つけていないが、まず、「| h」フィルタをエスケープしないように更新して、自動エスケープをグローバルに削除することができました。 dust.filters.h = function(value){戻り値; }; 新しいフィルタを追加して置き換えました。 dust.filters.esc = function(value){return dust.escapeHtml(value);} }; –