@qrvey/formula-lang
Version:
QFormula support for qrvey projects
27 lines • 1.26 kB
JavaScript
import { AST_PRIMITIVES, AST_TYPES } from '../constants';
export function getNumberFromLiteral(value, argument) {
if (argument.type === AST_TYPES.literal &&
(argument.dataType === AST_PRIMITIVES.NUMBER ||
argument.primitive === AST_PRIMITIVES.NUMBER)) {
const _value = value.replace('L', '');
return Number(_value);
}
return null;
}
export function getNumericValueFromArgument(param, argument) {
var _a;
const numberValue = getNumberFromLiteral(String(param), argument);
if (numberValue !== null)
return numberValue;
const isUnaryExpression = argument.type === AST_TYPES.unaryExpression; // Negative numbers arrive as unary expression
if (isUnaryExpression) {
const unaryExp = ('node' in argument ? argument.node : argument);
const isNegative = unaryExp.operator === '-';
const isNumber = unaryExp.right.type === AST_TYPES.literal &&
unaryExp.right.dataType === AST_PRIMITIVES.NUMBER;
if (isNumber)
return (((_a = getNumberFromLiteral(String(unaryExp.right.value), unaryExp.right)) !== null && _a !== void 0 ? _a : 0) * (isNegative ? -1 : 1));
}
return param;
}
//# sourceMappingURL=getNumericValueFromArgument.js.map