MrBenJ
10/23/2015 - 12:28 AM

A Handlebars Helper that compares 2 things.

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);
    }
});