I have written the following helper for a regular number comparison.
Handlebars.registerHelper('compare', function(lvalue, op, rvalue, options) {
lvalue = parseFloat(lvalue);
rvalue = parseFloat(rvalue);
if (arguments.length < 3)
throw new Error("Handlerbars Helper 'compare' needs 2 parameters");
var operator = op || "==";
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[op])
throw new Error("Handlerbars Helper 'compare' doesn't know the operator "+op);
return operators[op](lvalue,rvalue);
});But if I use this helper in a if based block helper, the block is executed even if the helper returns false. Am I supposed to use a particular data type for returning data to the templates.
P.S. I'm using a map value resolver and map based context in the template.