コードを舐める日々

わからないことがわからないことをしる日々

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;
};