From a5aa547597e7fa0d133b58a6baf4fb70a63c7a80 Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Mon, 29 Jun 2026 14:55:17 -0400 Subject: fix: better error handling for invalid words and blank calendars --- src/soon/agenda.nim | 5 ++++- src/soon/columnize.nim | 1 + src/soon/conditionchecker.nim | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/soon/agenda.nim b/src/soon/agenda.nim index 6e3b2ba..3621987 100644 --- a/src/soon/agenda.nim +++ b/src/soon/agenda.nim @@ -38,7 +38,10 @@ proc parseDateToTable(date: string): ConditionTable = return table proc allConditionsMet(conditions: ConditionTable, date: DateTime): bool = - if conditions.hasKey("unknown"): return false + if conditions.hasKey("unknown"): + for c in conditions["unknown"]: + invalidConditions.incl(c) + return false for cs in conditions.values: if not any(cs, proc(x: string): bool = conditionchecker.checkCond(x, date)): return false diff --git a/src/soon/columnize.nim b/src/soon/columnize.nim index a9074f1..f32d1ec 100644 --- a/src/soon/columnize.nim +++ b/src/soon/columnize.nim @@ -24,6 +24,7 @@ proc pad(table: seq[Line], max: seq[int]): seq[Line] = result.add(Line(columns: resLine, attachments: resAttach)) proc columnize(table: seq[Line]): seq[Line] = + if table.len == 0: return table var max = newSeq[int](table[0].columns.len) for line in table: for i, field in enumerate(line.columns): diff --git a/src/soon/conditionchecker.nim b/src/soon/conditionchecker.nim index ada152c..ddb74cd 100644 --- a/src/soon/conditionchecker.nim +++ b/src/soon/conditionchecker.nim @@ -170,6 +170,9 @@ proc checkDateGroup(s: string, date: DateTime): bool = var conditions = s let cs = conditions[1..conditions.len-2].splitWhitespace for c in cs: + if typechecker.checkType(c) == "unknown": + invalidConditions.incl(s) + return false if checkCond(c, date) == false: return false return true -- cgit v1.2.3