@react-querybuilder/core 8.14.0 → 8.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{basic-Dxm6jWFu.d.ts → basic-BXJVfD0P.d.ts} +68 -50
- package/dist/{basic-GFsWfi0Z.d.mts → basic-CNIjb6rI.d.mts} +68 -50
- package/dist/cjs/react-querybuilder_core.cjs.development.d.ts +178 -127
- package/dist/cjs/react-querybuilder_core.cjs.development.js +299 -251
- package/dist/cjs/react-querybuilder_core.cjs.development.js.map +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.d.ts +178 -127
- package/dist/cjs/react-querybuilder_core.cjs.production.js +1 -1
- package/dist/cjs/react-querybuilder_core.cjs.production.js.map +1 -1
- package/dist/{convertQuery-DAj92cbM.mjs → convertQuery-B5Qm_6ut.mjs} +30 -22
- package/dist/convertQuery-B5Qm_6ut.mjs.map +1 -0
- package/dist/convertQuery-DfZehtnd.js +94 -0
- package/dist/convertQuery-DfZehtnd.js.map +1 -0
- package/dist/{export-_wipiqJZ.d.mts → export-6x7MilFR.d.mts} +2 -3
- package/dist/{export-6VbkhCrf.d.ts → export-CpJOQuZv.d.ts} +2 -3
- package/dist/formatQuery.d.mts +4 -3
- package/dist/formatQuery.d.ts +4 -3
- package/dist/formatQuery.js +18 -50
- package/dist/formatQuery.js.map +1 -1
- package/dist/formatQuery.mjs +17 -49
- package/dist/formatQuery.mjs.map +1 -1
- package/dist/{import-D8M7awTx.d.ts → import-B5Iq8XmL.d.ts} +2 -3
- package/dist/{import-DRmutNSr.d.mts → import-Bltb2mT4.d.mts} +2 -3
- package/dist/{isRuleGroup-Cjk1Q2mj.js → isRuleGroup-BCwaLzDj.js} +38 -40
- package/dist/isRuleGroup-BCwaLzDj.js.map +1 -0
- package/dist/{isRuleGroup-DztIOOKa.mjs → isRuleGroup-LzP0HCKh.mjs} +2 -4
- package/dist/isRuleGroup-LzP0HCKh.mjs.map +1 -0
- package/dist/parseCEL.d.mts +2 -2
- package/dist/parseCEL.d.ts +2 -2
- package/dist/parseCEL.js +9 -11
- package/dist/parseCEL.js.map +1 -1
- package/dist/parseCEL.mjs +7 -10
- package/dist/parseCEL.mjs.map +1 -1
- package/dist/parseJSONata.d.mts +2 -3
- package/dist/parseJSONata.d.ts +2 -3
- package/dist/parseJSONata.js +37 -5611
- package/dist/parseJSONata.js.map +1 -1
- package/dist/parseJSONata.mjs +11 -13
- package/dist/parseJSONata.mjs.map +1 -1
- package/dist/parseJsonLogic.d.mts +3 -4
- package/dist/parseJsonLogic.d.ts +3 -4
- package/dist/parseJsonLogic.js +20 -21
- package/dist/parseJsonLogic.js.map +1 -1
- package/dist/parseJsonLogic.mjs +19 -21
- package/dist/parseJsonLogic.mjs.map +1 -1
- package/dist/parseMongoDB.d.mts +2 -3
- package/dist/parseMongoDB.d.ts +2 -3
- package/dist/parseMongoDB.js +7 -8
- package/dist/parseMongoDB.js.map +1 -1
- package/dist/parseMongoDB.mjs +6 -8
- package/dist/parseMongoDB.mjs.map +1 -1
- package/dist/parseSQL.d.mts +2 -3
- package/dist/parseSQL.d.ts +2 -3
- package/dist/parseSQL.js +9 -11
- package/dist/parseSQL.js.map +1 -1
- package/dist/parseSQL.mjs +7 -10
- package/dist/parseSQL.mjs.map +1 -1
- package/dist/parseSpEL.d.mts +2 -3
- package/dist/parseSpEL.d.ts +2 -3
- package/dist/parseSpEL.js +11 -2700
- package/dist/parseSpEL.js.map +1 -1
- package/dist/parseSpEL.mjs +7 -9
- package/dist/parseSpEL.mjs.map +1 -1
- package/dist/{prepareQueryObjects-BxWvIPI4.js → prepareQueryObjects-Dc8rqsYM.js} +49 -34
- package/dist/prepareQueryObjects-Dc8rqsYM.js.map +1 -0
- package/dist/{prepareQueryObjects-BBayjIn2.mjs → prepareQueryObjects-tMukQHT9.mjs} +34 -18
- package/dist/prepareQueryObjects-tMukQHT9.mjs.map +1 -0
- package/dist/react-querybuilder_core.d.mts +178 -127
- package/dist/react-querybuilder_core.legacy-esm.d.ts +178 -127
- package/dist/react-querybuilder_core.legacy-esm.js +296 -279
- package/dist/react-querybuilder_core.legacy-esm.js.map +1 -1
- package/dist/react-querybuilder_core.mjs +288 -247
- package/dist/react-querybuilder_core.mjs.map +1 -1
- package/dist/react-querybuilder_core.production.d.mts +178 -127
- package/dist/react-querybuilder_core.production.mjs +1 -1
- package/dist/react-querybuilder_core.production.mjs.map +1 -1
- package/dist/transformQuery.d.mts +1 -2
- package/dist/transformQuery.d.ts +1 -2
- package/dist/transformQuery.js +44 -2
- package/dist/transformQuery.js.map +1 -0
- package/dist/transformQuery.mjs +43 -2
- package/dist/transformQuery.mjs.map +1 -0
- package/dist/{utils-nQU7WCM9.mjs → utils-DQoYnxpa.mjs} +32 -84
- package/dist/utils-DQoYnxpa.mjs.map +1 -0
- package/dist/{utils-CR1ToTMW.js → utils-EsYRkPtf.js} +182 -246
- package/dist/utils-EsYRkPtf.js.map +1 -0
- package/package.json +25 -17
- package/dist/chunk-U64pC571.js +0 -41
- package/dist/convertQuery-DAj92cbM.mjs.map +0 -1
- package/dist/convertQuery-DRldbzhZ.js +0 -87
- package/dist/convertQuery-DRldbzhZ.js.map +0 -1
- package/dist/isRuleGroup-Cjk1Q2mj.js.map +0 -1
- package/dist/isRuleGroup-DztIOOKa.mjs.map +0 -1
- package/dist/prepareQueryObjects-BBayjIn2.mjs.map +0 -1
- package/dist/prepareQueryObjects-BxWvIPI4.js.map +0 -1
- package/dist/transformQuery-ClBRfnFg.js +0 -54
- package/dist/transformQuery-ClBRfnFg.js.map +0 -1
- package/dist/transformQuery-DUpbpqjX.mjs +0 -48
- package/dist/transformQuery-DUpbpqjX.mjs.map +0 -1
- package/dist/utils-CR1ToTMW.js.map +0 -1
- package/dist/utils-nQU7WCM9.mjs.map +0 -1
package/dist/parseSpEL.js
CHANGED
|
@@ -1,2698 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
const require_utils = require(
|
|
3
|
-
const require_isRuleGroup = require(
|
|
4
|
-
const require_prepareQueryObjects = require(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
var require_spel2js = /* @__PURE__ */ require_chunk.__commonJSMin(((exports, module) => {
|
|
8
|
-
(function webpackUniversalModuleDefinition(root, factory) {
|
|
9
|
-
if (typeof exports === "object" && typeof module === "object") module.exports = factory();
|
|
10
|
-
else if (typeof define === "function" && define.amd) define([], factory);
|
|
11
|
-
else if (typeof exports === "object") exports["spel2js"] = factory();
|
|
12
|
-
else root["spel2js"] = factory();
|
|
13
|
-
})(exports, function() {
|
|
14
|
-
return (function(modules) {
|
|
15
|
-
var installedModules = {};
|
|
16
|
-
function __webpack_require__(moduleId) {
|
|
17
|
-
if (installedModules[moduleId]) return installedModules[moduleId].exports;
|
|
18
|
-
var module$1 = installedModules[moduleId] = {
|
|
19
|
-
i: moduleId,
|
|
20
|
-
l: false,
|
|
21
|
-
exports: {}
|
|
22
|
-
};
|
|
23
|
-
modules[moduleId].call(module$1.exports, module$1, module$1.exports, __webpack_require__);
|
|
24
|
-
module$1.l = true;
|
|
25
|
-
return module$1.exports;
|
|
26
|
-
}
|
|
27
|
-
__webpack_require__.m = modules;
|
|
28
|
-
__webpack_require__.c = installedModules;
|
|
29
|
-
__webpack_require__.d = function(exports$1, name, getter) {
|
|
30
|
-
if (!__webpack_require__.o(exports$1, name)) Object.defineProperty(exports$1, name, {
|
|
31
|
-
configurable: false,
|
|
32
|
-
enumerable: true,
|
|
33
|
-
get: getter
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
__webpack_require__.n = function(module$1) {
|
|
37
|
-
var getter = module$1 && module$1.__esModule ? function getDefault() {
|
|
38
|
-
return module$1["default"];
|
|
39
|
-
} : function getModuleExports() {
|
|
40
|
-
return module$1;
|
|
41
|
-
};
|
|
42
|
-
__webpack_require__.d(getter, "a", getter);
|
|
43
|
-
return getter;
|
|
44
|
-
};
|
|
45
|
-
__webpack_require__.o = function(object, property) {
|
|
46
|
-
return Object.prototype.hasOwnProperty.call(object, property);
|
|
47
|
-
};
|
|
48
|
-
__webpack_require__.p = "";
|
|
49
|
-
return __webpack_require__(__webpack_require__.s = 3);
|
|
50
|
-
})([
|
|
51
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
52
|
-
"use strict";
|
|
53
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
54
|
-
/**
|
|
55
|
-
* The common supertype of all AST nodes in a parsed Spring Expression Language
|
|
56
|
-
* format expression.
|
|
57
|
-
*
|
|
58
|
-
* @author Andy Clement
|
|
59
|
-
* @author Ben March
|
|
60
|
-
* @since 0.2.0
|
|
61
|
-
*/
|
|
62
|
-
function createSpelNode(nodeType, position) {
|
|
63
|
-
var node = {}, type = nodeType || "Abstract", children = [], parent = null, activeContext;
|
|
64
|
-
node._type = type;
|
|
65
|
-
node.getType = function() {
|
|
66
|
-
return type;
|
|
67
|
-
};
|
|
68
|
-
node.setType = function(nodeType$1) {
|
|
69
|
-
type = nodeType$1;
|
|
70
|
-
};
|
|
71
|
-
node.getChildren = function() {
|
|
72
|
-
return children;
|
|
73
|
-
};
|
|
74
|
-
node.addChild = function(childNode) {
|
|
75
|
-
if (!childNode) return;
|
|
76
|
-
if (!childNode.setParent) throw {
|
|
77
|
-
name: "Error",
|
|
78
|
-
message: "Trying to add a child which is not a node: " + JSON.stringify(childNode)
|
|
79
|
-
};
|
|
80
|
-
childNode.setParent(node);
|
|
81
|
-
children.push(childNode);
|
|
82
|
-
};
|
|
83
|
-
node.getParent = function() {
|
|
84
|
-
return parent;
|
|
85
|
-
};
|
|
86
|
-
node.setParent = function(parentNode) {
|
|
87
|
-
parent = parentNode;
|
|
88
|
-
};
|
|
89
|
-
node.getContext = function(state) {
|
|
90
|
-
return activeContext || state.activeContext.peek();
|
|
91
|
-
};
|
|
92
|
-
node.setContext = function(nodeContext) {
|
|
93
|
-
activeContext = nodeContext;
|
|
94
|
-
};
|
|
95
|
-
node.getStartPosition = function() {
|
|
96
|
-
return position >> 16;
|
|
97
|
-
};
|
|
98
|
-
node.getEndPosition = function() {
|
|
99
|
-
return position & 65535;
|
|
100
|
-
};
|
|
101
|
-
node.getValue = function() {
|
|
102
|
-
throw {
|
|
103
|
-
name: "MethodNotImplementedException",
|
|
104
|
-
message: "SpelNode#getValue() must be overridden."
|
|
105
|
-
};
|
|
106
|
-
};
|
|
107
|
-
node.toString = function() {
|
|
108
|
-
var s = "Kind: " + node.getType();
|
|
109
|
-
s += ", Children: [";
|
|
110
|
-
for (var i = 0, l = node.getChildren().length; i < l; i += 1) s += "{" + node.getChildren()[i] + "}, ";
|
|
111
|
-
s += "]";
|
|
112
|
-
return s;
|
|
113
|
-
};
|
|
114
|
-
if (position === 0) throw {
|
|
115
|
-
name: "Error",
|
|
116
|
-
message: "Position cannot be 0"
|
|
117
|
-
};
|
|
118
|
-
for (var _len = arguments.length, operands = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) operands[_key - 2] = arguments[_key];
|
|
119
|
-
if (operands) operands.forEach(function(operand) {
|
|
120
|
-
node.addChild(operand);
|
|
121
|
-
});
|
|
122
|
-
return node;
|
|
123
|
-
}
|
|
124
|
-
exports$1.SpelNode = { create: createSpelNode };
|
|
125
|
-
}),
|
|
126
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
127
|
-
"use strict";
|
|
128
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
129
|
-
exports$1.Stack = Stack;
|
|
130
|
-
/**
|
|
131
|
-
* @author Ben March
|
|
132
|
-
* @since 0.2.0
|
|
133
|
-
*/
|
|
134
|
-
function Stack(startingElements) {
|
|
135
|
-
this.elements = startingElements || [];
|
|
136
|
-
}
|
|
137
|
-
Stack.prototype.push = function(el) {
|
|
138
|
-
this.elements.push(el);
|
|
139
|
-
return el;
|
|
140
|
-
};
|
|
141
|
-
Stack.prototype.pop = function() {
|
|
142
|
-
return this.elements.pop();
|
|
143
|
-
};
|
|
144
|
-
Stack.prototype.peek = function() {
|
|
145
|
-
return this.elements[this.elements.length - 1];
|
|
146
|
-
};
|
|
147
|
-
Stack.prototype.empty = function() {
|
|
148
|
-
return this.elements.length > 0;
|
|
149
|
-
};
|
|
150
|
-
Stack.prototype.search = function(el) {
|
|
151
|
-
return this.elements.length - this.elements.indexOf(el);
|
|
152
|
-
};
|
|
153
|
-
}),
|
|
154
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
155
|
-
"use strict";
|
|
156
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
157
|
-
/**
|
|
158
|
-
* @author Andy Clement
|
|
159
|
-
* @author Ben March
|
|
160
|
-
* @since 0.2.0
|
|
161
|
-
*/
|
|
162
|
-
var types = {
|
|
163
|
-
LITERAL_INT: 1,
|
|
164
|
-
LITERAL_LONG: 2,
|
|
165
|
-
LITERAL_HEXINT: 3,
|
|
166
|
-
LITERAL_HEXLONG: 4,
|
|
167
|
-
LITERAL_STRING: 5,
|
|
168
|
-
LITERAL_REAL: 6,
|
|
169
|
-
LITERAL_REAL_FLOAT: 7,
|
|
170
|
-
LPAREN: "(",
|
|
171
|
-
RPAREN: ")",
|
|
172
|
-
COMMA: ",",
|
|
173
|
-
IDENTIFIER: 0,
|
|
174
|
-
COLON: ":",
|
|
175
|
-
HASH: "#",
|
|
176
|
-
RSQUARE: "]",
|
|
177
|
-
LSQUARE: "[",
|
|
178
|
-
LCURLY: "{",
|
|
179
|
-
RCURLY: "}",
|
|
180
|
-
DOT: ".",
|
|
181
|
-
PLUS: "+",
|
|
182
|
-
STAR: "*",
|
|
183
|
-
MINUS: "-",
|
|
184
|
-
SELECT_FIRST: "^[",
|
|
185
|
-
SELECT_LAST: "$[",
|
|
186
|
-
QMARK: "?",
|
|
187
|
-
PROJECT: "![",
|
|
188
|
-
DIV: "/",
|
|
189
|
-
GE: ">=",
|
|
190
|
-
GT: ">",
|
|
191
|
-
LE: "<=",
|
|
192
|
-
LT: "<",
|
|
193
|
-
EQ: "==",
|
|
194
|
-
NE: "!=",
|
|
195
|
-
MOD: "%",
|
|
196
|
-
NOT: "!",
|
|
197
|
-
ASSIGN: "=",
|
|
198
|
-
INSTANCEOF: "instanceof",
|
|
199
|
-
MATCHES: "matches",
|
|
200
|
-
BETWEEN: "between",
|
|
201
|
-
SELECT: "?[",
|
|
202
|
-
POWER: "^",
|
|
203
|
-
ELVIS: "?:",
|
|
204
|
-
SAFE_NAVI: "?.",
|
|
205
|
-
BEAN_REF: "@",
|
|
206
|
-
SYMBOLIC_OR: "||",
|
|
207
|
-
SYMBOLIC_AND: "&&",
|
|
208
|
-
INC: "++",
|
|
209
|
-
DEC: "--"
|
|
210
|
-
};
|
|
211
|
-
function TokenKind(type) {
|
|
212
|
-
this.type = type;
|
|
213
|
-
this.tokenChars = types[type];
|
|
214
|
-
this._hasPayload = typeof types[type] !== "string";
|
|
215
|
-
if (typeof types[type] === "number") this._ordinal = types[type];
|
|
216
|
-
}
|
|
217
|
-
for (var t in types) if (types.hasOwnProperty(t)) TokenKind[t] = new TokenKind(t);
|
|
218
|
-
TokenKind.prototype.toString = function() {
|
|
219
|
-
return this.type + (this.tokenChars.length !== 0 ? "(" + this.tokenChars + ")" : "");
|
|
220
|
-
};
|
|
221
|
-
TokenKind.prototype.getLength = function() {
|
|
222
|
-
return this.tokenChars.length;
|
|
223
|
-
};
|
|
224
|
-
TokenKind.prototype.hasPayload = function() {
|
|
225
|
-
return this._hasPayload;
|
|
226
|
-
};
|
|
227
|
-
TokenKind.prototype.valueOf = function(id) {
|
|
228
|
-
for (var t$1 in types) if (types.hasOwnProperty(t$1) && types[t$1] === id) return TokenKind[t$1];
|
|
229
|
-
};
|
|
230
|
-
TokenKind.prototype.ordinal = function() {
|
|
231
|
-
return this._ordinal;
|
|
232
|
-
};
|
|
233
|
-
exports$1.TokenKind = TokenKind;
|
|
234
|
-
}),
|
|
235
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
236
|
-
"use strict";
|
|
237
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
238
|
-
exports$1.StandardContext = exports$1.SpelExpressionEvaluator = void 0;
|
|
239
|
-
var _SpelExpressionEvaluator = __webpack_require__(4);
|
|
240
|
-
var _StandardContext = __webpack_require__(50);
|
|
241
|
-
/**
|
|
242
|
-
* @author Ben March
|
|
243
|
-
* @since 0.2.0
|
|
244
|
-
*/
|
|
245
|
-
exports$1.SpelExpressionEvaluator = _SpelExpressionEvaluator.SpelExpressionEvaluator;
|
|
246
|
-
exports$1.StandardContext = _StandardContext.StandardContext;
|
|
247
|
-
}),
|
|
248
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
249
|
-
"use strict";
|
|
250
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
251
|
-
exports$1.SpelExpressionEvaluator = void 0;
|
|
252
|
-
var _SpelExpressionParser = __webpack_require__(5);
|
|
253
|
-
var _Stack = __webpack_require__(1);
|
|
254
|
-
/**
|
|
255
|
-
* @author Ben March
|
|
256
|
-
* @since 0.2.0
|
|
257
|
-
*/
|
|
258
|
-
var spelExpressionEvaluator = {};
|
|
259
|
-
function evalCompiled(compiledExpression, context, locals) {
|
|
260
|
-
var activeContext = new _Stack.Stack(), state;
|
|
261
|
-
if (!context) context = {};
|
|
262
|
-
activeContext.push(context);
|
|
263
|
-
state = {
|
|
264
|
-
rootContext: context,
|
|
265
|
-
activeContext,
|
|
266
|
-
locals
|
|
267
|
-
};
|
|
268
|
-
return compiledExpression.getValue(state);
|
|
269
|
-
}
|
|
270
|
-
spelExpressionEvaluator.compile = function(expression) {
|
|
271
|
-
var compiledExpression = (0, _SpelExpressionParser.SpelExpressionParser)().parse(expression);
|
|
272
|
-
return {
|
|
273
|
-
eval: function _eval(context, locals) {
|
|
274
|
-
return evalCompiled(compiledExpression, context, locals);
|
|
275
|
-
},
|
|
276
|
-
_compiledExpression: compiledExpression
|
|
277
|
-
};
|
|
278
|
-
};
|
|
279
|
-
spelExpressionEvaluator.eval = function(expression, context, locals) {
|
|
280
|
-
return spelExpressionEvaluator.compile(expression).eval(context, locals);
|
|
281
|
-
};
|
|
282
|
-
exports$1.SpelExpressionEvaluator = spelExpressionEvaluator;
|
|
283
|
-
}),
|
|
284
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
285
|
-
"use strict";
|
|
286
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
287
|
-
exports$1.SpelExpressionParser = void 0;
|
|
288
|
-
var _TokenKind = __webpack_require__(2);
|
|
289
|
-
var _Tokenizer = __webpack_require__(6);
|
|
290
|
-
var _BooleanLiteral = __webpack_require__(8);
|
|
291
|
-
var _NumberLiteral = __webpack_require__(9);
|
|
292
|
-
var _StringLiteral = __webpack_require__(10);
|
|
293
|
-
var _NullLiteral = __webpack_require__(11);
|
|
294
|
-
var _FunctionReference = __webpack_require__(12);
|
|
295
|
-
var _MethodReference = __webpack_require__(13);
|
|
296
|
-
var _PropertyReference = __webpack_require__(14);
|
|
297
|
-
var _VariableReference = __webpack_require__(15);
|
|
298
|
-
var _CompoundExpression = __webpack_require__(16);
|
|
299
|
-
var _Indexer = __webpack_require__(17);
|
|
300
|
-
var _Assign = __webpack_require__(18);
|
|
301
|
-
var _OpEQ = __webpack_require__(19);
|
|
302
|
-
var _OpNE = __webpack_require__(20);
|
|
303
|
-
var _OpGE = __webpack_require__(21);
|
|
304
|
-
var _OpGT = __webpack_require__(22);
|
|
305
|
-
var _OpLE = __webpack_require__(23);
|
|
306
|
-
var _OpLT = __webpack_require__(24);
|
|
307
|
-
var _OpPlus = __webpack_require__(25);
|
|
308
|
-
var _OpMinus = __webpack_require__(26);
|
|
309
|
-
var _OpMultiply = __webpack_require__(27);
|
|
310
|
-
var _OpDivide = __webpack_require__(28);
|
|
311
|
-
var _OpModulus = __webpack_require__(29);
|
|
312
|
-
var _OpPower = __webpack_require__(30);
|
|
313
|
-
var _OpInc = __webpack_require__(31);
|
|
314
|
-
var _OpDec = __webpack_require__(32);
|
|
315
|
-
var _OpNot = __webpack_require__(33);
|
|
316
|
-
var _OpAnd = __webpack_require__(34);
|
|
317
|
-
var _OpOr = __webpack_require__(35);
|
|
318
|
-
var _OpMatches = __webpack_require__(36);
|
|
319
|
-
var _Ternary = __webpack_require__(37);
|
|
320
|
-
var _Elvis = __webpack_require__(38);
|
|
321
|
-
var _InlineList = __webpack_require__(39);
|
|
322
|
-
var _InlineMap = __webpack_require__(40);
|
|
323
|
-
var _Selection = __webpack_require__(41);
|
|
324
|
-
var _Projection = __webpack_require__(42);
|
|
325
|
-
var _OpInstanceof = __webpack_require__(43);
|
|
326
|
-
var _OpBetween = __webpack_require__(44);
|
|
327
|
-
var _TypeReference = __webpack_require__(45);
|
|
328
|
-
var _BeanReference = __webpack_require__(46);
|
|
329
|
-
var _Identifier = __webpack_require__(47);
|
|
330
|
-
var _QualifiedIdentifier = __webpack_require__(48);
|
|
331
|
-
var _ConstructorReference = __webpack_require__(49);
|
|
332
|
-
exports$1.SpelExpressionParser = function SpelExpressionParser() {
|
|
333
|
-
var VALID_QUALIFIED_ID_PATTERN = /* @__PURE__ */ new RegExp("[\\p{L}\\p{N}_$]+");
|
|
334
|
-
var constructedNodes = [];
|
|
335
|
-
var expressionString;
|
|
336
|
-
var tokenStream;
|
|
337
|
-
var tokenStreamLength;
|
|
338
|
-
var tokenStreamPointer;
|
|
339
|
-
/**
|
|
340
|
-
* Create a parser with some configured behavior.
|
|
341
|
-
* @param config custom configuration options
|
|
342
|
-
*/
|
|
343
|
-
function setConfiguration(config) {}
|
|
344
|
-
function parse(expression, context) {
|
|
345
|
-
try {
|
|
346
|
-
expressionString = expression;
|
|
347
|
-
tokenStream = _Tokenizer.Tokenizer.tokenize(expression);
|
|
348
|
-
tokenStreamLength = tokenStream.length;
|
|
349
|
-
tokenStreamPointer = 0;
|
|
350
|
-
constructedNodes = [];
|
|
351
|
-
var ast = eatExpression();
|
|
352
|
-
if (moreTokens()) raiseInternalException(peekToken().startPos, "MORE_INPUT", nextToken().toString());
|
|
353
|
-
return ast;
|
|
354
|
-
} catch (e) {
|
|
355
|
-
throw e.message;
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
function eatExpression() {
|
|
359
|
-
var expr = eatLogicalOrExpression();
|
|
360
|
-
if (moreTokens()) {
|
|
361
|
-
var token = peekToken();
|
|
362
|
-
if (token.getKind() === _TokenKind.TokenKind.ASSIGN) {
|
|
363
|
-
if (expr === null) expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));
|
|
364
|
-
nextToken();
|
|
365
|
-
var assignedValue = eatLogicalOrExpression();
|
|
366
|
-
return _Assign.Assign.create(toPosToken(token), expr, assignedValue);
|
|
367
|
-
}
|
|
368
|
-
if (token.getKind() === _TokenKind.TokenKind.ELVIS) {
|
|
369
|
-
if (expr === null) expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 2));
|
|
370
|
-
nextToken();
|
|
371
|
-
var valueIfNull = eatExpression();
|
|
372
|
-
if (valueIfNull === null) valueIfNull = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos + 1, token.endPos + 1));
|
|
373
|
-
return _Elvis.Elvis.create(toPosToken(token), expr, valueIfNull);
|
|
374
|
-
}
|
|
375
|
-
if (token.getKind() === _TokenKind.TokenKind.QMARK) {
|
|
376
|
-
if (expr === null) expr = _NullLiteral.NullLiteral.create(toPosBounds(token.startPos - 1, token.endPos - 1));
|
|
377
|
-
nextToken();
|
|
378
|
-
var ifTrueExprValue = eatExpression();
|
|
379
|
-
eatToken(_TokenKind.TokenKind.COLON);
|
|
380
|
-
var ifFalseExprValue = eatExpression();
|
|
381
|
-
return _Ternary.Ternary.create(toPosToken(token), expr, ifTrueExprValue, ifFalseExprValue);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
|
-
return expr;
|
|
385
|
-
}
|
|
386
|
-
function eatLogicalOrExpression() {
|
|
387
|
-
var expr = eatLogicalAndExpression();
|
|
388
|
-
while (peekIdentifierToken("or") || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_OR)) {
|
|
389
|
-
var token = nextToken();
|
|
390
|
-
var rhExpr = eatLogicalAndExpression();
|
|
391
|
-
checkOperands(token, expr, rhExpr);
|
|
392
|
-
expr = _OpOr.OpOr.create(toPosToken(token), expr, rhExpr);
|
|
393
|
-
}
|
|
394
|
-
return expr;
|
|
395
|
-
}
|
|
396
|
-
function eatLogicalAndExpression() {
|
|
397
|
-
var expr = eatRelationalExpression();
|
|
398
|
-
while (peekIdentifierToken("and") || peekTokenOne(_TokenKind.TokenKind.SYMBOLIC_AND)) {
|
|
399
|
-
var token = nextToken();
|
|
400
|
-
var rhExpr = eatRelationalExpression();
|
|
401
|
-
checkOperands(token, expr, rhExpr);
|
|
402
|
-
expr = _OpAnd.OpAnd.create(toPosToken(token), expr, rhExpr);
|
|
403
|
-
}
|
|
404
|
-
return expr;
|
|
405
|
-
}
|
|
406
|
-
function eatRelationalExpression() {
|
|
407
|
-
var expr = eatSumExpression();
|
|
408
|
-
var relationalOperatorToken = maybeEatRelationalOperator();
|
|
409
|
-
if (relationalOperatorToken !== null) {
|
|
410
|
-
var token = nextToken();
|
|
411
|
-
var rhExpr = eatSumExpression();
|
|
412
|
-
checkOperands(token, expr, rhExpr);
|
|
413
|
-
var tk = relationalOperatorToken.kind;
|
|
414
|
-
if (relationalOperatorToken.isNumericRelationalOperator()) {
|
|
415
|
-
var pos = toPosToken(token);
|
|
416
|
-
if (tk === _TokenKind.TokenKind.GT) return _OpGT.OpGT.create(pos, expr, rhExpr);
|
|
417
|
-
if (tk === _TokenKind.TokenKind.LT) return _OpLT.OpLT.create(pos, expr, rhExpr);
|
|
418
|
-
if (tk === _TokenKind.TokenKind.LE) return _OpLE.OpLE.create(pos, expr, rhExpr);
|
|
419
|
-
if (tk === _TokenKind.TokenKind.GE) return _OpGE.OpGE.create(pos, expr, rhExpr);
|
|
420
|
-
if (tk === _TokenKind.TokenKind.EQ) return _OpEQ.OpEQ.create(pos, expr, rhExpr);
|
|
421
|
-
return _OpNE.OpNE.create(pos, expr, rhExpr);
|
|
422
|
-
}
|
|
423
|
-
if (tk === _TokenKind.TokenKind.INSTANCEOF) return _OpInstanceof.OpInstanceof.create(toPosToken(token), expr, rhExpr);
|
|
424
|
-
if (tk === _TokenKind.TokenKind.MATCHES) return _OpMatches.OpMatches.create(toPosToken(token), expr, rhExpr);
|
|
425
|
-
return _OpBetween.OpBetween.create(toPosToken(token), expr, rhExpr);
|
|
426
|
-
}
|
|
427
|
-
return expr;
|
|
428
|
-
}
|
|
429
|
-
function eatSumExpression() {
|
|
430
|
-
var expr = eatProductExpression();
|
|
431
|
-
while (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.INC)) {
|
|
432
|
-
var token = nextToken();
|
|
433
|
-
var rhExpr = eatProductExpression();
|
|
434
|
-
checkRightOperand(token, rhExpr);
|
|
435
|
-
if (token.getKind() === _TokenKind.TokenKind.PLUS) expr = _OpPlus.OpPlus.create(toPosToken(token), expr, rhExpr);
|
|
436
|
-
else if (token.getKind() === _TokenKind.TokenKind.MINUS) expr = _OpMinus.OpMinus.create(toPosToken(token), expr, rhExpr);
|
|
437
|
-
}
|
|
438
|
-
return expr;
|
|
439
|
-
}
|
|
440
|
-
function eatProductExpression() {
|
|
441
|
-
var expr = eatPowerIncDecExpression();
|
|
442
|
-
while (peekTokenAny(_TokenKind.TokenKind.STAR, _TokenKind.TokenKind.DIV, _TokenKind.TokenKind.MOD)) {
|
|
443
|
-
var token = nextToken();
|
|
444
|
-
var rhExpr = eatPowerIncDecExpression();
|
|
445
|
-
checkOperands(token, expr, rhExpr);
|
|
446
|
-
if (token.getKind() === _TokenKind.TokenKind.STAR) expr = _OpMultiply.OpMultiply.create(toPosToken(token), expr, rhExpr);
|
|
447
|
-
else if (token.getKind() === _TokenKind.TokenKind.DIV) expr = _OpDivide.OpDivide.create(toPosToken(token), expr, rhExpr);
|
|
448
|
-
else expr = _OpModulus.OpModulus.create(toPosToken(token), expr, rhExpr);
|
|
449
|
-
}
|
|
450
|
-
return expr;
|
|
451
|
-
}
|
|
452
|
-
function eatPowerIncDecExpression() {
|
|
453
|
-
var expr = eatUnaryExpression(), token;
|
|
454
|
-
if (peekTokenOne(_TokenKind.TokenKind.POWER)) {
|
|
455
|
-
token = nextToken();
|
|
456
|
-
var rhExpr = eatUnaryExpression();
|
|
457
|
-
checkRightOperand(token, rhExpr);
|
|
458
|
-
return _OpPower.OpPower.create(toPosToken(token), expr, rhExpr);
|
|
459
|
-
}
|
|
460
|
-
if (expr !== null && peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {
|
|
461
|
-
token = nextToken();
|
|
462
|
-
if (token.getKind() === _TokenKind.TokenKind.INC) return _OpInc.OpInc.create(toPosToken(token), true, expr);
|
|
463
|
-
return _OpDec.OpDec.create(toPosToken(token), true, expr);
|
|
464
|
-
}
|
|
465
|
-
return expr;
|
|
466
|
-
}
|
|
467
|
-
function eatUnaryExpression() {
|
|
468
|
-
var token, expr;
|
|
469
|
-
if (peekTokenAny(_TokenKind.TokenKind.PLUS, _TokenKind.TokenKind.MINUS, _TokenKind.TokenKind.NOT)) {
|
|
470
|
-
token = nextToken();
|
|
471
|
-
expr = eatUnaryExpression();
|
|
472
|
-
if (token.getKind() === _TokenKind.TokenKind.NOT) return _OpNot.OpNot.create(toPosToken(token), expr);
|
|
473
|
-
if (token.getKind() === _TokenKind.TokenKind.PLUS) return _OpPlus.OpPlus.create(toPosToken(token), expr);
|
|
474
|
-
return _OpMinus.OpMinus.create(toPosToken(token), expr);
|
|
475
|
-
}
|
|
476
|
-
if (peekTokenAny(_TokenKind.TokenKind.INC, _TokenKind.TokenKind.DEC)) {
|
|
477
|
-
token = nextToken();
|
|
478
|
-
expr = eatUnaryExpression();
|
|
479
|
-
if (token.getKind() === _TokenKind.TokenKind.INC) return _OpInc.OpInc.create(toPosToken(token), false, expr);
|
|
480
|
-
return _OpDec.OpDec.create(toPosToken(token), false, expr);
|
|
481
|
-
}
|
|
482
|
-
return eatPrimaryExpression();
|
|
483
|
-
}
|
|
484
|
-
function eatPrimaryExpression() {
|
|
485
|
-
var nodes = [];
|
|
486
|
-
var start = eatStartNode();
|
|
487
|
-
nodes.push(start);
|
|
488
|
-
while (maybeEatNode()) nodes.push(pop());
|
|
489
|
-
if (nodes.length === 1) return nodes[0];
|
|
490
|
-
return _CompoundExpression.CompoundExpression.create(toPosBounds(start.getStartPosition(), nodes[nodes.length - 1].getEndPosition()), nodes);
|
|
491
|
-
}
|
|
492
|
-
function maybeEatNode() {
|
|
493
|
-
var expr = null;
|
|
494
|
-
if (peekTokenAny(_TokenKind.TokenKind.DOT, _TokenKind.TokenKind.SAFE_NAVI)) expr = eatDottedNode();
|
|
495
|
-
else expr = maybeEatNonDottedNode();
|
|
496
|
-
if (expr === null) return false;
|
|
497
|
-
else {
|
|
498
|
-
push(expr);
|
|
499
|
-
return true;
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
function maybeEatNonDottedNode() {
|
|
503
|
-
if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {
|
|
504
|
-
if (maybeEatIndexer()) return pop();
|
|
505
|
-
}
|
|
506
|
-
return null;
|
|
507
|
-
}
|
|
508
|
-
function eatDottedNode() {
|
|
509
|
-
var token = nextToken();
|
|
510
|
-
var nullSafeNavigation = token.getKind() === _TokenKind.TokenKind.SAFE_NAVI;
|
|
511
|
-
if (maybeEatMethodOrProperty(nullSafeNavigation) || maybeEatFunctionOrVar() || maybeEatProjection(nullSafeNavigation) || maybeEatSelection(nullSafeNavigation)) return pop();
|
|
512
|
-
if (peekToken() === null) raiseInternalException(token.startPos, "OOD");
|
|
513
|
-
else raiseInternalException(token.startPos, "UNEXPECTED_DATA_AFTER_DOT", toString(peekToken()));
|
|
514
|
-
return null;
|
|
515
|
-
}
|
|
516
|
-
function maybeEatFunctionOrVar() {
|
|
517
|
-
if (!peekTokenOne(_TokenKind.TokenKind.HASH)) return false;
|
|
518
|
-
var token = nextToken();
|
|
519
|
-
var functionOrVariableName = eatToken(_TokenKind.TokenKind.IDENTIFIER);
|
|
520
|
-
var args = maybeEatMethodArgs();
|
|
521
|
-
if (args === null) {
|
|
522
|
-
push(_VariableReference.VariableReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos)));
|
|
523
|
-
return true;
|
|
524
|
-
}
|
|
525
|
-
push(_FunctionReference.FunctionReference.create(functionOrVariableName.data, toPosBounds(token.startPos, functionOrVariableName.endPos), args));
|
|
526
|
-
return true;
|
|
527
|
-
}
|
|
528
|
-
function maybeEatMethodArgs() {
|
|
529
|
-
if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) return null;
|
|
530
|
-
var args = [];
|
|
531
|
-
consumeArguments(args);
|
|
532
|
-
eatToken(_TokenKind.TokenKind.RPAREN);
|
|
533
|
-
return args;
|
|
534
|
-
}
|
|
535
|
-
function eatConstructorArgs(accumulatedArguments) {
|
|
536
|
-
if (!peekTokenOne(_TokenKind.TokenKind.LPAREN)) raiseInternalException(toPosToken(peekToken()), "MISSING_CONSTRUCTOR_ARGS");
|
|
537
|
-
consumeArguments(accumulatedArguments);
|
|
538
|
-
eatToken(_TokenKind.TokenKind.RPAREN);
|
|
539
|
-
}
|
|
540
|
-
/**
|
|
541
|
-
* Used for consuming arguments for either a method or a constructor call
|
|
542
|
-
*/
|
|
543
|
-
function consumeArguments(accumulatedArguments) {
|
|
544
|
-
var pos = peekToken().startPos;
|
|
545
|
-
var next;
|
|
546
|
-
do {
|
|
547
|
-
nextToken();
|
|
548
|
-
var token = peekToken();
|
|
549
|
-
if (token === null) raiseInternalException(pos, "RUN_OUT_OF_ARGUMENTS");
|
|
550
|
-
if (token.getKind() !== _TokenKind.TokenKind.RPAREN) accumulatedArguments.push(eatExpression());
|
|
551
|
-
next = peekToken();
|
|
552
|
-
} while (next !== null && next.kind === _TokenKind.TokenKind.COMMA);
|
|
553
|
-
if (next === null) raiseInternalException(pos, "RUN_OUT_OF_ARGUMENTS");
|
|
554
|
-
}
|
|
555
|
-
function eatStartNode() {
|
|
556
|
-
if (maybeEatLiteral()) return pop();
|
|
557
|
-
else if (maybeEatParenExpression()) return pop();
|
|
558
|
-
else if (maybeEatTypeReference() || maybeEatNullReference() || maybeEatConstructorReference() || maybeEatMethodOrProperty(false) || maybeEatFunctionOrVar()) return pop();
|
|
559
|
-
else if (maybeEatBeanReference()) return pop();
|
|
560
|
-
else if (maybeEatProjection(false) || maybeEatSelection(false) || maybeEatIndexer()) return pop();
|
|
561
|
-
else if (maybeEatInlineListOrMap()) return pop();
|
|
562
|
-
else return null;
|
|
563
|
-
}
|
|
564
|
-
function maybeEatBeanReference() {
|
|
565
|
-
if (peekTokenOne(_TokenKind.TokenKind.BEAN_REF)) {
|
|
566
|
-
var beanRefToken = nextToken();
|
|
567
|
-
var beanNameToken = null;
|
|
568
|
-
var beanName = null;
|
|
569
|
-
if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {
|
|
570
|
-
beanNameToken = eatToken(_TokenKind.TokenKind.IDENTIFIER);
|
|
571
|
-
beanName = beanNameToken.data;
|
|
572
|
-
} else if (peekTokenOne(_TokenKind.TokenKind.LITERAL_STRING)) {
|
|
573
|
-
beanNameToken = eatToken(_TokenKind.TokenKind.LITERAL_STRING);
|
|
574
|
-
beanName = beanNameToken.stringValue();
|
|
575
|
-
beanName = beanName.substring(1, beanName.length() - 1);
|
|
576
|
-
} else raiseInternalException(beanRefToken.startPos, "INVALID_BEAN_REFERENCE");
|
|
577
|
-
push(_BeanReference.BeanReference.create(toPosToken(beanNameToken), beanName));
|
|
578
|
-
return true;
|
|
579
|
-
}
|
|
580
|
-
return false;
|
|
581
|
-
}
|
|
582
|
-
function maybeEatTypeReference() {
|
|
583
|
-
if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {
|
|
584
|
-
var typeName = peekToken();
|
|
585
|
-
if (typeName.stringValue() !== "T") return false;
|
|
586
|
-
var token = nextToken();
|
|
587
|
-
if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {
|
|
588
|
-
push(_PropertyReference.PropertyReference.create(token.stringValue(), toPosToken(token)));
|
|
589
|
-
return true;
|
|
590
|
-
}
|
|
591
|
-
eatToken(_TokenKind.TokenKind.LPAREN);
|
|
592
|
-
var node = eatPossiblyQualifiedId();
|
|
593
|
-
var dims = 0;
|
|
594
|
-
while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {
|
|
595
|
-
eatToken(_TokenKind.TokenKind.RSQUARE);
|
|
596
|
-
dims++;
|
|
597
|
-
}
|
|
598
|
-
eatToken(_TokenKind.TokenKind.RPAREN);
|
|
599
|
-
push(_TypeReference.TypeReference.create(toPosToken(typeName), node, dims));
|
|
600
|
-
return true;
|
|
601
|
-
}
|
|
602
|
-
return false;
|
|
603
|
-
}
|
|
604
|
-
function maybeEatNullReference() {
|
|
605
|
-
if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {
|
|
606
|
-
var nullToken = peekToken();
|
|
607
|
-
if (nullToken.stringValue().toLowerCase() !== "null") return false;
|
|
608
|
-
nextToken();
|
|
609
|
-
push(_NullLiteral.NullLiteral.create(toPosToken(nullToken)));
|
|
610
|
-
return true;
|
|
611
|
-
}
|
|
612
|
-
return false;
|
|
613
|
-
}
|
|
614
|
-
function maybeEatProjection(nullSafeNavigation) {
|
|
615
|
-
var token = peekToken();
|
|
616
|
-
if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.PROJECT, true)) return false;
|
|
617
|
-
var expr = eatExpression();
|
|
618
|
-
eatToken(_TokenKind.TokenKind.RSQUARE);
|
|
619
|
-
push(_Projection.Projection.create(nullSafeNavigation, toPosToken(token), expr));
|
|
620
|
-
return true;
|
|
621
|
-
}
|
|
622
|
-
function maybeEatInlineListOrMap() {
|
|
623
|
-
var token = peekToken(), listElements = [];
|
|
624
|
-
if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LCURLY, true)) return false;
|
|
625
|
-
var expr = null;
|
|
626
|
-
var closingCurly = peekToken();
|
|
627
|
-
if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.RCURLY, true)) expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos));
|
|
628
|
-
else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {
|
|
629
|
-
closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);
|
|
630
|
-
expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos));
|
|
631
|
-
} else {
|
|
632
|
-
var firstExpression = eatExpression();
|
|
633
|
-
if (peekTokenOne(_TokenKind.TokenKind.RCURLY)) {
|
|
634
|
-
listElements.push(firstExpression);
|
|
635
|
-
closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);
|
|
636
|
-
expr = _InlineList.InlineList.create(toPosBounds(token.startPos, closingCurly.endPos), listElements);
|
|
637
|
-
} else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {
|
|
638
|
-
listElements.push(firstExpression);
|
|
639
|
-
do
|
|
640
|
-
listElements.push(eatExpression());
|
|
641
|
-
while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true));
|
|
642
|
-
closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);
|
|
643
|
-
expr = _InlineList.InlineList.create(toPosToken(token.startPos, closingCurly.endPos), listElements);
|
|
644
|
-
} else if (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COLON, true)) {
|
|
645
|
-
var mapElements = [];
|
|
646
|
-
mapElements.push(firstExpression);
|
|
647
|
-
mapElements.push(eatExpression());
|
|
648
|
-
while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.COMMA, true)) {
|
|
649
|
-
mapElements.push(eatExpression());
|
|
650
|
-
eatToken(_TokenKind.TokenKind.COLON);
|
|
651
|
-
mapElements.push(eatExpression());
|
|
652
|
-
}
|
|
653
|
-
closingCurly = eatToken(_TokenKind.TokenKind.RCURLY);
|
|
654
|
-
expr = _InlineMap.InlineMap.create(toPosBounds(token.startPos, closingCurly.endPos), mapElements);
|
|
655
|
-
} else raiseInternalException(token.startPos, "OOD");
|
|
656
|
-
}
|
|
657
|
-
push(expr);
|
|
658
|
-
return true;
|
|
659
|
-
}
|
|
660
|
-
function maybeEatIndexer() {
|
|
661
|
-
var token = peekToken();
|
|
662
|
-
if (!peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) return false;
|
|
663
|
-
var expr = eatExpression();
|
|
664
|
-
eatToken(_TokenKind.TokenKind.RSQUARE);
|
|
665
|
-
push(_Indexer.Indexer.create(toPosToken(token), expr));
|
|
666
|
-
return true;
|
|
667
|
-
}
|
|
668
|
-
function maybeEatSelection(nullSafeNavigation) {
|
|
669
|
-
var token = peekToken();
|
|
670
|
-
if (!peekSelectToken()) return false;
|
|
671
|
-
nextToken();
|
|
672
|
-
var expr = eatExpression();
|
|
673
|
-
if (expr === null) raiseInternalException(toPosToken(token), "MISSING_SELECTION_EXPRESSION");
|
|
674
|
-
eatToken(_TokenKind.TokenKind.RSQUARE);
|
|
675
|
-
if (token.getKind() === _TokenKind.TokenKind.SELECT_FIRST) push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.FIRST, toPosToken(token), expr));
|
|
676
|
-
else if (token.getKind() === _TokenKind.TokenKind.SELECT_LAST) push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.LAST, toPosToken(token), expr));
|
|
677
|
-
else push(_Selection.Selection.create(nullSafeNavigation, _Selection.Selection.ALL, toPosToken(token), expr));
|
|
678
|
-
return true;
|
|
679
|
-
}
|
|
680
|
-
/**
|
|
681
|
-
* Eat an identifier, possibly qualified (meaning that it is dotted).
|
|
682
|
-
* TODO AndyC Could create complete identifiers (a.b.c) here rather than a sequence of them? (a, b, c)
|
|
683
|
-
*/
|
|
684
|
-
function eatPossiblyQualifiedId() {
|
|
685
|
-
var qualifiedIdPieces = [];
|
|
686
|
-
var node = peekToken();
|
|
687
|
-
while (isValidQualifiedId(node)) {
|
|
688
|
-
nextToken();
|
|
689
|
-
if (node.kind !== _TokenKind.TokenKind.DOT) qualifiedIdPieces.push(_Identifier.Identifier.create(node.stringValue(), toPosToken(node)));
|
|
690
|
-
node = peekToken();
|
|
691
|
-
}
|
|
692
|
-
if (!qualifiedIdPieces.length) {
|
|
693
|
-
if (node === null) raiseInternalException(expressionString.length(), "OOD");
|
|
694
|
-
raiseInternalException(node.startPos, "NOT_EXPECTED_TOKEN", "qualified ID", node.getKind().toString().toLowerCase());
|
|
695
|
-
}
|
|
696
|
-
var pos = toPosBounds(qualifiedIdPieces[0].getStartPosition(), qualifiedIdPieces[qualifiedIdPieces.length - 1].getEndPosition());
|
|
697
|
-
return _QualifiedIdentifier.QualifiedIdentifier.create(pos, qualifiedIdPieces);
|
|
698
|
-
}
|
|
699
|
-
function isValidQualifiedId(node) {
|
|
700
|
-
if (node === null || node.kind === _TokenKind.TokenKind.LITERAL_STRING) return false;
|
|
701
|
-
if (node.kind === _TokenKind.TokenKind.DOT || node.kind === _TokenKind.TokenKind.IDENTIFIER) return true;
|
|
702
|
-
var value = node.stringValue();
|
|
703
|
-
return value && value.length && VALID_QUALIFIED_ID_PATTERN.test(value);
|
|
704
|
-
}
|
|
705
|
-
function maybeEatMethodOrProperty(nullSafeNavigation) {
|
|
706
|
-
if (peekTokenOne(_TokenKind.TokenKind.IDENTIFIER)) {
|
|
707
|
-
var methodOrPropertyName = nextToken();
|
|
708
|
-
var args = maybeEatMethodArgs();
|
|
709
|
-
if (args === null) {
|
|
710
|
-
push(_PropertyReference.PropertyReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName)));
|
|
711
|
-
return true;
|
|
712
|
-
}
|
|
713
|
-
push(_MethodReference.MethodReference.create(nullSafeNavigation, methodOrPropertyName.stringValue(), toPosToken(methodOrPropertyName), args));
|
|
714
|
-
return true;
|
|
715
|
-
}
|
|
716
|
-
return false;
|
|
717
|
-
}
|
|
718
|
-
function maybeEatConstructorReference() {
|
|
719
|
-
if (peekIdentifierToken("new")) {
|
|
720
|
-
var newToken = nextToken();
|
|
721
|
-
if (peekTokenOne(_TokenKind.TokenKind.RSQUARE)) {
|
|
722
|
-
push(_PropertyReference.PropertyReference.create(newToken.stringValue(), toPosToken(newToken)));
|
|
723
|
-
return true;
|
|
724
|
-
}
|
|
725
|
-
var possiblyQualifiedConstructorName = eatPossiblyQualifiedId();
|
|
726
|
-
var nodes = [];
|
|
727
|
-
nodes.push(possiblyQualifiedConstructorName);
|
|
728
|
-
if (peekTokenOne(_TokenKind.TokenKind.LSQUARE)) {
|
|
729
|
-
var dimensions = [];
|
|
730
|
-
while (peekTokenConsumeIfMatched(_TokenKind.TokenKind.LSQUARE, true)) {
|
|
731
|
-
if (!peekTokenOne(_TokenKind.TokenKind.RSQUARE)) dimensions.push(eatExpression());
|
|
732
|
-
else dimensions.push(null);
|
|
733
|
-
eatToken(_TokenKind.TokenKind.RSQUARE);
|
|
734
|
-
}
|
|
735
|
-
if (maybeEatInlineListOrMap()) nodes.push(pop());
|
|
736
|
-
push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), dimensions, nodes));
|
|
737
|
-
} else {
|
|
738
|
-
eatConstructorArgs(nodes);
|
|
739
|
-
push(_ConstructorReference.ConstructorReference.create(toPosToken(newToken), nodes));
|
|
740
|
-
}
|
|
741
|
-
return true;
|
|
742
|
-
}
|
|
743
|
-
return false;
|
|
744
|
-
}
|
|
745
|
-
function push(newNode) {
|
|
746
|
-
constructedNodes.push(newNode);
|
|
747
|
-
}
|
|
748
|
-
function pop() {
|
|
749
|
-
return constructedNodes.pop();
|
|
750
|
-
}
|
|
751
|
-
function maybeEatLiteral() {
|
|
752
|
-
var token = peekToken();
|
|
753
|
-
if (token === null) return false;
|
|
754
|
-
if (token.getKind() === _TokenKind.TokenKind.LITERAL_INT || token.getKind() === _TokenKind.TokenKind.LITERAL_LONG) push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 10), toPosToken(token)));
|
|
755
|
-
else if (token.getKind() === _TokenKind.TokenKind.LITERAL_REAL || token.getKind() === _TokenKind.TokenKind.LITERAL_REAL_FLOAT) push(_NumberLiteral.NumberLiteral.create(parseFloat(token.stringValue()), toPosToken(token)));
|
|
756
|
-
else if (token.getKind() === _TokenKind.TokenKind.LITERAL_HEXINT || token.getKind() === _TokenKind.TokenKind.LITERAL_HEXLONG) push(_NumberLiteral.NumberLiteral.create(parseInt(token.stringValue(), 16), toPosToken(token)));
|
|
757
|
-
else if (peekIdentifierToken("true")) push(_BooleanLiteral.BooleanLiteral.create(true, toPosToken(token)));
|
|
758
|
-
else if (peekIdentifierToken("false")) push(_BooleanLiteral.BooleanLiteral.create(false, toPosToken(token)));
|
|
759
|
-
else if (token.getKind() === _TokenKind.TokenKind.LITERAL_STRING) push(_StringLiteral.StringLiteral.create(token.stringValue(), toPosToken(token)));
|
|
760
|
-
else return false;
|
|
761
|
-
nextToken();
|
|
762
|
-
return true;
|
|
763
|
-
}
|
|
764
|
-
function maybeEatParenExpression() {
|
|
765
|
-
if (peekTokenOne(_TokenKind.TokenKind.LPAREN)) {
|
|
766
|
-
nextToken();
|
|
767
|
-
var expr = eatExpression();
|
|
768
|
-
eatToken(_TokenKind.TokenKind.RPAREN);
|
|
769
|
-
push(expr);
|
|
770
|
-
return true;
|
|
771
|
-
} else return false;
|
|
772
|
-
}
|
|
773
|
-
function maybeEatRelationalOperator() {
|
|
774
|
-
var token = peekToken();
|
|
775
|
-
if (token === null) return null;
|
|
776
|
-
if (token.isNumericRelationalOperator()) return token;
|
|
777
|
-
if (token.isIdentifier()) {
|
|
778
|
-
var idString = token.stringValue();
|
|
779
|
-
if (idString.toLowerCase() === "instanceof") return token.asInstanceOfToken();
|
|
780
|
-
if (idString.toLowerCase() === "matches") return token.asMatchesToken();
|
|
781
|
-
if (idString.toLowerCase() === "between") return token.asBetweenToken();
|
|
782
|
-
}
|
|
783
|
-
return null;
|
|
784
|
-
}
|
|
785
|
-
function eatToken(expectedKind) {
|
|
786
|
-
var token = nextToken();
|
|
787
|
-
if (token === null) raiseInternalException(expressionString.length, "OOD");
|
|
788
|
-
if (token.getKind() !== expectedKind) raiseInternalException(token.startPos, "NOT_EXPECTED_TOKEN", expectedKind.toString().toLowerCase(), token.getKind().toString().toLowerCase());
|
|
789
|
-
return token;
|
|
790
|
-
}
|
|
791
|
-
function peekTokenOne(desiredTokenKind) {
|
|
792
|
-
return peekTokenConsumeIfMatched(desiredTokenKind, false);
|
|
793
|
-
}
|
|
794
|
-
function peekTokenConsumeIfMatched(desiredTokenKind, consumeIfMatched) {
|
|
795
|
-
if (!moreTokens()) return false;
|
|
796
|
-
var token = peekToken();
|
|
797
|
-
if (token.getKind() === desiredTokenKind) {
|
|
798
|
-
if (consumeIfMatched) tokenStreamPointer++;
|
|
799
|
-
return true;
|
|
800
|
-
}
|
|
801
|
-
if (desiredTokenKind === _TokenKind.TokenKind.IDENTIFIER) {
|
|
802
|
-
if (token.getKind().ordinal() >= _TokenKind.TokenKind.DIV.ordinal() && token.getKind().ordinal() <= _TokenKind.TokenKind.NOT.ordinal() && token.data !== null) return true;
|
|
803
|
-
}
|
|
804
|
-
return false;
|
|
805
|
-
}
|
|
806
|
-
function peekTokenAny() {
|
|
807
|
-
if (!moreTokens()) return false;
|
|
808
|
-
var token = peekToken();
|
|
809
|
-
var args = Array.prototype.slice.call(arguments);
|
|
810
|
-
for (var i = 0, l = args.length; i < l; i += 1) if (token.getKind() === args[i]) return true;
|
|
811
|
-
return false;
|
|
812
|
-
}
|
|
813
|
-
function peekIdentifierToken(identifierString) {
|
|
814
|
-
if (!moreTokens()) return false;
|
|
815
|
-
var token = peekToken();
|
|
816
|
-
return token.getKind() === _TokenKind.TokenKind.IDENTIFIER && token.stringValue().toLowerCase() === identifierString.toLowerCase();
|
|
817
|
-
}
|
|
818
|
-
function peekSelectToken() {
|
|
819
|
-
if (!moreTokens()) return false;
|
|
820
|
-
var token = peekToken();
|
|
821
|
-
return token.getKind() === _TokenKind.TokenKind.SELECT || token.getKind() === _TokenKind.TokenKind.SELECT_FIRST || token.getKind() === _TokenKind.TokenKind.SELECT_LAST;
|
|
822
|
-
}
|
|
823
|
-
function moreTokens() {
|
|
824
|
-
return tokenStreamPointer < tokenStream.length;
|
|
825
|
-
}
|
|
826
|
-
function nextToken() {
|
|
827
|
-
if (tokenStreamPointer >= tokenStreamLength) return null;
|
|
828
|
-
return tokenStream[tokenStreamPointer++];
|
|
829
|
-
}
|
|
830
|
-
function peekToken() {
|
|
831
|
-
if (tokenStreamPointer >= tokenStreamLength) return null;
|
|
832
|
-
return tokenStream[tokenStreamPointer];
|
|
833
|
-
}
|
|
834
|
-
function raiseInternalException(pos, message, expected, actual) {
|
|
835
|
-
if (expected) message += "\nExpected: " + expected;
|
|
836
|
-
if (actual) message += "\nActual: " + actual;
|
|
837
|
-
throw {
|
|
838
|
-
name: "InternalParseException",
|
|
839
|
-
message: "Error occurred while attempting to parse expression '" + expressionString + "' at position " + pos + ". Message: " + message
|
|
840
|
-
};
|
|
841
|
-
}
|
|
842
|
-
function toString(token) {
|
|
843
|
-
if (token.getKind().hasPayload()) return token.stringValue();
|
|
844
|
-
return token.getKind().toString().toLowerCase();
|
|
845
|
-
}
|
|
846
|
-
function checkOperands(token, left, right) {
|
|
847
|
-
checkLeftOperand(token, left);
|
|
848
|
-
checkRightOperand(token, right);
|
|
849
|
-
}
|
|
850
|
-
function checkLeftOperand(token, operandExpression) {
|
|
851
|
-
if (operandExpression === null) raiseInternalException(token.startPos, "LEFT_OPERAND_PROBLEM");
|
|
852
|
-
}
|
|
853
|
-
function checkRightOperand(token, operandExpression) {
|
|
854
|
-
if (operandExpression === null) raiseInternalException(token.startPos, "RIGHT_OPERAND_PROBLEM");
|
|
855
|
-
}
|
|
856
|
-
/**
|
|
857
|
-
* Compress the start and end of a token into a single int.
|
|
858
|
-
*/
|
|
859
|
-
function toPosToken(token) {
|
|
860
|
-
return (token.startPos << 16) + token.endPos;
|
|
861
|
-
}
|
|
862
|
-
function toPosBounds(start, end) {
|
|
863
|
-
return (start << 16) + end;
|
|
864
|
-
}
|
|
865
|
-
return {
|
|
866
|
-
setConfiguration,
|
|
867
|
-
parse
|
|
868
|
-
};
|
|
869
|
-
};
|
|
870
|
-
}),
|
|
871
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
872
|
-
"use strict";
|
|
873
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
874
|
-
exports$1.Tokenizer = void 0;
|
|
875
|
-
var _Token = __webpack_require__(7);
|
|
876
|
-
var _TokenKind = __webpack_require__(2);
|
|
877
|
-
/**
|
|
878
|
-
* @author Andy Clement
|
|
879
|
-
* @author Phillip Webb
|
|
880
|
-
* @author Ben March
|
|
881
|
-
* @since 0.2.0
|
|
882
|
-
*/
|
|
883
|
-
var ALTERNATIVE_OPERATOR_NAMES = [
|
|
884
|
-
"DIV",
|
|
885
|
-
"EQ",
|
|
886
|
-
"GE",
|
|
887
|
-
"GT",
|
|
888
|
-
"LE",
|
|
889
|
-
"LT",
|
|
890
|
-
"MOD",
|
|
891
|
-
"NE",
|
|
892
|
-
"NOT"
|
|
893
|
-
], FLAGS = [], IS_DIGIT = 1, IS_HEXDIGIT = 2, IS_ALPHA = 4;
|
|
894
|
-
function init() {
|
|
895
|
-
var ch;
|
|
896
|
-
for (ch = "0".charCodeAt(0); ch <= "9".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_DIGIT | IS_HEXDIGIT;
|
|
897
|
-
for (ch = "A".charCodeAt(0); ch <= "F".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_HEXDIGIT;
|
|
898
|
-
for (ch = "a".charCodeAt(0); ch <= "f".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_HEXDIGIT;
|
|
899
|
-
for (ch = "A".charCodeAt(0); ch <= "Z".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_ALPHA;
|
|
900
|
-
for (ch = "a".charCodeAt(0); ch <= "z".charCodeAt(0); ch += 1) FLAGS[ch] |= IS_ALPHA;
|
|
901
|
-
}
|
|
902
|
-
init();
|
|
903
|
-
function tokenize(inputData) {
|
|
904
|
-
var expressionString = inputData, toProcess = inputData + "\0", max = toProcess.length, pos = 0, tokens = [];
|
|
905
|
-
function process() {
|
|
906
|
-
var ch;
|
|
907
|
-
while (pos < max) {
|
|
908
|
-
ch = toProcess[pos];
|
|
909
|
-
if (isAlphabetic(ch)) lexIdentifier();
|
|
910
|
-
else switch (ch) {
|
|
911
|
-
case "+":
|
|
912
|
-
if (isTwoCharToken(_TokenKind.TokenKind.INC)) pushPairToken(_TokenKind.TokenKind.INC);
|
|
913
|
-
else pushCharToken(_TokenKind.TokenKind.PLUS);
|
|
914
|
-
break;
|
|
915
|
-
case "_":
|
|
916
|
-
lexIdentifier();
|
|
917
|
-
break;
|
|
918
|
-
case "-":
|
|
919
|
-
if (isTwoCharToken(_TokenKind.TokenKind.DEC)) pushPairToken(_TokenKind.TokenKind.DEC);
|
|
920
|
-
else pushCharToken(_TokenKind.TokenKind.MINUS);
|
|
921
|
-
break;
|
|
922
|
-
case ":":
|
|
923
|
-
pushCharToken(_TokenKind.TokenKind.COLON);
|
|
924
|
-
break;
|
|
925
|
-
case ".":
|
|
926
|
-
pushCharToken(_TokenKind.TokenKind.DOT);
|
|
927
|
-
break;
|
|
928
|
-
case ",":
|
|
929
|
-
pushCharToken(_TokenKind.TokenKind.COMMA);
|
|
930
|
-
break;
|
|
931
|
-
case "*":
|
|
932
|
-
pushCharToken(_TokenKind.TokenKind.STAR);
|
|
933
|
-
break;
|
|
934
|
-
case "/":
|
|
935
|
-
pushCharToken(_TokenKind.TokenKind.DIV);
|
|
936
|
-
break;
|
|
937
|
-
case "%":
|
|
938
|
-
pushCharToken(_TokenKind.TokenKind.MOD);
|
|
939
|
-
break;
|
|
940
|
-
case "(":
|
|
941
|
-
pushCharToken(_TokenKind.TokenKind.LPAREN);
|
|
942
|
-
break;
|
|
943
|
-
case ")":
|
|
944
|
-
pushCharToken(_TokenKind.TokenKind.RPAREN);
|
|
945
|
-
break;
|
|
946
|
-
case "[":
|
|
947
|
-
pushCharToken(_TokenKind.TokenKind.LSQUARE);
|
|
948
|
-
break;
|
|
949
|
-
case "#":
|
|
950
|
-
pushCharToken(_TokenKind.TokenKind.HASH);
|
|
951
|
-
break;
|
|
952
|
-
case "]":
|
|
953
|
-
pushCharToken(_TokenKind.TokenKind.RSQUARE);
|
|
954
|
-
break;
|
|
955
|
-
case "{":
|
|
956
|
-
pushCharToken(_TokenKind.TokenKind.LCURLY);
|
|
957
|
-
break;
|
|
958
|
-
case "}":
|
|
959
|
-
pushCharToken(_TokenKind.TokenKind.RCURLY);
|
|
960
|
-
break;
|
|
961
|
-
case "@":
|
|
962
|
-
pushCharToken(_TokenKind.TokenKind.BEAN_REF);
|
|
963
|
-
break;
|
|
964
|
-
case "^":
|
|
965
|
-
if (isTwoCharToken(_TokenKind.TokenKind.SELECT_FIRST)) pushPairToken(_TokenKind.TokenKind.SELECT_FIRST);
|
|
966
|
-
else pushCharToken(_TokenKind.TokenKind.POWER);
|
|
967
|
-
break;
|
|
968
|
-
case "!":
|
|
969
|
-
if (isTwoCharToken(_TokenKind.TokenKind.NE)) pushPairToken(_TokenKind.TokenKind.NE);
|
|
970
|
-
else if (isTwoCharToken(_TokenKind.TokenKind.PROJECT)) pushPairToken(_TokenKind.TokenKind.PROJECT);
|
|
971
|
-
else pushCharToken(_TokenKind.TokenKind.NOT);
|
|
972
|
-
break;
|
|
973
|
-
case "=":
|
|
974
|
-
if (isTwoCharToken(_TokenKind.TokenKind.EQ)) pushPairToken(_TokenKind.TokenKind.EQ);
|
|
975
|
-
else pushCharToken(_TokenKind.TokenKind.ASSIGN);
|
|
976
|
-
break;
|
|
977
|
-
case "&":
|
|
978
|
-
if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_AND)) throw {
|
|
979
|
-
name: "SpelParseException",
|
|
980
|
-
message: "Missing character '&' in expression (" + expressionString + ") at position " + pos
|
|
981
|
-
};
|
|
982
|
-
pushPairToken(_TokenKind.TokenKind.SYMBOLIC_AND);
|
|
983
|
-
break;
|
|
984
|
-
case "|":
|
|
985
|
-
if (!isTwoCharToken(_TokenKind.TokenKind.SYMBOLIC_OR)) throw {
|
|
986
|
-
name: "SpelParseException",
|
|
987
|
-
message: "Missing character '|' in expression (" + expressionString + ") at position " + pos
|
|
988
|
-
};
|
|
989
|
-
pushPairToken(_TokenKind.TokenKind.SYMBOLIC_OR);
|
|
990
|
-
break;
|
|
991
|
-
case "?":
|
|
992
|
-
if (isTwoCharToken(_TokenKind.TokenKind.SELECT)) pushPairToken(_TokenKind.TokenKind.SELECT);
|
|
993
|
-
else if (isTwoCharToken(_TokenKind.TokenKind.ELVIS)) pushPairToken(_TokenKind.TokenKind.ELVIS);
|
|
994
|
-
else if (isTwoCharToken(_TokenKind.TokenKind.SAFE_NAVI)) pushPairToken(_TokenKind.TokenKind.SAFE_NAVI);
|
|
995
|
-
else pushCharToken(_TokenKind.TokenKind.QMARK);
|
|
996
|
-
break;
|
|
997
|
-
case "$":
|
|
998
|
-
if (isTwoCharToken(_TokenKind.TokenKind.SELECT_LAST)) pushPairToken(_TokenKind.TokenKind.SELECT_LAST);
|
|
999
|
-
else lexIdentifier();
|
|
1000
|
-
break;
|
|
1001
|
-
case ">":
|
|
1002
|
-
if (isTwoCharToken(_TokenKind.TokenKind.GE)) pushPairToken(_TokenKind.TokenKind.GE);
|
|
1003
|
-
else pushCharToken(_TokenKind.TokenKind.GT);
|
|
1004
|
-
break;
|
|
1005
|
-
case "<":
|
|
1006
|
-
if (isTwoCharToken(_TokenKind.TokenKind.LE)) pushPairToken(_TokenKind.TokenKind.LE);
|
|
1007
|
-
else pushCharToken(_TokenKind.TokenKind.LT);
|
|
1008
|
-
break;
|
|
1009
|
-
case "0":
|
|
1010
|
-
case "1":
|
|
1011
|
-
case "2":
|
|
1012
|
-
case "3":
|
|
1013
|
-
case "4":
|
|
1014
|
-
case "5":
|
|
1015
|
-
case "6":
|
|
1016
|
-
case "7":
|
|
1017
|
-
case "8":
|
|
1018
|
-
case "9":
|
|
1019
|
-
lexNumericLiteral(ch === "0");
|
|
1020
|
-
break;
|
|
1021
|
-
case " ":
|
|
1022
|
-
case " ":
|
|
1023
|
-
case "\r":
|
|
1024
|
-
case "\n":
|
|
1025
|
-
pos += 1;
|
|
1026
|
-
break;
|
|
1027
|
-
case "'":
|
|
1028
|
-
lexQuotedStringLiteral();
|
|
1029
|
-
break;
|
|
1030
|
-
case "\"":
|
|
1031
|
-
lexDoubleQuotedStringLiteral();
|
|
1032
|
-
break;
|
|
1033
|
-
case "\0":
|
|
1034
|
-
pos += 1;
|
|
1035
|
-
break;
|
|
1036
|
-
case "\\": throw {
|
|
1037
|
-
name: "SpelParseException",
|
|
1038
|
-
message: "Unexpected escape character in expression (" + expressionString + ") at position " + pos
|
|
1039
|
-
};
|
|
1040
|
-
default: throw {
|
|
1041
|
-
name: "SpelParseException",
|
|
1042
|
-
message: "Cannot handle character '" + ch + "' in expression (" + expressionString + ") at position " + pos
|
|
1043
|
-
};
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
|
-
}
|
|
1047
|
-
function lexQuotedStringLiteral() {
|
|
1048
|
-
var start = pos, terminated = false, ch;
|
|
1049
|
-
while (!terminated) {
|
|
1050
|
-
pos += 1;
|
|
1051
|
-
ch = toProcess[pos];
|
|
1052
|
-
if (ch === "'") if (toProcess[pos + 1] === "'") pos += 1;
|
|
1053
|
-
else terminated = true;
|
|
1054
|
-
if (ch.charCodeAt(0) === 0) throw {
|
|
1055
|
-
name: "SpelParseException",
|
|
1056
|
-
message: "Non-terminating quoted string in expression (" + expressionString + ") at position " + pos
|
|
1057
|
-
};
|
|
1058
|
-
}
|
|
1059
|
-
pos += 1;
|
|
1060
|
-
tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));
|
|
1061
|
-
}
|
|
1062
|
-
function lexDoubleQuotedStringLiteral() {
|
|
1063
|
-
var start = pos, terminated = false, ch;
|
|
1064
|
-
while (!terminated) {
|
|
1065
|
-
pos += 1;
|
|
1066
|
-
ch = toProcess[pos];
|
|
1067
|
-
if (ch === "\"") if (toProcess[pos + 1] === "\"") pos += 1;
|
|
1068
|
-
else terminated = true;
|
|
1069
|
-
if (ch.charCodeAt(0) === 0) throw {
|
|
1070
|
-
name: "SpelParseException",
|
|
1071
|
-
message: "Non-terminating double-quoted string in expression (" + expressionString + ") at position " + pos
|
|
1072
|
-
};
|
|
1073
|
-
}
|
|
1074
|
-
pos += 1;
|
|
1075
|
-
tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_STRING, subarray(start, pos), start, pos));
|
|
1076
|
-
}
|
|
1077
|
-
function lexNumericLiteral(firstCharIsZero) {
|
|
1078
|
-
var isReal = false, start = pos, ch = toProcess[pos + 1], isHex = ch === "x" || ch === "X", dotpos, endOfNumber, possibleSign, isFloat;
|
|
1079
|
-
if (firstCharIsZero && isHex) {
|
|
1080
|
-
pos = pos + 1;
|
|
1081
|
-
do
|
|
1082
|
-
pos += 1;
|
|
1083
|
-
while (isHexadecimalDigit(toProcess[pos]));
|
|
1084
|
-
if (isChar("L", "l")) {
|
|
1085
|
-
pushHexIntToken(subarray(start + 2, pos), true, start, pos);
|
|
1086
|
-
pos += 1;
|
|
1087
|
-
} else pushHexIntToken(subarray(start + 2, pos), false, start, pos);
|
|
1088
|
-
return;
|
|
1089
|
-
}
|
|
1090
|
-
do
|
|
1091
|
-
pos += 1;
|
|
1092
|
-
while (isDigit(toProcess[pos]));
|
|
1093
|
-
ch = toProcess[pos];
|
|
1094
|
-
if (ch === ".") {
|
|
1095
|
-
isReal = true;
|
|
1096
|
-
dotpos = pos;
|
|
1097
|
-
do
|
|
1098
|
-
pos += 1;
|
|
1099
|
-
while (isDigit(toProcess[pos]));
|
|
1100
|
-
if (pos === dotpos + 1) {
|
|
1101
|
-
pos = dotpos;
|
|
1102
|
-
pushIntToken(subarray(start, pos), false, start, pos);
|
|
1103
|
-
return;
|
|
1104
|
-
}
|
|
1105
|
-
}
|
|
1106
|
-
endOfNumber = pos;
|
|
1107
|
-
if (isChar("L", "l")) {
|
|
1108
|
-
if (isReal) throw {
|
|
1109
|
-
name: "SpelParseException",
|
|
1110
|
-
message: "Real cannot be long in expression (" + expressionString + ") at position " + pos
|
|
1111
|
-
};
|
|
1112
|
-
pushIntToken(subarray(start, endOfNumber), true, start, endOfNumber);
|
|
1113
|
-
pos += 1;
|
|
1114
|
-
} else if (isExponentChar(toProcess[pos])) {
|
|
1115
|
-
isReal = true;
|
|
1116
|
-
pos += 1;
|
|
1117
|
-
possibleSign = toProcess[pos];
|
|
1118
|
-
if (isSign(possibleSign)) pos += 1;
|
|
1119
|
-
do
|
|
1120
|
-
pos += 1;
|
|
1121
|
-
while (isDigit(toProcess[pos]));
|
|
1122
|
-
isFloat = false;
|
|
1123
|
-
if (isFloatSuffix(toProcess[pos])) {
|
|
1124
|
-
isFloat = true;
|
|
1125
|
-
pos += 1;
|
|
1126
|
-
endOfNumber = pos;
|
|
1127
|
-
} else if (isDoubleSuffix(toProcess[pos])) {
|
|
1128
|
-
pos += 1;
|
|
1129
|
-
endOfNumber = pos;
|
|
1130
|
-
}
|
|
1131
|
-
pushRealToken(subarray(start, pos), isFloat, start, pos);
|
|
1132
|
-
} else {
|
|
1133
|
-
ch = toProcess[pos];
|
|
1134
|
-
isFloat = false;
|
|
1135
|
-
if (isFloatSuffix(ch)) {
|
|
1136
|
-
isReal = true;
|
|
1137
|
-
isFloat = true;
|
|
1138
|
-
pos += 1;
|
|
1139
|
-
endOfNumber = pos;
|
|
1140
|
-
} else if (isDoubleSuffix(ch)) {
|
|
1141
|
-
isReal = true;
|
|
1142
|
-
pos += 1;
|
|
1143
|
-
endOfNumber = pos;
|
|
1144
|
-
}
|
|
1145
|
-
if (isReal) pushRealToken(subarray(start, endOfNumber), isFloat, start, endOfNumber);
|
|
1146
|
-
else pushIntToken(subarray(start, endOfNumber), false, start, endOfNumber);
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1149
|
-
function lexIdentifier() {
|
|
1150
|
-
var start = pos, substring, asString, idx;
|
|
1151
|
-
do
|
|
1152
|
-
pos += 1;
|
|
1153
|
-
while (isIdentifier(toProcess[pos]));
|
|
1154
|
-
substring = subarray(start, pos);
|
|
1155
|
-
if (pos - start === 2 || pos - start === 3) {
|
|
1156
|
-
asString = substring.toUpperCase();
|
|
1157
|
-
idx = ALTERNATIVE_OPERATOR_NAMES.indexOf(asString);
|
|
1158
|
-
if (idx >= 0) {
|
|
1159
|
-
pushOneCharOrTwoCharToken(_TokenKind.TokenKind.valueOf(asString), start, substring);
|
|
1160
|
-
return;
|
|
1161
|
-
}
|
|
1162
|
-
}
|
|
1163
|
-
tokens.push(new _Token.Token(_TokenKind.TokenKind.IDENTIFIER, substring.replace("\0", ""), start, pos));
|
|
1164
|
-
}
|
|
1165
|
-
function pushIntToken(data, isLong, start, end) {
|
|
1166
|
-
if (isLong) tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_LONG, data, start, end));
|
|
1167
|
-
else tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_INT, data, start, end));
|
|
1168
|
-
}
|
|
1169
|
-
function pushHexIntToken(data, isLong, start, end) {
|
|
1170
|
-
if (data.length === 0) if (isLong) throw {
|
|
1171
|
-
name: "SpelParseException",
|
|
1172
|
-
message: "Not a long in expression (" + expressionString + ") at position " + pos
|
|
1173
|
-
};
|
|
1174
|
-
else throw {
|
|
1175
|
-
name: "SpelParseException",
|
|
1176
|
-
message: "Not an int in expression (" + expressionString + ") at position " + pos
|
|
1177
|
-
};
|
|
1178
|
-
if (isLong) tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXLONG, data, start, end));
|
|
1179
|
-
else tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_HEXINT, data, start, end));
|
|
1180
|
-
}
|
|
1181
|
-
function pushRealToken(data, isFloat, start, end) {
|
|
1182
|
-
if (isFloat) tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL_FLOAT, data, start, end));
|
|
1183
|
-
else tokens.push(new _Token.Token(_TokenKind.TokenKind.LITERAL_REAL, data, start, end));
|
|
1184
|
-
}
|
|
1185
|
-
function subarray(start, end) {
|
|
1186
|
-
return toProcess.substring(start, end);
|
|
1187
|
-
}
|
|
1188
|
-
/**
|
|
1189
|
-
* Check if this might be a two character token.
|
|
1190
|
-
*/
|
|
1191
|
-
function isTwoCharToken(kind) {
|
|
1192
|
-
if (kind.tokenChars.length === 2 && toProcess[pos] === kind.tokenChars[0]) return toProcess[pos + 1] === kind.tokenChars[1];
|
|
1193
|
-
return false;
|
|
1194
|
-
}
|
|
1195
|
-
/**
|
|
1196
|
-
* Push a token of just one character in length.
|
|
1197
|
-
*/
|
|
1198
|
-
function pushCharToken(kind) {
|
|
1199
|
-
tokens.push(new _Token.Token(kind, null, pos, pos + 1));
|
|
1200
|
-
pos += 1;
|
|
1201
|
-
}
|
|
1202
|
-
/**
|
|
1203
|
-
* Push a token of two characters in length.
|
|
1204
|
-
*/
|
|
1205
|
-
function pushPairToken(kind) {
|
|
1206
|
-
tokens.push(new _Token.Token(kind, null, pos, pos + 2));
|
|
1207
|
-
pos += 2;
|
|
1208
|
-
}
|
|
1209
|
-
function pushOneCharOrTwoCharToken(kind, pos$1, data) {
|
|
1210
|
-
tokens.push(new _Token.Token(kind, data, pos$1, pos$1 + kind.getLength()));
|
|
1211
|
-
}
|
|
1212
|
-
function isIdentifier(ch) {
|
|
1213
|
-
return isAlphabetic(ch) || isDigit(ch) || ch === "_" || ch === "$";
|
|
1214
|
-
}
|
|
1215
|
-
function isChar(a, b) {
|
|
1216
|
-
var ch = toProcess[pos];
|
|
1217
|
-
return ch === a || ch === b;
|
|
1218
|
-
}
|
|
1219
|
-
function isExponentChar(ch) {
|
|
1220
|
-
return ch === "e" || ch === "E";
|
|
1221
|
-
}
|
|
1222
|
-
function isFloatSuffix(ch) {
|
|
1223
|
-
return ch === "f" || ch === "F";
|
|
1224
|
-
}
|
|
1225
|
-
function isDoubleSuffix(ch) {
|
|
1226
|
-
return ch === "d" || ch === "D";
|
|
1227
|
-
}
|
|
1228
|
-
function isSign(ch) {
|
|
1229
|
-
return ch === "+" || ch === "-";
|
|
1230
|
-
}
|
|
1231
|
-
function isDigit(ch) {
|
|
1232
|
-
if (ch.charCodeAt(0) > 255) return false;
|
|
1233
|
-
return (FLAGS[ch.charCodeAt(0)] & IS_DIGIT) !== 0;
|
|
1234
|
-
}
|
|
1235
|
-
function isAlphabetic(ch) {
|
|
1236
|
-
if (ch.charCodeAt(0) > 255) return false;
|
|
1237
|
-
return (FLAGS[ch.charCodeAt(0)] & IS_ALPHA) !== 0;
|
|
1238
|
-
}
|
|
1239
|
-
function isHexadecimalDigit(ch) {
|
|
1240
|
-
if (ch.charCodeAt(0) > 255) return false;
|
|
1241
|
-
return (FLAGS[ch.charCodeAt(0)] & IS_HEXDIGIT) !== 0;
|
|
1242
|
-
}
|
|
1243
|
-
process();
|
|
1244
|
-
return tokens;
|
|
1245
|
-
}
|
|
1246
|
-
exports$1.Tokenizer = { tokenize };
|
|
1247
|
-
}),
|
|
1248
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1249
|
-
"use strict";
|
|
1250
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1251
|
-
exports$1.Token = void 0;
|
|
1252
|
-
var _TokenKind = __webpack_require__(2);
|
|
1253
|
-
function Token(tokenKind, tokenData, startPos, endPos) {
|
|
1254
|
-
this.kind = tokenKind;
|
|
1255
|
-
this.startPos = startPos;
|
|
1256
|
-
this.endPos = endPos;
|
|
1257
|
-
if (tokenData) this.data = tokenData;
|
|
1258
|
-
}
|
|
1259
|
-
/**
|
|
1260
|
-
* @author Andy Clement
|
|
1261
|
-
* @author Ben March
|
|
1262
|
-
* @since 0.2.0
|
|
1263
|
-
*/
|
|
1264
|
-
Token.prototype.getKind = function() {
|
|
1265
|
-
return this.kind;
|
|
1266
|
-
};
|
|
1267
|
-
Token.prototype.toString = function() {
|
|
1268
|
-
var s = "[";
|
|
1269
|
-
s += this.kind.toString();
|
|
1270
|
-
if (this.kind.hasPayload()) s += ":" + this.data;
|
|
1271
|
-
s += "]";
|
|
1272
|
-
s += "(" + this.startPos + "," + this.endPos + ")";
|
|
1273
|
-
return s;
|
|
1274
|
-
};
|
|
1275
|
-
Token.prototype.isIdentifier = function() {
|
|
1276
|
-
return this.kind === _TokenKind.TokenKind.IDENTIFIER;
|
|
1277
|
-
};
|
|
1278
|
-
Token.prototype.isNumericRelationalOperator = function() {
|
|
1279
|
-
return this.kind === _TokenKind.TokenKind.GT || this.kind === _TokenKind.TokenKind.GE || this.kind === _TokenKind.TokenKind.LT || this.kind === _TokenKind.TokenKind.LE || this.kind === _TokenKind.TokenKind.EQ || this.kind === _TokenKind.TokenKind.NE;
|
|
1280
|
-
};
|
|
1281
|
-
Token.prototype.stringValue = function() {
|
|
1282
|
-
return this.data;
|
|
1283
|
-
};
|
|
1284
|
-
Token.prototype.asInstanceOfToken = function() {
|
|
1285
|
-
return new Token(_TokenKind.TokenKind.INSTANCEOF, this.startPos, this.endPos);
|
|
1286
|
-
};
|
|
1287
|
-
Token.prototype.asMatchesToken = function() {
|
|
1288
|
-
return new Token(_TokenKind.TokenKind.MATCHES, this.startPos, this.endPos);
|
|
1289
|
-
};
|
|
1290
|
-
Token.prototype.asBetweenToken = function() {
|
|
1291
|
-
return new Token(_TokenKind.TokenKind.BETWEEN, this.startPos, this.endPos);
|
|
1292
|
-
};
|
|
1293
|
-
Token.prototype.getStartPosition = function() {
|
|
1294
|
-
return this.startPos;
|
|
1295
|
-
};
|
|
1296
|
-
Token.prototype.getEndPosition = function() {
|
|
1297
|
-
return this.endPos;
|
|
1298
|
-
};
|
|
1299
|
-
exports$1.Token = Token;
|
|
1300
|
-
}),
|
|
1301
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1302
|
-
"use strict";
|
|
1303
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1304
|
-
exports$1.BooleanLiteral = void 0;
|
|
1305
|
-
var _SpelNode = __webpack_require__(0);
|
|
1306
|
-
/**
|
|
1307
|
-
* Represents the literal values TRUE and FALSE.
|
|
1308
|
-
*
|
|
1309
|
-
* @author Andy Clement
|
|
1310
|
-
* @author Ben March
|
|
1311
|
-
* @since 0.2.0
|
|
1312
|
-
*/
|
|
1313
|
-
function createNode(value, position) {
|
|
1314
|
-
var node = _SpelNode.SpelNode.create("boolean", position);
|
|
1315
|
-
node.getValue = function() {
|
|
1316
|
-
return value;
|
|
1317
|
-
};
|
|
1318
|
-
node.setValue = function(newValue) {
|
|
1319
|
-
return value = newValue;
|
|
1320
|
-
};
|
|
1321
|
-
return node;
|
|
1322
|
-
}
|
|
1323
|
-
exports$1.BooleanLiteral = { create: createNode };
|
|
1324
|
-
}),
|
|
1325
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1326
|
-
"use strict";
|
|
1327
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1328
|
-
exports$1.NumberLiteral = void 0;
|
|
1329
|
-
var _SpelNode = __webpack_require__(0);
|
|
1330
|
-
/**
|
|
1331
|
-
* Expression language AST node that represents a literal number of any kind (since JavaScript only supports doubles anyway)
|
|
1332
|
-
*
|
|
1333
|
-
* @author Andy Clement
|
|
1334
|
-
* @author Ben March
|
|
1335
|
-
* @since 0.2.0
|
|
1336
|
-
*/
|
|
1337
|
-
function createNode(value, position) {
|
|
1338
|
-
var node = _SpelNode.SpelNode.create("number", position);
|
|
1339
|
-
node.getValue = function() {
|
|
1340
|
-
return value;
|
|
1341
|
-
};
|
|
1342
|
-
node.setValue = function(newValue) {
|
|
1343
|
-
return value = newValue;
|
|
1344
|
-
};
|
|
1345
|
-
return node;
|
|
1346
|
-
}
|
|
1347
|
-
exports$1.NumberLiteral = { create: createNode };
|
|
1348
|
-
}),
|
|
1349
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1350
|
-
"use strict";
|
|
1351
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1352
|
-
exports$1.StringLiteral = void 0;
|
|
1353
|
-
var _SpelNode = __webpack_require__(0);
|
|
1354
|
-
/**
|
|
1355
|
-
* Expression language AST node that represents a string literal.
|
|
1356
|
-
*
|
|
1357
|
-
* @author Andy Clement
|
|
1358
|
-
* @author Juergen Hoeller
|
|
1359
|
-
* @author Ben March
|
|
1360
|
-
* @since 0.2.0
|
|
1361
|
-
*/
|
|
1362
|
-
function createNode(value, position) {
|
|
1363
|
-
var node = _SpelNode.SpelNode.create("string", position);
|
|
1364
|
-
function stripQuotes(value$1) {
|
|
1365
|
-
if (value$1[0] === "'" && value$1[value$1.length - 1] === "'" || value$1[0] === "\"" && value$1[value$1.length - 1] === "\"") value$1 = value$1.substring(1, value$1.length - 1);
|
|
1366
|
-
return value$1.replace(/''/g, "'").replace(/""/g, "\"");
|
|
1367
|
-
}
|
|
1368
|
-
value = stripQuotes(value);
|
|
1369
|
-
node.getValue = function() {
|
|
1370
|
-
return value;
|
|
1371
|
-
};
|
|
1372
|
-
node.setValue = function(newValue) {
|
|
1373
|
-
return value = newValue;
|
|
1374
|
-
};
|
|
1375
|
-
return node;
|
|
1376
|
-
}
|
|
1377
|
-
exports$1.StringLiteral = { create: createNode };
|
|
1378
|
-
}),
|
|
1379
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1380
|
-
"use strict";
|
|
1381
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1382
|
-
exports$1.NullLiteral = void 0;
|
|
1383
|
-
var _SpelNode = __webpack_require__(0);
|
|
1384
|
-
/**
|
|
1385
|
-
* Expression language AST node that represents null.
|
|
1386
|
-
*
|
|
1387
|
-
* @author Andy Clement
|
|
1388
|
-
* @author Ben March
|
|
1389
|
-
* @since 0.2.0
|
|
1390
|
-
*/
|
|
1391
|
-
function createNode(value, position) {
|
|
1392
|
-
var node = _SpelNode.SpelNode.create("null", position);
|
|
1393
|
-
node.getValue = function() {
|
|
1394
|
-
return null;
|
|
1395
|
-
};
|
|
1396
|
-
return node;
|
|
1397
|
-
}
|
|
1398
|
-
exports$1.NullLiteral = { create: createNode };
|
|
1399
|
-
}),
|
|
1400
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1401
|
-
"use strict";
|
|
1402
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1403
|
-
exports$1.FunctionReference = void 0;
|
|
1404
|
-
var _SpelNode = __webpack_require__(0);
|
|
1405
|
-
var _Stack = __webpack_require__(1);
|
|
1406
|
-
/**
|
|
1407
|
-
* A function reference is of the form "#someFunction(a,b,c)". Functions may be defined in
|
|
1408
|
-
* the context prior to the expression being evaluated or within the expression itself
|
|
1409
|
-
* using a lambda function definition. For example: Lambda function definition in an
|
|
1410
|
-
* expression: "(#max = {|x,y|$x>$y?$x:$y};max(2,3))" Calling context defined function:
|
|
1411
|
-
* "#isEven(37)". Functions may also be static java methods, registered in the context
|
|
1412
|
-
* prior to invocation of the expression.
|
|
1413
|
-
*
|
|
1414
|
-
* <p>Functions are very simplistic, the arguments are not part of the definition (right
|
|
1415
|
-
* now), so the names must be unique.
|
|
1416
|
-
*
|
|
1417
|
-
* @author Andy Clement
|
|
1418
|
-
* @author Ben March
|
|
1419
|
-
* @since 0.2.0
|
|
1420
|
-
*/
|
|
1421
|
-
function createNode(functionName, position, args) {
|
|
1422
|
-
var node = _SpelNode.SpelNode.create("function", position);
|
|
1423
|
-
node.getRaw = function() {
|
|
1424
|
-
return {
|
|
1425
|
-
functionName,
|
|
1426
|
-
args
|
|
1427
|
-
};
|
|
1428
|
-
};
|
|
1429
|
-
node.getValue = function(state) {
|
|
1430
|
-
var locals = state.locals || {}, context = state.rootContext, compiledArgs = [];
|
|
1431
|
-
args.forEach(function(arg) {
|
|
1432
|
-
var currentActiveContext = state.activeContext;
|
|
1433
|
-
state.activeContext = new _Stack.Stack();
|
|
1434
|
-
state.activeContext.push(state.rootContext);
|
|
1435
|
-
compiledArgs.push(arg.getValue(state));
|
|
1436
|
-
state.activeContext = currentActiveContext;
|
|
1437
|
-
});
|
|
1438
|
-
if (locals[functionName]) return locals[functionName].apply(context, compiledArgs);
|
|
1439
|
-
throw {
|
|
1440
|
-
name: "FunctionDoesNotExistException",
|
|
1441
|
-
message: "Function '" + functionName + "' does not exist."
|
|
1442
|
-
};
|
|
1443
|
-
};
|
|
1444
|
-
return node;
|
|
1445
|
-
}
|
|
1446
|
-
exports$1.FunctionReference = { create: createNode };
|
|
1447
|
-
}),
|
|
1448
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1449
|
-
"use strict";
|
|
1450
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1451
|
-
exports$1.MethodReference = void 0;
|
|
1452
|
-
var _SpelNode = __webpack_require__(0);
|
|
1453
|
-
var _Stack = __webpack_require__(1);
|
|
1454
|
-
/**
|
|
1455
|
-
* Expression language AST node that represents a method reference.
|
|
1456
|
-
*
|
|
1457
|
-
* @author Andy Clement
|
|
1458
|
-
* @author Juergen Hoeller
|
|
1459
|
-
* @author Ben March
|
|
1460
|
-
* @since 0.2.0
|
|
1461
|
-
*/
|
|
1462
|
-
function createNode(nullSafeNavigation, methodName, position, args) {
|
|
1463
|
-
var node = _SpelNode.SpelNode.create("method", position);
|
|
1464
|
-
node.getRaw = function() {
|
|
1465
|
-
return {
|
|
1466
|
-
methodName,
|
|
1467
|
-
args
|
|
1468
|
-
};
|
|
1469
|
-
};
|
|
1470
|
-
node.getValue = function(state) {
|
|
1471
|
-
var context = state.activeContext.peek(), compiledArgs = [], method;
|
|
1472
|
-
if (context === null || context === void 0) throw {
|
|
1473
|
-
name: "ContextDoesNotExistException",
|
|
1474
|
-
message: "Attempting to look up property '" + methodName + "' for an undefined context."
|
|
1475
|
-
};
|
|
1476
|
-
function maybeHandleNullSafeNavigation(member) {
|
|
1477
|
-
if (member === void 0 || member === null) {
|
|
1478
|
-
if (nullSafeNavigation) return null;
|
|
1479
|
-
throw {
|
|
1480
|
-
name: "NullPointerException",
|
|
1481
|
-
message: "Method " + methodName + " does not exist."
|
|
1482
|
-
};
|
|
1483
|
-
}
|
|
1484
|
-
return member;
|
|
1485
|
-
}
|
|
1486
|
-
args.forEach(function(arg) {
|
|
1487
|
-
var currentActiveContext = state.activeContext;
|
|
1488
|
-
state.activeContext = new _Stack.Stack();
|
|
1489
|
-
state.activeContext.push(state.rootContext);
|
|
1490
|
-
compiledArgs.push(arg.getValue(state));
|
|
1491
|
-
state.activeContext = currentActiveContext;
|
|
1492
|
-
});
|
|
1493
|
-
if (methodName.substr(0, 3) === "get" && !context[methodName]) return maybeHandleNullSafeNavigation(context[methodName.charAt(3).toLowerCase() + methodName.substring(4)]);
|
|
1494
|
-
if (methodName.substr(0, 3) === "set" && !context[methodName]) return context[methodName.charAt(3).toLowerCase() + methodName.substring(4)] = compiledArgs[0];
|
|
1495
|
-
if (Array.isArray(context)) {
|
|
1496
|
-
if (methodName === "size") return context.length;
|
|
1497
|
-
if (methodName === "contains") return context.includes(compiledArgs[0]);
|
|
1498
|
-
}
|
|
1499
|
-
method = maybeHandleNullSafeNavigation(context[methodName]);
|
|
1500
|
-
if (method) return method.apply(context, compiledArgs);
|
|
1501
|
-
return null;
|
|
1502
|
-
};
|
|
1503
|
-
return node;
|
|
1504
|
-
}
|
|
1505
|
-
exports$1.MethodReference = { create: createNode };
|
|
1506
|
-
}),
|
|
1507
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1508
|
-
"use strict";
|
|
1509
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1510
|
-
exports$1.PropertyReference = void 0;
|
|
1511
|
-
var _SpelNode = __webpack_require__(0);
|
|
1512
|
-
/**
|
|
1513
|
-
* Represents a simple property or field reference.
|
|
1514
|
-
*
|
|
1515
|
-
* @author Andy Clement
|
|
1516
|
-
* @author Juergen Hoeller
|
|
1517
|
-
* @author Clark Duplichien
|
|
1518
|
-
* @author Ben March
|
|
1519
|
-
* @since 0.2.0
|
|
1520
|
-
*/
|
|
1521
|
-
function createNode(nullSafeNavigation, propertyName, position) {
|
|
1522
|
-
var node = _SpelNode.SpelNode.create("property", position);
|
|
1523
|
-
node.getRaw = function() {
|
|
1524
|
-
return propertyName;
|
|
1525
|
-
};
|
|
1526
|
-
node.getValue = function(state) {
|
|
1527
|
-
var context = state.activeContext.peek();
|
|
1528
|
-
if (!context) {
|
|
1529
|
-
if (nullSafeNavigation) return null;
|
|
1530
|
-
throw {
|
|
1531
|
-
name: "ContextDoesNotExistException",
|
|
1532
|
-
message: "Attempting to look up property '" + propertyName + "' for an undefined context."
|
|
1533
|
-
};
|
|
1534
|
-
}
|
|
1535
|
-
if (context[propertyName] === void 0 || context[propertyName] === null) {
|
|
1536
|
-
if (nullSafeNavigation) return null;
|
|
1537
|
-
if (propertyName === "size" && Array.isArray(context)) return context.length;
|
|
1538
|
-
throw {
|
|
1539
|
-
name: "NullPointerException",
|
|
1540
|
-
message: "Property '" + propertyName + "' does not exist."
|
|
1541
|
-
};
|
|
1542
|
-
}
|
|
1543
|
-
return context[propertyName];
|
|
1544
|
-
};
|
|
1545
|
-
node.setValue = function(value, state) {
|
|
1546
|
-
var context = state.activeContext.peek();
|
|
1547
|
-
if (!context) throw {
|
|
1548
|
-
name: "ContextDoesNotExistException",
|
|
1549
|
-
message: "Attempting to assign property '" + propertyName + "' for an undefined context."
|
|
1550
|
-
};
|
|
1551
|
-
return context[propertyName] = value;
|
|
1552
|
-
};
|
|
1553
|
-
node.getName = function() {
|
|
1554
|
-
return propertyName;
|
|
1555
|
-
};
|
|
1556
|
-
return node;
|
|
1557
|
-
}
|
|
1558
|
-
exports$1.PropertyReference = { create: createNode };
|
|
1559
|
-
}),
|
|
1560
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1561
|
-
"use strict";
|
|
1562
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1563
|
-
exports$1.VariableReference = void 0;
|
|
1564
|
-
var _SpelNode = __webpack_require__(0);
|
|
1565
|
-
/**
|
|
1566
|
-
* Represents a variable reference, eg. #someVar. Note this is different to a *local*
|
|
1567
|
-
* variable like $someVar
|
|
1568
|
-
*
|
|
1569
|
-
* @author Andy Clement
|
|
1570
|
-
* @author Ben March
|
|
1571
|
-
* @since 0.2.0
|
|
1572
|
-
*/
|
|
1573
|
-
function createNode(variableName, position) {
|
|
1574
|
-
var node = _SpelNode.SpelNode.create("variable", position);
|
|
1575
|
-
node.getRaw = function() {
|
|
1576
|
-
return variableName;
|
|
1577
|
-
};
|
|
1578
|
-
node.getValue = function(state) {
|
|
1579
|
-
var context = state.activeContext.peek(), locals = state.locals;
|
|
1580
|
-
if (!context) throw {
|
|
1581
|
-
name: "ContextDoesNotExistException",
|
|
1582
|
-
message: "Attempting to look up variable '" + variableName + "' for an undefined context."
|
|
1583
|
-
};
|
|
1584
|
-
if (variableName === "this") return context;
|
|
1585
|
-
if (variableName === "root") return state.rootContext;
|
|
1586
|
-
return locals[variableName];
|
|
1587
|
-
};
|
|
1588
|
-
node.setValue = function(value, state) {
|
|
1589
|
-
var locals = state.locals;
|
|
1590
|
-
return locals[variableName] = value;
|
|
1591
|
-
};
|
|
1592
|
-
return node;
|
|
1593
|
-
}
|
|
1594
|
-
exports$1.VariableReference = { create: createNode };
|
|
1595
|
-
}),
|
|
1596
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1597
|
-
"use strict";
|
|
1598
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1599
|
-
exports$1.CompoundExpression = void 0;
|
|
1600
|
-
var _SpelNode = __webpack_require__(0);
|
|
1601
|
-
/**
|
|
1602
|
-
* Represents a DOT separated expression sequence, such as 'property1.property2.methodOne()'
|
|
1603
|
-
*
|
|
1604
|
-
* @author Andy Clement
|
|
1605
|
-
* @author Ben March
|
|
1606
|
-
* @since 0.2.0
|
|
1607
|
-
*/
|
|
1608
|
-
function createNode(position, expressionComponents) {
|
|
1609
|
-
var node = _SpelNode.SpelNode.create.apply(null, ["compound", position].concat(expressionComponents));
|
|
1610
|
-
function buildContextStack(state) {
|
|
1611
|
-
var childrenCount = node.getChildren().length, i;
|
|
1612
|
-
for (i = 0; i < childrenCount; i += 1) if (node.getChildren()[i].getType() === "indexer") state.activeContext.push(state.activeContext.peek()[node.getChildren()[i].getValue(state)]);
|
|
1613
|
-
else state.activeContext.push(node.getChildren()[i].getValue(state));
|
|
1614
|
-
return function unbuildContextStack() {
|
|
1615
|
-
for (i = 0; i < childrenCount; i += 1) state.activeContext.pop();
|
|
1616
|
-
};
|
|
1617
|
-
}
|
|
1618
|
-
node.getValue = function(state) {
|
|
1619
|
-
var context = state.activeContext.peek(), value;
|
|
1620
|
-
if (!context) throw {
|
|
1621
|
-
name: "ContextDoesNotExistException",
|
|
1622
|
-
message: "Attempting to evaluate compound expression with an undefined context."
|
|
1623
|
-
};
|
|
1624
|
-
var unbuildContextStack = buildContextStack(state);
|
|
1625
|
-
value = state.activeContext.peek();
|
|
1626
|
-
unbuildContextStack();
|
|
1627
|
-
return value;
|
|
1628
|
-
};
|
|
1629
|
-
node.setValue = function(value, state) {
|
|
1630
|
-
var unbuildContextStack = buildContextStack(state), childCount = node.getChildren().length;
|
|
1631
|
-
state.activeContext.pop();
|
|
1632
|
-
value = node.getChildren()[childCount - 1].setValue(value, state);
|
|
1633
|
-
state.activeContext.push(null);
|
|
1634
|
-
unbuildContextStack();
|
|
1635
|
-
return value;
|
|
1636
|
-
};
|
|
1637
|
-
return node;
|
|
1638
|
-
}
|
|
1639
|
-
exports$1.CompoundExpression = { create: createNode };
|
|
1640
|
-
}),
|
|
1641
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1642
|
-
"use strict";
|
|
1643
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1644
|
-
exports$1.Indexer = void 0;
|
|
1645
|
-
var _SpelNode = __webpack_require__(0);
|
|
1646
|
-
var _Stack = __webpack_require__(1);
|
|
1647
|
-
/**
|
|
1648
|
-
* An Indexer can index into some proceeding structure to access a particular piece of it.
|
|
1649
|
-
* Supported structures are: strings / collections (lists/sets) / arrays.
|
|
1650
|
-
*
|
|
1651
|
-
* @author Andy Clement
|
|
1652
|
-
* @author Phillip Webb
|
|
1653
|
-
* @author Stephane Nicoll
|
|
1654
|
-
* @author Ben March
|
|
1655
|
-
* @since 0.2.0
|
|
1656
|
-
*/
|
|
1657
|
-
function createNode(position, expressionComponents) {
|
|
1658
|
-
var node = _SpelNode.SpelNode.create.apply(null, ["indexer", position].concat(expressionComponents));
|
|
1659
|
-
node.getValue = function(state) {
|
|
1660
|
-
var activeContext = state.activeContext, context, childrenCount = node.getChildren().length, i, value;
|
|
1661
|
-
state.activeContext = new _Stack.Stack();
|
|
1662
|
-
state.activeContext.push(state.rootContext);
|
|
1663
|
-
context = state.activeContext.peek();
|
|
1664
|
-
if (!context) throw {
|
|
1665
|
-
name: "ContextDoesNotExistException",
|
|
1666
|
-
message: "Attempting to evaluate compound expression with an undefined context."
|
|
1667
|
-
};
|
|
1668
|
-
for (i = 0; i < childrenCount; i += 1) state.activeContext.push(node.getChildren()[i].getValue(state));
|
|
1669
|
-
value = state.activeContext.peek();
|
|
1670
|
-
for (i = 0; i < childrenCount; i += 1) state.activeContext.pop();
|
|
1671
|
-
state.activeContext = activeContext;
|
|
1672
|
-
return value;
|
|
1673
|
-
};
|
|
1674
|
-
return node;
|
|
1675
|
-
}
|
|
1676
|
-
exports$1.Indexer = { create: createNode };
|
|
1677
|
-
}),
|
|
1678
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1679
|
-
"use strict";
|
|
1680
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1681
|
-
exports$1.Assign = void 0;
|
|
1682
|
-
var _SpelNode = __webpack_require__(0);
|
|
1683
|
-
/**
|
|
1684
|
-
* Represents assignment. An alternative to calling setValue() for an expression is to use
|
|
1685
|
-
* an assign.
|
|
1686
|
-
*
|
|
1687
|
-
* <p>Example: 'someNumberProperty=42'
|
|
1688
|
-
*
|
|
1689
|
-
* @author Andy Clement
|
|
1690
|
-
* @author Ben March
|
|
1691
|
-
* @since 0.2.0
|
|
1692
|
-
*/
|
|
1693
|
-
function createNode(position, property, assignedValue) {
|
|
1694
|
-
var node = _SpelNode.SpelNode.create("assign", position, property, assignedValue);
|
|
1695
|
-
node.getValue = function(state) {
|
|
1696
|
-
if (!state.activeContext.peek()) throw {
|
|
1697
|
-
name: "ContextDoesNotExistException",
|
|
1698
|
-
message: "Attempting to assign property '" + property.getValue(state) + "' for an undefined context."
|
|
1699
|
-
};
|
|
1700
|
-
return property.setValue(assignedValue.getValue(state), state);
|
|
1701
|
-
};
|
|
1702
|
-
return node;
|
|
1703
|
-
}
|
|
1704
|
-
exports$1.Assign = { create: createNode };
|
|
1705
|
-
}),
|
|
1706
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1707
|
-
"use strict";
|
|
1708
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1709
|
-
exports$1.OpEQ = void 0;
|
|
1710
|
-
var _SpelNode = __webpack_require__(0);
|
|
1711
|
-
/**
|
|
1712
|
-
* Implements the equality operator.
|
|
1713
|
-
*
|
|
1714
|
-
* @author Andy Clement
|
|
1715
|
-
* @author Ben March
|
|
1716
|
-
* @since 0.2.0
|
|
1717
|
-
*/
|
|
1718
|
-
function createNode(position, left, right) {
|
|
1719
|
-
var node = _SpelNode.SpelNode.create("op-eq", position, left, right);
|
|
1720
|
-
node.getValue = function(state) {
|
|
1721
|
-
return left.getValue(state) === right.getValue(state);
|
|
1722
|
-
};
|
|
1723
|
-
return node;
|
|
1724
|
-
}
|
|
1725
|
-
exports$1.OpEQ = { create: createNode };
|
|
1726
|
-
}),
|
|
1727
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1728
|
-
"use strict";
|
|
1729
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1730
|
-
exports$1.OpNE = void 0;
|
|
1731
|
-
var _SpelNode = __webpack_require__(0);
|
|
1732
|
-
/**
|
|
1733
|
-
* Implements the not-equal operator.
|
|
1734
|
-
*
|
|
1735
|
-
* @author Andy Clement
|
|
1736
|
-
* @author Ben March
|
|
1737
|
-
* @since 0.2.0
|
|
1738
|
-
*/
|
|
1739
|
-
function createNode(position, left, right) {
|
|
1740
|
-
var node = _SpelNode.SpelNode.create("op-ne", position, left, right);
|
|
1741
|
-
node.getValue = function(state) {
|
|
1742
|
-
return left.getValue(state) !== right.getValue(state);
|
|
1743
|
-
};
|
|
1744
|
-
return node;
|
|
1745
|
-
}
|
|
1746
|
-
exports$1.OpNE = { create: createNode };
|
|
1747
|
-
}),
|
|
1748
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1749
|
-
"use strict";
|
|
1750
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1751
|
-
exports$1.OpGE = void 0;
|
|
1752
|
-
var _SpelNode = __webpack_require__(0);
|
|
1753
|
-
/**
|
|
1754
|
-
* Implements greater-than-or-equal operator.
|
|
1755
|
-
*
|
|
1756
|
-
* @author Andy Clement
|
|
1757
|
-
* @author Juergen Hoeller
|
|
1758
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1759
|
-
* @author Ben March
|
|
1760
|
-
* @since 0.2.0
|
|
1761
|
-
*/
|
|
1762
|
-
function createNode(position, left, right) {
|
|
1763
|
-
var node = _SpelNode.SpelNode.create("op-ge", position, left, right);
|
|
1764
|
-
node.getValue = function(state) {
|
|
1765
|
-
return left.getValue(state) >= right.getValue(state);
|
|
1766
|
-
};
|
|
1767
|
-
return node;
|
|
1768
|
-
}
|
|
1769
|
-
exports$1.OpGE = { create: createNode };
|
|
1770
|
-
}),
|
|
1771
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1772
|
-
"use strict";
|
|
1773
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1774
|
-
exports$1.OpGT = void 0;
|
|
1775
|
-
var _SpelNode = __webpack_require__(0);
|
|
1776
|
-
/**
|
|
1777
|
-
* Implements the greater-than operator.
|
|
1778
|
-
*
|
|
1779
|
-
* @author Andy Clement
|
|
1780
|
-
* @author Juergen Hoeller
|
|
1781
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1782
|
-
* @author Ben March
|
|
1783
|
-
* @since 0.2.0
|
|
1784
|
-
*/
|
|
1785
|
-
function createNode(position, left, right) {
|
|
1786
|
-
var node = _SpelNode.SpelNode.create("op-gt", position, left, right);
|
|
1787
|
-
node.getValue = function(state) {
|
|
1788
|
-
return left.getValue(state) > right.getValue(state);
|
|
1789
|
-
};
|
|
1790
|
-
return node;
|
|
1791
|
-
}
|
|
1792
|
-
exports$1.OpGT = { create: createNode };
|
|
1793
|
-
}),
|
|
1794
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1795
|
-
"use strict";
|
|
1796
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1797
|
-
exports$1.OpLE = void 0;
|
|
1798
|
-
var _SpelNode = __webpack_require__(0);
|
|
1799
|
-
/**
|
|
1800
|
-
* Implements the less-than-or-equal operator.
|
|
1801
|
-
*
|
|
1802
|
-
* @author Andy Clement
|
|
1803
|
-
* @author Juergen Hoeller
|
|
1804
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1805
|
-
* @author Ben March
|
|
1806
|
-
* @since 0.2.0
|
|
1807
|
-
*/
|
|
1808
|
-
function createNode(position, left, right) {
|
|
1809
|
-
var node = _SpelNode.SpelNode.create("op-le", position, left, right);
|
|
1810
|
-
node.getValue = function(state) {
|
|
1811
|
-
return left.getValue(state) <= right.getValue(state);
|
|
1812
|
-
};
|
|
1813
|
-
return node;
|
|
1814
|
-
}
|
|
1815
|
-
exports$1.OpLE = { create: createNode };
|
|
1816
|
-
}),
|
|
1817
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1818
|
-
"use strict";
|
|
1819
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1820
|
-
exports$1.OpLT = void 0;
|
|
1821
|
-
var _SpelNode = __webpack_require__(0);
|
|
1822
|
-
/**
|
|
1823
|
-
* Implements the less-than operator.
|
|
1824
|
-
*
|
|
1825
|
-
* @author Andy Clement
|
|
1826
|
-
* @author Juergen Hoeller
|
|
1827
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1828
|
-
* @author Ben March
|
|
1829
|
-
* @since 0.2.0
|
|
1830
|
-
*/
|
|
1831
|
-
function createNode(position, left, right) {
|
|
1832
|
-
var node = _SpelNode.SpelNode.create("op-lt", position, left, right);
|
|
1833
|
-
node.getValue = function(state) {
|
|
1834
|
-
return left.getValue(state) < right.getValue(state);
|
|
1835
|
-
};
|
|
1836
|
-
return node;
|
|
1837
|
-
}
|
|
1838
|
-
exports$1.OpLT = { create: createNode };
|
|
1839
|
-
}),
|
|
1840
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1841
|
-
"use strict";
|
|
1842
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1843
|
-
exports$1.OpPlus = void 0;
|
|
1844
|
-
var _SpelNode = __webpack_require__(0);
|
|
1845
|
-
/**
|
|
1846
|
-
* The plus operator will:
|
|
1847
|
-
* <ul>
|
|
1848
|
-
* <li>add numbers
|
|
1849
|
-
* <li>concatenate strings
|
|
1850
|
-
* </ul>
|
|
1851
|
-
*
|
|
1852
|
-
* <p>It can be used as a unary operator for numbers.
|
|
1853
|
-
* The standard promotions are performed when the operand types vary (double+int=double).
|
|
1854
|
-
* For other options it defers to the registered overloader.
|
|
1855
|
-
*
|
|
1856
|
-
* @author Andy Clement
|
|
1857
|
-
* @author Juergen Hoeller
|
|
1858
|
-
* @author Ivo Smid
|
|
1859
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1860
|
-
* @author Ben March
|
|
1861
|
-
* @since 0.2.0
|
|
1862
|
-
*/
|
|
1863
|
-
function createNode(position, left, right) {
|
|
1864
|
-
var node = _SpelNode.SpelNode.create("op-plus", position, left, right);
|
|
1865
|
-
node.getValue = function(state) {
|
|
1866
|
-
if (!right) return +left.getValue(state);
|
|
1867
|
-
return left.getValue(state) + right.getValue(state);
|
|
1868
|
-
};
|
|
1869
|
-
return node;
|
|
1870
|
-
}
|
|
1871
|
-
exports$1.OpPlus = { create: createNode };
|
|
1872
|
-
}),
|
|
1873
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1874
|
-
"use strict";
|
|
1875
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1876
|
-
exports$1.OpMinus = void 0;
|
|
1877
|
-
var _SpelNode = __webpack_require__(0);
|
|
1878
|
-
/**
|
|
1879
|
-
* The minus operator supports:
|
|
1880
|
-
* <ul>
|
|
1881
|
-
* <li>subtraction of numbers
|
|
1882
|
-
* <li>subtraction of an int from a string of one character
|
|
1883
|
-
* (effectively decreasing that character), so 'd'-3='a'
|
|
1884
|
-
* </ul>
|
|
1885
|
-
*
|
|
1886
|
-
* <p>It can be used as a unary operator for numbers.
|
|
1887
|
-
* The standard promotions are performed when the operand types vary (double-int=double).
|
|
1888
|
-
* For other options it defers to the registered overloader.
|
|
1889
|
-
*
|
|
1890
|
-
* @author Andy Clement
|
|
1891
|
-
* @author Juergen Hoeller
|
|
1892
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1893
|
-
* @author Ben March
|
|
1894
|
-
* @since 0.2.0
|
|
1895
|
-
*/
|
|
1896
|
-
function createNode(position, left, right) {
|
|
1897
|
-
var node = _SpelNode.SpelNode.create("op-minus", position, left, right);
|
|
1898
|
-
node.getValue = function(state) {
|
|
1899
|
-
if (!right) return -left.getValue(state);
|
|
1900
|
-
return left.getValue(state) - right.getValue(state);
|
|
1901
|
-
};
|
|
1902
|
-
return node;
|
|
1903
|
-
}
|
|
1904
|
-
exports$1.OpMinus = { create: createNode };
|
|
1905
|
-
}),
|
|
1906
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1907
|
-
"use strict";
|
|
1908
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1909
|
-
exports$1.OpMultiply = void 0;
|
|
1910
|
-
var _SpelNode = __webpack_require__(0);
|
|
1911
|
-
/**
|
|
1912
|
-
* Implements the {@code multiply} operator.
|
|
1913
|
-
*
|
|
1914
|
-
* <p>Conversions and promotions are handled as defined in
|
|
1915
|
-
* <a href="http://java.sun.com/docs/books/jls/third_edition/html/conversions.html">Section 5.6.2 of the
|
|
1916
|
-
* Java Language Specification</a>, with the addiction of {@code BigDecimal}/{@code BigInteger} management:
|
|
1917
|
-
*
|
|
1918
|
-
* <p>If any of the operands is of a reference type, unboxing conversion (Section 5.1.8)
|
|
1919
|
-
* is performed. Then:<br>
|
|
1920
|
-
* If either operand is of type {@code BigDecimal}, the other is converted to {@code BigDecimal}.<br>
|
|
1921
|
-
* If either operand is of type double, the other is converted to double.<br>
|
|
1922
|
-
* Otherwise, if either operand is of type float, the other is converted to float.<br>
|
|
1923
|
-
* If either operand is of type {@code BigInteger}, the other is converted to {@code BigInteger}.<br>
|
|
1924
|
-
* Otherwise, if either operand is of type long, the other is converted to long.<br>
|
|
1925
|
-
* Otherwise, both operands are converted to type int.
|
|
1926
|
-
*
|
|
1927
|
-
* @author Andy Clement
|
|
1928
|
-
* @author Juergen Hoeller
|
|
1929
|
-
* @author Sam Brannen
|
|
1930
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1931
|
-
* @author Ben March
|
|
1932
|
-
* @since 0.2.0
|
|
1933
|
-
*/
|
|
1934
|
-
function createNode(position, left, right) {
|
|
1935
|
-
var node = _SpelNode.SpelNode.create("op-multiply", position, left, right);
|
|
1936
|
-
node.getValue = function(state) {
|
|
1937
|
-
var leftValue = left.getValue(state), rightValue = right.getValue(state);
|
|
1938
|
-
if (typeof leftValue === "number" && typeof rightValue === "number") return leftValue * rightValue;
|
|
1939
|
-
if (typeof leftValue === "string" && typeof rightValue === "number") {
|
|
1940
|
-
var s = "", i = 0;
|
|
1941
|
-
for (; i < rightValue; i += 1) s += leftValue;
|
|
1942
|
-
return s;
|
|
1943
|
-
}
|
|
1944
|
-
return null;
|
|
1945
|
-
};
|
|
1946
|
-
return node;
|
|
1947
|
-
}
|
|
1948
|
-
exports$1.OpMultiply = { create: createNode };
|
|
1949
|
-
}),
|
|
1950
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1951
|
-
"use strict";
|
|
1952
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1953
|
-
exports$1.OpDivide = void 0;
|
|
1954
|
-
var _SpelNode = __webpack_require__(0);
|
|
1955
|
-
/**
|
|
1956
|
-
* Implements division operator.
|
|
1957
|
-
*
|
|
1958
|
-
* @author Andy Clement
|
|
1959
|
-
* @author Juergen Hoeller
|
|
1960
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1961
|
-
* @author Ben March
|
|
1962
|
-
* @since 0.2.0
|
|
1963
|
-
*/
|
|
1964
|
-
function createNode(position, left, right) {
|
|
1965
|
-
var node = _SpelNode.SpelNode.create("op-divide", position, left, right);
|
|
1966
|
-
node.getValue = function(state) {
|
|
1967
|
-
return left.getValue(state) / right.getValue(state);
|
|
1968
|
-
};
|
|
1969
|
-
return node;
|
|
1970
|
-
}
|
|
1971
|
-
exports$1.OpDivide = { create: createNode };
|
|
1972
|
-
}),
|
|
1973
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1974
|
-
"use strict";
|
|
1975
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1976
|
-
exports$1.OpModulus = void 0;
|
|
1977
|
-
var _SpelNode = __webpack_require__(0);
|
|
1978
|
-
/**
|
|
1979
|
-
* Implements the modulus operator.
|
|
1980
|
-
*
|
|
1981
|
-
* @author Andy Clement
|
|
1982
|
-
* @author Juergen Hoeller
|
|
1983
|
-
* @author Giovanni Dall'Oglio Risso
|
|
1984
|
-
* @author Ben March
|
|
1985
|
-
* @since 0.2.0
|
|
1986
|
-
*/
|
|
1987
|
-
function createNode(position, left, right) {
|
|
1988
|
-
var node = _SpelNode.SpelNode.create("op-modulus", position, left, right);
|
|
1989
|
-
node.getValue = function(state) {
|
|
1990
|
-
return left.getValue(state) % right.getValue(state);
|
|
1991
|
-
};
|
|
1992
|
-
return node;
|
|
1993
|
-
}
|
|
1994
|
-
exports$1.OpModulus = { create: createNode };
|
|
1995
|
-
}),
|
|
1996
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
1997
|
-
"use strict";
|
|
1998
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
1999
|
-
exports$1.OpPower = void 0;
|
|
2000
|
-
var _SpelNode = __webpack_require__(0);
|
|
2001
|
-
/**
|
|
2002
|
-
* The power operator.
|
|
2003
|
-
*
|
|
2004
|
-
* @author Andy Clement
|
|
2005
|
-
* @author Giovanni Dall'Oglio Risso
|
|
2006
|
-
* @author Ben March
|
|
2007
|
-
* @since 0.2.0
|
|
2008
|
-
*/
|
|
2009
|
-
function createNode(position, base, exp) {
|
|
2010
|
-
var node = _SpelNode.SpelNode.create("op-power", position, base, exp);
|
|
2011
|
-
node.getValue = function(state) {
|
|
2012
|
-
return Math.pow(base.getValue(state), exp.getValue(state));
|
|
2013
|
-
};
|
|
2014
|
-
return node;
|
|
2015
|
-
}
|
|
2016
|
-
exports$1.OpPower = { create: createNode };
|
|
2017
|
-
}),
|
|
2018
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2019
|
-
"use strict";
|
|
2020
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2021
|
-
exports$1.OpInc = void 0;
|
|
2022
|
-
var _SpelNode = __webpack_require__(0);
|
|
2023
|
-
/**
|
|
2024
|
-
* Increment operator. Can be used in a prefix or postfix form. This will throw
|
|
2025
|
-
* appropriate exceptions if the operand in question does not support increment.
|
|
2026
|
-
*
|
|
2027
|
-
* @author Andy Clement
|
|
2028
|
-
* @author Juergen Hoeller
|
|
2029
|
-
* @author Giovanni Dall'Oglio Risso
|
|
2030
|
-
* @author Ben March
|
|
2031
|
-
* @since 0.2.0
|
|
2032
|
-
*/
|
|
2033
|
-
function createNode(position, postfix, int) {
|
|
2034
|
-
var node = _SpelNode.SpelNode.create("op-inc", position, int);
|
|
2035
|
-
node.getValue = function(state) {
|
|
2036
|
-
var cur = int.getValue(state);
|
|
2037
|
-
int.setValue(cur + 1, state);
|
|
2038
|
-
if (postfix) return cur;
|
|
2039
|
-
return cur + 1;
|
|
2040
|
-
};
|
|
2041
|
-
return node;
|
|
2042
|
-
}
|
|
2043
|
-
exports$1.OpInc = { create: createNode };
|
|
2044
|
-
}),
|
|
2045
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2046
|
-
"use strict";
|
|
2047
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2048
|
-
exports$1.OpDec = void 0;
|
|
2049
|
-
var _SpelNode = __webpack_require__(0);
|
|
2050
|
-
/**
|
|
2051
|
-
* Decrement operator. Can be used in a prefix or postfix form. This will throw
|
|
2052
|
-
* appropriate exceptions if the operand in question does not support decrement.
|
|
2053
|
-
*
|
|
2054
|
-
* @author Andy Clement
|
|
2055
|
-
* @author Juergen Hoeller
|
|
2056
|
-
* @author Giovanni Dall'Oglio Risso
|
|
2057
|
-
* @author Ben March
|
|
2058
|
-
* @since 0.2.0
|
|
2059
|
-
*/
|
|
2060
|
-
function createNode(position, postfix, int) {
|
|
2061
|
-
var node = _SpelNode.SpelNode.create("op-dec", position, int);
|
|
2062
|
-
node.getValue = function(state) {
|
|
2063
|
-
var cur = int.getValue(state);
|
|
2064
|
-
int.setValue(cur - 1, state);
|
|
2065
|
-
if (postfix) return cur;
|
|
2066
|
-
return cur - 1;
|
|
2067
|
-
};
|
|
2068
|
-
return node;
|
|
2069
|
-
}
|
|
2070
|
-
exports$1.OpDec = { create: createNode };
|
|
2071
|
-
}),
|
|
2072
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2073
|
-
"use strict";
|
|
2074
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2075
|
-
exports$1.OpNot = void 0;
|
|
2076
|
-
var _SpelNode = __webpack_require__(0);
|
|
2077
|
-
/**
|
|
2078
|
-
* Represents a NOT operation.
|
|
2079
|
-
*
|
|
2080
|
-
* @author Andy Clement
|
|
2081
|
-
* @author Mark Fisher
|
|
2082
|
-
* @author Oliver Becker
|
|
2083
|
-
* @author Ben March
|
|
2084
|
-
* @since 0.2.0
|
|
2085
|
-
*/
|
|
2086
|
-
function createNode(position, expr) {
|
|
2087
|
-
var node = _SpelNode.SpelNode.create("op-not", position, expr);
|
|
2088
|
-
node.getValue = function(state) {
|
|
2089
|
-
return !expr.getValue(state);
|
|
2090
|
-
};
|
|
2091
|
-
return node;
|
|
2092
|
-
}
|
|
2093
|
-
exports$1.OpNot = { create: createNode };
|
|
2094
|
-
}),
|
|
2095
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2096
|
-
"use strict";
|
|
2097
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2098
|
-
exports$1.OpAnd = void 0;
|
|
2099
|
-
var _SpelNode = __webpack_require__(0);
|
|
2100
|
-
/**
|
|
2101
|
-
* Represents the boolean AND operation.
|
|
2102
|
-
*
|
|
2103
|
-
* @author Andy Clement
|
|
2104
|
-
* @author Mark Fisher
|
|
2105
|
-
* @author Oliver Becker
|
|
2106
|
-
* @author Ben March
|
|
2107
|
-
* @since 0.2.0
|
|
2108
|
-
*/
|
|
2109
|
-
function createNode(position, left, right) {
|
|
2110
|
-
var node = _SpelNode.SpelNode.create("op-and", position, left, right);
|
|
2111
|
-
node.getValue = function(state) {
|
|
2112
|
-
return !!left.getValue(state) && !!right.getValue(state);
|
|
2113
|
-
};
|
|
2114
|
-
return node;
|
|
2115
|
-
}
|
|
2116
|
-
exports$1.OpAnd = { create: createNode };
|
|
2117
|
-
}),
|
|
2118
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2119
|
-
"use strict";
|
|
2120
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2121
|
-
exports$1.OpOr = void 0;
|
|
2122
|
-
var _SpelNode = __webpack_require__(0);
|
|
2123
|
-
/**
|
|
2124
|
-
* Represents the boolean OR operation.
|
|
2125
|
-
*
|
|
2126
|
-
* @author Andy Clement
|
|
2127
|
-
* @author Mark Fisher
|
|
2128
|
-
* @author Oliver Becker
|
|
2129
|
-
* @author Ben March
|
|
2130
|
-
* @since 0.2.0
|
|
2131
|
-
*/
|
|
2132
|
-
function createNode(position, left, right) {
|
|
2133
|
-
var node = _SpelNode.SpelNode.create("op-or", position, left, right);
|
|
2134
|
-
node.getValue = function(state) {
|
|
2135
|
-
return !!left.getValue(state) || !!right.getValue(state);
|
|
2136
|
-
};
|
|
2137
|
-
return node;
|
|
2138
|
-
}
|
|
2139
|
-
exports$1.OpOr = { create: createNode };
|
|
2140
|
-
}),
|
|
2141
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2142
|
-
"use strict";
|
|
2143
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2144
|
-
exports$1.OpMatches = void 0;
|
|
2145
|
-
var _SpelNode = __webpack_require__(0);
|
|
2146
|
-
/**
|
|
2147
|
-
* Implements the matches operator. Matches takes two operands:
|
|
2148
|
-
* The first is a String and the second is a Java regex.
|
|
2149
|
-
* It will return {@code true} when {@link #getValue} is called
|
|
2150
|
-
* if the first operand matches the regex.
|
|
2151
|
-
*
|
|
2152
|
-
* @author Andy Clement
|
|
2153
|
-
* @author Juergen Hoeller
|
|
2154
|
-
* @author Chris Thielen
|
|
2155
|
-
* @since 3.0
|
|
2156
|
-
*/
|
|
2157
|
-
function createNode(position, left, right) {
|
|
2158
|
-
var node = _SpelNode.SpelNode.create("matches", position, left, right);
|
|
2159
|
-
/**
|
|
2160
|
-
* Check the first operand matches the regex specified as the second operand.
|
|
2161
|
-
* @param state the expression state
|
|
2162
|
-
* @return {@code true} if the first operand matches the regex specified as the
|
|
2163
|
-
* second operand, otherwise {@code false}
|
|
2164
|
-
* @throws EvaluationException if there is a problem evaluating the expression
|
|
2165
|
-
* (e.g. the regex is invalid)
|
|
2166
|
-
*/
|
|
2167
|
-
node.getValue = function(state) {
|
|
2168
|
-
var data = left.getValue(state);
|
|
2169
|
-
var regexpString = right.getValue(state);
|
|
2170
|
-
try {
|
|
2171
|
-
return !!new RegExp(regexpString).exec(data);
|
|
2172
|
-
} catch (error) {
|
|
2173
|
-
throw {
|
|
2174
|
-
name: "EvaluationException",
|
|
2175
|
-
message: error.toString()
|
|
2176
|
-
};
|
|
2177
|
-
}
|
|
2178
|
-
};
|
|
2179
|
-
return node;
|
|
2180
|
-
}
|
|
2181
|
-
exports$1.OpMatches = { create: createNode };
|
|
2182
|
-
}),
|
|
2183
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2184
|
-
"use strict";
|
|
2185
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2186
|
-
exports$1.Ternary = void 0;
|
|
2187
|
-
var _SpelNode = __webpack_require__(0);
|
|
2188
|
-
/**
|
|
2189
|
-
* Represents a ternary expression, for example: "someCheck()?true:false".
|
|
2190
|
-
*
|
|
2191
|
-
* @author Andy Clement
|
|
2192
|
-
* @author Juergen Hoeller
|
|
2193
|
-
* @author Ben March
|
|
2194
|
-
* @since 0.2.0
|
|
2195
|
-
*/
|
|
2196
|
-
function createNode(position, expression, ifTrue, ifFalse) {
|
|
2197
|
-
var node = _SpelNode.SpelNode.create("ternary", position, expression, ifTrue, ifFalse);
|
|
2198
|
-
node.getValue = function(state) {
|
|
2199
|
-
return expression.getValue(state) ? ifTrue.getValue(state) : ifFalse.getValue(state);
|
|
2200
|
-
};
|
|
2201
|
-
return node;
|
|
2202
|
-
}
|
|
2203
|
-
exports$1.Ternary = { create: createNode };
|
|
2204
|
-
}),
|
|
2205
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2206
|
-
"use strict";
|
|
2207
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2208
|
-
exports$1.Elvis = void 0;
|
|
2209
|
-
var _SpelNode = __webpack_require__(0);
|
|
2210
|
-
/**
|
|
2211
|
-
* Represents the elvis operator ?:. For an expression "a?:b" if a is not null, the value
|
|
2212
|
-
* of the expression is "a", if a is null then the value of the expression is "b".
|
|
2213
|
-
*
|
|
2214
|
-
* @author Andy Clement
|
|
2215
|
-
* @author Juergen Hoeller
|
|
2216
|
-
* @author Ben March
|
|
2217
|
-
* @since 0.2.0
|
|
2218
|
-
*/
|
|
2219
|
-
function createNode(position, expression, ifFalse) {
|
|
2220
|
-
var node = _SpelNode.SpelNode.create("elvis", position, expression, ifFalse);
|
|
2221
|
-
node.getValue = function(state) {
|
|
2222
|
-
return expression.getValue(state) !== null ? expression.getValue(state) : ifFalse.getValue(state);
|
|
2223
|
-
};
|
|
2224
|
-
return node;
|
|
2225
|
-
}
|
|
2226
|
-
exports$1.Elvis = { create: createNode };
|
|
2227
|
-
}),
|
|
2228
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2229
|
-
"use strict";
|
|
2230
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2231
|
-
exports$1.InlineList = void 0;
|
|
2232
|
-
var _SpelNode = __webpack_require__(0);
|
|
2233
|
-
/**
|
|
2234
|
-
* Represent a list in an expression, e.g. '{1,2,3}'
|
|
2235
|
-
*
|
|
2236
|
-
* @author Andy Clement
|
|
2237
|
-
* @author Ben March
|
|
2238
|
-
* @since 0.2.0
|
|
2239
|
-
*/
|
|
2240
|
-
function createNode(position, elements) {
|
|
2241
|
-
var node = _SpelNode.SpelNode.create("list", position), list = [].concat(elements || []);
|
|
2242
|
-
node.getRaw = function() {
|
|
2243
|
-
return list;
|
|
2244
|
-
};
|
|
2245
|
-
node.getValue = function(state) {
|
|
2246
|
-
return list.map(function(element) {
|
|
2247
|
-
return element.getValue(state);
|
|
2248
|
-
});
|
|
2249
|
-
};
|
|
2250
|
-
return node;
|
|
2251
|
-
}
|
|
2252
|
-
exports$1.InlineList = { create: createNode };
|
|
2253
|
-
}),
|
|
2254
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2255
|
-
"use strict";
|
|
2256
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2257
|
-
exports$1.InlineMap = void 0;
|
|
2258
|
-
var _SpelNode = __webpack_require__(0);
|
|
2259
|
-
/**
|
|
2260
|
-
* Represent a map in an expression, e.g. '{name:'foo',age:12}'
|
|
2261
|
-
*
|
|
2262
|
-
* @author Andy Clement
|
|
2263
|
-
* @author Ben March
|
|
2264
|
-
* @since 0.2.0
|
|
2265
|
-
*/
|
|
2266
|
-
function createNode(position, elements) {
|
|
2267
|
-
var node = _SpelNode.SpelNode.create("map", position), mapPieces = [].concat(elements || []);
|
|
2268
|
-
node.getValue = function(state) {
|
|
2269
|
-
var key = true, keyValue = null, map = {};
|
|
2270
|
-
mapPieces.forEach(function(piece) {
|
|
2271
|
-
if (key) if (piece.getType() === "property") keyValue = piece.getName();
|
|
2272
|
-
else keyValue = piece.getValue(state);
|
|
2273
|
-
else map[keyValue] = piece.getValue(state);
|
|
2274
|
-
key = !key;
|
|
2275
|
-
});
|
|
2276
|
-
return map;
|
|
2277
|
-
};
|
|
2278
|
-
return node;
|
|
2279
|
-
}
|
|
2280
|
-
exports$1.InlineMap = { create: createNode };
|
|
2281
|
-
}),
|
|
2282
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2283
|
-
"use strict";
|
|
2284
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2285
|
-
exports$1.Selection = void 0;
|
|
2286
|
-
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
|
|
2287
|
-
return typeof obj;
|
|
2288
|
-
} : function(obj) {
|
|
2289
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
2290
|
-
};
|
|
2291
|
-
var _SpelNode = __webpack_require__(0);
|
|
2292
|
-
/**
|
|
2293
|
-
* Represents selection over a map or collection.
|
|
2294
|
-
* For example: {1,2,3,4,5,6,7,8,9,10}.?{#isEven(#this) == 'y'} returns [2, 4, 6, 8, 10]
|
|
2295
|
-
*
|
|
2296
|
-
* <p>Basically a subset of the input data is returned based on the
|
|
2297
|
-
* evaluation of the expression supplied as selection criteria.
|
|
2298
|
-
*
|
|
2299
|
-
* @author Andy Clement
|
|
2300
|
-
* @author Mark Fisher
|
|
2301
|
-
* @author Sam Brannen
|
|
2302
|
-
* @author Ben March
|
|
2303
|
-
* @since 0.2.0
|
|
2304
|
-
*/
|
|
2305
|
-
function matches(element, expr, state) {
|
|
2306
|
-
var doesMatch = false;
|
|
2307
|
-
state.activeContext.push(element);
|
|
2308
|
-
doesMatch = expr.getValue(state);
|
|
2309
|
-
state.activeContext.pop();
|
|
2310
|
-
return doesMatch;
|
|
2311
|
-
}
|
|
2312
|
-
function selectFromArray(collection, whichElement, expr, state) {
|
|
2313
|
-
var newCollection = collection.filter(function(element) {
|
|
2314
|
-
return matches(element, expr, state);
|
|
2315
|
-
});
|
|
2316
|
-
switch (whichElement) {
|
|
2317
|
-
case "ALL": return newCollection;
|
|
2318
|
-
case "FIRST": return newCollection[0] || null;
|
|
2319
|
-
case "LAST":
|
|
2320
|
-
if (newCollection.length) return newCollection[newCollection.length - 1];
|
|
2321
|
-
return null;
|
|
2322
|
-
}
|
|
2323
|
-
}
|
|
2324
|
-
function selectFromMap(collection, whichElement, expr, state) {
|
|
2325
|
-
var newCollection = {}, entry, key, entries = [], returnValue = {};
|
|
2326
|
-
for (key in collection) if (collection.hasOwnProperty(key)) {
|
|
2327
|
-
entry = {
|
|
2328
|
-
key,
|
|
2329
|
-
value: collection[key]
|
|
2330
|
-
};
|
|
2331
|
-
if (matches(entry, expr, state)) entries.push(entry);
|
|
2332
|
-
}
|
|
2333
|
-
switch (whichElement) {
|
|
2334
|
-
case "ALL":
|
|
2335
|
-
entries.forEach(function(entry$1) {
|
|
2336
|
-
newCollection[entry$1.key] = entry$1.value;
|
|
2337
|
-
});
|
|
2338
|
-
return newCollection;
|
|
2339
|
-
case "FIRST":
|
|
2340
|
-
if (entries.length) {
|
|
2341
|
-
returnValue[entries[0].key] = entries[0].value;
|
|
2342
|
-
return returnValue;
|
|
2343
|
-
}
|
|
2344
|
-
return null;
|
|
2345
|
-
case "LAST":
|
|
2346
|
-
if (entries.length) {
|
|
2347
|
-
returnValue[entries[entries.length - 1].key] = entries[entries.length - 1].value;
|
|
2348
|
-
return returnValue;
|
|
2349
|
-
}
|
|
2350
|
-
return null;
|
|
2351
|
-
}
|
|
2352
|
-
entries.forEach(function(entry$1) {
|
|
2353
|
-
newCollection[entry$1.key] = entry$1.value;
|
|
2354
|
-
});
|
|
2355
|
-
}
|
|
2356
|
-
function createNode(nullSafeNavigation, whichElement, position, expr) {
|
|
2357
|
-
var node = _SpelNode.SpelNode.create("selection", position, expr);
|
|
2358
|
-
node.getValue = function(state) {
|
|
2359
|
-
var collection = state.activeContext.peek();
|
|
2360
|
-
if (collection) {
|
|
2361
|
-
if (Array.isArray(collection)) return selectFromArray(collection, whichElement, expr, state);
|
|
2362
|
-
else if ((typeof collection === "undefined" ? "undefined" : _typeof(collection)) === "object") return selectFromMap(collection, whichElement, expr, state);
|
|
2363
|
-
}
|
|
2364
|
-
return null;
|
|
2365
|
-
};
|
|
2366
|
-
return node;
|
|
2367
|
-
}
|
|
2368
|
-
exports$1.Selection = {
|
|
2369
|
-
create: createNode,
|
|
2370
|
-
FIRST: "FIRST",
|
|
2371
|
-
LAST: "LAST",
|
|
2372
|
-
ALL: "ALL"
|
|
2373
|
-
};
|
|
2374
|
-
}),
|
|
2375
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2376
|
-
"use strict";
|
|
2377
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2378
|
-
exports$1.Projection = void 0;
|
|
2379
|
-
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function(obj) {
|
|
2380
|
-
return typeof obj;
|
|
2381
|
-
} : function(obj) {
|
|
2382
|
-
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
2383
|
-
};
|
|
2384
|
-
var _SpelNode = __webpack_require__(0);
|
|
2385
|
-
/**
|
|
2386
|
-
* Represents projection, where a given operation is performed on all elements in some
|
|
2387
|
-
* input sequence, returning a new sequence of the same size. For example:
|
|
2388
|
-
* "{1,2,3,4,5,6,7,8,9,10}.!{#isEven(#this)}" returns "[n, y, n, y, n, y, n, y, n, y]"
|
|
2389
|
-
*
|
|
2390
|
-
* @author Andy Clement
|
|
2391
|
-
* @author Mark Fisher
|
|
2392
|
-
* @author Ben March
|
|
2393
|
-
* @since 0.2.0
|
|
2394
|
-
*/
|
|
2395
|
-
function projectCollection(collection, expr, state) {
|
|
2396
|
-
return collection.map(function(element) {
|
|
2397
|
-
var matches;
|
|
2398
|
-
state.activeContext.push(element);
|
|
2399
|
-
matches = expr.getValue(state);
|
|
2400
|
-
state.activeContext.pop();
|
|
2401
|
-
return matches;
|
|
2402
|
-
});
|
|
2403
|
-
}
|
|
2404
|
-
function createNode(nullSafeNavigation, position, expr) {
|
|
2405
|
-
var node = _SpelNode.SpelNode.create("projection", position, expr);
|
|
2406
|
-
node.getValue = function(state) {
|
|
2407
|
-
var collection = state.activeContext.peek(), entries = [], key;
|
|
2408
|
-
if (Array.isArray(collection)) return projectCollection(collection, expr, state);
|
|
2409
|
-
else if ((typeof collection === "undefined" ? "undefined" : _typeof(collection)) === "object") {
|
|
2410
|
-
for (key in collection) if (collection.hasOwnProperty(key)) entries.push(collection[key]);
|
|
2411
|
-
return projectCollection(entries, expr, state);
|
|
2412
|
-
}
|
|
2413
|
-
return null;
|
|
2414
|
-
};
|
|
2415
|
-
return node;
|
|
2416
|
-
}
|
|
2417
|
-
exports$1.Projection = { create: createNode };
|
|
2418
|
-
}),
|
|
2419
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2420
|
-
"use strict";
|
|
2421
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2422
|
-
exports$1.OpInstanceof = void 0;
|
|
2423
|
-
var _SpelNode = __webpack_require__(0);
|
|
2424
|
-
/**
|
|
2425
|
-
* The operator 'instanceof' checks if an object is of the class specified in the right
|
|
2426
|
-
* hand operand, in the same way that {@code instanceof} does in Java.
|
|
2427
|
-
*
|
|
2428
|
-
* THIS OPERATOR IS NOT IMPLEMENTED AND WILL THROW AN EXCEPTION
|
|
2429
|
-
*
|
|
2430
|
-
* @author Andy Clement
|
|
2431
|
-
* @since 3.0
|
|
2432
|
-
*/
|
|
2433
|
-
function createNode(position, left, right) {
|
|
2434
|
-
var node = _SpelNode.SpelNode.create("instanceof", position, left, right);
|
|
2435
|
-
/**
|
|
2436
|
-
* Compare the left operand to see it is an instance of the type specified as the
|
|
2437
|
-
* right operand. The right operand must be a class.
|
|
2438
|
-
* @param state the expression state
|
|
2439
|
-
* @return {@code true} if the left operand is an instanceof of the right operand,
|
|
2440
|
-
* otherwise {@code false}
|
|
2441
|
-
* @throws EvaluationException if there is a problem evaluating the expression
|
|
2442
|
-
*/
|
|
2443
|
-
node.getValue = function(state) {
|
|
2444
|
-
throw {
|
|
2445
|
-
name: "MethodNotImplementedException",
|
|
2446
|
-
message: "OpInstanceOf: Not implemented"
|
|
2447
|
-
};
|
|
2448
|
-
};
|
|
2449
|
-
return node;
|
|
2450
|
-
}
|
|
2451
|
-
exports$1.OpInstanceof = { create: createNode };
|
|
2452
|
-
}),
|
|
2453
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2454
|
-
"use strict";
|
|
2455
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2456
|
-
exports$1.OpBetween = void 0;
|
|
2457
|
-
var _SpelNode = __webpack_require__(0);
|
|
2458
|
-
/**
|
|
2459
|
-
* Represents the between operator. The left operand to between must be a single value and
|
|
2460
|
-
* the right operand must be a list - this operator returns true if the left operand is
|
|
2461
|
-
* between (using the registered comparator) the two elements in the list. The definition
|
|
2462
|
-
* of between being inclusive follows the SQL BETWEEN definition.
|
|
2463
|
-
*
|
|
2464
|
-
* @author Andy Clement
|
|
2465
|
-
* @since 3.0
|
|
2466
|
-
*/
|
|
2467
|
-
function createNode(position, left, right) {
|
|
2468
|
-
var node = _SpelNode.SpelNode.create("between", position, left, right);
|
|
2469
|
-
/**
|
|
2470
|
-
* Returns a boolean based on whether a value is in the range expressed. The first
|
|
2471
|
-
* operand is any value whilst the second is a list of two values - those two values
|
|
2472
|
-
* being the bounds allowed for the first operand (inclusive).
|
|
2473
|
-
* @param state the expression state
|
|
2474
|
-
* @return true if the left operand is in the range specified, false otherwise
|
|
2475
|
-
* @throws EvaluationException if there is a problem evaluating the expression
|
|
2476
|
-
*/
|
|
2477
|
-
node.getValue = function(state) {
|
|
2478
|
-
throw {
|
|
2479
|
-
name: "MethodNotImplementedException",
|
|
2480
|
-
message: "OpBetween: Not implemented"
|
|
2481
|
-
};
|
|
2482
|
-
};
|
|
2483
|
-
return node;
|
|
2484
|
-
}
|
|
2485
|
-
exports$1.OpBetween = { create: createNode };
|
|
2486
|
-
}),
|
|
2487
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2488
|
-
"use strict";
|
|
2489
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2490
|
-
exports$1.TypeReference = void 0;
|
|
2491
|
-
var _SpelNode = __webpack_require__(0);
|
|
2492
|
-
/**
|
|
2493
|
-
* Represents a reference to a type, for example
|
|
2494
|
-
* {@code "T(String)" or "T(com.somewhere.Foo)"}.
|
|
2495
|
-
*
|
|
2496
|
-
* @author Andy Clement
|
|
2497
|
-
*/
|
|
2498
|
-
function createNode(position, node, _dims) {
|
|
2499
|
-
var node = _SpelNode.SpelNode.create("typeref", position, node);
|
|
2500
|
-
node.getValue = function(state) {
|
|
2501
|
-
throw {
|
|
2502
|
-
name: "MethodNotImplementedException",
|
|
2503
|
-
message: "TypeReference: Not implemented"
|
|
2504
|
-
};
|
|
2505
|
-
};
|
|
2506
|
-
return node;
|
|
2507
|
-
}
|
|
2508
|
-
exports$1.TypeReference = { create: createNode };
|
|
2509
|
-
}),
|
|
2510
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2511
|
-
"use strict";
|
|
2512
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2513
|
-
exports$1.BeanReference = void 0;
|
|
2514
|
-
var _SpelNode = __webpack_require__(0);
|
|
2515
|
-
/**
|
|
2516
|
-
* Represents a bean reference to a type, for example <tt>@foo</tt> or <tt>@'foo.bar'</tt>.
|
|
2517
|
-
* For a FactoryBean the syntax <tt>&foo</tt> can be used to access the factory itself.
|
|
2518
|
-
*
|
|
2519
|
-
* @author Andy Clement
|
|
2520
|
-
*/
|
|
2521
|
-
function createNode(position, beanName) {
|
|
2522
|
-
var node = _SpelNode.SpelNode.create("beanref", position);
|
|
2523
|
-
node.getValue = function(state) {
|
|
2524
|
-
throw {
|
|
2525
|
-
name: "MethodNotImplementedException",
|
|
2526
|
-
message: "BeanReference: Not implemented"
|
|
2527
|
-
};
|
|
2528
|
-
};
|
|
2529
|
-
return node;
|
|
2530
|
-
}
|
|
2531
|
-
exports$1.BeanReference = { create: createNode };
|
|
2532
|
-
}),
|
|
2533
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2534
|
-
"use strict";
|
|
2535
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2536
|
-
exports$1.Identifier = void 0;
|
|
2537
|
-
var _SpelNode = __webpack_require__(0);
|
|
2538
|
-
/**
|
|
2539
|
-
* An 'identifier' {@link SpelNode}.
|
|
2540
|
-
*
|
|
2541
|
-
* @author Andy Clement
|
|
2542
|
-
* @since 3.0
|
|
2543
|
-
*/
|
|
2544
|
-
function createNode(identifierName, position) {
|
|
2545
|
-
var node = _SpelNode.SpelNode.create("identifier", position);
|
|
2546
|
-
node.getRaw = function() {
|
|
2547
|
-
return identifierName;
|
|
2548
|
-
};
|
|
2549
|
-
node.getValue = function(state) {
|
|
2550
|
-
throw {
|
|
2551
|
-
name: "MethodNotImplementedException",
|
|
2552
|
-
message: "Identifier: Not implemented"
|
|
2553
|
-
};
|
|
2554
|
-
};
|
|
2555
|
-
return node;
|
|
2556
|
-
}
|
|
2557
|
-
exports$1.Identifier = { create: createNode };
|
|
2558
|
-
}),
|
|
2559
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2560
|
-
"use strict";
|
|
2561
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2562
|
-
exports$1.QualifiedIdentifier = void 0;
|
|
2563
|
-
var _SpelNode = __webpack_require__(0);
|
|
2564
|
-
function _toConsumableArray(arr) {
|
|
2565
|
-
if (Array.isArray(arr)) {
|
|
2566
|
-
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
|
2567
|
-
return arr2;
|
|
2568
|
-
} else return Array.from(arr);
|
|
2569
|
-
}
|
|
2570
|
-
/**
|
|
2571
|
-
* Represents a dot separated sequence of strings that indicate a package qualified type
|
|
2572
|
-
* reference.
|
|
2573
|
-
*
|
|
2574
|
-
* <p>Example: "java.lang.String" as in the expression "new java.lang.String('hello')"
|
|
2575
|
-
*
|
|
2576
|
-
* @author Andy Clement
|
|
2577
|
-
* @since 3.0
|
|
2578
|
-
*/
|
|
2579
|
-
function createNode(position, pieces) {
|
|
2580
|
-
var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ["qualifiedidentifier", position].concat(_toConsumableArray(pieces)));
|
|
2581
|
-
node.getRaw = function() {
|
|
2582
|
-
return pieces.map(function(p) {
|
|
2583
|
-
return p.getRaw();
|
|
2584
|
-
});
|
|
2585
|
-
};
|
|
2586
|
-
node.getValue = function(state) {
|
|
2587
|
-
throw {
|
|
2588
|
-
name: "MethodNotImplementedException",
|
|
2589
|
-
message: "QualifiedIdentifier: Not implemented"
|
|
2590
|
-
};
|
|
2591
|
-
};
|
|
2592
|
-
return node;
|
|
2593
|
-
}
|
|
2594
|
-
exports$1.QualifiedIdentifier = { create: createNode };
|
|
2595
|
-
}),
|
|
2596
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2597
|
-
"use strict";
|
|
2598
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2599
|
-
exports$1.ConstructorReference = void 0;
|
|
2600
|
-
var _SpelNode = __webpack_require__(0);
|
|
2601
|
-
var _Stack = __webpack_require__(1);
|
|
2602
|
-
function _toConsumableArray(arr) {
|
|
2603
|
-
if (Array.isArray(arr)) {
|
|
2604
|
-
for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
|
|
2605
|
-
return arr2;
|
|
2606
|
-
} else return Array.from(arr);
|
|
2607
|
-
}
|
|
2608
|
-
function _toArray(arr) {
|
|
2609
|
-
return Array.isArray(arr) ? arr : Array.from(arr);
|
|
2610
|
-
}
|
|
2611
|
-
/**
|
|
2612
|
-
* Represents the invocation of a constructor. Either a constructor on a regular type or
|
|
2613
|
-
* construction of an array. When an array is constructed, an initializer can be specified.
|
|
2614
|
-
*
|
|
2615
|
-
* <p>Examples:<br>
|
|
2616
|
-
* new String('hello world')<br>
|
|
2617
|
-
* new int[]{1,2,3,4}<br>
|
|
2618
|
-
* new int[3] new int[3]{1,2,3}
|
|
2619
|
-
*
|
|
2620
|
-
* @author Andy Clement
|
|
2621
|
-
* @author Juergen Hoeller
|
|
2622
|
-
* @since 3.0
|
|
2623
|
-
*/
|
|
2624
|
-
function createNode(position, dimensions, nodes) {
|
|
2625
|
-
var isArray = nodes !== void 0;
|
|
2626
|
-
var dimension;
|
|
2627
|
-
if (isArray) dimension = dimensions.length && dimensions[0] && dimensions[0].getType() === "number" ? dimensions[0].getValue() : null;
|
|
2628
|
-
else {
|
|
2629
|
-
nodes = dimensions;
|
|
2630
|
-
dimensions = void 0;
|
|
2631
|
-
}
|
|
2632
|
-
var _nodes2 = _toArray(nodes);
|
|
2633
|
-
_nodes2[0];
|
|
2634
|
-
var args = _nodes2.slice(1);
|
|
2635
|
-
var node = _SpelNode.SpelNode.create.apply(_SpelNode.SpelNode, ["constructorref", position].concat(_toConsumableArray(nodes)));
|
|
2636
|
-
node.getRaw = function() {
|
|
2637
|
-
return dimension;
|
|
2638
|
-
};
|
|
2639
|
-
node.getValue = function(state) {
|
|
2640
|
-
if (isArray && args.length <= 1) {
|
|
2641
|
-
var compiledArgs = [];
|
|
2642
|
-
args.forEach(function(arg) {
|
|
2643
|
-
var currentActiveContext = state.activeContext;
|
|
2644
|
-
state.activeContext = new _Stack.Stack();
|
|
2645
|
-
state.activeContext.push(state.rootContext);
|
|
2646
|
-
compiledArgs.push(arg.getValue(state));
|
|
2647
|
-
state.activeContext = currentActiveContext;
|
|
2648
|
-
});
|
|
2649
|
-
if (args.length === 1) return compiledArgs[0];
|
|
2650
|
-
else return dimension ? new Array(dimension) : [];
|
|
2651
|
-
}
|
|
2652
|
-
throw {
|
|
2653
|
-
name: "MethodNotImplementedException",
|
|
2654
|
-
message: "ConstructorReference: Not implemented"
|
|
2655
|
-
};
|
|
2656
|
-
};
|
|
2657
|
-
return node;
|
|
2658
|
-
}
|
|
2659
|
-
exports$1.ConstructorReference = { create: createNode };
|
|
2660
|
-
}),
|
|
2661
|
-
(function(module$1, exports$1, __webpack_require__) {
|
|
2662
|
-
"use strict";
|
|
2663
|
-
Object.defineProperty(exports$1, "__esModule", { value: true });
|
|
2664
|
-
/**
|
|
2665
|
-
* @author Ben March
|
|
2666
|
-
* @since 0.2.0
|
|
2667
|
-
*/
|
|
2668
|
-
function create(authentication, principal) {
|
|
2669
|
-
var context = {};
|
|
2670
|
-
context.authentication = authentication || {};
|
|
2671
|
-
context.principal = principal || {};
|
|
2672
|
-
context.hasRole = function(role) {
|
|
2673
|
-
var hasRole = false;
|
|
2674
|
-
if (!role) return false;
|
|
2675
|
-
if (!context.authentication && !Array.isArray(context.authentication.authorities)) return false;
|
|
2676
|
-
context.authentication.authorities.forEach(function(grantedAuthority) {
|
|
2677
|
-
if (grantedAuthority.authority.toLowerCase() === role.toLowerCase()) hasRole = true;
|
|
2678
|
-
});
|
|
2679
|
-
return hasRole;
|
|
2680
|
-
};
|
|
2681
|
-
context.hasPermission = function() {
|
|
2682
|
-
var args = Array.prototype.slice.call(arguments);
|
|
2683
|
-
if (args.length === 1) return context.hasRole(args[0]);
|
|
2684
|
-
};
|
|
2685
|
-
return context;
|
|
2686
|
-
}
|
|
2687
|
-
exports$1.StandardContext = { create };
|
|
2688
|
-
})
|
|
2689
|
-
]);
|
|
2690
|
-
});
|
|
2691
|
-
}));
|
|
2692
|
-
|
|
2693
|
-
//#endregion
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_utils = require("./utils-EsYRkPtf.js");
|
|
3
|
+
const require_isRuleGroup = require("./isRuleGroup-BCwaLzDj.js");
|
|
4
|
+
const require_prepareQueryObjects = require("./prepareQueryObjects-Dc8rqsYM.js");
|
|
5
|
+
require("./parseJSONata.js");
|
|
6
|
+
let spel2js = require("spel2js");
|
|
2694
7
|
//#region src/utils/parseSpEL/utils.ts
|
|
2695
|
-
var import_spel2js = require_spel2js();
|
|
2696
8
|
const isSpELPropertyNode = (expr) => {
|
|
2697
9
|
return expr.getType() === "property" || expr.getType() === "variable";
|
|
2698
10
|
};
|
|
@@ -2783,7 +95,6 @@ const generateMixedAndOrList = (expr) => {
|
|
|
2783
95
|
if (returnArray.length === 1 && Array.isArray(returnArray[0])) return returnArray[0];
|
|
2784
96
|
return returnArray;
|
|
2785
97
|
};
|
|
2786
|
-
|
|
2787
98
|
//#endregion
|
|
2788
99
|
//#region src/utils/parseSpEL/parseSpEL.ts
|
|
2789
100
|
function parseSpEL(spel, options = {}) {
|
|
@@ -2822,12 +133,12 @@ function parseSpEL(spel, options = {}) {
|
|
|
2822
133
|
}
|
|
2823
134
|
} else if (isSpELOpAnd(expr) || isSpELOpOr(expr)) {
|
|
2824
135
|
if (ic) {
|
|
2825
|
-
const rules
|
|
136
|
+
const rules = generateFlatAndOrList(expr).map((v) => {
|
|
2826
137
|
if (typeof v === "string") return v;
|
|
2827
138
|
return parseProcessedSpEL(v);
|
|
2828
139
|
});
|
|
2829
|
-
if (!rules
|
|
2830
|
-
return { rules
|
|
140
|
+
if (!rules.every(Boolean)) return null;
|
|
141
|
+
return { rules };
|
|
2831
142
|
}
|
|
2832
143
|
const andOrList = generateMixedAndOrList(expr);
|
|
2833
144
|
const combinator = andOrList[1];
|
|
@@ -2940,7 +251,7 @@ function parseSpEL(spel, options = {}) {
|
|
|
2940
251
|
const prepare = options.generateIDs ? require_prepareQueryObjects.prepareRuleGroup : (g) => g;
|
|
2941
252
|
let compiledSpEL;
|
|
2942
253
|
try {
|
|
2943
|
-
compiledSpEL =
|
|
254
|
+
compiledSpEL = spel2js.SpelExpressionEvaluator.compile(spel)._compiledExpression;
|
|
2944
255
|
} catch {
|
|
2945
256
|
return prepare(emptyQuery);
|
|
2946
257
|
}
|
|
@@ -2954,7 +265,7 @@ function parseSpEL(spel, options = {}) {
|
|
|
2954
265
|
}
|
|
2955
266
|
return prepare(emptyQuery);
|
|
2956
267
|
}
|
|
2957
|
-
|
|
2958
268
|
//#endregion
|
|
2959
269
|
exports.parseSpEL = parseSpEL;
|
|
270
|
+
|
|
2960
271
|
//# sourceMappingURL=parseSpEL.js.map
|