diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/handlebars/base.js | 21 | ||||
-rw-r--r-- | lib/handlebars/utils.js | 8 |
2 files changed, 24 insertions, 5 deletions
diff --git a/lib/handlebars/base.js b/lib/handlebars/base.js index e6dbc1e..5e7ea0e 100644 --- a/lib/handlebars/base.js +++ b/lib/handlebars/base.js @@ -18,13 +18,26 @@ Handlebars.REVISION_CHANGES = { Handlebars.helpers = {}; Handlebars.partials = {}; +var toString = Object.prototype.toString, + functionType = '[object Function]', + objectType = '[object Object]'; + Handlebars.registerHelper = function(name, fn, inverse) { - if(inverse) { fn.not = inverse; } - this.helpers[name] = fn; + if (toString.call(name) === objectType) { + if (inverse || fn) { throw new Handlebars.Exception('Arg not supported with multiple helpers'); } + Handlebars.Utils.extend(this.helpers, name); + } else { + if (inverse) { fn.not = inverse; } + this.helpers[name] = fn; + } }; Handlebars.registerPartial = function(name, str) { - this.partials[name] = str; + if (toString.call(name) === objectType) { + Handlebars.Utils.extend(this.partials, name); + } else { + this.partials[name] = str; + } }; Handlebars.registerHelper('helperMissing', function(arg) { @@ -35,8 +48,6 @@ Handlebars.registerHelper('helperMissing', function(arg) { } }); -var toString = Object.prototype.toString, functionType = "[object Function]"; - Handlebars.registerHelper('blockHelperMissing', function(context, options) { var inverse = options.inverse || function() {}, fn = options.fn; diff --git a/lib/handlebars/utils.js b/lib/handlebars/utils.js index 7d9da17..dffc477 100644 --- a/lib/handlebars/utils.js +++ b/lib/handlebars/utils.js @@ -39,6 +39,14 @@ var escapeChar = function(chr) { }; Handlebars.Utils = { + extend: function(obj, value) { + for(var key in value) { + if(value.hasOwnProperty(key)) { + obj[key] = value[key]; + } + } + }, + escapeExpression: function(string) { // don't escape SafeStrings, since they're already safe if (string instanceof Handlebars.SafeString) { |