1.0.1 • Published 2 years ago
expression-language.js v1.0.1
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