diff --git a/idriz/apps/raspored/manifest.py b/idriz/apps/raspored/manifest.py index 9851311..0b3152f 100644 --- a/idriz/apps/raspored/manifest.py +++ b/idriz/apps/raspored/manifest.py @@ -79,10 +79,20 @@ def _parse_kada(s: str) -> tuple[dt.date, str]: except ValueError: pass wd = {"ponedjeljak": 0, "utorak": 1, "srijeda": 2, "cetvrtak": 3, "petak": 4, "subota": 5, "nedjelja": 6, "nedelja": 6} - if sn in wd: - monday = today - dt.timedelta(days=today.weekday()) - d = monday + dt.timedelta(days=wd[sn]) - return d, _date_fraza(d) + # naziv dana -> sljedeće NAILAZEĆE pojavljivanje (danas ako je taj dan; inače + # ova sedmica ako još nije prošao, a sljedeća ako jeste — bitno zbog smjena). + # "sljedeći/naredni/idući " uvijek gura u narednu sedmicu. + qual = any(k in sn for k in ("sljedec", "naredn", "iduc")) + for wname, wi in wd.items(): + if sn.endswith(wname): + if qual: + # dan u narednoj kalendarskoj sedmici + next_monday = today - dt.timedelta(days=today.weekday()) + dt.timedelta(days=7) + d = next_monday + dt.timedelta(days=wi) + else: + # sljedeće nailazeće pojavljivanje (danas ako je taj dan) + d = today + dt.timedelta(days=(wi - today.weekday()) % 7) + return d, _date_fraza(d) return today, "danas"