Skip to content

Instantly share code, notes, and snippets.

@doginthehat
Last active June 30, 2026 15:32
Show Gist options
  • Select an option

  • Save doginthehat/1890659 to your computer and use it in GitHub Desktop.

Select an option

Save doginthehat/1890659 to your computer and use it in GitHub Desktop.
compare block helper for handlebars
// {{compare unicorns ponies operator="<"}}
// I knew it, unicorns are just low-quality ponies!
// {{/compare}}
//
// (defaults to == if operator omitted)
//
// {{equal unicorns ponies }}
// That's amazing, unicorns are actually undercover ponies
// {{/equal}}
// (from http://doginthehat.com.au/2012/02/comparison-block-helper-for-handlebars-templates/)
Handlebars.registerHelper('compare', function(lvalue, rvalue, options) {
if (arguments.length < 3)
throw new Error("Handlerbars Helper 'compare' needs 2 parameters");
var operator = options.hash.operator || "==";
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[operator])
throw new Error("Handlerbars Helper 'compare' doesn't know the operator "+operator);
var result = operators[operator](lvalue,rvalue);
if( result ) {
return options.fn(this);
} else {
return options.inverse(this);
}
});
@augurone

augurone commented May 4, 2015

Copy link
Copy Markdown

@alexandrursu

Copy link
Copy Markdown

Thanks!

@tarponjargon

Copy link
Copy Markdown

Super helpful!

@azeredogab

azeredogab commented Aug 17, 2017

Copy link
Copy Markdown

Cool! Thanks Bro!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment