exper

1.0.9 • Public • Published

Exper

Build Status

Simple logical Expression Evaluator

Installation

npm install exper

Introduction

This module can be used for evaluating simple logical expressions. Expressions should be binary logical expressions. Currently supported operators are '=', '>', '<', '&&', '||', 'and', 'or', 'in'. Expression example

'(id = 123323 and price> 1299) or (skuid = 31231 and article in ( shoes, caps)) and sizes.38 = available'

We need to pass an object which can provide values for this expression. Eg. { id: 123323, price: 2000, skuid: 31231, article: 'shoes', sizes: { '38': 'available', '39': 'not-available'} }

Return value will be true or false accordingly.

if any value is missing in given data or the expression is wrong, result will be false

Usage

let e
let exp1 = '(a = 3 or b > 5) and (c in (1,2) or d < 4)'
 
= Exper(exp1)
e.evaluate({a: 3, b : 6, c: 1, d: 1}) // true
e.evaluate({a: 3, b : 4, c: 1, d: 6}) // true 
e.evaluate({a: 4, b : 4, c: 1, d: 1}) // false
e.evaluate({a: 3, b : 6, c: 4, d: 6}) // false
 
 
let exp2 = '(id = 123323 and price> 1299) or (skuid = 31231 and article in ( shoes, caps))'
 
= Exper(exp2)
e.evaluate({ id: 123323, price: 2000, skuid: 31231, article: 'shoes' }) // true
e.evaluate({ id: 123523, price: 2000, skuid: 31231, article: 'shoes' }) // true
e.evaluate({ id: 123523, price: 2000, skuid: 41231, article: 'shoes' }) // false
e.evaluate({ id: 123523, price: 1000, skuid: 31231, article: 'shoes' }) // true
e.evaluate({ id: 123523, price: 1000, skuid: 31231, article: 'shirts' }) // false
 
let exp3 = '(id = 123323 and price> 1299) or (skuid = 31231 and article in ( shoes, caps)) and sizes.38 = available'
 
= Exper(exp2)
e.evaluate({ id: 123323, price: 2000, skuid: 31231, article: 'shoes' }) // false
e.evaluate({ id: 123523, price: 2000, skuid: 31231, article: 'shoes',
     sizes: { '38': 'available', '39': 'not-available'} }) // true
e.evaluate({ id: 123523, price: 2000, skuid: 41231, article: 'shoes',
              sizes: { '38': 'not-available', '39': 'not-available'} }) // false
 

Test

npm test

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i exper

Weekly Downloads

0

Version

1.0.9

License

MIT

Last publish

Collaborators

  • swathysubhash