diff -r e9e7eca7efee -r bf71ee032bb4 src/eric7/WebBrowser/AdBlock/AdBlockSearchTree.py --- a/src/eric7/WebBrowser/AdBlock/AdBlockSearchTree.py Wed Jul 13 11:16:20 2022 +0200 +++ b/src/eric7/WebBrowser/AdBlock/AdBlockSearchTree.py Wed Jul 13 14:55:47 2022 +0200 @@ -14,11 +14,12 @@ """ Class implementing the AdBlock search tree node. """ + def __init__(self): """ Constructor """ - self.char = '' + self.char = "" self.rule = None self.children = {} @@ -27,23 +28,24 @@ """ Class implementing the AdBlock search tree. """ + def __init__(self): """ Constructor """ self.__root = AdBlockSearchTreeNode() - + def clear(self): """ Public method to clear the search tree. """ self.__deleteNode(self.__root) self.__root = AdBlockSearchTreeNode() - + def add(self, rule): """ Public method to add a rule to the search tree. - + @param rule rule to be added @type AdBlockRule @return flag indicating a successful addition @@ -51,14 +53,14 @@ """ if rule.ruleType() != AdBlockRuleType.StringContainsMatchRule: return False - + filterString = rule.matchString() - + if len(filterString) <= 0: return False - + node = self.__root - + for filterChar in filterString: try: nextNode = node.children[filterChar] @@ -67,15 +69,15 @@ nextNode.char = filterChar node.children[filterChar] = nextNode node = nextNode - + node.rule = rule - + return True - + def find(self, request, domain, urlString): """ Public method to find a matching rule. - + @param request URL request to be matched @type QWebEngineUrlRequestInfo @param domain domain of the URL @@ -86,38 +88,39 @@ @rtype AdBlockRule """ length = len(urlString) - + if length <= 0: return None - + for index in range(length): - rule = self.__prefixSearch(request, domain, urlString, - urlString[index:], length - index) + rule = self.__prefixSearch( + request, domain, urlString, urlString[index:], length - index + ) if rule: return rule - + return None - + def __deleteNode(self, node): """ Private method to delete a search tree node. - + @param node reference to the node to be deleted @type AdBlockSearchTreeNode """ if not node: return - + for key in node.children: self.__deleteNode(node.children[key]) - + node.children = {} node = None - + def __prefixSearch(self, request, domain, urlString, string, length): """ Private method to perform a prefix search. - + @param request URL request to be matched @type QWebEngineUrlRequestInfo @param domain domain of the URL @@ -133,27 +136,24 @@ """ if length <= 0: return None - + char = string[0] - + try: node = self.__root.children[char] except KeyError: return None - + for char in string[1:]: - if ( - node.rule and - node.rule.networkMatch(request, domain, urlString) - ): + if node.rule and node.rule.networkMatch(request, domain, urlString): return node.rule - + try: node = node.children[char] except KeyError: return None - + if node.rule and node.rule.networkMatch(request, domain, urlString): return node.rule - + return None