mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 10:46:35 +01:00
GreaseMonkey: Remove GM_UrlMatcher
This commit is contained in:
parent
3d5f45bfc5
commit
4f5d3193ae
@ -7,7 +7,6 @@ DEPENDPATH += settings\
|
|||||||
SOURCES += gm_plugin.cpp \
|
SOURCES += gm_plugin.cpp \
|
||||||
gm_manager.cpp \
|
gm_manager.cpp \
|
||||||
gm_script.cpp \
|
gm_script.cpp \
|
||||||
gm_urlmatcher.cpp \
|
|
||||||
gm_downloader.cpp \
|
gm_downloader.cpp \
|
||||||
gm_addscriptdialog.cpp \
|
gm_addscriptdialog.cpp \
|
||||||
gm_notification.cpp \
|
gm_notification.cpp \
|
||||||
@ -22,7 +21,6 @@ SOURCES += gm_plugin.cpp \
|
|||||||
HEADERS += gm_plugin.h \
|
HEADERS += gm_plugin.h \
|
||||||
gm_manager.h \
|
gm_manager.h \
|
||||||
gm_script.h \
|
gm_script.h \
|
||||||
gm_urlmatcher.h \
|
|
||||||
gm_downloader.h \
|
gm_downloader.h \
|
||||||
gm_addscriptdialog.h \
|
gm_addscriptdialog.h \
|
||||||
gm_notification.h \
|
gm_notification.h \
|
||||||
|
@ -104,24 +104,12 @@ void GM_Script::setEnabled(bool enable)
|
|||||||
|
|
||||||
QStringList GM_Script::include() const
|
QStringList GM_Script::include() const
|
||||||
{
|
{
|
||||||
QStringList list;
|
return m_include;
|
||||||
|
|
||||||
foreach (const GM_UrlMatcher &matcher, m_include) {
|
|
||||||
list.append(matcher.pattern());
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList GM_Script::exclude() const
|
QStringList GM_Script::exclude() const
|
||||||
{
|
{
|
||||||
QStringList list;
|
return m_exclude;
|
||||||
|
|
||||||
foreach (const GM_UrlMatcher &matcher, m_exclude) {
|
|
||||||
list.append(matcher.pattern());
|
|
||||||
}
|
|
||||||
|
|
||||||
return list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GM_Script::script() const
|
QString GM_Script::script() const
|
||||||
@ -160,27 +148,6 @@ QWebEngineScript GM_Script::webScript() const
|
|||||||
return script;
|
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)
|
void GM_Script::watchedFileChanged(const QString &file)
|
||||||
{
|
{
|
||||||
if (m_fileName == file) {
|
if (m_fileName == file) {
|
||||||
@ -268,10 +235,10 @@ void GM_Script::parseScript()
|
|||||||
m_downloadUrl = QUrl(value);
|
m_downloadUrl = QUrl(value);
|
||||||
}
|
}
|
||||||
else if (key == QLatin1String("@include") || key == QLatin1String("@match")) {
|
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")) {
|
else if (key == QLatin1String("@exclude") || key == QLatin1String("@exclude_match")) {
|
||||||
m_exclude.append(GM_UrlMatcher(value));
|
m_exclude.append(value);
|
||||||
}
|
}
|
||||||
else if (key == QLatin1String("@require")) {
|
else if (key == QLatin1String("@require")) {
|
||||||
requireList.append(value);
|
requireList.append(value);
|
||||||
@ -296,7 +263,7 @@ void GM_Script::parseScript()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_include.isEmpty()) {
|
if (m_include.isEmpty()) {
|
||||||
m_include.append(GM_UrlMatcher("*"));
|
m_include.append(QSL("*"));
|
||||||
}
|
}
|
||||||
|
|
||||||
const QString nspace = QCryptographicHash::hash(fullName().toUtf8(), QCryptographicHash::Md4).toHex();
|
const QString nspace = QCryptographicHash::hash(fullName().toUtf8(), QCryptographicHash::Md4).toHex();
|
||||||
|
@ -18,8 +18,6 @@
|
|||||||
#ifndef GM_SCRIPT_H
|
#ifndef GM_SCRIPT_H
|
||||||
#define GM_SCRIPT_H
|
#define GM_SCRIPT_H
|
||||||
|
|
||||||
#include "gm_urlmatcher.h"
|
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
#include <QVector>
|
#include <QVector>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
@ -27,7 +25,6 @@
|
|||||||
class QWebEngineScript;
|
class QWebEngineScript;
|
||||||
|
|
||||||
class GM_Manager;
|
class GM_Manager;
|
||||||
class GM_UrlMatcher;
|
|
||||||
|
|
||||||
class DelayedFileWatcher;
|
class DelayedFileWatcher;
|
||||||
|
|
||||||
@ -65,8 +62,6 @@ public:
|
|||||||
|
|
||||||
QWebEngineScript webScript() const;
|
QWebEngineScript webScript() const;
|
||||||
|
|
||||||
bool match(const QString &urlString);
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void scriptChanged();
|
void scriptChanged();
|
||||||
|
|
||||||
@ -84,8 +79,8 @@ private:
|
|||||||
QString m_description;
|
QString m_description;
|
||||||
QString m_version;
|
QString m_version;
|
||||||
|
|
||||||
QVector<GM_UrlMatcher> m_include;
|
QStringList m_include;
|
||||||
QVector<GM_UrlMatcher> m_exclude;
|
QStringList m_exclude;
|
||||||
|
|
||||||
QUrl m_downloadUrl;
|
QUrl m_downloadUrl;
|
||||||
QUrl m_updateUrl;
|
QUrl m_updateUrl;
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -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
|
|
Loading…
Reference in New Issue
Block a user