hbs-helpers-sync
Version:
sync Handlebars helpers between server and client
74 lines (54 loc) • 1.3 kB
JavaScript
(function(window){
var root = window;
var exclude, include, helpers, Handlebars;
function HHS(){
}
HHS.VERSION = "0.1.6";
if (typeof exports !== 'undefined') {
if (typeof module !== 'undefined' && module.exports) {
exports = module.exports = HHS;
}
exports = HHS;
}else{
root.HHS = HHS;
}
function check(funcname, val){
if(typeof val === "string"){
if(funcname == val){
return true;
}
}else if(val.length > 0){
return val.indexOf(funcname) !== -1;
}
return false;
}
function register(funcname){
Handlebars.registerHelper(funcname, helpers[funcname]);
}
HHS.sync = function(params){
params = params || {};
Handlebars = params.Handlebars || root.Handlebars;
params.helpers = params.helpers;
params.exclude = params.exclude || "";
params.include = params.include || "";
if(!Handlebars){
throw new Error("please provide a Handlebars reference");
}
if(!params.helpers){
throw new Error("please provide an object with helper functions");
}
for(var funcname in helpers){
if(include){
if(check(funcname, include)){
register(funcname);
}
}else if(exclude){
if(!check(funcname, exclude)){
register(funcname);
}
}else{
register(funcname);
}
}
};
}.call(this, window));