var data = { foo: 0 };
var str = "foo -> #{foo}";
var t = new Template(str);
t.evaluate(data);

と言うコードでt.evaluate()は



foo -> 0

と返ってきて欲しいのだけど、実際には



foo ->

としか返ってこない。どうもよくある「0を使うと負として扱われる」バグのような気がするのでコードを見てみるとこんな感じで直せそう:



evaluate: function(object) {
return this.template.gsub(this.pattern, function(match) {
var before = match[1];
if (before == '\\') return match[2];
return before + (object[ match[3] ] + '').toString();
});
}