UNPKG

@qrvey/formula-lang

Version:

QFormula support for qrvey projects

39 lines 1.67 kB
import { AST_PRIMITIVES, AST_TYPES } from '../constants'; import { ERROR_DICTIONARY, ERROR_LIST } from '../errors/dictionary'; import { isAggregateFunction } from './isAggregate'; export function isAColumn(context) { return context.argument.type === AST_TYPES.column; } function isAColumnOrExternalFormula(context) { const isExternalFormula = context.argument.node .isExternalFormula; const isRawFunction = !isAggregateFunction(context.argument.node); //Must be a negation of the aggregate scope. return isAColumn(context) || (isExternalFormula && isRawFunction); } export function isAColumnParam(param, _dataType, context) { let valid = false; if (param) valid = isAColumnOrExternalFormula(context); const baseResponse = { valid }; if (!valid) return Object.assign(Object.assign(Object.assign({}, baseResponse), { mismatchData: { type: AST_TYPES.column, primitive: AST_PRIMITIVES.UNKNOWN, } }), ERROR_DICTIONARY[ERROR_LIST.missingColumnExpression]); return baseResponse; } export function isANumericColumnParam(param, dataType, context) { let valid = false; if (param) valid = isAColumnOrExternalFormula(context) && dataType === AST_PRIMITIVES.NUMBER; const baseResponse = { valid }; if (!valid) return Object.assign(Object.assign(Object.assign({}, baseResponse), { mismatchData: { type: AST_TYPES.column, primitive: AST_PRIMITIVES.NUMBER, } }), ERROR_DICTIONARY[ERROR_LIST.missingColumnExpression]); return baseResponse; } //# sourceMappingURL=isAColumn.js.map