From 5a141999c786c7206cd487d988e0f81c55c6eb32 Mon Sep 17 00:00:00 2001 From: Vincent Le Gallic Date: Sat, 12 Mar 2016 14:41:07 +0100 Subject: [PATCH] =?utf8?q?[quotes]=20Nan=20mais=20en=20fait=20la=20recherc?= =?utf8?q?he=20avec=20et=20sans=20regexp=20*c'est*=20diff=C3=A9rent,=20on?= =?utf8?q?=20peut=20pas=20fusionner?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- quotes.py | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) 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): -- 2.39.2