Transformer

Monster.Data. Transformer

The transformer class is a swiss army knife for manipulating values. especially in combination with the pipe, processing chains can be built up.

You can call the method via the monster namespace new Monster.Data.Transformer().

<script type="module">
import {Monster} from 'https://cdn.jsdelivr.net/npm/@schukai/[email protected]/dist/modules/data/transformer.js';
new Monster.Data.Transformer()
</script>

Alternatively, you can also integrate this function individually.

<script type="module">
import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/[email protected]/dist/modules/data/transformer.js';
new Transformer()
</script>

A simple example is the conversion of all characters to lowercase. for this purpose the command tolower must be used.

let t = new Transformer('tolower').run('ABC'); // ↦ abc

all commands

in the following table all commands, parameters and existing aliases are described.

command parameter alias description
to-base64 base64 Converts the value to base64
from-base64 Converts the value from base64
call function:param1:param2:... Calling a callback function. The function can be defined in three places: either globally, in the context addCallback or in the passed object
default value:type ?? If the value is undefined the first argument is returned, otherwise the value. The third optional parameter specifies the desired type. If no type is specified, string is used. Valid types are bool, string, int, float, undefined and object. An object default value must be specified as a base64 encoded json string. (since 1.12.0)
debug the passed value is output (console) and returned
empty Return empty String ""
first-key default Can be applied to objects and returns the value of the first key. All keys of the object are fetched and sorted. (since 1.23.0)
fromjson Type conversion from a JSON string (since 1.12.0)
if statement1:statement2 ? Is the ternary operator, the first parameter is the valid statement, the second is the false part. To use the current value in the queue, you can set the value keyword. On the other hand, if you want to have the static string "value", you have to put one backslash \ in front of it and write value. the follow values are true: 'on', true, 'true'. If you want to have a space, you also have to write \ in front of the space.
index key:default property, key Fetches a value from an object, an array, a map or a set
last-key default Can be applied to objects and returns the value of the last key. All keys of the object are fetched and sorted. (since 1.23.0)
length count Length of the string or entries of an array or object
nop Do nothing
nth-key index:default Can be applied to objects and returns the value of the nth key. All keys of the object are fetched and sorted. (since 1.23.0)
nth-last-key index:default Can be applied to objects and returns the value of the nth key from behind. All keys of the object are fetched and sorted. (since 1.23.0)
path path The access to an object is done via a Pathfinder object
path-exists path Check if the specified path is available in the value (since 1.24.0)
plaintext plain All HTML tags are removed (*)
prefix text Adds a prefix
rawurlencode URL coding
static none The Arguments value is used and passed to the value. Special characters \ and : can be quotet by a preceding .
substring start:length Returns a substring
suffix text Adds a suffix
tointeger Type conversion to an integer value
tojson Type conversion to a JSON string (since 1.8.0)
tolower strtolower, tolowercase The input value is converted to lowercase letters
tostring Type conversion to a string.
toupper strtoupper, touppercase The input value is converted to uppercase letters
trim Remove spaces at the beginning and end
ucfirst First character large
ucwords Any word beginning large
undefined Return undefined
uniqid Creates a string with a unique value (**)

(*) for this functionality the extension jsdom must be loaded in the nodejs context.

 // polyfill
 if (typeof window !== "object") {
    const {window} = new JSDOM('', {
        url: 'http://example.com/',
        pretendToBeVisual: true
    });

    [
        'self',
        'document',
        'Node',
        'Element',
        'HTMLElement',
        'DocumentFragment',
        'DOMParser',
        'XMLSerializer',
        'NodeFilter',
        'InputEvent',
        'CustomEvent'
    ].forEach(key => (global[key] = window[key]));
}

(**) for this command the crypt library is necessary in the nodejs context.

import * as Crypto from "@peculiar/webcrypto";
global['crypto'] = new Crypto.Crypto();

Constructor

# new Transformer(definition)

Parameters:
Name Type Description
definition string
Since:
  • 1.5.0
Example
import {Transformer} from 'https://cdn.jsdelivr.net/npm/@schukai/[email protected]/dist/modules/data/transformer.js';

const transformer = new Transformer("tolower")

console.log(transformer.run("HELLO"))
// ↦ hello

console.log(transformer.run("WORLD"))
// ↦ world

Methods

# run(value) → {*}

Parameters:
Name Type Description
value *
Throws:
  • unknown command

    Type
    Error
  • unsupported type

    Type
    TypeError
  • type not supported

    Type
    Error
Returns:
Type
*

# setCallback(name, callback, context) → {Transformer}

Parameters:
Name Type Description
name string
callback function
context object
Throws:
  • value is not a string

    Type
    TypeError
  • value is not a function

    Type
    TypeError
Returns:
Type
Transformer