1.2.0 • Published 10 months ago

js-expression-eval v1.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

js-expression-eval

Javascript based string expression evaluation library.

This library can evaluate a string expression and return the result. It supports basic arithmetic operations like addition, subtraction, multiplication, division and modulus. It also supports variables and functions.

Installation

yarn

yarn add js-expression-eval

npm

npm install js-expression-eval

Usage

Import

import jsExpressionEval from 'js-expression-eval';
const { ExpressionParser } = jsExpressionEval;

Syntax

const parser = new ExpressionParser(expression:string, variables);
const result = parser.evaluate();

Basic arithmetic operations

import jsExpressionEval from 'js-expression-eval';
const { ExpressionParser } = jsExpressionEval;
const parser = new ExpressionParser('2 + 3');
const result = parser.evaluate();
console.log(result); // 5

Variables

const parser = new ExpressionParser('x + y.z', { x: 2, y: { z: 3 } });
const result = parser.evaluate();
console.log(result); // 5

Functions

const parser = new ExpressionParser('A + B', { A: 2, B: () => 3 });
const result = parser.evaluate();
console.log(result); // 5

Function with method chaining

const parser = new ExpressionParser('A.B + A.C' ,
{ 
    A: (identifier) => {
    switch (identifier) {
        case 'B':
            return 2;
        case 'C':
            return 3;
        }
    }
});
const result = parser.evaluate();
console.log(result); // 5

Predefined functions

By default the parser has list predefined functions.

  1. Array Functions
  2. Math Functions
  3. Average Functions
  4. Conditional Functions
  5. Logical Functions

New function request

If you want to add a new function to the parser, please create a new issue with the function name and the function description. We will add the function to the parser as soon as possible.

License

MIT

Libraries used

  1. acorn
1.2.0

10 months ago

1.1.0

10 months ago

1.0.0

10 months ago