prefix-expression
v1.1.1
Published
Evaluate Prefix Expressions represented in JSON
Downloads
2
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 OPERAND
s are defined by each operator
The supported OPERATOR
s 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-expression
Usage
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);
result
is 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