From 4126edf89fb8f4ba705593e101e0289b5809592c Mon Sep 17 00:00:00 2001 From: Mark Spanbroek Date: Tue, 30 Nov 2021 16:23:24 +0100 Subject: [PATCH] Decode strings --- contractabi/decoding.nim | 4 ++++ tests/contractabi/testDecoding.nim | 2 ++ 2 files changed, 6 insertions(+) diff --git a/contractabi/decoding.nim b/contractabi/decoding.nim index 24c9228..a9d4a0e 100644 --- a/contractabi/decoding.nim +++ b/contractabi/decoding.nim @@ -1,5 +1,6 @@ import pkg/stint import pkg/stew/endians2 +import pkg/stew/byteutils import pkg/upraises import ./encoding @@ -108,6 +109,9 @@ func read*[I,T](decoder: var AbiDecoder, _: type array[I,T]): array[I,T] = result[i] = decoder.read(T) decoder.finishTuple() +func read*(decoder: var AbiDecoder, T: type string): T = + string.fromBytes(decoder.read(seq[byte])) + func decode*(_: type AbiDecoder, bytes: seq[byte], T: type): T = var decoder = AbiDecoder.init(bytes) result = decoder.read(T) diff --git a/tests/contractabi/testDecoding.nim b/tests/contractabi/testDecoding.nim index 01bd55b..c1272b6 100644 --- a/tests/contractabi/testDecoding.nim +++ b/tests/contractabi/testDecoding.nim @@ -195,3 +195,5 @@ suite "ABI decoding": test "decodes arrays with dynamic elements": checkDecode([seq[byte].example, seq[byte].example]) + test "decodes strings": + checkDecode("hello!☺")