From a0665bc544a5b76ef13cbbca00a7bba1f6d53c63 Mon Sep 17 00:00:00 2001 From: Andreas Rumpf Date: Mon, 13 Nov 2017 15:27:58 +0100 Subject: [PATCH] added errors.nim module for UI error handling --- karax/errors.nim | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 karax/errors.nim diff --git a/karax/errors.nim b/karax/errors.nim new file mode 100644 index 0000000..847bd85 --- /dev/null +++ b/karax/errors.nim @@ -0,0 +1,30 @@ +## Error handling logic for form input validation. + +import karax, jdict + +var + gerrorMsgs = newJDict[cstring, cstring]() + gerrorCounter = 0 + +proc hasErrors*(): bool = gerrorCounter != 0 + +proc disableOnError*(): cstring = toDisabled(hasErrors()) + +proc getError*(field: cstring): cstring = + if not gerrorMsgs.contains(field): + result = "" + else: + result = gerrorMsgs[field] + +proc setError*(field, msg: cstring) = + let previous = getError(field) + if len(msg) == 0: + if len(previous) != 0: dec(gerrorCounter) + else: + if len(previous) == 0: inc(gerrorCounter) + gerrorMsgs[field] = msg + +proc clearErrors*() = + let m = gerrorMsgs + for k in m.keys: + setError(k, "")