aboutsummaryrefslogtreecommitdiff
path: root/src/blocker/regexp.cpp
diff options
context:
space:
mode:
authorAqua-sama <aqua@iserlohn-fortress.net>2017-02-28 10:18:08 +0100
committerAqua-sama <aqua@iserlohn-fortress.net>2017-02-28 10:18:08 +0100
commit7f6c9b22d1016aa0dba709495fabf41397676039 (patch)
tree35898077b84be953c0645262aaa9470802b5267b /src/blocker/regexp.cpp
parentFixed crash when closing the first tab (diff)
downloadsmolbote-7f6c9b22d1016aa0dba709495fabf41397676039.tar.xz
Blocker rewrites
Some code commenting Moved Blocker files for src/blocker Keyboard shortcut for Blocker dialog
Diffstat (limited to 'src/blocker/regexp.cpp')
-rw-r--r--src/blocker/regexp.cpp70
1 files changed, 70 insertions, 0 deletions
diff --git a/src/blocker/regexp.cpp b/src/blocker/regexp.cpp
new file mode 100644
index 0000000..a8dff79
--- /dev/null
+++ b/src/blocker/regexp.cpp
@@ -0,0 +1,70 @@
+/** 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
+{
+ // Empty matches all
+ 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);
+}