/** 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); }