diff -r 9986ec0e559a -r 10516539f238 Helpviewer/AdBlock/AdBlockRule.py --- a/Helpviewer/AdBlock/AdBlockRule.py Tue Oct 15 22:03:54 2013 +0200 +++ b/Helpviewer/AdBlock/AdBlockRule.py Fri Oct 18 23:00:41 2013 +0200 @@ -58,6 +58,10 @@ def __init__(self, filter="", subscription=None): """ Constructor + + @param filter filter string of the rule (string) + @param subscription reference to the subscription object + (AdBlockSubscription) """ self.__subscription = subscription @@ -182,7 +186,8 @@ # Hiding placeholders of blocked elements handledOptions += 1 - # If we don't handle all options, it's safer to just disable this rule + # If we don't handle all options, it's safer to just disable + # this rule if handledOptions != len(options): self.__internalDisabled = True return @@ -226,7 +231,8 @@ if "*" in parsedLine or "^" in parsedLine or "|" in parsedLine: pattern = self.__convertPatternToRegExp(parsedLine) self.__useRegExp = True - self.__regExp = QRegExp(pattern, self.__caseSensitivity, QRegExp.RegExp) + self.__regExp = QRegExp(pattern, self.__caseSensitivity, + QRegExp.RegExp) return # no regexp required @@ -273,7 +279,8 @@ matched = domain.endswith(self.__matchString) elif self.__useEndsMatch: if self.__caseSensitivity == Qt.CaseInsensitive: - matched = encodedUrl.lower().endswith(self.__matchString.lower()) + matched = encodedUrl.lower().endswith( + self.__matchString.lower()) else: matched = encodedUrl.endswith(self.__matchString) else: @@ -540,19 +547,26 @@ """ pattern = wildcardPattern - pattern = re.sub(r"\*+", "*", pattern) # remove multiple wildcards - pattern = re.sub(r"\^\|$", "^", pattern) # remove anchors following separator - # placeholder - pattern = re.sub(r"^(\*)", "", pattern) # remove leading wildcards - pattern = re.sub(r"(\*)$", "", pattern) # remove trailing wildcards - pattern = re.sub(r"(\W)", r"\\\1", pattern) # escape special symbols + # remove multiple wildcards + pattern = re.sub(r"\*+", "*", pattern) + # remove anchors following separator placeholder + pattern = re.sub(r"\^\|$", "^", pattern) + # remove leading wildcards + pattern = re.sub(r"^(\*)", "", pattern) + # remove trailing wildcards + pattern = re.sub(r"(\*)$", "", pattern) + # escape special symbols + pattern = re.sub(r"(\W)", r"\\\1", pattern) + # process extended anchor at expression start pattern = re.sub(r"^\\\|\\\|", - r"^[\w\-]+:\/+(?!\/)(?:[^\/]+\.)?", pattern) # process extended anchor at - # expression start - pattern = re.sub(r"\\\^", - r"(?:[^\w\d\-.%]|$)", pattern) # process separator placeholders - pattern = re.sub(r"^\\\|", "^", pattern) # process anchor at expression start - pattern = re.sub(r"\\\|$", "$", pattern) # process anchor at expression end - pattern = re.sub(r"\\\*", ".*", pattern) # replace wildcards by .* + r"^[\w\-]+:\/+(?!\/)(?:[^\/]+\.)?", pattern) + # process separator placeholders + pattern = re.sub(r"\\\^", r"(?:[^\w\d\-.%]|$)", pattern) + # process anchor at expression start + pattern = re.sub(r"^\\\|", "^", pattern) + # process anchor at expression end + pattern = re.sub(r"\\\|$", "$", pattern) + # replace wildcards by .* + pattern = re.sub(r"\\\*", ".*", pattern) return pattern