diff options
Diffstat (limited to 'staging/adblock/filterlist.cpp')
-rw-r--r-- | staging/adblock/filterlist.cpp | 48 |
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'"); |