expression-language.js
v1.0.1
Published
An engine for javascript that can compile and evaluate expressions written in typescript
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 --saveor yarn.
yarn add expression-language.jsGetting 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 12LICENSE
The MIT license. See MIT
