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, "")