From ef67c1e00b9d6cf2d099f356a354ad99fb4b1ae9 Mon Sep 17 00:00:00 2001 From: Volker Schukai <volker.schukai@schukai.com> Date: Tue, 28 Feb 2023 15:08:12 +0100 Subject: [PATCH] feat: new is- commands for transformer, not command --- application/source/data/transformer.mjs | 45 +++++++++++++++++++-- development/test/cases/data/transformer.mjs | 22 ++++++++++ 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/application/source/data/transformer.mjs b/application/source/data/transformer.mjs index 09b5f981d..235e975ea 100644 --- a/application/source/data/transformer.mjs +++ b/application/source/data/transformer.mjs @@ -17,6 +17,7 @@ import { validateObject, validatePrimitive, validateString, + validateBoolean, } from "../types/validate.mjs"; import {clone} from "../util/clone.mjs"; import {Pathfinder} from "./pathfinder.mjs"; @@ -186,6 +187,42 @@ function transform(value) { validateString(value); return value.toLowerCase(); + case "isundefined": + case "is-undefined": + return value === undefined; + + case "isnull": + case "is-null": + return value === null; + + case "isset": + case "is-set": + return value !== undefined && value !== null; + + case "isnumber": + case "is-number": + return isPrimitive(value) && !isNaN(value); + + case "isinteger": + case "is-integer": + return isPrimitive(value) && !isNaN(value) && value % 1 === 0; + + case "isfloat": + case "is-float": + return isPrimitive(value) && !isNaN(value) && value % 1 !== 0; + + case "isobject": + case "is-object": + return isObject(value); + + case "isarray": + case "is-array": + return Array.isArray(value); + + case "not": + validateBoolean(value); + return !value; + case "toupper": case "strtoupper": case "touppercase": @@ -497,7 +534,7 @@ function transform(value) { throw new Error("type not supported"); - + case "map": map = new Map(); while (args.length > 0) { @@ -505,13 +542,13 @@ function transform(value) { if (keyValue === undefined) { throw new Error("missing key parameter"); } - + keyValue = keyValue.split("="); map.set(keyValue[0], keyValue[1]); } - + return map.get(value); - + case "timestamp": date = new Date(value); timestamp = date.getTime(); diff --git a/development/test/cases/data/transformer.mjs b/development/test/cases/data/transformer.mjs index 1bb7aa2ff..65e6e4d63 100644 --- a/development/test/cases/data/transformer.mjs +++ b/development/test/cases/data/transformer.mjs @@ -24,9 +24,31 @@ describe('Transformer', function () { }); + describe('Transformer.run()', function () { [ + ['isundefined', "a", false], + ['isundefined', null, false], + ['isundefined', undefined, true], + ['isnull', "a", false], + ['isnull', null, true], + ['isset', null, false], + ['isset', undefined, false], + ['isset', "", true], + ['isnumber', "a", false], + ['isnumber', 4, true], + ['isnumber', 4.5, true], + ['isinteger', 4.5, false], + ['isinteger', 4, true], + ['isfloat', 5.6, true], + ['isfloat', 5, false], + ['isobject', 4, false], + ['isobject', {}, true], + ['isarray', [{}], true], + ['isarray', "a", false], + ['not', true, false], + ['not', false, true], ['map:a=4:b=5:c=6', "a", "4"], ['date', "2023-02-14", "14.2.2023"], ['year', "2023-02-14", 2023], -- GitLab