expression-language.js
v1.0.1
Published
An engine for javascript that can compile and evaluate expressions written in typescript
Downloads
9
Maintainers
Readme
Expression-language.js
Expression-language.js is an engine for javascript that can compile and evaluate expressions written in typescript.
Installation
Install via npm
.
npm install expression-language.js --save
or yarn
.
yarn add expression-language.js
Getting Started
Example:
import {Evaluator} from "expression-language.js";
const evaluator = new Evaluator();
// assume your have the following expr.
const expr = "user.ip in allowedIps and user.role is 'admin'";
const context = {
user: {
ip: "127.0.0.1",
role: "admin"
},
allowedIps: ["127.0.0.1", "... other ip"]
};
if (evaluator.evaluate(expr, context)) {
// yes. you're allowed.
doSomething();
}
Supported binary & unary.
Binary
| Operator | Sample |
| --- | --- |
| or
| alias of ||
|
| ||
| a || b
|
| and
| alias of &&
|
| &&
| a && b
|
| |
| a | b
|
| ^
| a ^ b
|
| &
| a & b
|
| ==
| a == b
|
| ===
| a === b
|
| is
| alias of ===
|
| !=
| a != b
|
| !==
| a !== b
|
| <
| a < b
|
| >
| a > b
|
| >=
| a >= b
|
| <=
| a <= b
|
| in
| 10 in [8,10,12]
|
| <<
| a << b
|
| >>
| a >> b
|
| +
| a + b
|
| -
| a - b
|
| ~
| a ~ b
|
| *
| a * b
|
| /
| a / b
|
| %
| a % b
|
Unary
| Operator | Sample|
| --- | --- |
| +
| +10
|
| -
| -10
|
| !
| !a
|
| not
| alias of !
|
| ++
| ++ a
or a ++
|
| --
| -- a
or a --
|
Function call.
evaluator.evaluate('say("hello", "world")', {
say: function (left, right) {
return left + ' ' + right;
}
});
// will output "hello world".
Method also supported.
evaluator.evaluate('people.say("hello", "world")', {
people: {
say: function (left, right) {
return left + ' ' + right;
}
}
});
You can write multi expressions, separated by SEMICOLON(;); However, evaluator will only return the value of the last expr.
evaluator.evaluate('12; "abc"'); //will ouput "abc"
Assign statement is also supported.
evaluator.evaluate('a = 10; a + 2'); //will ouput 12
LICENSE
The MIT license. See MIT