You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
655 B
28 lines
655 B
6 years ago
|
from io import BytesIO
|
||
|
from collections import OrderedDict
|
||
|
|
||
|
|
||
|
class Section:
|
||
|
def __init__(self):
|
||
|
self.entries = OrderedDict()
|
||
|
|
||
|
def add(self, key: str, entry: object):
|
||
|
self.entries[key] = entry
|
||
|
|
||
|
def __len__(self):
|
||
|
return len(self.entries.keys())
|
||
|
|
||
|
@classmethod
|
||
|
def from_byte_array(cls, buffer: BytesIO):
|
||
|
from levin.reader import LevinReader
|
||
|
x = LevinReader(buffer)
|
||
|
section = x.read_payload()
|
||
|
return section
|
||
|
|
||
|
def as_byte_array(self):
|
||
|
from levin.writer import LevinWriter
|
||
|
|
||
|
buffer = BytesIO()
|
||
|
writer = LevinWriter(buffer)
|
||
|
writer.write_payload(self)
|