Helpviewer/GreaseMonkey/GreaseMonkeyUrlMatcher.py

branch
Py2 comp.
changeset 3057
10516539f238
parent 2525
8b507a9a2d40
parent 3002
6ffc581f00f1
child 3145
a9de05d4a22f
equal deleted inserted replaced
3056:9986ec0e559a 3057:10516539f238
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

eric ide

mercurial