Transformers

Transformers are used to transform a value based on the tag at runtime. You can use builtin transformers or write your own transformer.

	import { Interpreter, StringTransformer, StrictVarsParser } from 'tagscript';
	const ts = new Interpreter(new StrictVarsParser());

	await ts.run('Hi {user}', { user: new StringTransformer(args) });
	// Hi Parbez
	const { Interpreter, StringTransformer, StrictVarsParser } = require('tagscript');
	const ts = new Interpreter(new StrictVarsParser());

	await ts.run('Hi {user}', { user: new StringTransformer(args) });
	// Hi Parbez

Builtin Transformers

Following is the list of builtin transformers:

Custom Transformer

You can write your own transformer by implementing ITransformer interface.

	import type { ITransformer, Lexer } from 'tagscript';

	/**
	* Integer transformer transforms an integer based on the given parameters.
	*
	* If no parameters are given, the integer will be returned as is.
	*
	* if `++` parameter is given, the integer will be incremented.
	* if `--` parameter is given, the integer will be decremented.
	*/
	export class IntegerTransformer implements ITransformer {
		private integer: number;

		public constructor(int: `${bigint | number}`) {
			this.integer = Number.parseInt(int, 10);
		}

		public transform(tag: Lexer) {
			if (tag.parameter === '++') {
				return `${++this.integer}`;
			}

			if (tag.parameter === '--') {
				return `${--this.integer}`;
			}

			return `${this.integer}`;
		}
	}
	/**
	* Integer transformer transforms an integer based on the given parameters.
	*
	* If no parameters are given, the integer will be returned as is.
	*
	* if `++` parameter is given, the integer will be incremented.
	* if `--` parameter is given, the integer will be decremented.
	*/
	module.exports = class IntegerTransformer {
		constructor(int) {
			this.integer = Number.parseInt(int, 10);
		}

		transform(tag) {
			if (tag.parameter === '++') {
				return `${++this.integer}`;
			}

			if (tag.parameter === '--') {
				return `${--this.integer}`;
			}

			return `${this.integer}`;
		}
	}

Last updated on