prototype.js 1.50_pre0 の Templateバグ

| コメント(0) | トラックバック(0)




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

Author

Daisuke Maki (a.k.a lestrrat): Perl hacker, Director of Japan Perl Association, YAPC::Asia Tokyo Organizer (2009-2012), Fluent in Japanese, English. Ex-Brazilian (sorta)

#perl #c #ruby #java #mysql #english #japanese #opensource #stf #cooking #scotch #cigar


このエントリーをはてなブックマ
ークに追加

翔泳社よりモダンPerl入門(2010)を出版させていただいております。できれば内容をアップデートしたいので是非皆様・・・現在の在庫処理にお力をお貸しください!><

月別アーカイブ