Wrirting helpers in javascript for Handlebars.java

92 views
Skip to first unread message

Karan Pradhan

unread,
Apr 11, 2016, 5:21:31 PM4/11/16
to handlebars.java
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.
Reply all
Reply to author
Forward
0 new messages