README
eva
Functions to create and call functions and evaluate expressions.
Installation
Node
npm install eva
Bower
bower install eva
AMD, <script>
Use dist/eva.js
or dist/eva.min.js
(minified version).
Usage
Node
var eva = require("eva");
AMD
define(["path/to/dist/eva.js"], function(eva) {
...
});
Bower, <script>
<!-- Use bower_components/eva/dist/eva.js if the library was installed by Bower -->
<script type="text/javascript" src="path/to/dist/eva.js"></script>
<script type="text/javascript">
// eva is available via eva field of window object
...
</script>
Examples
var func = eva.createFunction("(a || 0) + (b || 0) + (c || 0)", {paramNames: "a, b, c", expression: true});
console.log(func("abc")); // abc00
console.log(func(10, 1, 5, 8)); // 16
func = eva.createFunction("if (obj.b) {return a + b;} else {return 'a=' + a;}", {scope: true, paramNames: "obj"});
console.log( func({a: "a", b: "bc"}) ); // abc
console.log( eva.evalWith("this.a + this.b", {a: 1, b: 9}) ); // 10
console.log( eva.evalWith("fn(this.expr)", {expr: "Math.sin(0)"}, {fn: eva.evalWith}) ); // 0
var obj = {};
eva.createDelegateMethod(eva, "evalWith", {destination: obj, destinationMethod: "expr"});
console.log( obj.expr("Math.cos(0)") ); // 1
func = eva.closure(eva.evalWith, ["this.a * this.b"]);
console.log( func({a: 4, b: 7}) ); // 28
console.log( func({a: -3, b: 5}) ); // -15
func = eva.closure(eva.evalWith, [{a: 3, b: -9}], null, {prependArgs: true});
console.log( func("this.a + this.b") ); // -6
console.log( func("this.a - this.b") ); // 12
var funcList = [
eva.closure(eva.evalWith, ["this.a + this.b"]),
eva.closure(eva.evalWith, ["this.a * this.b"]),
eva.closure(eva.evalWith, ["Math.max(this.a, this.b)"])
];
console.log( eva.map(funcList, [{a: 2, b: -7}]) ); // [-5, -14, 2]
API
createFunction(code: String, [settings: Object]): Function
Create function to further use.
evalWith(expression: String, [context: Object], [scope: Object])
Calculate/evaluate value of specified expression using given context and scope.
createDelegateMethod(delegate: Object, method: String, [settings: Object]): Function
Create function that executes specified method of the given object.
closure(action: Function, [paramList: Array], [context: Object], [settings: Object]): Function
Create function that executes specified function with given parameters and context and returns result of call.
map(funcList: Array, [paramList: Array | Function], [context: Object | Function], [settings: Object]): Array
Call each function from specified list and return array containing results of calls.
See doc
folder for details.
Related projects
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.
License
Copyright (c) 2014-2018 Denis Sikuler
Licensed under the MIT license.