This commit is contained in:
ebbit1q 2025-09-15 20:05:36 -07:00 committed by GitHub
commit 73f685fbc6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 4 deletions

View file

@ -389,6 +389,15 @@ FilterString::FilterString()
_error = "Not initialized"; _error = "Not initialized";
} }
void FilterString::logger(size_t ln, size_t col, const std::string &msg) {
if(ln == 0) {
_error = tr("Error at position %1: %2").arg(col).arg(QString::fromStdString(msg));
}else{
_error = tr("Error at line %1, position %2: %3").arg(ln).arg(col).arg(QString::fromStdString(msg));
}
}
FilterString::FilterString(const QString &expr) FilterString::FilterString(const QString &expr)
{ {
QByteArray ba = expr.simplified().toUtf8(); QByteArray ba = expr.simplified().toUtf8();
@ -402,9 +411,7 @@ FilterString::FilterString(const QString &expr)
return; return;
} }
search.set_logger([&](size_t /*ln*/, size_t col, const std::string &msg) { search.set_logger([this](size_t ln, size_t col, const std::string &msg){logger(ln, col, msg);});
_error = QString("Error at position %1: %2").arg(col).arg(QString::fromStdString(msg));
});
if (!search.parse(ba.data(), result)) { if (!search.parse(ba.data(), result)) {
qCInfo(FilterStringLog).nospace() << "FilterString error for " << expr << "; " << qPrintable(_error); qCInfo(FilterStringLog).nospace() << "FilterString error for " << expr << "; " << qPrintable(_error);

View file

@ -24,8 +24,10 @@ struct EmptyType;
typedef AstBase<EmptyType> Ast; typedef AstBase<EmptyType> Ast;
} // namespace peg } // namespace peg
class FilterString class FilterString : QObject
{ {
Q_OBJECT
public: public:
FilterString(); FilterString();
explicit FilterString(const QString &exp); explicit FilterString(const QString &exp);
@ -49,6 +51,8 @@ public:
} }
private: private:
void logger(size_t ln, size_t col, const std::string &msg);
QString _error; QString _error;
Filter result; Filter result;
}; };