import std/json as stdjson import pkg/questionable/results import ./errors import ./types {.push raises: [].} proc parse*(_: type JsonNode, json: string): ?!JsonNode = # Used as a replacement for `std/json.parseJson`. Will not raise Exception like in the # standard library try: without val =? stdjson.parseJson(json).catch, error: return failure error.mapErrTo(JsonParseError) return success val except Exception as e: return failure newException(JsonParseError, e.msg, e)