From 415a40ea046951b36f423f9a493a1b5433ff1bbe Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sun, 5 Jan 2025 20:25:48 +0100 Subject: [PATCH] FilterParser: Ignore space after operator --- src/filterparser/filterparser.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/filterparser/filterparser.cpp b/src/filterparser/filterparser.cpp index 221b99275..cb2494170 100644 --- a/src/filterparser/filterparser.cpp +++ b/src/filterparser/filterparser.cpp @@ -188,8 +188,15 @@ FilterTree *FilterParser::parseSearchTerm() { QString value; bool in_quotes = false; + bool previous_char_operator = false; for (; iter_ != end_; ++iter_) { + if (previous_char_operator) { + if (iter_->isSpace()) { + continue; + } + previous_char_operator = false; + } if (in_quotes) { if (*iter_ == u'"') { in_quotes = false; @@ -206,6 +213,7 @@ FilterTree *FilterParser::parseSearchTerm() { column = buf_.toLower(); buf_.clear(); prefix.clear(); // Prefix isn't allowed here - let's ignore it + previous_char_operator = true; } else if (iter_->isSpace() || *iter_ == u'(' || *iter_ == u')' || *iter_ == u'-') { break; @@ -214,9 +222,11 @@ FilterTree *FilterParser::parseSearchTerm() { // We don't know whether there is a column part in this search term thus we assume the latter and just try and read a prefix if (prefix.isEmpty() && (*iter_ == u'>' || *iter_ == u'<' || *iter_ == u'=' || *iter_ == u'!')) { prefix += *iter_; + previous_char_operator = true; } else if (prefix != u'=' && *iter_ == u'=') { prefix += *iter_; + previous_char_operator = true; } else { buf_ += *iter_;