@malloydata/malloy-filter 0.0.237-dev250222034547 → 0.0.237-dev250223010918
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/README.md +32 -22
- package/SAMPLES.md +154 -75
- package/SERIALIZE_SAMPLES.md +37 -24
- package/dist/boolean_parser.js +3 -1
- package/dist/boolean_parser.js.map +1 -1
- package/dist/boolean_serializer.js +9 -1
- package/dist/boolean_serializer.js.map +1 -1
- package/dist/clause_types.d.ts +28 -9
- package/dist/date_parser.js +5 -1
- package/dist/date_parser.js.map +1 -1
- package/dist/date_serializer.js +6 -0
- package/dist/date_serializer.js.map +1 -1
- package/dist/date_types.d.ts +7 -1
- package/dist/generate_samples.js +177 -271
- package/dist/generate_samples.js.map +1 -1
- package/dist/number_parser.d.ts +0 -3
- package/dist/number_parser.js +10 -51
- package/dist/number_parser.js.map +1 -1
- package/dist/number_serializer.js +14 -11
- package/dist/number_serializer.js.map +1 -1
- package/dist/string_parser.js +21 -21
- package/dist/string_parser.js.map +1 -1
- package/dist/string_serializer.d.ts +1 -0
- package/dist/string_serializer.js +35 -21
- package/dist/string_serializer.js.map +1 -1
- package/package.json +1 -1
- package/src/DEVELOPING.md +3 -10
- package/src/boolean_parser.ts +4 -3
- package/src/boolean_serializer.ts +9 -1
- package/src/clause_types.ts +59 -20
- package/src/date_parser.ts +5 -1
- package/src/date_serializer.ts +4 -0
- package/src/date_types.ts +10 -0
- package/src/generate_samples.ts +201 -298
- package/src/number_parser.ts +9 -58
- package/src/number_serializer.ts +14 -14
- package/src/string_parser.ts +29 -21
- package/src/string_serializer.ts +54 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number_parser.js","sourceRoot":"","sources":["../src/number_parser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"number_parser.js","sourceRoot":"","sources":["../src/number_parser.ts"],"names":[],"mappings":";;;AAAA,2CAAqE;AAUrE,+CAAyC;AAGzC,MAAa,YAAa,SAAQ,wBAAU;IAC1C,YAAY,KAAa;QACvB,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEO,QAAQ;QACd,MAAM,iBAAiB,GAAmB;YACxC,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC;YACvB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC;YACvB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC;YACvB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC;YACvB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC;YACvB,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC;YACzB,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC;YACzB,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC;YACzB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC;YACvB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC;YACvB,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC;SACxB,CAAC;QACF,MAAM,YAAY,GAAG;YACnB,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAC;YACnD,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAC;SAChD,CAAC;QACF,MAAM,MAAM,GAAoB;YAC9B,kBAAkB,EAAE,IAAI;YACxB,oBAAoB,EAAE,KAAK;YAC3B,iBAAiB,EAAE,IAAI;YACvB,iBAAiB;YACjB,YAAY;SACb,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,OAAO,GAAmB,EAAE,CAAC;QACjC,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;gBACtB,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;iBAAM,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACxC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aAC1D;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;gBACnE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aACzD;iBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;gBAClC,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;iBAAM,IACL,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC1C,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC1C,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC;gBACzC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC;gBACzC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC1C,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,EACzC;gBACA,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;aACjB;iBAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;gBAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;iBAAM;gBACL,MAAM,CAAC,IAAI,CAAC;oBACV,OAAO,EAAE,oBAAoB;oBAC7B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC,CAAC;gBACH,IAAI,CAAC,KAAK,EAAE,CAAC;aACd;SACF;QACD,OAAO,EAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,EAAC,CAAC;IAC/D,CAAC;IAEO,MAAM,CAAC,YAAY,CAAC,OAAuB;QACjD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO,OAAO,CAAC;SAChB;QACD,IAAI,QAAQ,GAA6B,SAAS,CAAC;QACnD,MAAM,OAAO,GAAmB,EAAE,CAAC;QACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,MAAM,GAAiB,OAAO,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,EAAE;gBAC/B,QAAQ,GAAG,SAAS,CAAC;gBACrB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtB;iBAAM,IACL,QAAQ,KAAK,SAAS;gBACtB,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;gBACrC,QAAQ,IAAI,QAAQ;gBACpB,QAAQ,IAAI,MAAM,EAClB;gBACA,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;aACxC;iBAAM;gBACL,QAAQ,GAAG,MAAM,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtB;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,WAAW,CAAC,UAAoB;QACtC,OAAO,wBAAU,CAAC,eAAe,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC;IAEO,UAAU,CAChB,KAAY,EACZ,OAAgB,EAChB,OAAuB,EACvB,MAAqB;QAErB,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;YACrD,OAAO,OAAO;gBACZ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC;gBAC9C,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SACpD;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;YAC5D,OAAO,OAAO;gBACZ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SACnD;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;YAC5D,OAAO,OAAO;gBACZ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SACnD;aAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,EAAE;YAC5D,OAAO,OAAO;gBACZ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;gBAChD,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SAClD;aAAM;YACL,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,0BAA0B;gBACnC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,YAAY,CAAC,QAAgB;QACnC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClD,OAAO,KAAK,CAAC;SACd;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QAC7C,OAAO,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,CAAC;IAChD,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,KAAa;QACtC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;YACjC,OAAO,QAAQ,CAAC;SACjB;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YACzC,OAAO,CAAC,QAAQ,CAAC;SAClB;aAAM;YACL,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,KAAa;QACxC,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC;IACvC,CAAC;IAEO,YAAY,CAClB,aAAkC,EAClC,WAAgC,EAChC,OAAuB,EACvB,MAAqB;QAErB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAW,YAAY,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAW,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE;YAC3C,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,gBAAgB;gBACzB,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,QAAQ,EAAE,UAAU,CAAC,QAAQ;aAC9B,CAAC,CAAC;SACJ;aAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;YAChD,MAAM,CAAC,IAAI,CAAC;gBACV,OAAO,EAAE,gBAAgB;gBACzB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;aAC5B,CAAC,CAAC;SACJ;aAAM;YACL,MAAM,MAAM,GAAgB;gBAC1B,QAAQ,EAAE,OAAO;gBACjB,aAAa,EAAE,aAAa;gBAC5B,UAAU,EAAE,UAAU;gBACtB,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,QAAQ;aACnB,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACtB;QACD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,sBAAsB,CAC5B,SAAyB,EACzB,OAAuB;QAEvB,IACE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,SAAS;YACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EACnC;YACA,MAAM,YAAY,GAAW,YAAY,CAAC,WAAW,CACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CACjC,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACd;YACD,MAAM,MAAM,GAAoB;gBAC9B,QAAQ,EAAE,SAAS;gBACnB,MAAM,EAAE,CAAC,YAAY,CAAC;aACvB,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,iBAAiB,CAAC,OAAuB;QAC/C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE;YAClC,MAAM,YAAY,GAAW,YAAY,CAAC,WAAW,CACnD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAC7B,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACd;YACD,MAAM,MAAM,GAAoB,EAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,YAAY,CAAC,EAAC,CAAC;YACxE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,SAAS,CAAC,OAAuB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,OAAO,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE;YAC7B,OAAO,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AArPD,oCAqPC"}
|
|
@@ -10,12 +10,10 @@ class NumberSerializer {
|
|
|
10
10
|
const result = NumberSerializer.clauseToString(this.clauses);
|
|
11
11
|
return result.trim().replace(/,$/, '');
|
|
12
12
|
}
|
|
13
|
-
// NumberOperator = '<=' | '>=' | '!=' | '=' | '>' | '<'
|
|
13
|
+
// NumberOperator = '<=' | '>=' | '!=' | '=' | '>' | '<'
|
|
14
14
|
static numberConditionToString(operator, value) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}
|
|
18
|
-
const operatorString = operator === '=' ? '' : operator; // Remove operator for eg "5, 7, 9"
|
|
15
|
+
// Remove operator for eg "5, 7, 9".
|
|
16
|
+
const operatorString = operator === '=' ? '' : operator;
|
|
19
17
|
return operatorString + value;
|
|
20
18
|
}
|
|
21
19
|
static getNegatedType(operator) {
|
|
@@ -53,21 +51,26 @@ class NumberSerializer {
|
|
|
53
51
|
static clauseToString(clauses) {
|
|
54
52
|
let result = '';
|
|
55
53
|
for (const clause of clauses) {
|
|
56
|
-
if ('operator' in clause
|
|
54
|
+
if (!('operator' in clause)) {
|
|
55
|
+
throw new Error('Invalid number clause ' + JSON.stringify(clause));
|
|
56
|
+
}
|
|
57
|
+
if (clause.operator === 'range') {
|
|
57
58
|
result += NumberSerializer.rangeToString(clause);
|
|
58
59
|
result += ', ';
|
|
59
60
|
}
|
|
60
|
-
else if (
|
|
61
|
-
|
|
61
|
+
else if (clause.operator === 'NULL') {
|
|
62
|
+
result += 'NULL, ';
|
|
63
|
+
}
|
|
64
|
+
else if (clause.operator === 'NOTNULL') {
|
|
65
|
+
result += '-NULL, ';
|
|
66
|
+
}
|
|
67
|
+
else if (NumberSerializer.isNumberOperator(clause.operator)) {
|
|
62
68
|
const numberClause = clause;
|
|
63
69
|
for (const value of numberClause.values) {
|
|
64
70
|
result += NumberSerializer.numberConditionToString(numberClause.operator, value);
|
|
65
71
|
result += ', ';
|
|
66
72
|
}
|
|
67
73
|
}
|
|
68
|
-
else {
|
|
69
|
-
throw new Error('Invalid number clause ' + JSON.stringify(clause));
|
|
70
|
-
}
|
|
71
74
|
}
|
|
72
75
|
return result;
|
|
73
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number_serializer.js","sourceRoot":"","sources":["../src/number_serializer.ts"],"names":[],"mappings":";;;AAQA,MAAa,gBAAgB;IAC3B,YAAoB,OAAuB;QAAvB,YAAO,GAAP,OAAO,CAAgB;QACzC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,SAAS;QACd,MAAM,MAAM,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"number_serializer.js","sourceRoot":"","sources":["../src/number_serializer.ts"],"names":[],"mappings":"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"}
|
package/dist/string_parser.js
CHANGED
|
@@ -35,20 +35,11 @@ class StringParser extends base_parser_1.BaseParser {
|
|
|
35
35
|
if (token.type === ',') {
|
|
36
36
|
this.index++;
|
|
37
37
|
}
|
|
38
|
-
else if (token.type === 'NULL'
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
clauses.push({ operator: 'EMPTY', values: [null] });
|
|
44
|
-
this.index++;
|
|
45
|
-
}
|
|
46
|
-
else if (token.type === 'NOTNULL') {
|
|
47
|
-
clauses.push({ operator: '!=', values: [null] });
|
|
48
|
-
this.index++;
|
|
49
|
-
}
|
|
50
|
-
else if (token.type === 'NOTEMPTY') {
|
|
51
|
-
clauses.push({ operator: 'NOTEMPTY', values: [null] });
|
|
38
|
+
else if (token.type === 'NULL' ||
|
|
39
|
+
token.type === 'NOTNULL' ||
|
|
40
|
+
token.type === 'EMPTY' ||
|
|
41
|
+
token.type === 'NOTEMPTY') {
|
|
42
|
+
clauses.push({ operator: token.type });
|
|
52
43
|
this.index++;
|
|
53
44
|
}
|
|
54
45
|
else if (this.checkSimpleWord(clauses)) {
|
|
@@ -63,7 +54,15 @@ class StringParser extends base_parser_1.BaseParser {
|
|
|
63
54
|
this.index++;
|
|
64
55
|
}
|
|
65
56
|
}
|
|
66
|
-
|
|
57
|
+
const response = {
|
|
58
|
+
clauses: StringParser.groupClauses(clauses),
|
|
59
|
+
errors,
|
|
60
|
+
};
|
|
61
|
+
const quotes = StringParser.findQuotes(this.inputString);
|
|
62
|
+
if (quotes.length > 0) {
|
|
63
|
+
response.quotes = quotes;
|
|
64
|
+
}
|
|
65
|
+
return response;
|
|
67
66
|
}
|
|
68
67
|
static findQuotes(str) {
|
|
69
68
|
const quotes = new Set();
|
|
@@ -123,12 +122,15 @@ class StringParser extends base_parser_1.BaseParser {
|
|
|
123
122
|
let previous = clauses[0];
|
|
124
123
|
const outputs = [previous];
|
|
125
124
|
for (let i = 1; i < clauses.length; i++) {
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
const current = clauses[i];
|
|
126
|
+
if (previous.operator === current.operator &&
|
|
127
|
+
'values' in previous &&
|
|
128
|
+
'values' in current) {
|
|
129
|
+
previous.values.push(...current.values);
|
|
128
130
|
}
|
|
129
131
|
else {
|
|
130
|
-
previous =
|
|
131
|
-
outputs.push(
|
|
132
|
+
previous = current;
|
|
133
|
+
outputs.push(current);
|
|
132
134
|
}
|
|
133
135
|
}
|
|
134
136
|
return outputs;
|
|
@@ -182,8 +184,6 @@ class StringParser extends base_parser_1.BaseParser {
|
|
|
182
184
|
return false;
|
|
183
185
|
}
|
|
184
186
|
const clause = { operator: operator, values: [word] };
|
|
185
|
-
//const quotes: QuoteType[] = StringParser.findQuotes(word);
|
|
186
|
-
//if (quotes.length > 0) { clause.quotes = quotes; }
|
|
187
187
|
clauses.push(clause);
|
|
188
188
|
return true;
|
|
189
189
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string_parser.js","sourceRoot":"","sources":["../src/string_parser.ts"],"names":[],"mappings":";;;AAAA,2CAAqE;
|
|
1
|
+
{"version":3,"file":"string_parser.js","sourceRoot":"","sources":["../src/string_parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export declare class StringSerializer {
|
|
|
6
6
|
private static isNegated;
|
|
7
7
|
private static escapeSpecialCharacters;
|
|
8
8
|
private static escapeWildcardCharacters;
|
|
9
|
+
private static StringConditionWordToString;
|
|
9
10
|
private static StringClauseToString;
|
|
10
11
|
private static clauseToString;
|
|
11
12
|
}
|
|
@@ -11,8 +11,7 @@ class StringSerializer {
|
|
|
11
11
|
return result.trim().replace(/,$/, '');
|
|
12
12
|
}
|
|
13
13
|
static isNegated(operator) {
|
|
14
|
-
return (operator === '
|
|
15
|
-
operator === '!~' ||
|
|
14
|
+
return (operator === '!~' ||
|
|
16
15
|
operator === '!=' ||
|
|
17
16
|
operator === 'notStarts' ||
|
|
18
17
|
operator === 'notEnds' ||
|
|
@@ -24,19 +23,11 @@ class StringSerializer {
|
|
|
24
23
|
static escapeWildcardCharacters(input) {
|
|
25
24
|
return input.replace(/[_%]/g, match => `\\${match}`);
|
|
26
25
|
}
|
|
27
|
-
// export type StringOperator =
|
|
28
|
-
// '
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return 'EMPTY';
|
|
32
|
-
}
|
|
33
|
-
else if (operator === 'NOTEMPTY') {
|
|
34
|
-
return '-EMPTY';
|
|
35
|
-
}
|
|
26
|
+
// export type StringOperator =
|
|
27
|
+
// | 'starts' | 'ends' | 'contains' | 'notStarts' | 'notEnds' | 'notContains'
|
|
28
|
+
// | '~' | '=' | '!~' | '!=';
|
|
29
|
+
static StringConditionWordToString(operator, value) {
|
|
36
30
|
const negated = StringSerializer.isNegated(operator);
|
|
37
|
-
if (value === null) {
|
|
38
|
-
return negated ? '-NULL' : 'NULL';
|
|
39
|
-
}
|
|
40
31
|
if (value === 'NULL' || value === '-NULL') {
|
|
41
32
|
return (negated ? '-' : '') + '\\' + value;
|
|
42
33
|
}
|
|
@@ -59,15 +50,38 @@ class StringSerializer {
|
|
|
59
50
|
}
|
|
60
51
|
return (negated ? '-' : '') + value;
|
|
61
52
|
}
|
|
53
|
+
static StringClauseToString(operator, clause) {
|
|
54
|
+
if (operator === 'EMPTY') {
|
|
55
|
+
return 'EMPTY';
|
|
56
|
+
}
|
|
57
|
+
else if (operator === 'NOTEMPTY') {
|
|
58
|
+
return '-EMPTY';
|
|
59
|
+
}
|
|
60
|
+
else if (operator === 'NULL') {
|
|
61
|
+
return 'NULL';
|
|
62
|
+
}
|
|
63
|
+
else if (operator === 'NOTNULL') {
|
|
64
|
+
return '-NULL';
|
|
65
|
+
}
|
|
66
|
+
if (!('values' in clause) || clause.values.length === 0) {
|
|
67
|
+
return '';
|
|
68
|
+
}
|
|
69
|
+
let result = '';
|
|
70
|
+
const condition = clause;
|
|
71
|
+
for (const value of condition.values) {
|
|
72
|
+
const word = StringSerializer.StringConditionWordToString(condition.operator, value);
|
|
73
|
+
if (word) {
|
|
74
|
+
result += word + ', ';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return result.trim().replace(/,$/, '');
|
|
78
|
+
}
|
|
62
79
|
static clauseToString(clauses) {
|
|
63
80
|
let result = '';
|
|
64
|
-
for (const
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (word) {
|
|
69
|
-
result += word + ', ';
|
|
70
|
-
}
|
|
81
|
+
for (const clause of clauses) {
|
|
82
|
+
const words = StringSerializer.StringClauseToString(clause.operator, clause);
|
|
83
|
+
if (words) {
|
|
84
|
+
result += words + ', ';
|
|
71
85
|
}
|
|
72
86
|
}
|
|
73
87
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string_serializer.js","sourceRoot":"","sources":["../src/string_serializer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"string_serializer.js","sourceRoot":"","sources":["../src/string_serializer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/DEVELOPING.md
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
# Testing
|
|
2
2
|
|
|
3
|
-
The `malloy-filter` tests use Jest.
|
|
3
|
+
The `malloy-filter` tests use Jest.
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
npm
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
## Tokenizer Testing
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
npm run test:tokenizer
|
|
6
|
+
npm run build
|
|
7
|
+
npm run test
|
|
13
8
|
```
|
|
14
9
|
|
|
15
10
|
# generate_samples
|
|
@@ -22,5 +17,3 @@ To create the samples:
|
|
|
22
17
|
npm run build
|
|
23
18
|
npm run samples
|
|
24
19
|
```
|
|
25
|
-
|
|
26
|
-
Comment/uncomment individual lines in `generateSamples()` to enable/disable sample generation for the different parsers.
|
package/src/boolean_parser.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {SpecialToken, Tokenizer, TokenizerParams} from './tokenizer';
|
|
2
2
|
import {
|
|
3
3
|
BooleanClause,
|
|
4
|
-
BooleanOperator,
|
|
5
4
|
BooleanParserResponse,
|
|
6
5
|
FilterError,
|
|
7
6
|
} from './clause_types';
|
|
@@ -18,7 +17,8 @@ export class BooleanParser extends BaseParser {
|
|
|
18
17
|
{type: 'NULL', value: 'null', ignoreCase: true},
|
|
19
18
|
{type: 'NOTNULL', value: '-null', ignoreCase: true},
|
|
20
19
|
{type: 'TRUE', value: 'true', ignoreCase: true},
|
|
21
|
-
{type: 'FALSE', value: 'false', ignoreCase: true},
|
|
20
|
+
{type: 'FALSE', value: '=false', ignoreCase: true},
|
|
21
|
+
{type: 'FALSEORNULL', value: 'false', ignoreCase: true},
|
|
22
22
|
];
|
|
23
23
|
const params: TokenizerParams = {
|
|
24
24
|
trimWordWhitespace: true,
|
|
@@ -45,9 +45,10 @@ export class BooleanParser extends BaseParser {
|
|
|
45
45
|
token.type === 'NULL' ||
|
|
46
46
|
token.type === 'TRUE' ||
|
|
47
47
|
token.type === 'FALSE' ||
|
|
48
|
+
token.type === 'FALSEORNULL' ||
|
|
48
49
|
token.type === 'NOTNULL'
|
|
49
50
|
) {
|
|
50
|
-
const clause: BooleanClause = {operator: token.type
|
|
51
|
+
const clause: BooleanClause = {operator: token.type};
|
|
51
52
|
clauses.push(clause);
|
|
52
53
|
this.index++;
|
|
53
54
|
} else {
|
|
@@ -11,7 +11,15 @@ export class BooleanSerializer {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
private static booleanClauseToString(clause: BooleanClause): string {
|
|
14
|
-
|
|
14
|
+
switch (clause.operator) {
|
|
15
|
+
case 'NOTNULL':
|
|
16
|
+
return '-NULL';
|
|
17
|
+
case 'FALSEORNULL':
|
|
18
|
+
return 'FALSE';
|
|
19
|
+
case 'FALSE':
|
|
20
|
+
return '=FALSE';
|
|
21
|
+
}
|
|
22
|
+
return clause.operator;
|
|
15
23
|
}
|
|
16
24
|
|
|
17
25
|
private static clauseToString(clauses: BooleanClause[]): string {
|
package/src/clause_types.ts
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
export type NumberOperator = '<=' | '>=' | '!=' | '=' | '>' | '<';
|
|
2
2
|
|
|
3
|
-
export type NumberValue = number
|
|
3
|
+
export type NumberValue = number;
|
|
4
4
|
|
|
5
5
|
export interface NumberCondition {
|
|
6
6
|
operator: NumberOperator;
|
|
7
7
|
values: NumberValue[];
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
+
export interface NumberNull {
|
|
11
|
+
operator: 'NULL';
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface NumberNotNull {
|
|
15
|
+
operator: 'NOTNULL';
|
|
16
|
+
}
|
|
17
|
+
|
|
10
18
|
export type NumberRangeOperator = '<=' | '>=' | '>' | '<';
|
|
11
19
|
|
|
12
20
|
export interface NumberRange {
|
|
@@ -17,19 +25,13 @@ export interface NumberRange {
|
|
|
17
25
|
endValue: NumberValue;
|
|
18
26
|
}
|
|
19
27
|
|
|
20
|
-
export type
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
| 'TRIPLEDOUBLE'
|
|
26
|
-
| 'ESCAPEDSINGLE'
|
|
27
|
-
| 'ESCAPEDDOUBLE'
|
|
28
|
-
| 'ESCAPEDBACKTICK';
|
|
28
|
+
export type NumberClause =
|
|
29
|
+
| NumberCondition
|
|
30
|
+
| NumberRange
|
|
31
|
+
| NumberNull
|
|
32
|
+
| NumberNotNull;
|
|
29
33
|
|
|
30
|
-
export type
|
|
31
|
-
| 'EMPTY'
|
|
32
|
-
| 'NOTEMPTY'
|
|
34
|
+
export type StringConditionOperator =
|
|
33
35
|
| 'starts'
|
|
34
36
|
| 'ends'
|
|
35
37
|
| 'contains'
|
|
@@ -41,22 +43,47 @@ export type StringOperator =
|
|
|
41
43
|
| '!~'
|
|
42
44
|
| '!=';
|
|
43
45
|
|
|
44
|
-
export type StringValue = string
|
|
46
|
+
export type StringValue = string;
|
|
45
47
|
|
|
46
|
-
export interface
|
|
47
|
-
operator:
|
|
48
|
+
export interface StringCondition {
|
|
49
|
+
operator: StringConditionOperator;
|
|
48
50
|
values: StringValue[];
|
|
49
|
-
quotes?: QuoteType[]; // List of quote types found in the string.
|
|
50
51
|
}
|
|
51
52
|
|
|
52
|
-
export
|
|
53
|
+
export interface StringNull {
|
|
54
|
+
operator: 'NULL';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface StringNotNull {
|
|
58
|
+
operator: 'NOTNULL';
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export interface StringEmpty {
|
|
62
|
+
operator: 'EMPTY';
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface StringNotEmpty {
|
|
66
|
+
operator: 'NOTEMPTY';
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export type StringClause =
|
|
70
|
+
| StringCondition
|
|
71
|
+
| StringNull
|
|
72
|
+
| StringNotNull
|
|
73
|
+
| StringEmpty
|
|
74
|
+
| StringNotEmpty;
|
|
75
|
+
|
|
76
|
+
export type BooleanOperator =
|
|
77
|
+
| 'TRUE'
|
|
78
|
+
| 'FALSE'
|
|
79
|
+
| 'FALSEORNULL'
|
|
80
|
+
| 'NULL'
|
|
81
|
+
| 'NOTNULL';
|
|
53
82
|
|
|
54
83
|
export interface BooleanClause {
|
|
55
84
|
operator: BooleanOperator;
|
|
56
85
|
}
|
|
57
86
|
|
|
58
|
-
export type NumberClause = NumberCondition | NumberRange;
|
|
59
|
-
|
|
60
87
|
export interface FilterError {
|
|
61
88
|
message: string;
|
|
62
89
|
startIndex: number;
|
|
@@ -72,7 +99,19 @@ export interface NumberParserResponse {
|
|
|
72
99
|
clauses: NumberClause[];
|
|
73
100
|
errors: FilterError[];
|
|
74
101
|
}
|
|
102
|
+
|
|
103
|
+
export type QuoteType =
|
|
104
|
+
| 'SINGLE'
|
|
105
|
+
| 'DOUBLE'
|
|
106
|
+
| 'BACKTICK'
|
|
107
|
+
| 'TRIPLESINGLE'
|
|
108
|
+
| 'TRIPLEDOUBLE'
|
|
109
|
+
| 'ESCAPEDSINGLE'
|
|
110
|
+
| 'ESCAPEDDOUBLE'
|
|
111
|
+
| 'ESCAPEDBACKTICK';
|
|
112
|
+
|
|
75
113
|
export interface StringParserResponse {
|
|
76
114
|
clauses: StringClause[];
|
|
77
115
|
errors: FilterError[];
|
|
116
|
+
quotes?: QuoteType[]; // List of quote types found in the string.
|
|
78
117
|
}
|
package/src/date_parser.ts
CHANGED
|
@@ -168,7 +168,9 @@ export class DateParser extends BaseParser {
|
|
|
168
168
|
prefix = undefined;
|
|
169
169
|
} else {
|
|
170
170
|
errors.push({
|
|
171
|
-
message:
|
|
171
|
+
message:
|
|
172
|
+
'Invalid token ' + token.value ||
|
|
173
|
+
(token.values ? token.values.join(' ') : ''),
|
|
172
174
|
startIndex: token.startIndex,
|
|
173
175
|
endIndex: token.endIndex,
|
|
174
176
|
});
|
|
@@ -440,6 +442,8 @@ export class DateParser extends BaseParser {
|
|
|
440
442
|
}
|
|
441
443
|
clauses.push(clause);
|
|
442
444
|
return true;
|
|
445
|
+
} else if (token.type === 'NULL' || token.type === 'NOTNULL') {
|
|
446
|
+
clauses.push({operator: token.type});
|
|
443
447
|
}
|
|
444
448
|
return false;
|
|
445
449
|
}
|
package/src/date_serializer.ts
CHANGED
|
@@ -64,6 +64,10 @@ export class DateSerializer {
|
|
|
64
64
|
return 'AFTER ' + DateSerializer.dateMomentToString(clause.moment);
|
|
65
65
|
} else if (clause.operator === 'ON') {
|
|
66
66
|
return DateSerializer.dateMomentToString(clause.moment);
|
|
67
|
+
} else if (clause.operator === 'NULL') {
|
|
68
|
+
return 'NULL';
|
|
69
|
+
} else if (clause.operator === 'NOTNULL') {
|
|
70
|
+
return '-NULL';
|
|
67
71
|
} else if (clause.operator === 'DURATION') {
|
|
68
72
|
return clause.duration.amount + ' ' + clause.duration.unit;
|
|
69
73
|
} else {
|
package/src/date_types.ts
CHANGED
|
@@ -129,6 +129,14 @@ export interface DateForClause {
|
|
|
129
129
|
duration: Duration;
|
|
130
130
|
}
|
|
131
131
|
|
|
132
|
+
export interface DateNullClause {
|
|
133
|
+
operator: 'NULL';
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export interface DateNotNullClause {
|
|
137
|
+
operator: 'NOTNULL';
|
|
138
|
+
}
|
|
139
|
+
|
|
132
140
|
// 3 days
|
|
133
141
|
export interface DateDurationClause {
|
|
134
142
|
operator: 'DURATION';
|
|
@@ -141,6 +149,8 @@ export type DateClause =
|
|
|
141
149
|
| DateOnClause
|
|
142
150
|
| DateBetweenClause
|
|
143
151
|
| DateForClause
|
|
152
|
+
| DateNullClause
|
|
153
|
+
| DateNotNullClause
|
|
144
154
|
| DateDurationClause;
|
|
145
155
|
|
|
146
156
|
export interface DateParserResponse {
|