Provides syntax and lexical analyzers, and an expression calculator optimized for repeated calculations.
Packages
The module contains the following packages:
- Calculator - expression calculator
- CSV - CSV tokenizer
- IO - input/output utility classes to support lexical analysis
- Mustache - Mustache templating engine
- Tokenizers - lexical analyzers to break incoming character streams into tokens
- Variants - dynamic objects that can hold any values and operators for them
Use
Install the package by using NPM as
npm install pip-services3-expressions-nodex --save
The example below shows how to use the expression calculator to dynamically calculate user-defined expressions.
import { IConfigurable } from 'pip-services3-commons-nodex';
import { ConfigParams } from 'pip-services3-commons-nodex';
import { IReferenceable } from 'pip-services3-commons-nodex';
import { IReferences } from 'pip-services3-commons-nodex';
import { Descriptor } from 'pip-services3-commons-nodex';
import { IOpenable } from 'pip-services3-commons-nodex';
...
let calculator = new ExpressionCalculator();
calculator.expression = "A + b / (3 - Max(-123, 1)*2)";
let vars = new VariableCollection();
vars.add(new Variable("A", new Variant(1)));
vars.add(new Variable("B", new Variant("3")));
let result = await calculator.evaluateWithVariables(vars);
console.log("The result of the expression is " + result.asString);
...
And, this example shows hot to process mustache templates:
let mustache = new MustacheTemplate();
mustache.template = "Hello, {{{NAME}}}{{#ESCLAMATION}}!{{/ESCLAMATION}}{{#unless ESCLAMATION}}.{{/unless}}";
let result = mustache.evaluateWithVariables({ NAME: 'Mike', ESCLAMATION: true });
console.log("The result of template evaluation is '" + result + "'");