1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 02:36:34 +01:00

GreaseMonkey: Remove GM_UrlMatcher

This commit is contained in:
David Rosca 2016-02-28 18:29:23 +01:00
parent 3d5f45bfc5
commit 4f5d3193ae
5 changed files with 7 additions and 201 deletions

View File

@ -7,7 +7,6 @@ DEPENDPATH += settings\
SOURCES += gm_plugin.cpp \
gm_manager.cpp \
gm_script.cpp \
gm_urlmatcher.cpp \
gm_downloader.cpp \
gm_addscriptdialog.cpp \
gm_notification.cpp \
@ -22,7 +21,6 @@ SOURCES += gm_plugin.cpp \
HEADERS += gm_plugin.h \
gm_manager.h \
gm_script.h \
gm_urlmatcher.h \
gm_downloader.h \
gm_addscriptdialog.h \
gm_notification.h \

View File

@ -104,24 +104,12 @@ void GM_Script::setEnabled(bool enable)
QStringList GM_Script::include() const
{
QStringList list;
foreach (const GM_UrlMatcher &matcher, m_include) {
list.append(matcher.pattern());
}
return list;
return m_include;
}
QStringList GM_Script::exclude() const
{
QStringList list;
foreach (const GM_UrlMatcher &matcher, m_exclude) {
list.append(matcher.pattern());
}
return list;
return m_exclude;
}
QString GM_Script::script() const
@ -160,27 +148,6 @@ QWebEngineScript GM_Script::webScript() const
return script;
}
bool GM_Script::match(const QString &urlString)
{
if (!isEnabled()) {
return false;
}
foreach (const GM_UrlMatcher &matcher, m_exclude) {
if (matcher.match(urlString)) {
return false;
}
}
foreach (const GM_UrlMatcher &matcher, m_include) {
if (matcher.match(urlString)) {
return true;
}
}
return false;
}
void GM_Script::watchedFileChanged(const QString &file)
{
if (m_fileName == file) {
@ -268,10 +235,10 @@ void GM_Script::parseScript()
m_downloadUrl = QUrl(value);
}
else if (key == QLatin1String("@include") || key == QLatin1String("@match")) {
m_include.append(GM_UrlMatcher(value));
m_include.append(value);
}
else if (key == QLatin1String("@exclude") || key == QLatin1String("@exclude_match")) {
m_exclude.append(GM_UrlMatcher(value));
m_exclude.append(value);
}
else if (key == QLatin1String("@require")) {
requireList.append(value);
@ -296,7 +263,7 @@ void GM_Script::parseScript()
}
if (m_include.isEmpty()) {
m_include.append(GM_UrlMatcher("*"));
m_include.append(QSL("*"));
}
const QString nspace = QCryptographicHash::hash(fullName().toUtf8(), QCryptographicHash::Md4).toHex();

View File

@ -18,8 +18,6 @@
#ifndef GM_SCRIPT_H
#define GM_SCRIPT_H
#include "gm_urlmatcher.h"
#include <QObject>
#include <QVector>
#include <QUrl>
@ -27,7 +25,6 @@
class QWebEngineScript;
class GM_Manager;
class GM_UrlMatcher;
class DelayedFileWatcher;
@ -65,8 +62,6 @@ public:
QWebEngineScript webScript() const;
bool match(const QString &urlString);
signals:
void scriptChanged();
@ -84,8 +79,8 @@ private:
QString m_description;
QString m_version;
QVector<GM_UrlMatcher> m_include;
QVector<GM_UrlMatcher> m_exclude;
QStringList m_include;
QStringList m_exclude;
QUrl m_downloadUrl;
QUrl m_updateUrl;

View File

@ -1,106 +0,0 @@
/* ============================================================
* GreaseMonkey plugin for QupZilla
* Copyright (C) 2012-2014 David Rosca <nowrep@gmail.com>
*
* 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 "gm_urlmatcher.h"
#include <QStringList>
static bool wildcardMatch(const QString &string, const QString &pattern)
{
int stringSize = string.size();
int patternSize = pattern.size();
bool startsWithWildcard = pattern[0] == QLatin1Char('*');
bool endsWithWildcard = pattern[patternSize - 1] == QLatin1Char('*');
const QStringList parts = pattern.split(QLatin1Char('*'));
int pos = 0;
if (startsWithWildcard) {
pos = string.indexOf(parts.at(1));
if (pos == -1) {
return false;
}
}
foreach (const QString &part, parts) {
pos = string.indexOf(part, pos);
if (pos == -1) {
return false;
}
}
if (!endsWithWildcard && stringSize - pos != parts.last().size()) {
return false;
}
return true;
}
GM_UrlMatcher::GM_UrlMatcher()
: m_useRegExp(false)
{
}
GM_UrlMatcher::GM_UrlMatcher(const QString &pattern)
: m_pattern(pattern)
, m_useRegExp(false)
{
//parsePattern(m_pattern);
}
QString GM_UrlMatcher::pattern() const
{
return m_pattern;
}
bool GM_UrlMatcher::match(const QString &urlString) const
{
if (m_useRegExp) {
return m_regExp.indexIn(urlString) != -1;
}
else {
return wildcardMatch(urlString, m_matchString);
}
}
void GM_UrlMatcher::parsePattern(QString pattern)
{
if (pattern.startsWith(QLatin1Char('/')) && pattern.endsWith(QLatin1Char('/'))) {
pattern = pattern.mid(1);
pattern = pattern.left(pattern.size() - 1);
m_regExp = QzRegExp(pattern, Qt::CaseInsensitive);
m_useRegExp = true;
return;
}
if (pattern.contains(QLatin1String(".tld"))) {
pattern.replace(QzRegExp("(\\W)"), QLatin1String("\\\\1"))
.replace(QzRegExp("\\*+"), QLatin1String("*"))
.replace(QzRegExp("^\\\\\\|"), QLatin1String("^"))
.replace(QzRegExp("\\\\\\|$"), QLatin1String("$"))
.replace(QzRegExp("\\\\\\*"), QLatin1String(".*"))
.replace(QLatin1String("\\.tld"), QLatin1String("\\.[a-z.]{2,6}"));
m_useRegExp = true;
m_regExp = QzRegExp(pattern, Qt::CaseInsensitive);
}
else {
m_matchString = pattern;
}
}

View File

@ -1,48 +0,0 @@
/* ============================================================
* GreaseMonkey plugin for QupZilla
* Copyright (C) 2012-2014 David Rosca <nowrep@gmail.com>
*
* 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/>.
* ============================================================ */
#ifndef GM_URLMATCHER_H
#define GM_URLMATCHER_H
#include <QString>
#include "qzregexp.h"
class GM_UrlMatcher
{
public:
explicit GM_UrlMatcher();
GM_UrlMatcher(const QString &pattern);
QString pattern() const;
bool match(const QString &urlString) const;
private:
void parsePattern(QString pattern);
QString m_pattern;
QString m_matchString;
QzRegExp m_regExp;
bool m_useRegExp;
};
// Hint to QVector to use std::realloc on item moving
Q_DECLARE_TYPEINFO(GM_UrlMatcher, Q_MOVABLE_TYPE);
#endif // GM_URLMATCHER_H