From: Vincent Le Gallic Date: Sat, 12 Mar 2016 13:41:07 +0000 (+0100) Subject: [quotes] Nan mais en fait la recherche avec et sans regexp *c'est* différent, on... X-Git-Url: http://gitweb.pimeys.fr/?p=bots%2Fparrot.git;a=commitdiff_plain;h=5a141999c786c7206cd487d988e0f81c55c6eb32 [quotes] Nan mais en fait la recherche avec et sans regexp *c'est* différent, on peut pas fusionner --- diff --git a/quotes.py b/quotes.py index 80fea53..0dcdabb 100644 --- a/quotes.py +++ b/quotes.py @@ -194,24 +194,31 @@ class QuoteDB(object): Si ``regexp=True``, utilise directement les termes comme des regexp. """ params = [inquote, author] - regexps = [] - for param in params: - if param is None: - param = u".*" - elif not regexp: - param = u".*%s.*" % param - regexps.append(re.compile(param, flags=re.UNICODE + re.IGNORECASE)) - l = [q for q in self.quotelist if all([reg.match(truc) for (reg, truc) in zip(regexps, [q.content, q.author])])] + if regexp: + regexps = [] + for param in params: + if param is None: + param = u".*" + regexps.append(re.compile(param, flags=re.UNICODE + re.IGNORECASE)) + l = [q for q in self.quotelist if all([reg.match(truc) for (reg, truc) in zip(regexps, [q.content, q.author, q.proper_place])])] + else: + for (i, param) in enumerate(params): + if param is None: + params[i] = u"" + l = [q for q in self.quotelist if all([param.lower() in truc.lower() for (param, truc) in zip(params, [q.content, q.author, q.proper_place])])] return l def search_authors(self, author=None, regexp=False): """Renvoie la liste des auteurs contenant ``author`` ou qui matchent la regexp.""" - if author is None: - author = u".*" - elif not regexp: - author = u".*%s.*" % author - areg = re.compile(author, flags=re.UNICODE + re.IGNORECASE) - l = list(set([q.author for q in self.quotelist if areg.match(q.author)])) + if regexp: + if author is None: + author = u".*" + areg = re.compile(author, flags=re.UNICODE + re.IGNORECASE) + l = list(set([q.author for q in self.quotelist if areg.match(q.author)])) + else: + if author is None: + author = u"" + l = list(set([q.author for q in self.quotelist if author.lower() in q.author.lower()])) return l def dump(quotedb, dump_file=None):