UNPKG

@react-awesome-query-builder/core

Version:
50 lines (48 loc) 1.92 kB
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; } };