From a2b38bd8826864a89e1bb576b991e58bbf677fb3 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Wed, 23 Oct 2024 22:43:28 +0100 Subject: [PATCH] Make the inlist_field operator work on identifiers so it has the same result as inlist --- src/calibre/utils/formatter.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/calibre/utils/formatter.py b/src/calibre/utils/formatter.py index 1fee01b16a..d80b46d3b8 100644 --- a/src/calibre/utils/formatter.py +++ b/src/calibre/utils/formatter.py @@ -1403,9 +1403,14 @@ class _Interpreter: if res is None or not isinstance(res, (list, tuple, set, dict)): self.error(_("Field '{0}' is either not a field or not a list").format(right), prog.line_number) pat = re.compile(left, flags=re.I) - for v in res: - if re.search(pat, v): - return '1' + if isinstance(res, dict): # identifiers + for k,v in res.items(): + if re.search(pat, f'{k}:{v}'): + return '1' + else: + for v in res: + if re.search(pat, v): + return '1' return '' def do_node_string_infix(self, prog):