0.2.3 • Published 6 years ago

evalculist v0.2.3

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

evalculist.js

Build Status

evalculist provides a way to evaluate arbitrary javascript expressions in a controlled way, without exposing global variables. It accomplishes this by parsing the expressions such that variables become strings that are passed to variable, accessor, and assignment functions.

foo = bar.baz

becomes

assignment("foo", accessor(variable("bar"), "baz"))

Usage

Using evalculist.new

const localVars = {
  a: { b: 1 },
  c: 2
};
const evaluate = evalculist.new({
  variable: (name) => localVars[name] || Math[name],
  accessor: (object, key) => object[key],
  assignment: (name, value) => (localVars[name] = value)
});
const result = evaluate('pow(a.b + 1, c)');
// result === 4

Using evalculist.newFromContext

const context = {
  a: { b: 1 },
  c: 2,
  pow: Math.pow
};
const evaluate = evalculist.newFromContext(context);
const result = evaluate('pow(a.b + 1, c)');
// result === 4

Known Bugs

  • Object literals do not work if the keys are not enclosed in quotes (e.g. {a:1} does not work, but {"a":1} does).
  • Keywords do not work (e.g. if,for,var, etc.).

License MIT

0.2.3

6 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.0

7 years ago

0.0.1

7 years ago