@qrvey/formula-lang
Version:
QFormula support for qrvey projects
41 lines • 1.55 kB
JavaScript
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