javascriptテンプレートエンジンについて調べてたらphpspotで紹介されていた
RND - fast and simple JS template system
が楽ちんそうなので試したみた。


テンプレートエンジンといっても用意された関数を通すだけなのでカンタンっぽい。
http://amix.dk/blog/viewEntry/?id=161
にもあるとおり

function RND(tmpl, ns) {
  var fn = function(w, g) {
    g = g.split("|");
    var cnt = ns[g[0]];
    for(var i=1; i < g.length; i++)
      cnt = eval(g[i])(cnt);
    return cnt || w;
  };
  return tmpl.replace(/%(([A-Za-z0-9_|.]*))/g, fn);
}


を宣言して



var tmpl = '<a href="%(link)">%(value)</a>';
var name_space = {'link': 'http://amix.dk', 'value': 5.5};
alert( RND(tmpl, name_space) );


と書けばマージされて


<a href="http://amix.dk">5</a> 

が出力されるはず。




しかしぜんぜん動かない ort
なぜ、、、
コピペしただけなのに。





ってよく見たら正規表現に問題あるじゃんか。

return tmpl.replace(/%(([A-Za-z0-9_|.]*))/g, fn);

return tmpl.replace(/%\(([A-Za-z0-9_|.]*)\)/g, fn);

これで動いた。



くっそー。
無駄な時間を・・・


まぁこれはphpspotが悪いわけではなく元記事のほうが間違えてただけだけど。
(よく見たら元記事のコメントにも間違いの指摘があった・・・)