From 1c8baa87cf691e7baee16f2801a9646fda576c37 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 23 Apr 2022 15:29:06 +0530 Subject: [PATCH] Abstract away match finding implementation --- src/calibre/gui2/viewer/search.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/viewer/search.py b/src/calibre/gui2/viewer/search.py index cfd719d61b..f42311aae2 100644 --- a/src/calibre/gui2/viewer/search.py +++ b/src/calibre/gui2/viewer/search.py @@ -311,11 +311,15 @@ def toc_nodes_for_search_result(sr): def search_in_name(name, search_query, ctx_size=75): raw = searchable_text_for_name(name)[0] - for match in search_query.regex.finditer(raw): - start, end = match.span() + + def miter(): + for match in search_query.regex.finditer(raw): + yield match.span() + + for (start, end) in miter(): before = raw[max(0, start-ctx_size):start] after = raw[end:end+ctx_size] - yield before, match.group(), after, start + yield before, raw[start:end], after, start class SearchInput(QWidget): # {{{