@malloydata/malloy-filter 0.0.237-dev250225213433 → 0.0.237

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.
Files changed (52) hide show
  1. package/package.json +1 -1
  2. package/dist/a_simple_parser.d.ts +0 -1
  3. package/dist/a_simple_parser.js +0 -29
  4. package/dist/a_simple_parser.js.map +0 -1
  5. package/dist/base_parser.d.ts +0 -11
  6. package/dist/base_parser.js +0 -39
  7. package/dist/base_parser.js.map +0 -1
  8. package/dist/boolean_parser.d.ts +0 -7
  9. package/dist/boolean_parser.js +0 -76
  10. package/dist/boolean_parser.js.map +0 -1
  11. package/dist/boolean_serializer.d.ts +0 -8
  12. package/dist/boolean_serializer.js +0 -45
  13. package/dist/boolean_serializer.js.map +0 -1
  14. package/dist/clause_types.d.ts +0 -68
  15. package/dist/clause_types.js +0 -9
  16. package/dist/clause_types.js.map +0 -1
  17. package/dist/date_parser.d.ts +0 -25
  18. package/dist/date_parser.js +0 -434
  19. package/dist/date_parser.js.map +0 -1
  20. package/dist/date_serializer.d.ts +0 -11
  21. package/dist/date_serializer.js +0 -94
  22. package/dist/date_serializer.js.map +0 -1
  23. package/dist/date_types.d.ts +0 -75
  24. package/dist/date_types.js +0 -9
  25. package/dist/date_types.js.map +0 -1
  26. package/dist/generate_samples.d.ts +0 -1
  27. package/dist/generate_samples.js +0 -334
  28. package/dist/generate_samples.js.map +0 -1
  29. package/dist/index.d.ts +0 -10
  30. package/dist/index.js +0 -42
  31. package/dist/index.js.map +0 -1
  32. package/dist/number_parser.d.ts +0 -17
  33. package/dist/number_parser.js +0 -252
  34. package/dist/number_parser.js.map +0 -1
  35. package/dist/number_serializer.d.ts +0 -11
  36. package/dist/number_serializer.js +0 -85
  37. package/dist/number_serializer.js.map +0 -1
  38. package/dist/string_parser.d.ts +0 -17
  39. package/dist/string_parser.js +0 -166
  40. package/dist/string_parser.js.map +0 -1
  41. package/dist/string_serializer.d.ts +0 -13
  42. package/dist/string_serializer.js +0 -107
  43. package/dist/string_serializer.js.map +0 -1
  44. package/dist/token_types.d.ts +0 -7
  45. package/dist/token_types.js +0 -9
  46. package/dist/token_types.js.map +0 -1
  47. package/dist/tokenizer.d.ts +0 -52
  48. package/dist/tokenizer.js +0 -269
  49. package/dist/tokenizer.js.map +0 -1
  50. package/dist/tokenizer.spec.d.ts +0 -1
  51. package/dist/tokenizer.spec.js +0 -261
  52. package/dist/tokenizer.spec.js.map +0 -1
