@react-awesome-query-builder/core
Version:
User-friendly query builder for React. Core
50 lines (48 loc) • 1.92 kB
JavaScript
import { SpelExpressionEvaluator } from "spel2js";
import { loadTree } from "../tree";
import { buildConv } from "./conv";
import { convertToTree } from "./convert";
import { postprocessCompiled } from "./postprocess";
import { wrapInDefaultConj } from "./builder";
import * as Utils from "../../utils";
var logger = Utils.OtherUtils.logger;
var extendConfig = Utils.ConfigUtils.extendConfig;
// https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/expressions.html#expressions
export var loadFromSpel = function loadFromSpel(spelStr, config) {
return _loadFromSpel(spelStr, config, true);
};
export var _loadFromSpel = function _loadFromSpel(spelStr, config) {
var returnErrors = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
//meta is mutable
var meta = {
errors: []
};
var extendedConfig = extendConfig(config, undefined, false);
var conv = buildConv(extendedConfig);
var compiledExpression;
var convertedObj;
var jsTree = undefined;
try {
var compileRes = SpelExpressionEvaluator.compile(spelStr);
compiledExpression = compileRes._compiledExpression;
} catch (e) {
meta.errors.push(e);
}
if (compiledExpression) {
//logger.debug("compiledExpression:", compiledExpression);
convertedObj = postprocessCompiled(compiledExpression, meta);
logger.debug("convertedObj:", convertedObj, meta);
jsTree = convertToTree(convertedObj, conv, extendedConfig, meta);
if (jsTree && jsTree.type != "group" && jsTree.type != "switch_group") {
jsTree = wrapInDefaultConj(jsTree, extendedConfig, convertedObj["not"]);
}
logger.debug("jsTree:", jsTree);
}
var immTree = jsTree ? loadTree(jsTree) : undefined;
if (returnErrors) {
return [immTree, meta.errors];
} else {
if (meta.errors.length) console.warn("Errors while importing from SpEL:", meta.errors);
return immTree;
}
};