UNPKG

@qrvey/formula-lang

Version:

QFormula support for qrvey projects

41 lines 1.55 kB
import { AST_PRIMITIVES } from '../constants'; export function primitiveIsIncluded(primitive, ...allowedPrimitives) { const primitives = Array.isArray(primitive) ? primitive : [primitive]; return primitives.some((pr) => allowedPrimitives.includes(pr)); } export function getFunctionPrimitive(definition, args) { if (typeof definition.primitiveResult !== 'function') return definition.primitiveResult; return definition.primitiveResult.apply(definition, [args]); } function flatPrimitives(...primitives) { const resultPrimitives = []; if (!primitives) return resultPrimitives; primitives.forEach((pr) => { const pushElements = Array.isArray(pr) ? pr : [pr]; pushElements.forEach((pe) => { const existInResult = resultPrimitives.includes(pe); if (!existInResult) resultPrimitives.push(pe); }); }); return resultPrimitives; } export function inferPrimitive(...primitives) { const flattedPrimitives = flatPrimitives(...primitives); if (flattedPrimitives.length === 0) return AST_PRIMITIVES.UNKNOWN; return flattedPrimitives.length === 1 ? flattedPrimitives[0] : flattedPrimitives; } export function isSinglePrimitive(primitive) { return !Array.isArray(primitive); } export function getPrimitiveAsValue(primitive, options = { separator: '/' }) { if (!Array.isArray(primitive)) return primitive; return primitive.join(options.separator); } //# sourceMappingURL=primitiveFunctions.js.map