def get_search_results(self, req, query, filters): if 'repo' not in filters: return for filename, reponame in self.search_backend.find_words(query): repo = self.env.get_repository(reponame=reponame, authname=req.authname) node = repo.get_node(filename) if node.kind == Node.DIRECTORY: yield (self.env.href.browser(reponame, filename), "%s (in %s)" % (filename, reponame), change.date, change.author, 'Directory') else: found = 0 mimeview = Mimeview(self.env) content = mimeview.to_unicode(node.get_content().read(), node.get_content_type()) for n, line in enumerate(content.splitlines()): line = line.lower() for q in query: idx = line.find(q) if idx != -1: found = n + 1 break if found: break change = repo.get_changeset(node.rev) yield (self.env.href.browser(reponame, filename ) + (found and '#L%i' % found or '' ), "%s (in %s)" % (filename, reponame), change.date, change.author, shorten_result(content, query))