Skip to content

Instantly share code, notes, and snippets.

@MrBenJ
Created October 23, 2015 00:28
Show Gist options
  • Save MrBenJ/8e2d891441cec7a8ee14 to your computer and use it in GitHub Desktop.
Save MrBenJ/8e2d891441cec7a8ee14 to your computer and use it in GitHub Desktop.
A Handlebars Helper that compares 2 things.
/**
* USAGE:
*
* {{#compare 'firstArgument' '===' 'secondArgument'}}
* <h1>I get rendered if the condition above is true!</h1>
* {{/compare}}
*
* **/
hbs.registerHelper('compare', function(left, operation, right, options) {
if (arguments.length < 3) {
throw new Error("Handlerbars Helper 'compare' needs 2 parameters");
}
var operators = {
'==': function(l, r) {
return l == r;
},
'===': function(l, r) {
return l === r;
},
'!=': function(l, r) {
return l != r;
},
'<': function(l, r) {
return l < r;
},
'>': function(l, r) {
return l > r;
},
'<=': function(l, r) {
return l <= r;
},
'>=': function(l, r) {
return l >= r;
},
'typeof': function(l, r) {
return typeof l == r;
}
}
if (!operators[operation]) {
throw new Error("Handlerbars Helper 'compare' doesn't know the operator " + operator);
}
var result = operators[operation](left, right);
if (result) {
console.log("TRUE!");
return options.fn(this);
} else {
console.log("FALSE!");
return options.inverse(this);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment