@qrvey/formula-lang
Version:
QFormula support for qrvey projects
49 lines • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getPrimitiveAsValue = exports.isSinglePrimitive = exports.inferPrimitive = exports.getFunctionPrimitive = exports.primitiveIsIncluded = void 0;
const constants_1 = require("../constants");
function primitiveIsIncluded(primitive, ...allowedPrimitives) {
const primitives = Array.isArray(primitive) ? primitive : [primitive];
return primitives.some((pr) => allowedPrimitives.includes(pr));
}
exports.primitiveIsIncluded = primitiveIsIncluded;
function getFunctionPrimitive(definition, args) {
if (typeof definition.primitiveResult !== 'function')
return definition.primitiveResult;
return definition.primitiveResult.apply(definition, [args]);
}
exports.getFunctionPrimitive = getFunctionPrimitive;
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;
}
function inferPrimitive(...primitives) {
const flattedPrimitives = flatPrimitives(...primitives);
if (flattedPrimitives.length === 0)
return constants_1.AST_PRIMITIVES.UNKNOWN;
return flattedPrimitives.length === 1
? flattedPrimitives[0]
: flattedPrimitives;
}
exports.inferPrimitive = inferPrimitive;
function isSinglePrimitive(primitive) {
return !Array.isArray(primitive);
}
exports.isSinglePrimitive = isSinglePrimitive;
function getPrimitiveAsValue(primitive, options = { separator: '/' }) {
if (!Array.isArray(primitive))
return primitive;
return primitive.join(options.separator);
}
exports.getPrimitiveAsValue = getPrimitiveAsValue;
//# sourceMappingURL=primitiveFunctions.js.map