registerHelper
実装は非常に簡単です。
Handlebars.registerHelper = function(name, fn, inverse) {
if(inverse) { fn.not = inverse; }
this.helpers[name] = fn;
};
ヘルパーが既に定義されているかどうかのチェックはありません。ヘルパーは単にHandlebars.helpers
オブジェクトに書き込まれるだけです。
registerHelper
ただし、その苦情の独自のバージョンを追加することを妨げるものは何もありません。次のようなことができます。
Handlebars.paranoidRegisterHelper = function(name, fn, inverse) {
if(name in this.helpers)
throw 'Someone is trying to redefine the ' + name + ' helper';
this.registerHelper(name, fn, inverse);
};
次にparanoidRegisterHelper
、同じヘルパー名を 2 回使用すると、例外が発生します。
デモ: http://jsfiddle.net/ambiguous/3Knj3/
名前として使用し続けたい場合はregisterHelper
、モンキー パッチを適用する前に参照を安全にします。
var registerHelper = Handlebars.registerHelper;
Handlebars.registerHelper = function(name, fn, inverse) {
if(name in this.helpers)
throw 'Someone is trying to redefine the ' + name + ' helper';
registerHelper.apply(this, arguments);
};
デモ: http://jsfiddle.net/ambiguous/hUu2r/