meval
v1.1.0
Published
Mimic eval in given context
Downloads
26
Maintainers
Readme
meval - m(imic) eval
Info
- This is not a "safe JavaScript eval"!
- This library only mimics
eval()
functionality to some point. - It always returns the value of given expression. You always need to provide context in which it will be executed (context must be an Object).
- Pure JavaScript! No dependencies! ^^,
- Minified version is only ~16KB
What's working
- one-argument operators:
! ...
~ ...
+ ...
- ...
typeof ...
- two-argument operators:
... . ...
(member accessor)... * ...
... / ...
... % ...
... + ...
... - ...
... >= ...
... <= ...
... > ...
... < ...
... instanceof ...
... in ...
... === ...
... !== ...
... == ...
... != ...
... && ...
... || ...
- three-argument operator:
... ? ... : ...
- Strings, Numbers (both Integers and Floats) and Booleans
- Node: Interpolation in Strings is not planned for now to be implemented
- properties:
undefined
null
NaN
Infinity
- grouping (paranthesis)
- calling methods
- support nested methods (e.g.
foo(1, bar(item.a, item.b))
)
- support nested methods (e.g.
- accessing allowed global Object:
Date
Math
Number
String
Array
Object
- mixing above
TODO
- one-argument operators:
new
(I don't know if it's good idea?)
Usage
Install
It's UMD package, so you can use it both: client-side (browser) and server-side (node.js).
Probably you want to just intall it with npm
:
npm install --save meval
And then just require it:
const meval = require('meval');
But if you don't want to use npm
, you can always simply download eg. minified version right from Releases.
Run
/**
* @param {String} expression Expression to be parsed
* @param {Object} context Context for expression
*/
meval(expression, context)
Example
<< meval('item.a + item.b * 5', { item: { a: 2, b: 3 } })
>> 17
Authors
- Marek Sierociński - marverix
See also the list of contributors who participated in this project.
License
This project is licensed under the ISC License - see the LICENSE file for details.