Tagscript
Transformers

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

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}`;
		}
	}