Skip to content

Commit 0c78be8

Browse files
authored
Encode JamBytes directly (#12)
* encode of def do not create ScaleType anymore
1 parent 5d1c34d commit 0c78be8

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

jamcodec/types.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def encode(self, value: dict) -> JamBytes:
203203
if name not in value:
204204
raise ScaleEncodeException(f'Argument "{name}" of Struct is missing in given value')
205205

206-
data += scale_obj.new().encode(value[name])
206+
data += scale_obj.encode(value[name])
207207

208208
if value[name] and issubclass(value[name].__class__, JamCodecType):
209209
value[name] = value[name].serialize()
@@ -280,7 +280,7 @@ def encode(self, value: tuple) -> JamBytes:
280280
data = JamBytes(bytearray())
281281
for idx, scale_obj in enumerate(self.values):
282282

283-
data += scale_obj.new().encode(value[idx])
283+
data += scale_obj.encode(value[idx])
284284
return data
285285

286286
def decode(self, data: JamBytes) -> tuple:
@@ -377,7 +377,7 @@ def encode(self, value: Union[str, dict]) -> JamBytes:
377377

378378
if variant_obj is not None:
379379

380-
data += variant_obj.new().encode(enum_value)
380+
data += variant_obj.encode(enum_value)
381381

382382
return data
383383

@@ -603,9 +603,12 @@ def encode(self, value: list) -> JamBytes:
603603
data = VarInt64.encode(len(value))
604604

605605
for idx, item in enumerate(value):
606-
data += self.type_def.new().encode(item)
607-
if item and issubclass(item.__class__, JamCodecType):
608-
value[idx] = item.serialize()
606+
if type(item) is JamBytes:
607+
data += item
608+
else:
609+
data += self.type_def.encode(item)
610+
if item and issubclass(item.__class__, JamCodecType):
611+
value[idx] = item.serialize()
609612

610613
return data
611614

0 commit comments

Comments
 (0)