mirror of
https://github.com/waku-org/nwaku.git
synced 2025-02-23 12:28:55 +00:00
38 lines
917 B
Nim
38 lines
917 B
Nim
|
import
|
||
|
stew/results, ../../json_serialization/[reader, writer, lexer]
|
||
|
|
||
|
export
|
||
|
results
|
||
|
|
||
|
template writeObjectField*[T](w: var JsonWriter,
|
||
|
record: auto,
|
||
|
fieldName: static string,
|
||
|
field: Result[T, void]): bool =
|
||
|
mixin writeObjectField
|
||
|
|
||
|
if field.isOk:
|
||
|
writeObjectField(w, record, fieldName, field.get)
|
||
|
else:
|
||
|
false
|
||
|
|
||
|
proc writeValue*[T](writer: var JsonWriter, value: Result[T, void]) =
|
||
|
mixin writeValue
|
||
|
|
||
|
if value.isOk:
|
||
|
writer.writeValue value.get
|
||
|
else:
|
||
|
writer.writeValue JsonString("null")
|
||
|
|
||
|
proc readValue*[T](reader: var JsonReader, value: var Result[T, void]) =
|
||
|
mixin readValue
|
||
|
|
||
|
let tok = reader.lexer.lazyTok
|
||
|
if tok == tkNull:
|
||
|
reset value
|
||
|
reader.lexer.next()
|
||
|
else:
|
||
|
value.ok reader.readValue(T)
|
||
|
|
||
|
func isFieldExpected*[T, E](_: type[Result[T, E]]): bool {.compileTime.} =
|
||
|
false
|