import resolve, { toString } from '/imports/parser/resolve'; export default function evaluateCalculation(calculation, scope, givenContext) { const parseNode = calculation.parseNode; const fn = calculation._parseLevel; const calculationScope = { ...calculation._localScope, ...scope }; const { result: resultNode, context } = resolve(fn, parseNode, calculationScope, givenContext); calculation.errors = context.errors; if (resultNode?.parseType === 'constant') { calculation.value = resultNode.value; } else if (resultNode?.parseType === 'error') { calculation.value = null; } else { calculation.value = toString(resultNode); } // remove the working fields delete calculation._parseLevel; delete calculation._localScope; }