From 3cab550c8cfd070f99f34cb266479c3ec1767814 Mon Sep 17 00:00:00 2001 From: Anders Demant van der Weide Date: Sat, 29 Aug 2026 08:39:03 +0200 Subject: [PATCH 1/2] Fix calendar title transform when regex does not match --- defaultmodules/calendar/calendarutils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaultmodules/calendar/calendarutils.js b/defaultmodules/calendar/calendarutils.js index 751dae2d42..a79e4e9832 100644 --- a/defaultmodules/calendar/calendarutils.js +++ b/defaultmodules/calendar/calendarutils.js @@ -109,7 +109,7 @@ const CalendarUtils = { let replacement = transform.replace; if (typeof transform.yearmatchgroup !== "undefined" && transform.yearmatchgroup !== "") { const yearmatch = [...title.matchAll(needle)]; - if (yearmatch[0].length >= transform.yearmatchgroup + 1 && yearmatch[0][transform.yearmatchgroup] * 1 >= 1900) { + if (yearmatch.length > 0 && yearmatch[0].length >= transform.yearmatchgroup + 1 && yearmatch[0][transform.yearmatchgroup] * 1 >= 1900) { const calcage = new Date().getFullYear() - yearmatch[0][transform.yearmatchgroup] * 1; const searchstr = `$${transform.yearmatchgroup}`; replacement = replacement.replace(searchstr, calcage); From 1cf7be6321523bbb7caa6db6e49f41e3780186dc Mon Sep 17 00:00:00 2001 From: Anders Demant van der Weide Date: Sat, 29 Aug 2026 13:46:33 +0200 Subject: [PATCH 2/2] Add regression test for calendar title transform --- tests/unit/modules/default/calendar/calendar_utils_spec.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/unit/modules/default/calendar/calendar_utils_spec.js b/tests/unit/modules/default/calendar/calendar_utils_spec.js index 77d358ddfa..ef6da28118 100644 --- a/tests/unit/modules/default/calendar/calendar_utils_spec.js +++ b/tests/unit/modules/default/calendar/calendar_utils_spec.js @@ -151,5 +151,10 @@ describe("Calendar utils tests", () => { const expectedResult = `Luciella (${new Date().getFullYear() - 2000}.)`; expect(transformedTitle).toBe(expectedResult); }); + + it("should not fail when the yearmatchgroup regex does not match", () => { + const transformedTitle = CalendarUtils.titleTransform("Test Birthday", [{ search: "^(.+) \\((\\d{4})\\)$", replace: "$1 ($2)", yearmatchgroup: 2 }]); + expect(transformedTitle).toBe("Test Birthday"); + }); }); });