93 lines
2.0 KiB
JavaScript
93 lines
2.0 KiB
JavaScript
// BEGIN(BROWSER)
|
|
var Handlebars = {};
|
|
|
|
Handlebars.VERSION = "1.0.beta.2";
|
|
|
|
Handlebars.helpers = {};
|
|
Handlebars.partials = {};
|
|
|
|
Handlebars.registerHelper = function(name, fn, inverse) {
|
|
if(inverse) { fn.not = inverse; }
|
|
this.helpers[name] = fn;
|
|
};
|
|
|
|
Handlebars.registerPartial = function(name, str) {
|
|
this.partials[name] = str;
|
|
};
|
|
|
|
Handlebars.registerHelper('helperMissing', function(arg) {
|
|
if(arguments.length === 2) {
|
|
return undefined;
|
|
} else {
|
|
throw new Error("Could not find property '" + arg + "'");
|
|
}
|
|
});
|
|
|
|
Handlebars.registerHelper('blockHelperMissing', function(context, options) {
|
|
var inverse = options.inverse || function() {}, fn = options.fn;
|
|
|
|
|
|
var ret = "";
|
|
var type = Object.prototype.toString.call(context);
|
|
|
|
if(type === "[object Function]") {
|
|
context = context();
|
|
}
|
|
|
|
if(context === true) {
|
|
return fn(this);
|
|
} else if(context === false || context == null) {
|
|
return inverse(this);
|
|
} else if(type === "[object Array]") {
|
|
if(context.length > 0) {
|
|
for(var i=0, j=context.length; i<j; i++) {
|
|
ret = ret + fn(context[i]);
|
|
}
|
|
} else {
|
|
ret = inverse(this);
|
|
}
|
|
return ret;
|
|
} else {
|
|
return fn(context);
|
|
}
|
|
});
|
|
|
|
Handlebars.registerHelper('each', function(context, options) {
|
|
var fn = options.fn, inverse = options.inverse;
|
|
var ret = "";
|
|
|
|
if(context && context.length > 0) {
|
|
for(var i=0, j=context.length; i<j; i++) {
|
|
ret = ret + fn(context[i]);
|
|
}
|
|
} else {
|
|
ret = inverse(this);
|
|
}
|
|
return ret;
|
|
});
|
|
|
|
Handlebars.registerHelper('if', function(context, options) {
|
|
if(!context || Handlebars.Utils.isEmpty(context)) {
|
|
return options.inverse(this);
|
|
} else {
|
|
return options.fn(this);
|
|
}
|
|
});
|
|
|
|
Handlebars.registerHelper('unless', function(context, options) {
|
|
var fn = options.fn, inverse = options.inverse;
|
|
options.fn = inverse;
|
|
options.inverse = fn;
|
|
|
|
return Handlebars.helpers['if'].call(this, context, options);
|
|
});
|
|
|
|
Handlebars.registerHelper('with', function(context, options) {
|
|
return options.fn(context);
|
|
});
|
|
|
|
// END(BROWSER)
|
|
|
|
module.exports = Handlebars;
|
|
|