evaluate.js (2338B)
1 "use strict"; 2 3 Object.defineProperty(exports, "__esModule", { 4 value: true 5 }); 6 exports.createEvaluate = void 0; 7 8 var _collection = require("../../utils/collection.js"); 9 10 var _factory = require("../../utils/factory.js"); 11 12 var _map = require("../../utils/map.js"); 13 14 var name = 'evaluate'; 15 var dependencies = ['typed', 'parse']; 16 var createEvaluate = /* #__PURE__ */(0, _factory.factory)(name, dependencies, function (_ref) { 17 var typed = _ref.typed, 18 parse = _ref.parse; 19 20 /** 21 * Evaluate an expression. 22 * 23 * Note the evaluating arbitrary expressions may involve security risks, 24 * see [https://mathjs.org/docs/expressions/security.html](https://mathjs.org/docs/expressions/security.html) for more information. 25 * 26 * Syntax: 27 * 28 * math.evaluate(expr) 29 * math.evaluate(expr, scope) 30 * math.evaluate([expr1, expr2, expr3, ...]) 31 * math.evaluate([expr1, expr2, expr3, ...], scope) 32 * 33 * Example: 34 * 35 * math.evaluate('(2+3)/4') // 1.25 36 * math.evaluate('sqrt(3^2 + 4^2)') // 5 37 * math.evaluate('sqrt(-4)') // 2i 38 * math.evaluate(['a=3', 'b=4', 'a*b']) // [3, 4, 12] 39 * 40 * let scope = {a:3, b:4} 41 * math.evaluate('a * b', scope) // 12 42 * 43 * See also: 44 * 45 * parse, compile 46 * 47 * @param {string | string[] | Matrix} expr The expression to be evaluated 48 * @param {Object} [scope] Scope to read/write variables 49 * @return {*} The result of the expression 50 * @throws {Error} 51 */ 52 return typed(name, { 53 string: function string(expr) { 54 var scope = (0, _map.createEmptyMap)(); 55 return parse(expr).compile().evaluate(scope); 56 }, 57 'string, Map | Object': function stringMapObject(expr, scope) { 58 return parse(expr).compile().evaluate(scope); 59 }, 60 'Array | Matrix': function ArrayMatrix(expr) { 61 var scope = (0, _map.createEmptyMap)(); 62 return (0, _collection.deepMap)(expr, function (entry) { 63 return parse(entry).compile().evaluate(scope); 64 }); 65 }, 66 'Array | Matrix, Map | Object': function ArrayMatrixMapObject(expr, scope) { 67 return (0, _collection.deepMap)(expr, function (entry) { 68 return parse(entry).compile().evaluate(scope); 69 }); 70 } 71 }); 72 }); 73 exports.createEvaluate = createEvaluate;