shared: Introduce WildcardMatcher

This commit is contained in:
Albert S. 2022-05-31 10:13:34 +02:00
parent 145cd150b1
commit edc41d6f59
3 changed files with 50 additions and 2 deletions

View File

@ -52,7 +52,8 @@ SOURCES += sqlitesearch.cpp \
sqlitedbservice.cpp \
tagstripperprocessor.cpp \
utils.cpp \
../submodules/exile.h/exile.c
../submodules/exile.h/exile.c \
wildcardmatcher.cpp
HEADERS += sqlitesearch.h \
concurrentqueue.h \
@ -81,7 +82,8 @@ HEADERS += sqlitesearch.h \
tagstripperprocessor.h \
token.h \
common.h \
utils.h
utils.h \
wildcardmatcher.h
unix {
target.path = /usr/lib
INSTALLS += target

View File

@ -0,0 +1,29 @@
#include "wildcardmatcher.h"
void WildcardMatcher::setPatterns(QStringList patterns)
{
this->regexes.clear();
for(QString &str : patterns)
{
QRegExp regexp;
regexp.setPattern(str);
regexp.setPatternSyntax(QRegExp::WildcardUnix);
this->regexes.append(regexp);
}
}
WildcardMatcher::WildcardMatcher()
{
}
bool WildcardMatcher::match(QString haystack) const
{
for(const QRegExp &regexp : this->regexes)
{
if(regexp.exactMatch(haystack))
{
return true;
}
}
return false;
}

17
shared/wildcardmatcher.h Normal file
View File

@ -0,0 +1,17 @@
#ifndef WILDCARDMATCHER_H
#define WILDCARDMATCHER_H
#include <QStringList>
#include <QRegExp>
class WildcardMatcher
{
private:
QVector<QRegExp> regexes;
QStringList patterns;
public:
WildcardMatcher();
bool match(QString haystack) const;
void setPatterns(QStringList patterns);
};
#endif // WILDCARDMATCHER_H