diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/lib/expr-eval/expression.mjs b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/lib/expr-eval/expression.mjs index d7aba35..57b4e0e 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/lib/expr-eval/expression.mjs +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/lib/expr-eval/expression.mjs @@ -146,7 +146,7 @@ function substitute(tokens, variable, expr) { /** * Evaluates the given instructions for a given Expression with given values. * @param {Instruction[]} tokens - * @param {Expression} expr + * @param {ExprEvalExpression} expr * @param {Record.} values * @return {number} */ @@ -442,7 +442,7 @@ function getSymbols(tokens, symbols, options) { } } -export class Expression { +export class ExprEvalExpression { /** * @param {Instruction[]} tokens * @param {Parser} parser @@ -458,26 +458,26 @@ export class Expression { /** * Simplifies the expression. - * @param {Object|undefined} values - * @returns {Expression} + * @param {Object|undefined} values + * @returns {ExprEvalExpression} */ simplify(values) { values = values || {} - return new Expression(simplify(this.tokens, this.unaryOps, this.binaryOps, this.ternaryOps, values), this.parser) + return new ExprEvalExpression(simplify(this.tokens, this.unaryOps, this.binaryOps, this.ternaryOps, values), this.parser) } /** * Creates a new expression where the variable is substituted by the given expression. * @param {string} variable - * @param {string|Expression} expr - * @returns {Expression} + * @param {string|ExprEvalExpression} expr + * @returns {ExprEvalExpression} */ substitute(variable, expr) { - if(!(expr instanceof Expression)) { + if(!(expr instanceof ExprEvalExpression)) { expr = this.parser.parse(String(expr)) } - return new Expression(substitute(this.tokens, variable, expr), this.parser) + return new ExprEvalExpression(substitute(this.tokens, variable, expr), this.parser) } /** @@ -527,7 +527,7 @@ export class Expression { /** * Converts the expression to a JS function. * @param {string} param - Parsed variables for the function. - * @param {Object.} variables - Default variables to provide. + * @param {Object.} variables - Default variables to provide. * @returns {function(...any)} */ toJSFunction(param, variables) { diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/lib/expr-eval/parser.mjs b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/lib/expr-eval/parser.mjs index 3336fcf..71a1c95 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/lib/expr-eval/parser.mjs +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/lib/expr-eval/parser.mjs @@ -25,7 +25,7 @@ import * as Polyfill from "./polyfill.mjs" import { ParserState } from "./parserstate.mjs" import { TEOF, TokenStream } from "./tokens.mjs" -import { Expression } from "./expression.mjs" +import { ExprEvalExpression } from "./expression.mjs" const optionNameMap = { "+": "add", @@ -156,7 +156,7 @@ export class Parser { parserState.parseExpression(instr) parserState.expect(TEOF, QT_TRANSLATE_NOOP("error", "EOF")) - return new Expression(instr, this) + return new ExprEvalExpression(instr, this) } evaluate(expr, variables) { diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/math/expression.mjs b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/math/expression.mjs index 8a7bf77..6505018 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/math/expression.mjs +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/math/expression.mjs @@ -41,7 +41,11 @@ export class Expression { this.cachedValue = this.calc.evaluate(Objects.currentObjectsByName) this.latexMarkup = Latex.expression(this.calc.tokens) } - + + variables() { + return this.calc.variables() + } + isConstant() { let vars = this.calc.variables() return !vars.includes("x") && !vars.includes("n") diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/module/expreval.mjs b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/module/expreval.mjs index f936541..5ac849e 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/module/expreval.mjs +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/module/expreval.mjs @@ -79,6 +79,7 @@ export class ExprParserAPI extends Module { /** * @param {string} expression - Expression to parse + * @returns {ExprEvalExpression} */ parse(expression) { return this._parser.parse(expression) diff --git a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/preferences/common.mjs b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/preferences/common.mjs index 37c7577..1e708ca 100644 --- a/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/preferences/common.mjs +++ b/LogarithmPlotter/qml/eu/ad5001/LogarithmPlotter/js/preferences/common.mjs @@ -107,7 +107,7 @@ export class ExpressionSetting extends Setting { * @param {Expression} value */ set(value) { - let vars = value.calc.variables() + let vars = value.variables() if(vars.length === this.variables.length && vars.every(x => this.variables.includes(x))) Helper.setSetting(this.nameInConfig, value) else {