过滤器能对输入参数执行转换。
过滤器是在渲染时间执行的,所以不管怎么样它们都不会直接修改编译后的模板结构。
Swig所有的内置过滤器都是以同样的方式编写的。查看更多的栗子,请在Swig源码中参考 `filters.js` 文件。
如需禁止定制过滤器的自动转义,给过滤器方法增加 `safe = true;` 属性即可,这样无论Swig的全局设置是什么,输出都不会被转义。
Name | Type | Optional | Default | Description |
---|---|---|---|---|
input | * |
undefined |
Input argument, automatically sent from Swig's built-in parser. |
|
args | * |
✔ | undefined |
All other arguments are defined by the Filter author. |
// This filter will return 'bazbop' if the idx on the input is not 'foobar'
swig.setFilter('foobar', function (input, idx) {
return input[idx] === 'foobar' ? input[idx] : 'bazbop';
});
// myvar = ['foo', 'bar', 'baz', 'bop'];
// => {{ myvar|foobar(3) }}
// Since myvar[3] !== 'foobar', we render:
// => bazbop
// This filter will disable auto-escaping on its output:
function bazbop (input) { return input; }
bazbop.safe = true;
swig.setFilter('bazbop', bazbop);
// => {{ "<p>"|bazbop }}
// => <p>