Code Monkey home page Code Monkey logo

expression-language.js's Introduction

Expression-language.js

Build Status Coverage Status NPM version GitHub license

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 `
`
and alias of &&
&& 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

expression-language.js's People

Contributors

slince avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.