ejs で使える filter の作り方
node.js のテンプレートエンジンの一つ、ejs 。
https://github.com/visionmedia/ejs
ejs で使えるフィルターは下記の通り。
- first
- last
- capitalize
- downcase
- upcase
- sort
- sort_by:'prop'
- size
- length
- plus:n
- minus:n
- times:n
- divided_by:n
- join:'val'
- truncate:n
- truncate_words:n
- replace:pattern,substitution
- prepend:val
- append:val
- map:'prop'
- reverse
- get:'prop'
それらの filter の他に使ってみたいものがない場合、自前で作ることが出来る。 そうすることで使い道は広がるし、元データを無理に複雑化しなくて済むメリットもある。
例として、「Hatena,Livedoor,Google,DeNA」というようなデータがあるとする。 それを取得し、hrefタグでそれそれ囲むような filter といったことも作れる。
ejs.filters.b_tag = function(obj) {
var list = obj.split(',')
, txt;
for ( i in list ){
txt += '<a href="/service/' + list[i] + '">' + list[i] + "</a>\n";
}
return txt;
};