Skip to content

Commit 5266671

Browse files
authored
Merge pull request #12 from dannyhann/feature/issue-11
add to_dict method
2 parents 9361d88 + 2c91030 commit 5266671

File tree

2 files changed

+1559
-19
lines changed

2 files changed

+1559
-19
lines changed

protobuf_decoder/protobuf_decoder.py

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,19 @@ def __str__(self):
7373
def __repr__(self):
7474
return self.__str__()
7575

76+
def to_dict(self):
77+
dict_result = dict(
78+
value=self.value,
79+
signed_int=self.signed_int,
80+
unsigned_int=self.unsigned_int,
81+
value_type=self._value_type,
82+
)
83+
84+
if not self._is_unsigned:
85+
dict_result.pop("unsigned_int")
86+
87+
return dict_result
88+
7689

7790
@dataclass(init=False)
7891
class ParsedResult:
@@ -86,8 +99,10 @@ def __init__(self, field: int, wire_type: str, data: ParsedDataType):
8699
self.data = data
87100

88101
def to_dict(self):
89-
if isinstance(self.data, list):
90-
data = [sub_result.to_dict() for sub_result in self.data]
102+
if isinstance(self.data, ParsedResults):
103+
data = self.data.to_dict()
104+
elif isinstance(self.data, FixedBitsValue):
105+
data = self.data.to_dict()
91106
else:
92107
data = self.data
93108

@@ -109,6 +124,12 @@ def has_results(self):
109124
def __getitem__(self, item):
110125
return self.results[item]
111126

127+
def to_dict(self):
128+
results = [result.to_dict() for result in self.results]
129+
return dict(
130+
results=results,
131+
)
132+
112133

113134
class State(Enum):
114135
FIND_FIELD = 1

tests.py

Lines changed: 1536 additions & 17 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)