prefix-expression
v1.1.1
Published
Evaluate Prefix Expressions represented in JSON
Maintainers
Readme
prefix-expression
Library to Evaluate Prefix Expressions represented in JSON
npm i prefix-expression
Overview
prefix expression can be represented in JSON Format as follows
EXPRESSION = {
OPERATOR : [
...OPERANDS
]
}An OPERAND can be strng, number, boolean, null, array or EXPRESSION
The type and number of OPERANDs are defined by each operator
The supported OPERATORs are
- Numeric
- Arithmatic
(+,-,*,/,pow,%) - Comparision
(>,>=,<,<=)
- Arithmatic
- Boolean Logic
- Comparision
(==,===,!=,!==) - Negate
(!) - Logical
(or,and) - Others
(if) if requires 3 operands [condition, trueValue, falseValue]
- Comparision
- Array
- (
map,reduce,filter) - (
intersection,diff,union) - (
includes) - (
size) works with string also - (
max,min)
- (
- String
- (
indexOf) - (
concat) - (
size) works with array also
- (
- Object
- (
entries)
- (
- Special Operators
Special Operators can not be overrided or removed- Data Access
(var)
Uses JSONPath to access data
has 2 operands , 1st is a JSON path string or an expression which resolves into a string , 2nd is boolean indicating to return all or 1st result from json path query - Callback
(callback)
to differ the evaluation of expression until parent expression is evaluated ... parent Operation can use the callback to evaluate child expression with new data
- Data Access
Install
npm i prefix-expressionUsage
evaluate
import { evaluate, PrefixExpression, Expression } from "prefix-expression"
// prefix expression
const expression: PrefixExpression;
// simple evaluate
const result = evaluate(expression);
// evaluate with data
const data: unknown;
const result = evaluate(expression, data);
// overide the operators
type OperatorLogic = {
name: string;
logic: {
schema: JSONSchemaType<Expression[]>;
operation: (operands: Expression)=>Expression};
}
const operators: (string|OperatorLogic)[];
const result = evaluate(expression, {}, operators);
resultis either result of the expression OR reduced expression with unresolved data- result can be still evaluated when more data is available
Support
This project is a part of Open Source Intitiative from Sodaru Technologies
Write an email to [email protected] for queries on this project
