summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/handlebars/base.js21
-rw-r--r--lib/handlebars/utils.js8
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) {