js-gei 1.0.0
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/Evaluator/ExpresionLogicService.ts +669 -0
- package/Evaluator/Parser/AddLeadZerosParse.ts +70 -0
- package/Evaluator/Parser/AppearParse.ts +67 -0
- package/Evaluator/Parser/BaseParse.ts +93 -0
- package/Evaluator/Parser/CalcDateParse.ts +73 -0
- package/Evaluator/Parser/CheckParse.ts +99 -0
- package/Evaluator/Parser/CommaParser.ts +17 -0
- package/Evaluator/Parser/ConcatParse.ts +34 -0
- package/Evaluator/Parser/CountParse.ts +26 -0
- package/Evaluator/Parser/EmptyParse.ts +41 -0
- package/Evaluator/Parser/ExistParse.ts +69 -0
- package/Evaluator/Parser/IfParse.ts +388 -0
- package/Evaluator/Parser/IfStategment.ts +345 -0
- package/Evaluator/Parser/InDetailParse.ts +109 -0
- package/Evaluator/Parser/InListParse.ts +57 -0
- package/Evaluator/Parser/LiteralValueParse.ts +36 -0
- package/Evaluator/Parser/LogicalOperatorParse.ts +16 -0
- package/Evaluator/Parser/OnlyExpressionParse.ts +137 -0
- package/Evaluator/Parser/OperatorParse.ts +17 -0
- package/Evaluator/Parser/StartsParse.ts +36 -0
- package/Evaluator/Parser/SubstrParse.ts +110 -0
- package/Evaluator/Parser/SumParse.ts +15 -0
- package/Evaluator/Parser/ToNullParser.ts +0 -0
- package/Evaluator/Parser/TrimParse.ts +30 -0
- package/Evaluator/Parser/UpperLoverParse.ts +41 -0
- package/Evaluator/Parser/ValueFromObjParse.ts +37 -0
- package/Evaluator/Parser/ValueParse.ts +61 -0
- package/HelperSessionStorage.ts +13 -0
- package/Interfaces/SchemaStruct.ts +28 -0
- package/Library/jsonrpc-2.0.js +869 -0
- package/Structure/InvoiceObj.ts +691 -0
- package/Structure/RecordArray.ts +145 -0
- package/Structure/RecordSingle.ts +1076 -0
- package/Structure/TableLevel.ts +248 -0
- package/dist/Evaluator/ExpresionLogicService.js +505 -0
- package/dist/Evaluator/Parser/AddLeadZerosParse.js +55 -0
- package/dist/Evaluator/Parser/AppearParse.js +48 -0
- package/dist/Evaluator/Parser/BaseParse.js +89 -0
- package/dist/Evaluator/Parser/CalcDateParse.js +54 -0
- package/dist/Evaluator/Parser/CheckParse.js +80 -0
- package/dist/Evaluator/Parser/CommaParser.js +13 -0
- package/dist/Evaluator/Parser/ConcatParse.js +29 -0
- package/dist/Evaluator/Parser/CountParse.js +23 -0
- package/dist/Evaluator/Parser/EmptyParse.js +35 -0
- package/dist/Evaluator/Parser/ExistParse.js +57 -0
- package/dist/Evaluator/Parser/IfParse.js +296 -0
- package/dist/Evaluator/Parser/IfStategment.js +287 -0
- package/dist/Evaluator/Parser/InDetailParse.js +79 -0
- package/dist/Evaluator/Parser/InListParse.js +40 -0
- package/dist/Evaluator/Parser/LiteralValueParse.js +26 -0
- package/dist/Evaluator/Parser/LogicalOperatorParse.js +13 -0
- package/dist/Evaluator/Parser/OnlyExpressionParse.js +106 -0
- package/dist/Evaluator/Parser/OperatorParse.js +13 -0
- package/dist/Evaluator/Parser/StartsParse.js +30 -0
- package/dist/Evaluator/Parser/SubstrParse.js +83 -0
- package/dist/Evaluator/Parser/SumParse.js +13 -0
- package/dist/Evaluator/Parser/ToNullParser.js +1 -0
- package/dist/Evaluator/Parser/TrimParse.js +25 -0
- package/dist/Evaluator/Parser/UpperLoverParse.js +32 -0
- package/dist/Evaluator/Parser/ValueFromObjParse.js +29 -0
- package/dist/Evaluator/Parser/ValueParse.js +59 -0
- package/dist/HelperSessionStorage.js +12 -0
- package/dist/Interfaces/SchemaStruct.js +2 -0
- package/dist/Structure/InvoiceObj.js +610 -0
- package/dist/Structure/RecordArray.js +102 -0
- package/dist/Structure/RecordSingle.js +950 -0
- package/dist/Structure/TableLevel.js +162 -0
- package/dist/index.js +19 -0
- package/index.ts +20 -0
- package/package.json +20 -0
- package/tsconfig.json +103 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IfStategment = void 0;
|
|
4
|
+
class IfStategment {
|
|
5
|
+
;
|
|
6
|
+
;
|
|
7
|
+
;
|
|
8
|
+
;
|
|
9
|
+
// public constructor(ifSt:string)
|
|
10
|
+
// {
|
|
11
|
+
// for (var op in this.operators)
|
|
12
|
+
// {
|
|
13
|
+
// if (ifSt.indexOf(this.operators[op])!=-1)
|
|
14
|
+
// {
|
|
15
|
+
// this.Operator = this.operators[op]; break;
|
|
16
|
+
// }
|
|
17
|
+
// }
|
|
18
|
+
// if(this.Operator==null)
|
|
19
|
+
// {
|
|
20
|
+
// throw "Can't find operator";
|
|
21
|
+
// }
|
|
22
|
+
// var split = ifSt.split(this.Operator);
|
|
23
|
+
// if (split.length == 2)
|
|
24
|
+
// {
|
|
25
|
+
// this.LeftSide = split[0];
|
|
26
|
+
// this.RightSide = split[1];
|
|
27
|
+
// }
|
|
28
|
+
// else if (split.length == 1)
|
|
29
|
+
// {
|
|
30
|
+
// this.OneSide = split[0];
|
|
31
|
+
// }
|
|
32
|
+
// }
|
|
33
|
+
constructor(ifSt) {
|
|
34
|
+
this.operators = ["<=", ">=", "!=", "<>", "==", "<", ">", "="];
|
|
35
|
+
this.LeftSide = null;
|
|
36
|
+
this.RightSide = null;
|
|
37
|
+
this.OneSide = null;
|
|
38
|
+
this.Operator = null;
|
|
39
|
+
for (var op in this.operators) {
|
|
40
|
+
if (ifSt.indexOf(this.operators[op]) != -1) {
|
|
41
|
+
this.Operator = this.operators[op];
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (this.Operator == null) {
|
|
46
|
+
this.OneSide = ifSt;
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
var split = ifSt.split(this.Operator);
|
|
50
|
+
if (split.length == 2) {
|
|
51
|
+
this.LeftSide = split[0];
|
|
52
|
+
this.RightSide = split[1];
|
|
53
|
+
}
|
|
54
|
+
else if (split.length == 1) {
|
|
55
|
+
this.OneSide = split[0];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
CastToDecimal(side, citm) {
|
|
59
|
+
if (side == null || side == "null") {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
if (side.startsWith("N.")) {
|
|
63
|
+
side = side.substring(2);
|
|
64
|
+
}
|
|
65
|
+
let value = null;
|
|
66
|
+
if (side.startsWith("%") && side.endsWith("%")) {
|
|
67
|
+
value = citm.ValueExpresion(side);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
value = side;
|
|
71
|
+
}
|
|
72
|
+
if (typeof value === 'number') {
|
|
73
|
+
return value;
|
|
74
|
+
}
|
|
75
|
+
let valStr = null;
|
|
76
|
+
if (typeof value === 'string') {
|
|
77
|
+
valStr = value;
|
|
78
|
+
}
|
|
79
|
+
if (valStr == null || valStr == "") {
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
try {
|
|
83
|
+
return parseFloat(valStr);
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
return 0;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
TryParse(exp) {
|
|
90
|
+
if (exp == null) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const reg = /^-?\d*\.?\d*$/;
|
|
94
|
+
const rege = new RegExp(reg);
|
|
95
|
+
if (!rege.test(exp)) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
parseFloat(exp);
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
Validate(citm) {
|
|
107
|
+
// if (this.OneSide!=null)
|
|
108
|
+
// {
|
|
109
|
+
// var oneSide = citm.ValueExpresion(this.OneSide); ;
|
|
110
|
+
// if (typeof oneSide === "boolean")
|
|
111
|
+
// {
|
|
112
|
+
// if(true)
|
|
113
|
+
// {
|
|
114
|
+
// // console.log("OneSide:"+oneSide);
|
|
115
|
+
// }
|
|
116
|
+
// return oneSide;
|
|
117
|
+
// }
|
|
118
|
+
var _a, _b;
|
|
119
|
+
// throw "Unsupported validation";
|
|
120
|
+
// }
|
|
121
|
+
if (this.OneSide != null) {
|
|
122
|
+
var oneSide = citm.ValueExpresion(this.OneSide);
|
|
123
|
+
;
|
|
124
|
+
if (oneSide == null) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
if (typeof oneSide === "boolean") {
|
|
128
|
+
if (true) {
|
|
129
|
+
// console.log("OneSide:"+oneSide);
|
|
130
|
+
}
|
|
131
|
+
return oneSide;
|
|
132
|
+
}
|
|
133
|
+
else if (typeof oneSide === "string") {
|
|
134
|
+
if (oneSide != null) {
|
|
135
|
+
if (oneSide.toLocaleLowerCase() == "true") {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
if (oneSide.toLocaleLowerCase() == "false") {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
throw "Unsupported validation:Value:" + oneSide;
|
|
142
|
+
}
|
|
143
|
+
throw "Unsupported validation expression(" + this.OneSide + ") returned null!";
|
|
144
|
+
}
|
|
145
|
+
throw "Unsupported validation";
|
|
146
|
+
}
|
|
147
|
+
if ((((_a = this.LeftSide) === null || _a === void 0 ? void 0 : _a.startsWith("N.")) || this.TryParse(citm.ValueExpresion(this.LeftSide))
|
|
148
|
+
|| this.LeftSide == "null") &&
|
|
149
|
+
(((_b = this.RightSide) === null || _b === void 0 ? void 0 : _b.startsWith("N.")) || this.TryParse(citm.ValueExpresion(this.RightSide))
|
|
150
|
+
|| this.RightSide == "null")) {
|
|
151
|
+
let leftSide = this.CastToDecimal(this.LeftSide, citm);
|
|
152
|
+
let rightSide = this.CastToDecimal(this.RightSide, citm);
|
|
153
|
+
if (leftSide == null || rightSide == null) {
|
|
154
|
+
let returnValue = false;
|
|
155
|
+
switch (this.Operator) {
|
|
156
|
+
case "!=":
|
|
157
|
+
case "<>":
|
|
158
|
+
{
|
|
159
|
+
returnValue = leftSide != rightSide;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
case "==":
|
|
163
|
+
case "=":
|
|
164
|
+
{
|
|
165
|
+
returnValue = leftSide == rightSide;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
default:
|
|
169
|
+
{
|
|
170
|
+
throw "Operator " + this.Operator + " not supported on condition decimal and decimal";
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (true) {
|
|
174
|
+
// console.log(leftSide+" "+ this.Operator+" "+rightSide+" "+returnValue);
|
|
175
|
+
}
|
|
176
|
+
return returnValue;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
let returnValue = false;
|
|
180
|
+
switch (this.Operator) {
|
|
181
|
+
case ">=":
|
|
182
|
+
{
|
|
183
|
+
returnValue = leftSide >= rightSide;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
case "<=":
|
|
187
|
+
{
|
|
188
|
+
returnValue = leftSide <= rightSide;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
case "!=":
|
|
192
|
+
case "<>":
|
|
193
|
+
{
|
|
194
|
+
returnValue = leftSide != rightSide;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
case "<":
|
|
198
|
+
{
|
|
199
|
+
returnValue = leftSide < rightSide;
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
case ">":
|
|
203
|
+
{
|
|
204
|
+
returnValue = leftSide > rightSide;
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case "==":
|
|
208
|
+
case "=":
|
|
209
|
+
{
|
|
210
|
+
returnValue = leftSide == rightSide;
|
|
211
|
+
break;
|
|
212
|
+
}
|
|
213
|
+
default:
|
|
214
|
+
{
|
|
215
|
+
throw "Operator " + this.Operator + " not supported on condition decimal and decimal";
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (true) {
|
|
219
|
+
// console.log(this.LeftSide+" "+ this.Operator+" "+this.RightSide);
|
|
220
|
+
// console.log(leftSide+" "+ this.Operator+" "+rightSide+" =N "+returnValue);
|
|
221
|
+
}
|
|
222
|
+
return returnValue;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
let leftSide = citm.ValueExpresion(this.LeftSide);
|
|
227
|
+
;
|
|
228
|
+
let rightSide = citm.ValueExpresion(this.RightSide);
|
|
229
|
+
if ((typeof leftSide === "boolean" || leftSide == null) && (typeof rightSide === "boolean" || rightSide == null)) {
|
|
230
|
+
let returnValue = false;
|
|
231
|
+
switch (this.Operator) {
|
|
232
|
+
case "!=":
|
|
233
|
+
case "<>":
|
|
234
|
+
{
|
|
235
|
+
returnValue = leftSide != rightSide;
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
case "==":
|
|
239
|
+
case "=":
|
|
240
|
+
{
|
|
241
|
+
returnValue = leftSide == rightSide;
|
|
242
|
+
break;
|
|
243
|
+
}
|
|
244
|
+
default:
|
|
245
|
+
{
|
|
246
|
+
throw "Operator " + this.Operator + " not supported on condition boolean and boolean";
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
if (true) {
|
|
250
|
+
// console.log(this.LeftSide+" "+ this.Operator+" "+this.RightSide);
|
|
251
|
+
// console.log(leftSide+" "+ this.Operator+" "+rightSide+" = "+returnValue);
|
|
252
|
+
}
|
|
253
|
+
return returnValue;
|
|
254
|
+
}
|
|
255
|
+
if ((typeof leftSide === "string" || leftSide == null) &&
|
|
256
|
+
(typeof rightSide === "string" || rightSide == null)) {
|
|
257
|
+
let returnValue = false;
|
|
258
|
+
switch (this.Operator) {
|
|
259
|
+
case "!=":
|
|
260
|
+
case "<>":
|
|
261
|
+
{
|
|
262
|
+
returnValue = leftSide != rightSide;
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
case "==":
|
|
266
|
+
case "=":
|
|
267
|
+
{
|
|
268
|
+
returnValue = leftSide == rightSide;
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
default:
|
|
272
|
+
{
|
|
273
|
+
throw "Operator " + this.Operator + " not supported on condition string and string";
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (true) {
|
|
277
|
+
// console.log(this.LeftSide+" "+ this.Operator+" "+this.RightSide);
|
|
278
|
+
// console.log(leftSide+" "+ this.Operator+" "+rightSide+" = "+returnValue);
|
|
279
|
+
}
|
|
280
|
+
return returnValue;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// debugger
|
|
284
|
+
throw "Unsupported validation";
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
exports.IfStategment = IfStategment;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InDetailParse = void 0;
|
|
4
|
+
const BaseParse_1 = require("./BaseParse");
|
|
5
|
+
const ExpresionLogicService_1 = require("../ExpresionLogicService");
|
|
6
|
+
class InDetailParse extends BaseParse_1.BaseParse {
|
|
7
|
+
constructor(valueExpression, funname) {
|
|
8
|
+
super(valueExpression, funname);
|
|
9
|
+
this.Negate = false;
|
|
10
|
+
this.TableAndField = "";
|
|
11
|
+
this.Table = "";
|
|
12
|
+
this.Field = "";
|
|
13
|
+
this.aviableValues = [];
|
|
14
|
+
if (this.Expression == null) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!this.Expression.startsWith("(")) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
var index = ExpresionLogicService_1.ExpresionLogicService.FindEnd(this.Expression);
|
|
21
|
+
var set = this.Expression.substring(1, index);
|
|
22
|
+
this.TableAndField = this.Expression.substring(index + 2);
|
|
23
|
+
if (this.TableAndField == null || this.TableAndField == "") {
|
|
24
|
+
throw "Invalid expresion InDetail - table.field is empty!";
|
|
25
|
+
}
|
|
26
|
+
if (set == null || set == "") {
|
|
27
|
+
throw "Invalid expresion InDetail - set of values is empty!";
|
|
28
|
+
}
|
|
29
|
+
var split = this.TableAndField.split(".");
|
|
30
|
+
if (split.length == 2) {
|
|
31
|
+
this.Table = split[0];
|
|
32
|
+
this.Field = split[1];
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
throw "Invalid expresion InDetail - table.field not in correction format!";
|
|
36
|
+
}
|
|
37
|
+
this.aviableValues = set.split(",");
|
|
38
|
+
if ((funname === null || funname === void 0 ? void 0 : funname.toLowerCase()) == "notindetail(") {
|
|
39
|
+
this.Negate = true;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
Evaluate(obj, critm, record, item) {
|
|
43
|
+
// var tableLevel = obj.FindTableLevel(this.Table, critm.Parent, critm);todo
|
|
44
|
+
var tableLevel = obj.FindTableLevel(this.Table);
|
|
45
|
+
if (tableLevel == null) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
if (tableLevel.Records != null) {
|
|
49
|
+
var array = tableLevel.Records.Records;
|
|
50
|
+
if (!this.Negate) {
|
|
51
|
+
for (var i = 0; i < tableLevel.Records.Records.length; i++) {
|
|
52
|
+
let single = tableLevel.Records.Records[i];
|
|
53
|
+
if (single.Record[this.Field] == null) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
let cand = this.aviableValues.filter((x) => x == single.Record[this.Field].toString());
|
|
57
|
+
if (cand.length > 0) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
for (var i = 0; i < tableLevel.Records.Records.length; i++) {
|
|
65
|
+
let single = tableLevel.Records.Records[i];
|
|
66
|
+
if (single.Record[this.Field] == null) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
let cand = this.aviableValues.filter((x) => x != single.Record[this.Field].toString());
|
|
70
|
+
if (cand.length > 0) {
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.InDetailParse = InDetailParse;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.INListParser = void 0;
|
|
4
|
+
const BaseParse_1 = require("./BaseParse");
|
|
5
|
+
const ValueFromObjParse_1 = require("./ValueFromObjParse");
|
|
6
|
+
const ExpresionLogicService_1 = require("../ExpresionLogicService");
|
|
7
|
+
class INListParser extends BaseParse_1.BaseParse {
|
|
8
|
+
constructor(valueExpression, funname) {
|
|
9
|
+
super(valueExpression, funname);
|
|
10
|
+
this.Negate = false;
|
|
11
|
+
this.FieldSet = "";
|
|
12
|
+
this.aviableValues = [];
|
|
13
|
+
if (this.Expression == null) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (!this.Expression.startsWith("(")) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
var index = ExpresionLogicService_1.ExpresionLogicService.FindEnd(this.Expression);
|
|
20
|
+
var set = this.Expression.substring(1, index);
|
|
21
|
+
this.FieldSet = this.Expression.substring(index + 2);
|
|
22
|
+
this.aviableValues = set.split(",");
|
|
23
|
+
if ((funname === null || funname === void 0 ? void 0 : funname.toLowerCase()) == "notinlist(") {
|
|
24
|
+
this.Negate = true;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
Evaluate(obj, critm, record, item) {
|
|
28
|
+
var val = new ValueFromObjParse_1.ValueFromObjParse(this.FieldSet, false);
|
|
29
|
+
var evalValue = val.Evaluate(obj, critm, record, item);
|
|
30
|
+
if (evalValue == null || this.aviableValues.length == 0) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
var cand = this.aviableValues.indexOf(evalValue.toString());
|
|
34
|
+
if (this.Negate) {
|
|
35
|
+
return cand == -1;
|
|
36
|
+
}
|
|
37
|
+
return cand != -1;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.INListParser = INListParser;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LiteralValueParse = void 0;
|
|
4
|
+
const BaseParse_1 = require("./BaseParse");
|
|
5
|
+
class LiteralValueParse extends BaseParse_1.BaseParse {
|
|
6
|
+
constructor(valueExpression) {
|
|
7
|
+
super(valueExpression, null);
|
|
8
|
+
}
|
|
9
|
+
Evaluate(obj, critm, record, item) {
|
|
10
|
+
if (this.Expression == "null") {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (this.Expression.startsWith("N.")) {
|
|
14
|
+
if (typeof this.Expression == "string") {
|
|
15
|
+
try {
|
|
16
|
+
return parseFloat(this.Expression);
|
|
17
|
+
}
|
|
18
|
+
catch (ex) {
|
|
19
|
+
throw "Value " + this.Expression + " can't be transformed to numeric!";
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return this.Expression;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.LiteralValueParse = LiteralValueParse;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogicalOperatorParser = void 0;
|
|
4
|
+
const BaseParse_1 = require("./BaseParse");
|
|
5
|
+
class LogicalOperatorParser extends BaseParse_1.BaseParse {
|
|
6
|
+
constructor(valueExpression) {
|
|
7
|
+
super(valueExpression, null);
|
|
8
|
+
}
|
|
9
|
+
Evaluate(obj, critm, record, item) {
|
|
10
|
+
return this.Expression;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.LogicalOperatorParser = LogicalOperatorParser;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OnlyExpressionParse = void 0;
|
|
4
|
+
const BaseParse_1 = require("./BaseParse");
|
|
5
|
+
const OperatorParse_1 = require("./OperatorParse");
|
|
6
|
+
const LiteralValueParse_1 = require("./LiteralValueParse");
|
|
7
|
+
const ValueFromObjParse_1 = require("./ValueFromObjParse");
|
|
8
|
+
const ExpresionLogicService_1 = require("../ExpresionLogicService");
|
|
9
|
+
class OnlyExpressionParse extends BaseParse_1.BaseParse {
|
|
10
|
+
constructor(valueExpression) {
|
|
11
|
+
super(valueExpression, null);
|
|
12
|
+
this.subParse = [];
|
|
13
|
+
var list = [];
|
|
14
|
+
var currentLit = "";
|
|
15
|
+
while (valueExpression.length > 0) {
|
|
16
|
+
var br = false;
|
|
17
|
+
for (let i = 0; i < BaseParse_1.BaseParse.operators.length; i++) {
|
|
18
|
+
let o = BaseParse_1.BaseParse.operators[i];
|
|
19
|
+
if (valueExpression.startsWith(o)) {
|
|
20
|
+
list.push(new OperatorParse_1.OperatorParser(valueExpression.substring(0, o.length)));
|
|
21
|
+
valueExpression = valueExpression.substring(o.length);
|
|
22
|
+
br = true;
|
|
23
|
+
break;
|
|
24
|
+
;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (br) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (["%", "(", ")"].indexOf(valueExpression.substring(0, 1)) == -1 && !ExpresionLogicService_1.ExpresionLogicService.StartsWithFunction(valueExpression)) {
|
|
31
|
+
currentLit += valueExpression.substring(0, 1);
|
|
32
|
+
valueExpression = valueExpression.substring(1);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (currentLit != "") {
|
|
36
|
+
list.push(new LiteralValueParse_1.LiteralValueParse(currentLit));
|
|
37
|
+
currentLit = "";
|
|
38
|
+
}
|
|
39
|
+
if (valueExpression.startsWith("N.%")) {
|
|
40
|
+
var indexNext = valueExpression.substring(3).indexOf("%") + 1;
|
|
41
|
+
list.push(new ValueFromObjParse_1.ValueFromObjParse(valueExpression.substring(2, indexNext - 1), true));
|
|
42
|
+
valueExpression = valueExpression.substring(indexNext + 1);
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (valueExpression.startsWith("%")) {
|
|
46
|
+
var indexNext = valueExpression.substring(1).indexOf("%") + 1;
|
|
47
|
+
list.push(new ValueFromObjParse_1.ValueFromObjParse(valueExpression.substring(0, indexNext + 1), false));
|
|
48
|
+
valueExpression = valueExpression.substring(indexNext + 1);
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
var foundFun = false;
|
|
52
|
+
const keys = Object.keys(ExpresionLogicService_1.ExpresionLogicService._suportedFunctions);
|
|
53
|
+
for (let i = 0; i < keys.length; i++) {
|
|
54
|
+
let key = keys[i];
|
|
55
|
+
if (valueExpression.startsWith(key)) {
|
|
56
|
+
if (currentLit != "") {
|
|
57
|
+
list.push(new OnlyExpressionParse(currentLit));
|
|
58
|
+
currentLit = "";
|
|
59
|
+
}
|
|
60
|
+
var index = ExpresionLogicService_1.ExpresionLogicService.FindEnd(valueExpression);
|
|
61
|
+
if (index == -1) {
|
|
62
|
+
throw "Unbalanced brackets!!!! Expression:" + valueExpression;
|
|
63
|
+
}
|
|
64
|
+
let instance = Reflect.construct(ExpresionLogicService_1.ExpresionLogicService._suportedFunctions[key], [valueExpression.substring(0, index + 1), key]);
|
|
65
|
+
list.push(instance);
|
|
66
|
+
if (index < valueExpression.length) {
|
|
67
|
+
valueExpression = valueExpression.substring(index + 1);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
valueExpression = "";
|
|
71
|
+
}
|
|
72
|
+
foundFun = true;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (foundFun) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
var found = false;
|
|
80
|
+
for (let i = 0; i < OnlyExpressionParse._literalValues.length; i++) {
|
|
81
|
+
var val = OnlyExpressionParse._literalValues[i];
|
|
82
|
+
if (valueExpression.substring(0, 1) == val) {
|
|
83
|
+
list.push(new LiteralValueParse_1.LiteralValueParse(val));
|
|
84
|
+
valueExpression = valueExpression.substring(1);
|
|
85
|
+
found = true;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (found) {
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (currentLit != "") {
|
|
94
|
+
list.push(new LiteralValueParse_1.LiteralValueParse(currentLit));
|
|
95
|
+
}
|
|
96
|
+
this.subParse = list;
|
|
97
|
+
}
|
|
98
|
+
Evaluate(obj, critm, record, item) {
|
|
99
|
+
if (this.subParse.length == 1) {
|
|
100
|
+
return this.subParse[0].Evaluate(obj, critm, record, item);
|
|
101
|
+
}
|
|
102
|
+
return ExpresionLogicService_1.ExpresionLogicService.ConcatValues(this.subParse, obj, critm, record, item);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.OnlyExpressionParse = OnlyExpressionParse;
|
|
106
|
+
OnlyExpressionParse._literalValues = ["(", ")"];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperatorParser = void 0;
|
|
4
|
+
const BaseParse_1 = require("./BaseParse");
|
|
5
|
+
class OperatorParser extends BaseParse_1.BaseParse {
|
|
6
|
+
constructor(valueExpression) {
|
|
7
|
+
super(valueExpression, null);
|
|
8
|
+
}
|
|
9
|
+
Evaluate(obj, critm, record, item) {
|
|
10
|
+
return this.Expression;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.OperatorParser = OperatorParser;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StartsParse = void 0;
|
|
4
|
+
const BaseParse_1 = require("./BaseParse");
|
|
5
|
+
const OnlyExpressionParse_1 = require("./OnlyExpressionParse");
|
|
6
|
+
class StartsParse extends BaseParse_1.BaseParse {
|
|
7
|
+
constructor(valueExpression, funname) {
|
|
8
|
+
super(valueExpression, funname);
|
|
9
|
+
this.starts = null;
|
|
10
|
+
this.value = null;
|
|
11
|
+
var split = this.Expression.split(",");
|
|
12
|
+
if (split.length == 2) {
|
|
13
|
+
this.starts = new OnlyExpressionParse_1.OnlyExpressionParse(split[0]);
|
|
14
|
+
this.value = new OnlyExpressionParse_1.OnlyExpressionParse(split[1]);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
Evaluate(obj, critm, record, item) {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
var startsEvaluate = (_a = this.starts) === null || _a === void 0 ? void 0 : _a.Evaluate(obj, critm, record, item);
|
|
20
|
+
var valueEvaluate = (_b = this.value) === null || _b === void 0 ? void 0 : _b.Evaluate(obj, critm, record, item);
|
|
21
|
+
if (startsEvaluate == null || valueEvaluate == null) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
var evaluated = startsEvaluate.ToString();
|
|
25
|
+
var evaluatedValue = valueEvaluate.ToString();
|
|
26
|
+
var result = evaluatedValue.startsWith(evaluated);
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.StartsParse = StartsParse;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubstrParse = void 0;
|
|
4
|
+
const BaseParse_1 = require("./BaseParse");
|
|
5
|
+
const CommaParser_1 = require("./CommaParser");
|
|
6
|
+
const ExpresionLogicService_1 = require("../ExpresionLogicService");
|
|
7
|
+
class SubstrParse extends BaseParse_1.BaseParse {
|
|
8
|
+
constructor(valueExpression, funname) {
|
|
9
|
+
super(valueExpression, funname);
|
|
10
|
+
this.starts = [];
|
|
11
|
+
this.value = [];
|
|
12
|
+
this.length = [];
|
|
13
|
+
var dd = ExpresionLogicService_1.ExpresionLogicService.GetExpressions(this.Expression, this);
|
|
14
|
+
var current = [];
|
|
15
|
+
if (dd == null) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
for (let i = 0; i < dd.length; i++) {
|
|
19
|
+
current = this.logic(current, dd[i]);
|
|
20
|
+
}
|
|
21
|
+
this.logic(current, null);
|
|
22
|
+
if (this.value.length == 0 || this.starts.length == 0 || this.length.length == 0) {
|
|
23
|
+
throw "Can't parse if stategment " + valueExpression + "!";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
Evaluate(obj, critm, record, item) {
|
|
27
|
+
var valueEval = ExpresionLogicService_1.ExpresionLogicService.ConcatValues(this.value, obj, critm, record, item);
|
|
28
|
+
if (valueEval == null) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
var val = valueEval.ToString();
|
|
32
|
+
let str = -1;
|
|
33
|
+
var startEval = ExpresionLogicService_1.ExpresionLogicService.ConcatValues(this.starts, obj, critm, record, item);
|
|
34
|
+
if (typeof startEval == "number") {
|
|
35
|
+
str = startEval;
|
|
36
|
+
}
|
|
37
|
+
else if (typeof startEval == "string") {
|
|
38
|
+
str = parseInt(startEval);
|
|
39
|
+
}
|
|
40
|
+
if (str == -1) {
|
|
41
|
+
throw "Substr start index can't be parsed! Value: " + startEval + "!";
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
str--;
|
|
45
|
+
}
|
|
46
|
+
let len = -1;
|
|
47
|
+
var lengthEval = ExpresionLogicService_1.ExpresionLogicService.ConcatValues(this.length, obj, critm, record, item);
|
|
48
|
+
if (typeof lengthEval == "number") {
|
|
49
|
+
len = lengthEval;
|
|
50
|
+
}
|
|
51
|
+
else if (lengthEval == "string") {
|
|
52
|
+
len = parseInt(lengthEval);
|
|
53
|
+
}
|
|
54
|
+
if (len == -1) {
|
|
55
|
+
throw "Substr length index can't be parsed! Value: " + lengthEval + "!";
|
|
56
|
+
}
|
|
57
|
+
if (val.Length <= str) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
var tem = val.substring(str);
|
|
61
|
+
if (tem.Length <= len) {
|
|
62
|
+
return tem;
|
|
63
|
+
}
|
|
64
|
+
return tem.substring(0, len);
|
|
65
|
+
}
|
|
66
|
+
logic(list, c) {
|
|
67
|
+
if (c == null || c instanceof CommaParser_1.CommaParser) {
|
|
68
|
+
if (this.value.length == 0) {
|
|
69
|
+
this.value = list;
|
|
70
|
+
}
|
|
71
|
+
else if (this.starts.length == 0) {
|
|
72
|
+
this.starts = list;
|
|
73
|
+
}
|
|
74
|
+
else if (this.length.length == 0) {
|
|
75
|
+
this.length = list;
|
|
76
|
+
}
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
list.push(c);
|
|
80
|
+
return list;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.SubstrParse = SubstrParse;
|