summaryrefslogtreecommitdiffstats
path: root/api/logic/Filter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'api/logic/Filter.cpp')
-rw-r--r--api/logic/Filter.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/api/logic/Filter.cpp b/api/logic/Filter.cpp
new file mode 100644
index 00000000..7f6667ae
--- /dev/null
+++ b/api/logic/Filter.cpp
@@ -0,0 +1,31 @@
+#include "Filter.h"
+
+Filter::~Filter(){}
+
+ContainsFilter::ContainsFilter(const QString& pattern) : pattern(pattern){}
+ContainsFilter::~ContainsFilter(){}
+bool ContainsFilter::accepts(const QString& value)
+{
+ return value.contains(pattern);
+}
+
+ExactFilter::ExactFilter(const QString& pattern) : pattern(pattern){}
+ExactFilter::~ExactFilter(){}
+bool ExactFilter::accepts(const QString& value)
+{
+ return value.contains(pattern);
+}
+
+RegexpFilter::RegexpFilter(const QString& regexp, bool invert)
+ :invert(invert)
+{
+ pattern.setPattern(regexp);
+ pattern.optimize();
+}
+RegexpFilter::~RegexpFilter(){}
+bool RegexpFilter::accepts(const QString& value)
+{
+ auto match = pattern.match(value);
+ bool matched = match.hasMatch();
+ return invert ? (!matched) : (matched);
+}