@@ -152,18 +152,18 @@ if self.lookup(sWord): return True if sWord[0:1].isupper(): if len(sWord) > 1: if sWord.istitle(): - return bool(self.lookup(sWord.lower())) + return self.lookup(sWord.lower()) if sWord.isupper(): if self.bOptNumSigle: return True - return bool(self.lookup(sWord.lower()) or self.lookup(sWord.capitalize())) - return bool(self.lookup(sWord[:1].lower() + sWord[1:])) + return self.lookup(sWord.lower()) or self.lookup(sWord.capitalize()) + return self.lookup(sWord[:1].lower() + sWord[1:]) else: - return bool(self.lookup(sWord.lower())) + return self.lookup(sWord.lower()) return False def lookup (self, sWord): "returns True if in dictionary (strict verification)" iAddr = 0 @@ -171,11 +171,11 @@ if c not in self.dChar: return False iAddr = self._lookupArcNode(self.dChar[c], iAddr) if iAddr == None: return False - return int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask + return bool(int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask) def suggest (self, sWord): "returns a set of similar words" # first, we check for similar words #return set(self._suggestWithCrushedUselessChars(cp.clearWord(sWord))) @@ -190,11 +190,11 @@ def _suggest (self, sWord, nDeep=0, iAddr=0, sNewWord="", bAvoidLoop=False): # RECURSIVE FUNCTION if not sWord: if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask: - show(nDeep, "!!! " + sNewWord + " !!!") + show(nDeep, "___" + sNewWord + "___") return [sNewWord] return [] #show(nDeep, "<" + sWord + "> ===> " + sNewWord) lSugg = [] cCurrent = sWord[0:1] @@ -207,10 +207,13 @@ # same char, we remove 1 char without adding 1 to lSugg.extend(self._suggest(sWord[1:], nDeep+1, iAddr, sNewWord)) for sRepl in cp.d1toX.get(cCurrent, ()): #show(nDeep, sRepl) lSugg.extend(self._suggest(sRepl + sWord[1:], nDeep+1, iAddr, sNewWord, True)) + for sRepl in cp.d2toX.get(sWord[0:2], ()): + #show(nDeep, sRepl) + lSugg.extend(self._suggest(sRepl + sWord[2:], nDeep+1, iAddr, sNewWord, True)) if len(sWord) == 2: for sRepl in cp.dFinal2.get(sWord, ()): #show(nDeep, sRepl) lSugg.extend(self._suggest(sRepl, nDeep+1, iAddr, sNewWord, True)) elif len(sWord) == 1: