Created
August 1, 2016 16:10
-
-
Save acterry/41e55ff13a1ffdbbf59f578fca1008bb to your computer and use it in GitHub Desktop.
Handlebar.js helper for conditionals
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// taken from the comments section of http://doginthehat.com.au/2012/02/comparison-block-helper-for-handlebars-templates/#comment-44 | |
/* | |
Sample usages: | |
{{#compare "Test" "Test"}} | |
Default comparison of "===" | |
{{/compare}} | |
{{#compare fooArray.Count ">" 5}} | |
There are more than 5 foos | |
{{/compare}} | |
*/ | |
Handlebars.registerHelper('compare', function (lvalue, operator, rvalue, options) { | |
var operators, result; | |
if (arguments.length < 3) { | |
throw new Error("Handlerbars Helper 'compare' needs 2 parameters"); | |
} | |
if (options === undefined) { | |
options = rvalue; | |
rvalue = operator; | |
operator = "==="; | |
} | |
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; }, | |
'>=': function (l, r) { return l >= r; }, | |
'typeof': function (l, r) { return typeof l == r; } | |
}; | |
if (!operators[operator]) { | |
throw new Error("Handlerbars Helper 'compare' doesn't know the operator " + operator); | |
} | |
result = operators[operator](lvalue, rvalue); | |
if (result) { | |
return options.fn(this); | |
} else { | |
return options.inverse(this); | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment