aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
diff options
context:
space:
mode:
authorvlad <vlad@driver.xyz>2017-10-11 16:37:31 -0700
committervlad <vlad@driver.xyz>2017-10-11 16:37:31 -0700
commit22b4cd7b924f27231ed92c950cee6abe8a3cd5c9 (patch)
tree60017603a192d9c5347d4d467e9e442ec3e15549 /src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
parent3375f1beeab7af9a6732d6fce8762c3a3038e1f3 (diff)
downloadrest-query-22b4cd7b924f27231ed92c950cee6abe8a3cd5c9.tar.gz
rest-query-22b4cd7b924f27231ed92c950cee6abe8a3cd5c9.tar.bz2
rest-query-22b4cd7b924f27231ed92c950cee6abe8a3cd5c9.zip
Support for boolean filters
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
index e46e11c..2b89831 100644
--- a/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
+++ b/src/main/scala/xyz/driver/pdsuicommon/parsers/SearchFilterParser.scala
@@ -104,9 +104,12 @@ object SearchFilterParser {
private val longParser: Parser[Long] = P(CharIn('0' to '9').rep(min = 1).!.map(_.toLong))
+ private val booleanParser: Parser[Boolean] =
+ P((IgnoreCase("true") | IgnoreCase("false")).!.map(_.toBoolean))
+
private val binaryAtomParser: Parser[SearchFilterExpr.Atom.Binary] = P(
dimensionParser ~ whitespaceParser ~ (
- (numericOperatorParser.! ~ whitespaceParser ~ (longParser | numberParser.!)) |
+ (numericOperatorParser.! ~ whitespaceParser ~ (longParser | booleanParser | numberParser.!)) |
(commonOperatorParser.! ~ whitespaceParser ~ AnyChar.rep(min = 1).!)
) ~ End
).map {
@@ -116,7 +119,7 @@ object SearchFilterParser {
private val nAryAtomParser: Parser[SearchFilterExpr.Atom.NAry] = P(
dimensionParser ~ whitespaceParser ~ (
naryOperatorParser ~ whitespaceParser ~
- (longParser.rep(min = 1, sep = ",") | nAryValueParser.!.rep(min = 1, sep = ","))
+ (longParser.rep(min = 1, sep = ",") | booleanParser.rep(min = 1, sep = ",") | nAryValueParser.!.rep(min = 1, sep = ","))
) ~ End
).map {
case NAryAtomFromTuple(atom) => atom