UNPKG

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