summaryrefslogtreecommitdiff
path: root/src/desktop/rule/matchEngine/RegexMatchEngine.cpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2025-11-17 18:34:02 +0000
committerGitHub <noreply@github.com>2025-11-17 18:34:02 +0000
commitc2670e9ab90bd657e87a1da2c5322e9007dce01f (patch)
treecd033fe3a9b87b1b0d457df043ecc50929ad3c8d /src/desktop/rule/matchEngine/RegexMatchEngine.cpp
parent95ee08b3403b90e2930d46425cada1d280f3524e (diff)
windowrules: rewrite completely (#12269)
Reworks the window rule syntax completely --------- Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
Diffstat (limited to 'src/desktop/rule/matchEngine/RegexMatchEngine.cpp')
-rw-r--r--src/desktop/rule/matchEngine/RegexMatchEngine.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/desktop/rule/matchEngine/RegexMatchEngine.cpp b/src/desktop/rule/matchEngine/RegexMatchEngine.cpp
new file mode 100644
index 00000000..14e30af1
--- /dev/null
+++ b/src/desktop/rule/matchEngine/RegexMatchEngine.cpp
@@ -0,0 +1,17 @@
+#include "RegexMatchEngine.hpp"
+#include <re2/re2.h>
+
+using namespace Desktop::Rule;
+
+CRegexMatchEngine::CRegexMatchEngine(const std::string& regex) {
+ if (regex.starts_with("negative:")) {
+ m_negative = true;
+ m_regex = makeUnique<re2::RE2>(regex.substr(9));
+ return;
+ }
+ m_regex = makeUnique<re2::RE2>(regex);
+}
+
+bool CRegexMatchEngine::match(const std::string& other) {
+ return re2::RE2::FullMatch(other, *m_regex) != m_negative;
+} \ No newline at end of file