@@ -1,334 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
- Object.defineProperty(o, "default", { enumerable: true, value: v });
21
- }) : function(o, v) {
22
- o["default"] = v;
23
- });
24
- var __importStar = (this && this.__importStar) || function (mod) {
25
- if (mod && mod.__esModule) return mod;
26
- var result = {};
27
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
28
- __setModuleDefault(result, mod);
29
- return result;
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- const fs = __importStar(require("fs"));
33
- const boolean_parser_1 = require("./boolean_parser");
34
- const string_parser_1 = require("./string_parser");
35
- const number_parser_1 = require("./number_parser");
36
- const date_parser_1 = require("./date_parser");
37
- const boolean_serializer_1 = require("./boolean_serializer");
38
- const string_serializer_1 = require("./string_serializer");
39
- const number_serializer_1 = require("./number_serializer");
40
- const date_serializer_1 = require("./date_serializer");
41
- const numberExamples = [
42
- '5',
43
- '!=5',
44
- '1, 3, 5, null',
45
- '1, 3, , 5,',
46
- '<1, >=100 ',
47
- '>=1',
48
- ' <= 10 ',
49
- 'NULL',
50
- ' -NULL',
51
- '(1, 7)',
52
- '[-5, 90]',
53
- ' != ( 12, 20 ] ',
54
- '[.12e-20, 20.0e3)',
55
- '[0,9],[20,29]',
56
- '[0,10], 20, NULL, ( 72, 82 ] ',
57
- ', notanumber,, "null", apple pear orange, nulle, nnull, >=,',
58
- '[cat, 100], <cat',
59
- '-5.5 to 10',
60
- ];
61
- const stringExamples = [
62
- 'CAT, DOG,mouse ',
63
- '-CAT,-DOG , -mouse',
64
- ' CAT,-"DOG",m o u s e',
65
- '-CAT,-DOG,mouse, bird, zebra, -horse, -goat',
66
- 'Missing ,NULL',
67
- 'CAT%, D%OG, %ous%, %ira_f%, %_oat, ',
68
- '-CAT%,-D%OG,-%mouse,-%zebra%',
69
- 'CAT%,-CATALOG',
70
- '%,_,%%,%a%',
71
- '%\\_X',
72
- '_\\_X',
73
- '_CAT,D_G,mouse_',
74
- '\\_CAT,D\\%G,\\mouse',
75
- 'CAT,-NULL',
76
- 'CAT,-"NULL"',
77
- 'CAT,NULL',
78
- 'CAT,,',
79
- 'CAT, , DOG',
80
- 'EMPTY',
81
- '-EMPTY',
82
- 'CAT,-EMPTY',
83
- '"CAT,DOG\',mo`use,zeb\'\'\'ra,g"""t,g\\"ir\\`af\\\'e',
84
- 'CAT\\,DOG',
85
- 'CAT,DOG,-, - ',
86
- '--CAT,DOG,\\',
87
- 'CAT\\ DOG',
88
- '_\\_CAT',
89
- '\\NULL',
90
- '\\-NULL',
91
- '-N\\ULL',
92
- 'CA--,D-G',
93
- ' hello world, foo="bar baz" , qux=quux',
94
- 'one ,Null , Empty,E M P T Y Y,EEmpty, emptIEs',
95
- '',
96
- ];
97
- const booleanExamples = [
98
- 'true',
99
- 'FALSE',
100
- '=false',
101
- 'null',
102
- '-NULL',
103
- 'null,',
104
- ' True , , faLSE,=false,NULl,-null',
105
- "-'null'",
106
- '10',
107
- 'nnull',
108
- ' truee ',
109
- ];
110
- const dateExamples = [
111
- 'this month',
112
- '3 days',
113
- '3 days ago',
114
- '3 months ago for 2 days',
115
- '2025 weeks ago',
116
- 'before 3 days ago',
117
- 'Before 2025-08-30 08:30:20',
118
- 'AFTER 2025-10-05',
119
- '2025-08-30 12:00 to 2025-09-18 14:30',
120
- 'this YEAR',
121
- 'Next Tuesday',
122
- '7 years from Now',
123
- '2025-01-01 12:00:00 for 3 days',
124
- '2020-08-12 03:12:56.57',
125
- '2020-08-12T03:12:56[PST]',
126
- '2020-08-12 03:12:56',
127
- '2020-08-12 03:22',
128
- '2020-08-12 03',
129
- '2020-08-12',
130
- '2020-Q3',
131
- '2020-08-07-wK',
132
- '2020-08',
133
- 'today',
134
- 'yesterday',
135
- 'tomorrow',
136
- 'TODay,Yesterday, TOMORROW , ,TODay ,,',
137
- '2010 to 2011, 2015 to 2016 , 2018, 2020 ',
138
- 'next week',
139
- 'now',
140
- 'now to next month',
141
- 'null',
142
- '-null,',
143
- ' yyesterday ',
144
- 'before',
145
- 'for',
146
- '12',
147
- 'from now',
148
- '2025-12-25 12:32:',
149
- '12:22',
150
- 'after 2025 seconds',
151
- '',
152
- ];
153
- /* eslint-disable @typescript-eslint/no-unused-vars */
154
- /* eslint-disable no-console */
155
- /* eslint-disable @typescript-eslint/no-explicit-any */
156
- class GenerateSamples {
157
- constructor() {
158
- this.samplesFile = fs.createWriteStream('dist/SAMPLES.md');
159
- this.serializedFile = fs.createWriteStream('dist/SERIALIZE_SAMPLES.md');
160
- }
161
- static removeQuotes(word) {
162
- if (word.startsWith('"')) {
163
- word = word.substring(1);
164
- }
165
- if (word.endsWith('"')) {
166
- word = word.substring(0, word.length - 1);
167
- }
168
- return word;
169
- }
170
- static writeJson(fp, title, ...args) {
171
- const result = args.map(str => JSON.stringify(str));
172
- const result2 = result.map(str => GenerateSamples.removeQuotes(str));
173
- fp.write(title + ' ' + result2.join(' ') + '\n');
174
- console.log(title, ...args);
175
- }
176
- static writeRaw(fp, ...args) {
177
- fp.write(args.join(' ') + '\n');
178
- console.log(...args);
179
- }
180
- booleanSample(str, fp) {
181
- GenerateSamples.writeRaw(fp, 'Input: ', str);
182
- const parser = new boolean_parser_1.BooleanParser(str);
183
- const response = parser.parse();
184
- // GenerateSamples.writeJson(fp, 'Tokens: ', parser.getTokens());
185
- if (response.clauses && response.clauses.length > 0) {
186
- GenerateSamples.writeJson(fp, 'Output: ', ...response.clauses);
187
- }
188
- if (response.logs && response.logs.length > 0) {
189
- GenerateSamples.writeJson(fp, 'Logs: ', ...response.logs);
190
- }
191
- GenerateSamples.writeRaw(fp, '');
192
- }
193
- dateSample(str, fp) {
194
- GenerateSamples.writeRaw(fp, 'Input: ', str);
195
- const parser = new date_parser_1.DateParser(str);
196
- const response = parser.parse();
197
- // GenerateSamples.writeJson(fp, 'Tokens: ', parser.getTokens());
198
- if (response.clauses && response.clauses.length > 0) {
199
- GenerateSamples.writeJson(fp, 'Output: ', ...response.clauses);
200
- }
201
- if (response.logs && response.logs.length > 0) {
202
- GenerateSamples.writeJson(fp, 'Logs: ', ...response.logs);
203
- }
204
- GenerateSamples.writeRaw(fp, '');
205
- }
206
- numberSample(str, fp) {
207
- GenerateSamples.writeRaw(fp, 'Input: ', str);
208
- const parser = new number_parser_1.NumberParser(str);
209
- const response = parser.parse();
210
- // GenerateSamples.writeJson(fp, 'Tokens: ', parser.getTokens());
211
- if (response.clauses && response.clauses.length > 0) {
212
- GenerateSamples.writeJson(fp, 'Output: ', ...response.clauses);
213
- }
214
- if (response.logs && response.logs.length > 0) {
215
- GenerateSamples.writeJson(fp, 'Logs: ', ...response.logs);
216
- }
217
- GenerateSamples.writeRaw(fp, '');
218
- }
219
- stringSample(str, fp) {
220
- GenerateSamples.writeRaw(fp, 'Input: ', str);
221
- const parser = new string_parser_1.StringParser(str);
222
- const response = parser.parse();
223
- // GenerateSamples.writeJson(fp, 'Tokens: ', parser.getTokens());
224
- if (response.clauses && response.clauses.length > 0) {
225
- GenerateSamples.writeJson(fp, 'Output: ', ...response.clauses);
226
- }
227
- if (response.logs && response.logs.length > 0) {
228
- GenerateSamples.writeJson(fp, 'Logs: ', ...response.logs);
229
- }
230
- GenerateSamples.writeRaw(fp, '');
231
- }
232
- booleanSerialized(str, fp) {
233
- GenerateSamples.writeRaw(fp, 'Input: ' + str);
234
- const response = new boolean_parser_1.BooleanParser(str).parse();
235
- // this.writeJson('Clause: ', ...response.clauses, '\n');
236
- if (response.clauses && response.clauses.length > 0) {
237
- const result = new boolean_serializer_1.BooleanSerializer(response.clauses || []).serialize();
238
- GenerateSamples.writeRaw(fp, 'Output: ' + result);
239
- }
240
- if (response.logs && response.logs.length > 0) {
241
- GenerateSamples.writeJson(fp, 'Logs: ', ...response.logs);
242
- }
243
- GenerateSamples.writeRaw(fp, '');
244
- }
245
- dateSerialized(str, fp) {
246
- GenerateSamples.writeRaw(fp, 'Input: ' + str);
247
- const response = new date_parser_1.DateParser(str).parse();
248
- // this.writeJson('Clause: ', ...response.clauses, '\n');
249
- if (response.clauses && response.clauses.length > 0) {
250
- const result = new date_serializer_1.DateSerializer(response.clauses || []).serialize();
251
- GenerateSamples.writeRaw(fp, 'Output: ' + result);
252
- }
253
- if (response.logs && response.logs.length > 0) {
254
- GenerateSamples.writeJson(fp, 'Logs: ', ...response.logs);
255
- }
256
- GenerateSamples.writeRaw(fp, '');
257
- }
258
- numberSerialized(str, fp) {
259
- GenerateSamples.writeRaw(fp, 'Input: ' + str);
260
- const response = new number_parser_1.NumberParser(str).parse();
261
- // this.writeJson('Clause: ', ...response.clauses, '\n');
262
- if (response.clauses && response.clauses.length > 0) {
263
- const result = new number_serializer_1.NumberSerializer(response.clauses || []).serialize();
264
- GenerateSamples.writeRaw(fp, 'Output: ' + result);
265
- }
266
- if (response.logs && response.logs.length > 0) {
267
- GenerateSamples.writeJson(fp, 'Logs: ', ...response.logs);
268
- }
269
- GenerateSamples.writeRaw(fp, '');
270
- }
271
- stringSerialized(str, fp) {
272
- GenerateSamples.writeRaw(fp, 'Input: ' + str);
273
- const response = new string_parser_1.StringParser(str).parse();
274
- // this.writeJson('Clause: ', ...response.clauses, '\n');
275
- if (response.clauses && response.clauses.length > 0) {
276
- const result = new string_serializer_1.StringSerializer(response.clauses || []).serialize();
277
- GenerateSamples.writeRaw(fp, 'Output: ' + result);
278
- }
279
- if (response.logs && response.logs.length > 0) {
280
- GenerateSamples.writeJson(fp, 'Logs: ', ...response.logs);
281
- }
282
- GenerateSamples.writeRaw(fp, '');
283
- }
284
- loop(title, examples, func, fp) {
285
- GenerateSamples.writeRaw(fp, '-------------------------------------------------------------------------');
286
- GenerateSamples.writeRaw(fp, '## ' + title + '\n');
287
- GenerateSamples.writeRaw(fp, '```code');
288
- for (const example of examples) {
289
- func(example, fp);
290
- }
291
- GenerateSamples.writeRaw(fp, '```\n');
292
- }
293
- }
294
- // Comment or uncomment the following function calls to disable/enable examples.
295
- function generateSamples() {
296
- try {
297
- const gen = new GenerateSamples();
298
- GenerateSamples.writeRaw(gen.samplesFile, `
299
- # Parsers
300
-
301
- Each filter type is handled by a different parser (strings, numbers, dates and times, etc).
302
- Sample outputs from each parser follow...
303
- `);
304
- GenerateSamples.writeRaw(gen.serializedFile, `
305
- # Serializers
306
-
307
- Each parser has a complementary serializer that converts the structured clause list back
308
- to string format. Below are round-trip samples: \`string\` to \`Clause[]\` back to \`string\`.
309
- Round-trip Examples:
310
-
311
- \`\`\`code
312
- Input > parse > Clause[] > serialize > Output
313
- string string
314
- \`\`\`
315
- `);
316
- gen.loop('Numbers', numberExamples, gen.numberSample, gen.samplesFile);
317
- gen.loop('Strings', stringExamples, gen.stringSample, gen.samplesFile);
318
- gen.loop('Booleans', booleanExamples, gen.booleanSample, gen.samplesFile);
319
- gen.loop('Dates and Times', dateExamples, gen.dateSample, gen.samplesFile);
320
- gen.loop('Number Serializer', numberExamples, gen.numberSerialized, gen.serializedFile);
321
- gen.loop('String Serializer', stringExamples, gen.stringSerialized, gen.serializedFile);
322
- gen.loop('Boolean Serializer', booleanExamples, gen.booleanSerialized, gen.serializedFile);
323
- gen.loop('Date Serializer', dateExamples, gen.dateSerialized, gen.serializedFile);
324
- }
325
- catch (ex) {
326
- if (ex instanceof Error)
327
- console.error('Thrown Error: ', ex.message);
328
- else {
329
- console.error('Thrown Unknown error: ', ex);
330
- }
331
- }
332
- }
333
- generateSamples();
334
- //# sourceMappingURL=generate_samples.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generate_samples.js","sourceRoot":"","sources":["../src/generate_samples.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,10 +0,0 @@
1
- export { BooleanParser } from './boolean_parser';
2
- export { DateParser } from './date_parser';
3
- export { NumberParser } from './number_parser';
4
- export { StringParser } from './string_parser';
5
- export { BooleanSerializer } from './boolean_serializer';
6
- export { DateSerializer } from './date_serializer';
7
- export { NumberSerializer } from './number_serializer';
8
- export { StringSerializer } from './string_serializer';
9
- export * from './clause_types';
10
- export * from './date_types';
package/dist/index.js DELETED
@@ -1,42 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
- if (k2 === undefined) k2 = k;
10
- var desc = Object.getOwnPropertyDescriptor(m, k);
11
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
- desc = { enumerable: true, get: function() { return m[k]; } };
13
- }
14
- Object.defineProperty(o, k2, desc);
15
- }) : (function(o, m, k, k2) {
16
- if (k2 === undefined) k2 = k;
17
- o[k2] = m[k];
18
- }));
19
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
- };
22
- Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.StringSerializer = exports.NumberSerializer = exports.DateSerializer = exports.BooleanSerializer = exports.StringParser = exports.NumberParser = exports.DateParser = exports.BooleanParser = void 0;
24
- var boolean_parser_1 = require("./boolean_parser");
25
- Object.defineProperty(exports, "BooleanParser", { enumerable: true, get: function () { return boolean_parser_1.BooleanParser; } });
26
- var date_parser_1 = require("./date_parser");
27
- Object.defineProperty(exports, "DateParser", { enumerable: true, get: function () { return date_parser_1.DateParser; } });
28
- var number_parser_1 = require("./number_parser");
29
- Object.defineProperty(exports, "NumberParser", { enumerable: true, get: function () { return number_parser_1.NumberParser; } });
30
- var string_parser_1 = require("./string_parser");
31
- Object.defineProperty(exports, "StringParser", { enumerable: true, get: function () { return string_parser_1.StringParser; } });
32
- var boolean_serializer_1 = require("./boolean_serializer");
33
- Object.defineProperty(exports, "BooleanSerializer", { enumerable: true, get: function () { return boolean_serializer_1.BooleanSerializer; } });
34
- var date_serializer_1 = require("./date_serializer");
35
- Object.defineProperty(exports, "DateSerializer", { enumerable: true, get: function () { return date_serializer_1.DateSerializer; } });
36
- var number_serializer_1 = require("./number_serializer");
37
- Object.defineProperty(exports, "NumberSerializer", { enumerable: true, get: function () { return number_serializer_1.NumberSerializer; } });
38
- var string_serializer_1 = require("./string_serializer");
39
- Object.defineProperty(exports, "StringSerializer", { enumerable: true, get: function () { return string_serializer_1.StringSerializer; } });
40
- __exportStar(require("./clause_types"), exports);
41
- __exportStar(require("./date_types"), exports);
42
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,mDAA+C;AAAvC,+GAAA,aAAa,OAAA;AACrB,6CAAyC;AAAjC,yGAAA,UAAU,OAAA;AAClB,iDAA6C;AAArC,6GAAA,YAAY,OAAA;AACpB,iDAA6C;AAArC,6GAAA,YAAY,OAAA;AACpB,2DAAuD;AAA/C,uHAAA,iBAAiB,OAAA;AACzB,qDAAiD;AAAzC,iHAAA,cAAc,OAAA;AACtB,yDAAqD;AAA7C,qHAAA,gBAAgB,OAAA;AACxB,yDAAqD;AAA7C,qHAAA,gBAAgB,OAAA;AACxB,iDAA+B;AAC/B,+CAA6B"}
@@ -1,17 +0,0 @@
1
- import { NumberParserResponse } from './clause_types';
2
- import { BaseParser } from './base_parser';
3
- export declare class NumberParser extends BaseParser {
4
- constructor(input: string);
5
- private tokenize;
6
- parse(): NumberParserResponse;
7
- private static groupClauses;
8
- private matchTokens;
9
- private checkRange;
10
- private isRangeStart;
11
- private static parseNumber;
12
- private static isValidNumber;
13
- private consumeRange;
14
- private checkNumericExpression;
15
- private checkSimpleNumber;
16
- private checkNull;
17
- }
@@ -1,252 +0,0 @@
1
- "use strict";
2
- /*
3
- * Copyright (c) Meta Platforms, Inc. and affiliates.
4
- *
5
- * This source code is licensed under the MIT license found in the
6
- * LICENSE file in the root directory of this source tree.
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.NumberParser = void 0;
10
- const tokenizer_1 = require("./tokenizer");
11
- const base_parser_1 = require("./base_parser");
12
- class NumberParser extends base_parser_1.BaseParser {
13
- constructor(input) {
14
- super(input);
15
- }
16
- tokenize() {
17
- const specialSubstrings = [
18
- { type: ',', value: ',' },
19
- { type: '[', value: '[' },
20
- { type: ']', value: ']' },
21
- { type: '(', value: '(' },
22
- { type: ')', value: ')' },
23
- { type: '<=', value: '<=' },
24
- { type: '>=', value: '>=' },
25
- { type: '!=', value: '!=' },
26
- { type: '=', value: '=' },
27
- { type: '>', value: '>' },
28
- { type: '<', value: '<' },
29
- ];
30
- const specialWords = [
31
- { type: 'not_null', value: '-null', ignoreCase: true },
32
- { type: 'null', value: 'null', ignoreCase: true },
33
- ];
34
- const params = {
35
- trimWordWhitespace: true,
36
- combineAdjacentWords: false,
37
- splitOnWhitespace: true,
38
- specialSubstrings,
39
- specialWords,
40
- };
41
- const tokenizer = new tokenizer_1.Tokenizer(this.inputString, params);
42
- this.tokens = tokenizer.parse();
43
- }
44
- parse() {
45
- this.index = 0;
46
- this.tokenize();
47
- let clauses = [];
48
- const logs = [];
49
- while (this.index < this.tokens.length) {
50
- const token = this.getNext();
51
- if (token.type === ',') {
52
- if (this.index > 0 && this.tokens[this.index - 1].type === ',') {
53
- logs.push({
54
- severity: 'warn',
55
- message: 'Empty clause',
56
- startIndex: token.startIndex,
57
- endIndex: token.endIndex,
58
- });
59
- }
60
- this.index++;
61
- }
62
- else if (this.isRangeStart(this.index)) {
63
- clauses = this.checkRange(token, false, clauses, logs);
64
- }
65
- else if (token.type === '!=' && this.isRangeStart(this.index + 1)) {
66
- this.index++;
67
- clauses = this.checkRange(token, true, clauses, logs);
68
- }
69
- else if (this.checkNull(clauses)) {
70
- this.index++;
71
- }
72
- else if (this.checkNumericExpression('<=', clauses) ||
73
- this.checkNumericExpression('>=', clauses) ||
74
- this.checkNumericExpression('<', clauses) ||
75
- this.checkNumericExpression('>', clauses) ||
76
- this.checkNumericExpression('!=', clauses) ||
77
- this.checkNumericExpression('=', clauses)) {
78
- this.index += 2;
79
- }
80
- else if (this.checkSimpleNumber(clauses)) {
81
- this.index++;
82
- }
83
- else {
84
- logs.push({
85
- severity: 'error',
86
- message: 'Invalid expression: ' + token.value,
87
- startIndex: token.startIndex,
88
- endIndex: token.endIndex,
89
- });
90
- this.index++;
91
- }
92
- }
93
- return { clauses: NumberParser.groupClauses(clauses), logs };
94
- }
95
- static groupClauses(clauses) {
96
- if (clauses.length < 2) {
97
- return clauses;
98
- }
99
- let previous = undefined;
100
- const outputs = [];
101
- for (let i = 0; i < clauses.length; i++) {
102
- const clause = clauses[i];
103
- if (clause.operator === 'range') {
104
- previous = undefined;
105
- outputs.push(clause);
106
- }
107
- else if (previous !== undefined &&
108
- previous.operator === clause.operator &&
109
- 'values' in previous &&
110
- 'values' in clause) {
111
- previous.values.push(...clause.values);
112
- }
113
- else {
114
- previous = clause;
115
- outputs.push(clause);
116
- }
117
- }
118
- return outputs;
119
- }
120
- matchTokens(candidates) {
121
- return base_parser_1.BaseParser.matchTokenTypes(candidates, this.index, this.tokens);
122
- }
123
- checkRange(token, negated, clauses, logs) {
124
- if (this.matchTokens(['[', 'word', ',', 'word', ']'])) {
125
- return negated
126
- ? this.consumeRange('<', '>', clauses, logs)
127
- : this.consumeRange('>=', '<=', clauses, logs);
128
- }
129
- else if (this.matchTokens(['[', 'word', ',', 'word', ')'])) {
130
- return negated
131
- ? this.consumeRange('<', '>=', clauses, logs)
132
- : this.consumeRange('>=', '<', clauses, logs);
133
- }
134
- else if (this.matchTokens(['(', 'word', ',', 'word', ']'])) {
135
- return negated
136
- ? this.consumeRange('<=', '>', clauses, logs)
137
- : this.consumeRange('>', '<=', clauses, logs);
138
- }
139
- else if (this.matchTokens(['(', 'word', ',', 'word', ')'])) {
140
- return negated
141
- ? this.consumeRange('<=', '>=', clauses, logs)
142
- : this.consumeRange('>', '<', clauses, logs);
143
- }
144
- else {
145
- logs.push({
146
- severity: 'error',
147
- message: 'Invalid range expression',
148
- startIndex: token.startIndex,
149
- endIndex: token.endIndex,
150
- });
151
- this.index++;
152
- }
153
- return clauses;
154
- }
155
- isRangeStart(position) {
156
- if (position < 0 || position >= this.tokens.length) {
157
- return false;
158
- }
159
- const tokenType = this.tokens[position].type;
160
- return tokenType === '[' || tokenType === '(';
161
- }
162
- static parseNumber(value) {
163
- if (value.toUpperCase() === 'inf') {
164
- return Infinity;
165
- }
166
- else if (value.toUpperCase() === '-inf') {
167
- return -Infinity;
168
- }
169
- else {
170
- return Number(value);
171
- }
172
- }
173
- static isValidNumber(value) {
174
- return Number.isNaN(value) === false;
175
- }
176
- consumeRange(startOperator, endOperator, clauses, logs) {
177
- const startToken = this.getAt(this.index + 1);
178
- const endToken = this.getAt(this.index + 3);
179
- const startValue = NumberParser.parseNumber(startToken.value);
180
- const endValue = NumberParser.parseNumber(endToken.value);
181
- if (!NumberParser.isValidNumber(startValue)) {
182
- logs.push({
183
- severity: 'error',
184
- message: 'Invalid number',
185
- startIndex: startToken.startIndex,
186
- endIndex: startToken.endIndex,
187
- });
188
- }
189
- else if (!NumberParser.isValidNumber(endValue)) {
190
- logs.push({
191
- severity: 'error',
192
- message: 'Invalid number',
193
- startIndex: endToken.startIndex,
194
- endIndex: endToken.endIndex,
195
- });
196
- }
197
- else {
198
- const clause = {
199
- operator: 'range',
200
- startOperator: startOperator,
201
- startValue: startValue,
202
- endOperator: endOperator,
203
- endValue: endValue,
204
- };
205
- clauses.push(clause);
206
- }
207
- this.index += 5;
208
- return clauses;
209
- }
210
- checkNumericExpression(tokenType, clauses) {
211
- if (this.getNext().type === tokenType &&
212
- this.index < this.tokens.length - 1) {
213
- const numericValue = NumberParser.parseNumber(this.getAt(this.index + 1).value);
214
- if (!NumberParser.isValidNumber(numericValue)) {
215
- return false;
216
- }
217
- const clause = {
218
- operator: tokenType,
219
- values: [numericValue],
220
- };
221
- clauses.push(clause);
222
- return true;
223
- }
224
- return false;
225
- }
226
- checkSimpleNumber(clauses) {
227
- if (this.getNext().type === 'word') {
228
- const numericValue = NumberParser.parseNumber(this.getAt(this.index).value);
229
- if (!NumberParser.isValidNumber(numericValue)) {
230
- return false;
231
- }
232
- const clause = { operator: '=', values: [numericValue] };
233
- clauses.push(clause);
234
- return true;
235
- }
236
- return false;
237
- }
238
- checkNull(clauses) {
239
- const type = this.getNext().type;
240
- if (type === 'null') {
241
- clauses.push({ operator: 'null' });
242
- return true;
243
- }
244
- else if (type === 'not_null') {
245
- clauses.push({ operator: 'not_null' });
246
- return true;
247
- }
248
- return false;
249
- }
250
- }
251
- exports.NumberParser = NumberParser;
252
- //# sourceMappingURL=number_parser.js.map