aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-29 14:55:17 -0400
committerhistoria <[not public]>2026-06-29 14:55:17 -0400
commita5aa547597e7fa0d133b58a6baf4fb70a63c7a80 (patch)
tree25589beb75956c3db69260aa9129833b0424f435
parent004836b349ffd9d6e7ec08926d26753ae274a604 (diff)
downloadsoon-a5aa547597e7fa0d133b58a6baf4fb70a63c7a80.tar.gz
fix: better error handling for invalid words and blank calendars
-rw-r--r--src/soon/agenda.nim5
-rw-r--r--src/soon/columnize.nim1
-rw-r--r--src/soon/conditionchecker.nim3
3 files changed, 8 insertions, 1 deletions
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