FilterParser: Ignore space after operator

This commit is contained in:
Jonas Kvinge
2025-01-05 20:25:48 +01:00
parent 6e7aaed4ee
commit 415a40ea04

View File

@@ -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_;