aboutsummaryrefslogtreecommitdiff
path: root/src/webengine/regexp.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2017-02-05 15:12:45 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2017-02-05 15:12:45 +0100
commit6d39c105cb453fdf071b9e0471b4ab62d75adb17 (patch)
treec31e1cf1b3b34eabdcaac8ef61b491a319dee298 /src/webengine/regexp.cpp
parentMore blocklist options (diff)
downloadsmolbote-6d39c105cb453fdf071b9e0471b4ab62d75adb17.tar.xz
Added RegExp class for the Blocker
Diffstat (limited to 'src/webengine/regexp.cpp')
-rw-r--r--src/webengine/regexp.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/webengine/regexp.cpp b/src/webengine/regexp.cpp
new file mode 100644
index 0000000..4a5878a
--- /dev/null
+++ b/src/webengine/regexp.cpp
@@ -0,0 +1,68 @@
+/** LICENSE ********************************************************************
+ **
+ ** smolbote: yet another qute browser
+ ** Copyright (C) 2017 Xian Nox
+ **
+ ** This program is free software: you can redistribute it and/or modify
+ ** it under the terms of the GNU General Public License as published by
+ ** the Free Software Foundation, either version 3 of the License, or
+ ** (at your option) any later version.
+ **
+ ** This program is distributed in the hope that it will be useful,
+ ** but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ** GNU General Public License for more details.
+ **
+ ** You should have received a copy of the GNU General Public License
+ ** along with this program. If not, see <http://www.gnu.org/licenses/>.
+ **
+ ******************************************************************************/
+
+#include "regexp.h"
+
+RegExp::RegExp() :
+ QRegularExpression()
+{
+}
+
+bool RegExp::match(const QString &subject, int offset, MatchType matchType, MatchOptions matchOptions) const
+{
+ if(pattern().isEmpty()) {
+ return true;
+ }
+ return QRegularExpression::match(subject, offset, matchType, matchOptions).hasMatch();
+}
+
+void RegExp::setWildcardPattern(const QString &pattern)
+{
+ QString parsed;
+
+ for(int i=0; i<pattern.length(); i++) {
+ const QChar c = pattern.at(i);
+ switch (c.toLatin1()) {
+ case '*':
+ // remove * at the start and end
+ if(i != 0 && i != pattern.length()-1) {
+ parsed.append(".*");
+ }
+ break;
+ case '^':
+ parsed.append("(?:[^\\w\\d\\_\\-\\.\\%]|$)");
+ break;
+ case '|':
+ if(i == 0) {
+ // beginning of string
+ parsed.append('^');
+ } else {
+ // end of string
+ parsed.append('$');
+ }
+ break;
+ default:
+ parsed.append(c);
+ break;
+ }
+ }
+
+ setPattern(parsed);
+}