diff options
Diffstat (limited to 'staging/adblock/filterlist.h')
-rw-r--r-- | staging/adblock/filterlist.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/staging/adblock/filterlist.h b/staging/adblock/filterlist.h new file mode 100644 index 0000000..801700f --- /dev/null +++ b/staging/adblock/filterlist.h @@ -0,0 +1,50 @@ +/* + * This file is part of smolbote. It's copyrighted by the contributors recorded + * in the version control history of the file, available from its original + * location: https://library.iserlohn-fortress.net/aqua/smolbote.git + * + * SPDX-License-Identifier: GPL-3.0 + */ + +#include <QObject> +#include <QString> +#include <QStringList> +#include <QVector> + +class QTextStream; + +namespace AdblockPlus +{ +class Rule; +class FilterList : public QObject +{ + Q_DISABLE_COPY(FilterList); + +public: + explicit FilterList(QObject *parent = nullptr); + ~FilterList(); + + enum ParseResultState { + Ok, + InvalidFormat, + }; + struct ParseResult { + int lines_total = 0; + int lines_comments = 0; + int lines_ignored = 0; + int lines_parsed = 0; + int lines_failed = 0; + + ParseResultState state; + }; + ParseResult parse(QTextStream &stream); + +private: + void parseComment(QString &line); + bool parseRule(const QString &line); + + QStringList m_comments; + QVector<Rule *> m_rules; +}; + +} // namespace AdblockPlus |