Add a notEqual block helper for Handlebars

This commit is contained in:
Jérémie Astori 2017-12-21 20:09:50 -05:00
parent 6d053d65e7
commit 371c5bcac2
No known key found for this signature in database
GPG Key ID: B9A4F245CD67BDE8
3 changed files with 49 additions and 1 deletions

View File

@ -0,0 +1,18 @@
"use strict";
module.exports = function(a, b, opt) {
if (arguments.length !== 3) {
throw new Error("Handlebars helper `notEqual` expects 3 arguments");
}
a = a.toString();
b = b.toString();
if (a !== b) {
return opt.fn(this);
}
if (opt.inverse(this) !== "") {
throw new Error("Handlebars helper `notEqual` does not take an `else` block");
}
};

View File

@ -10,7 +10,7 @@
{{#if whois.actualhost}}
<dt>Actual host:</dt>
<dd class="hostmask"><a href="https://ipinfo.io/{{whois.actualip}}" target="_blank" rel="noopener">{{whois.actualip}}</a>{{#equal whois.actualhost whois.actualip}}{{else}} ({{whois.actualhost}}){{/equal}}</dd>
<dd class="hostmask"><a href="https://ipinfo.io/{{whois.actualip}}" target="_blank" rel="noopener">{{whois.actualip}}</a>{{#notEqual whois.actualhost whois.actualip}} ({{whois.actualhost}}){{/notEqual}}</dd>
{{/if}}
{{#if whois.real_name}}

View File

@ -0,0 +1,30 @@
"use strict";
const expect = require("chai").expect;
const notEqual = require("../../../../../client/js/libs/handlebars/notEqual");
describe("notEqual Handlebars helper", function() {
const block = {
fn: () => "fn",
};
it("should render the block if both values are equal", function() {
expect(notEqual("foo", "bar", block)).to.equal("fn");
});
it("should throw if too few or too many arguments are given", function() {
expect(() => notEqual("foo", block)).to.throw(Error, /expects 3 arguments/);
expect(() => notEqual("foo", "bar", "baz", block))
.to.throw(Error, /expects 3 arguments/);
});
it("should throw if too few or too many arguments are given", function() {
const blockWithElse = {
fn: () => "fn",
inverse: () => "inverse",
};
expect(() => notEqual("foo", "foo", blockWithElse)).to.throw(Error, /else/);
});
});