Skip to content
Snippets Groups Projects
Verified Commit fcf49ded authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

feat: new equal command

parent 1d9171b4
No related branches found
No related tags found
No related merge requests found
...@@ -576,6 +576,44 @@ function transform(value) { ...@@ -576,6 +576,44 @@ function transform(value) {
return map.get(value); return map.get(value);
case "equals":
if (args.length === 0) {
throw new Error("missing value parameter");
}
validatePrimitive(value);
const equalsValue = args.shift();
/**
* The history of “typeof null”
* https://2ality.com/2013/10/typeof-null.html
* In JavaScript, typeof null is 'object', which incorrectly suggests
* that null is an object.
*/
if (value === null) {
if (equalsValue === "null") {
return true;
}
return false;
}
const typeOfValue = typeof value;
switch (typeOfValue) {
case "string":
return value === equalsValue;
case "number":
return value === parseFloat(equalsValue);
case "boolean":
return value === (equalsValue === "true" || equalsValue === "on");
case "undefined":
return equalsValue === "undefined";
default:
throw new Error("type not supported");
}
case "money": case "money":
case "currency": case "currency":
......
...@@ -28,6 +28,26 @@ describe('Transformer', function () { ...@@ -28,6 +28,26 @@ describe('Transformer', function () {
describe('Transformer.run()', function () { describe('Transformer.run()', function () {
[ [
['equals:a', "a", true],
['equals:a', "b", false],
['equals:3', 3, true],
['equals:3', 6, false],
['equals:on', true, true],
['equals:true', true, true],
['equals:on', false, false],
['equals:true', false, false],
['equals:off', false, true],
['equals:false', false, true],
['equals:off', false, true],
['equals:false', true, false],
['equals:3', 3, true],
['equals:3', 6, false],
['equals:undefined', undefined, true],
['equals:undefined', 3, false],
['equals:null', null, true],
['equals:null', 3, false],
['equals:3', 6, false],
['currency', "EUR0", "0,00 €"],
['currency:1:2', "EUR14.25", "14,2 €"], ['currency:1:2', "EUR14.25", "14,2 €"],
['currency', "EUR14.25", "14,25 €"], ['currency', "EUR14.25", "14,25 €"],
['datetime', "2023-02-14 14:12:10", "14.2.2023, 14:12:10"], ['datetime', "2023-02-14 14:12:10", "14.2.2023, 14:12:10"],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment