mathsteps-experimental-fork
Version:
Step by step math solutions. Experimental Fork
49 lines (44 loc) • 1.81 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const index = require('../index.js');
const expressionEqualsAndNormalization = require('../newServices/expressionEqualsAndNormalization.js');
const myNodeToString = require('../newServices/nodeServices/myNodeToString.js');
const cleanString = require('../util/cleanString.js');
const equalityCache = require('../util/equalityCache.js');
const nextStepEqCache = new equalityCache.EqualityCache();
const ansStepCache = {};
function getAnswerFromStep(userStep) {
userStep = cleanString.cleanString(userStep);
for (const cachedStep of Object.keys(ansStepCache)) {
if (expressionEqualsAndNormalization.areExpressionEqual(cachedStep, userStep, nextStepEqCache))
return ansStepCache[cachedStep];
}
const eventualAnswer = index.default.simplifyExpression({
expressionAsText: userStep,
isDebugMode: false,
expressionCtx: void 0,
getMistakes: false,
getAllNextStepPossibilities: false
// onStepCb: (step) => {
// },
});
const strEventualAnswer = myNodeToString.myNodeToString(eventualAnswer);
ansStepCache[userStep] = strEventualAnswer;
return strEventualAnswer;
}
function getAnswerFromEquation(equation, variable = null) {
const useThisVariable = variable || equation.match(/[a-z]/i)?.[0] || "x";
const result = index.default.solveEquation({
equationAsText: equation,
unknownVariable: useThisVariable
/// **
// * @param {{ equation: { getId: () => any; }; stepId: string; }} step
// */
// onStepCb(step) {
// console.log(`[ ${step.equation.getId()} ] ${step.stepId} | ${step.equation}`)
// },
});
return result.getSolutionsAsText();
}
exports.getAnswerFromEquation = getAnswerFromEquation;
exports.getAnswerFromStep = getAnswerFromStep;