diff options
| author | historia <[not public]> | 2026-06-29 14:55:17 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-29 14:55:17 -0400 |
| commit | a5aa547597e7fa0d133b58a6baf4fb70a63c7a80 (patch) | |
| tree | 25589beb75956c3db69260aa9129833b0424f435 | |
| parent | 004836b349ffd9d6e7ec08926d26753ae274a604 (diff) | |
| download | soon-a5aa547597e7fa0d133b58a6baf4fb70a63c7a80.tar.gz | |
fix: better error handling for invalid words and blank calendars
| -rw-r--r-- | src/soon/agenda.nim | 5 | ||||
| -rw-r--r-- | src/soon/columnize.nim | 1 | ||||
| -rw-r--r-- | src/soon/conditionchecker.nim | 3 |
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 |
