diff --git a/eth-rpc/server/jsonconverters.nim b/eth-rpc/server/jsonconverters.nim new file mode 100644 index 0000000..43d5889 --- /dev/null +++ b/eth-rpc/server/jsonconverters.nim @@ -0,0 +1,25 @@ +import json, stint + +iterator bytes*(i: UInt256|Int256): byte = + let b = cast[ptr array[32, byte]](i.unsafeaddr) + var pos = 0 + while pos < 32: + yield b[pos] + pos += 1 + +proc `%`*(n: UInt256): JsonNode = + ## Generic constructor for JSON data. Creates a new `JInt JsonNode`. + result = newJArray() + for elem in n.bytes: + result.add(%int(elem)) + +proc `%`*(n: Int256): JsonNode = + ## Generic constructor for JSON data. Creates a new `JInt JsonNode`. + result = newJArray() + for elem in n.bytes: + result.add(%int(elem)) + +proc `%`*(n: byte): JsonNode = + ## Generic constructor for JSON data. Creates a new `JInt JsonNode`. + result = newJInt(int(n)) +