simple-evaluate

[![NPM version][npm-image]][npm-url] [![build status][travis-image]][travis-url] [![Test coverage][coveralls-image]][coveralls-url] [![npm download][download-image]][download-url]

Usage no npm install needed!

<script type="module">
  import simpleEvaluate from 'https://cdn.skypack.dev/simple-evaluate';
</script>

README

Simple Evaluate

NPM version build status Test coverage npm download

A safe parse for simple js expression.

Usage

import evaluate from 'simple-evaluate';
evaluate(null, '12 + 1 > 14');
evaluate({ a }, 'a + 1 > 14');

Support operation include

  • Math operator + - * / %
  • ternary expression a ? b : c
  • Comparison > < >= <= == != === !==
  • Logical && || !
  • Negation

You can run those expression, for example:

evaluate({}, '!a > 0');
evaluate({}, 'a > 0 || a < -12 || 12 + 2*(4 + 4) < 12');
evaluate({ a: 1 }, '-a * 2');

context find

$. stand for the root value all context, value path only support '.', and not support function call.

since 1.2.0, $. is optional. That mean $.a.b is equal to a.b

string and boolean

String and boolean support, string start with ' | ", just the same as javascript expression.

Boolean use two key words, true | false.

template string

You can use template string, just like the javascript syntax, for example.

evaluate({ a: 22 }, "`I am ${ a >= 18 ? 'adult' : 'child' }`").should.equal('I am adult');

Operation no support

  • Funcion call

So, you can not run those expression

evaluation({}, 'a(1) > 0');