From 9253ffc584d4983527862a63672efcb039528a25 Mon Sep 17 00:00:00 2001 From: Zaid Abdulla Date: Sun, 14 Jan 2018 19:43:17 -0800 Subject: [PATCH] Parse query functions --- server/filter-parser.js | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/server/filter-parser.js b/server/filter-parser.js index 080143a..2b38e19 100644 --- a/server/filter-parser.js +++ b/server/filter-parser.js @@ -98,8 +98,26 @@ const lang = parsimmon.createLanguage({ .map(Number) .desc("number"); }, + FuncValue: function(r) { + return parsimmon.seqMap( + parsimmon + .regexp(/([a-zA-Z0-0_]+)/, 1) + .skip(r._) + .desc("function"), + r.Value.sepBy(parsimmon.string(",").skip(r._)).wrap( + parsimmon.string("(").skip(r._), + parsimmon.string(")").skip(r._) + ), + (f, args) => ["FUNC", f.toUpperCase()].concat(args) + ); + }, Value: function(r) { - return parsimmon.alt(r.NumberValue, r.StringValueSql, r.StringValueJs); + return parsimmon.alt( + r.NumberValue, + r.StringValueSql, + r.StringValueJs, + r.FuncValue + ); }, Comparison: function(r) { return parsimmon.alt(