8 """ |
8 """ |
9 |
9 |
10 import re |
10 import re |
11 |
11 |
12 from PyQt4.QtCore import * |
12 from PyQt4.QtCore import * |
|
13 |
13 |
14 |
14 class AdBlockRule(object): |
15 class AdBlockRule(object): |
15 """ |
16 """ |
16 Class implementing the AdBlock rule. |
17 Class implementing the AdBlock rule. |
17 """ |
18 """ |
18 def __init__(self, filter = ""): |
19 def __init__(self, filter=""): |
19 """ |
20 """ |
20 Constructor |
21 Constructor |
21 """ |
22 """ |
22 self.__regExp = QRegExp() |
23 self.__regExp = QRegExp() |
23 self.__options = [] |
24 self.__options = [] |
176 pattern = re.sub(r"\^\|$", "^", pattern) # remove anchors following separator placeholder |
177 pattern = re.sub(r"\^\|$", "^", pattern) # remove anchors following separator placeholder |
177 pattern = re.sub(r"^(\*)", "", pattern) # remove leading wildcards |
178 pattern = re.sub(r"^(\*)", "", pattern) # remove leading wildcards |
178 pattern = re.sub(r"(\*)$", "", pattern) # remove trailing wildcards |
179 pattern = re.sub(r"(\*)$", "", pattern) # remove trailing wildcards |
179 pattern = re.sub(r"(\W)", "", pattern) # escape special symbols |
180 pattern = re.sub(r"(\W)", "", pattern) # escape special symbols |
180 pattern = re.sub(r"^\\\|\\\|", |
181 pattern = re.sub(r"^\\\|\\\|", |
181 r"^[\w\-]+:\/+(?!\/)(?:[^\/]+\.)?", pattern) # process extended anchor at expression start |
182 r"^[\w\-]+:\/+(?!\/)(?:[^\/]+\.)?", pattern) # process extended anchor at expression start |
182 pattern = re.sub(r"\\\^", |
183 pattern = re.sub(r"\\\^", |
183 r"(?:[^\w\d\-.%]|$)", pattern) # process separator placeholders |
184 r"(?:[^\w\d\-.%]|$)", pattern) # process separator placeholders |
184 pattern = re.sub(r"^\\\|", "^", pattern) # process anchor at expression start |
185 pattern = re.sub(r"^\\\|", "^", pattern) # process anchor at expression start |
185 pattern = re.sub(r"\\\|$", "$", pattern) # process anchor at expression end |
186 pattern = re.sub(r"\\\|$", "$", pattern) # process anchor at expression end |
186 pattern = re.sub(r"\\\*", ".*", pattern) # replace wildcards by .* |
187 pattern = re.sub(r"\\\*", ".*", pattern) # replace wildcards by .* |
187 |
188 |
195 @param isRegExp flag indicating a reg exp pattern (boolean) |
196 @param isRegExp flag indicating a reg exp pattern (boolean) |
196 """ |
197 """ |
197 if isRegExp: |
198 if isRegExp: |
198 self.__regExp = QRegExp(pattern, Qt.CaseInsensitive, QRegExp.RegExp2) |
199 self.__regExp = QRegExp(pattern, Qt.CaseInsensitive, QRegExp.RegExp2) |
199 else: |
200 else: |
200 self.__regExp = QRegExp(self.__convertPatternToRegExp(pattern), |
201 self.__regExp = QRegExp(self.__convertPatternToRegExp(pattern), |
201 Qt.CaseInsensitive, QRegExp.RegExp2) |
202 Qt.CaseInsensitive, QRegExp.RegExp2) |