1.0.9 • Published 8 years ago

exper v1.0.9

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

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)'

e = 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))'

e = 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'

e = 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

1.0.9

8 years ago

1.0.8

8 years ago

1.0.7

8 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago