From d505e4c50b3d0a3d1731098618d821455df52738 Mon Sep 17 00:00:00 2001 From: bosd Date: Sat, 7 Oct 2023 11:37:44 +0200 Subject: [PATCH] Fix List index out of range in case of no match in a regex group Fixes #528 --- src/invoice2data/extract/parsers/regex.py | 31 ++++++++++++----------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/invoice2data/extract/parsers/regex.py b/src/invoice2data/extract/parsers/regex.py index 94b25b7a..b13427c1 100644 --- a/src/invoice2data/extract/parsers/regex.py +++ b/src/invoice2data/extract/parsers/regex.py @@ -52,21 +52,22 @@ def parse(template, field, settings, content, legacy=False): if "group" in settings: result = list(filter(None, result)) - if settings["group"] == "sum": - result = sum(result) - elif settings["group"] == "min": - result = min(result) - elif settings["group"] == "max": - result = max(result) - elif settings["group"] == "first": - result = result[0] - elif settings["group"] == "last": - result = result[-1] - elif settings["group"] == "join": - result = " ".join(str(v) for v in result) - else: - logger.warning("Unsupported grouping method: %s", settings["group"]) - return None + if result: + if settings["group"] == "sum": + result = sum(result) + elif settings["group"] == "min": + result = min(result) + elif settings["group"] == "max": + result = max(result) + elif settings["group"] == "first": + result = result[0] + elif settings["group"] == "last": + result = result[-1] + elif settings["group"] == "join": + result = " ".join(str(v) for v in result) + else: + logger.warning("Unsupported grouping method: %s", settings["group"]) + return None else: # Remove duplicates maintaining the order by default (it's more