18 """ |
18 """ |
19 Module function implementing a special wildcard matcher. |
19 Module function implementing a special wildcard matcher. |
20 |
20 |
21 @param string string to match (string) |
21 @param string string to match (string) |
22 @param pattern pattern to be used (string) |
22 @param pattern pattern to be used (string) |
|
23 @return flag indicating a successful match (boolean) |
23 """ |
24 """ |
24 stringSize = len(string) |
25 stringSize = len(string) |
25 |
26 |
26 startsWithWildcard = pattern.startswith("*") |
27 startsWithWildcard = pattern.startswith("*") |
27 endsWithWildcard = pattern.endswith("*") |
28 endsWithWildcard = pattern.endswith("*") |
73 def match(self, urlString): |
74 def match(self, urlString): |
74 """ |
75 """ |
75 Public method to match the given URL. |
76 Public method to match the given URL. |
76 |
77 |
77 @param urlString URL to match (string) |
78 @param urlString URL to match (string) |
|
79 @return flag indicating a successful match (boolean) |
78 """ |
80 """ |
79 if self.__useRegExp: |
81 if self.__useRegExp: |
80 return self.__regExp.indexIn(urlString) != -1 |
82 return self.__regExp.indexIn(urlString) != -1 |
81 else: |
83 else: |
82 return wildcardMatch(urlString, self.__matchString) |
84 return wildcardMatch(urlString, self.__matchString) |
91 pattern = pattern[1:-1] |
93 pattern = pattern[1:-1] |
92 |
94 |
93 self.__regExp = QRegExp(pattern, Qt.CaseInsensitive) |
95 self.__regExp = QRegExp(pattern, Qt.CaseInsensitive) |
94 self.__useRegExp = True |
96 self.__useRegExp = True |
95 elif ".tld" in pattern: |
97 elif ".tld" in pattern: |
96 pattern = re.sub(r"(\W)", r"\\\1", pattern) # escape special symbols |
98 # escape special symbols |
97 pattern = re.sub(r"\*+", "*", pattern) # remove multiple wildcards |
99 pattern = re.sub(r"(\W)", r"\\\1", pattern) |
98 pattern = re.sub(r"^\\\|", "^", pattern) # process anchor at expression |
100 # remove multiple wildcards |
99 # start |
101 pattern = re.sub(r"\*+", "*", pattern) |
100 pattern = re.sub(r"\\\|$", "$", pattern) # process anchor at expression |
102 # process anchor at expression start |
101 # end |
103 pattern = re.sub(r"^\\\|", "^", pattern) |
102 pattern = re.sub(r"\\\*", ".*", pattern) # replace wildcards by .* |
104 # process anchor at expression end |
103 pattern = re.sub(r"\.tld", r"\.[a-z.]{2,6}") # replace domain pattern |
105 pattern = re.sub(r"\\\|$", "$", pattern) |
|
106 # replace wildcards by .* |
|
107 pattern = re.sub(r"\\\*", ".*", pattern) |
|
108 # replace domain pattern |
|
109 pattern = re.sub(r"\.tld", r"\.[a-z.]{2,6}") |
104 |
110 |
105 self.__useRegExp = True |
111 self.__useRegExp = True |
106 self.__regExp = QRegExp(pattern, Qt.CaseInsensitive) |
112 self.__regExp = QRegExp(pattern, Qt.CaseInsensitive) |
107 else: |
113 else: |
108 self.__matchString = pattern |
114 self.__matchString = pattern |