aboutsummaryrefslogtreecommitdiff
path: root/staging/adblock/filterlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'staging/adblock/filterlist.cpp')
-rw-r--r--staging/adblock/filterlist.cpp48
1 files changed, 11 insertions, 37 deletions
diff --git a/staging/adblock/filterlist.cpp b/staging/adblock/filterlist.cpp
index 9fb53ad..9c80e88 100644
--- a/staging/adblock/filterlist.cpp
+++ b/staging/adblock/filterlist.cpp
@@ -32,49 +32,23 @@ FilterList::~FilterList()
qDeleteAll(m_rules);
}
-FilterList::ParseResult FilterList::parse(QTextStream &stream)
+FilterList::ParseResult FilterList::parse(const QString &line)
{
- FilterList::ParseResult result;
+ if(line.startsWith('!')) {
+ parseComment(line);
+ return FilterList::Comment;
- if(stream.readLine().trimmed() != "[Adblock Plus 2.0]") {
- result.state = FilterList::InvalidFormat;
- return result;
- }
+ } else if(line.contains("##") || line.contains("#@#")) {
+ // ## is element hiding rule
+ // #@# is element hiding exception rule
+ return FilterList::Unsupported;
- QString line;
- while(stream.readLineInto(&line)) {
-
- if(!line.isEmpty()) {
- ++result.lines_total;
-
- if(line.startsWith('!')) {
- ++result.lines_comments;
- parseComment(line);
-
- } else if(line.contains("##") || line.contains("#@#")) {
- // ## is element hiding rule
- // #@# is element hiding exception rule
- if(qgetenv("PRINT_IGNORED") == "1")
- qDebug("ignored: >%s<", qUtf8Printable(line));
- ++result.lines_ignored;
-
- } else {
- if(parseRule(line))
- ++result.lines_parsed;
- else {
- if(qgetenv("PRINT_FAILED") == "1")
- qDebug("failed: >%s<", qUtf8Printable(line));
- ++result.lines_failed;
- }
- }
- }
+ } else {
+ return parseRule(line) ? FilterList::Rule : FilterList::Failed;
}
-
- result.state = FilterList::Ok;
- return result;
}
-void FilterList::parseComment(QString &line)
+void FilterList::parseComment(const QString &line)
{
if(line.startsWith(comment_lastModified)) {
lastModified = QDateTime::fromString(line.mid(comment_lastModified.size()), "dd MMM yyyy HH:mm 'UTC'");