summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2018-02-19 23:08:17 +0100
committerYuval Adam <_@yuv.al>2018-02-19 23:08:17 +0100
commit1e18f7fa46ac1d2338f73a5860605b4d573ab224 (patch)
tree7280d82852c1b98f1b479473b5cea9f5cc687ef8
parentab5c726c229cd1a3756a77394efb7cc216501379 (diff)
Cleanup parse()
-rw-r--r--viewstate/core.py19
1 files changed, 7 insertions, 12 deletions
diff --git a/viewstate/core.py b/viewstate/core.py
index dbbac4d..d9567c0 100644
--- a/viewstate/core.py
+++ b/viewstate/core.py
@@ -20,8 +20,8 @@ def parse_string(b):
return s.decode(), b[n+1:]
def parse_pair(b):
- first, remain = _parse(b)
- second, remain = _parse(remain)
+ first, remain = parse(b)
+ second, remain = parse(remain)
return (first, second), remain
def parse_array(b):
@@ -29,7 +29,7 @@ def parse_array(b):
l = []
remain = b[1:]
for _ in range(n):
- val, remain = _parse(remain)
+ val, remain = parse(remain)
l.append(val)
return l, remain
@@ -38,12 +38,12 @@ def parse_dict(b):
d = {}
remain = b[1:]
for _ in range(n):
- k, remain = _parse(remain)
- v, remain = _parse(remain)
+ k, remain = parse(remain)
+ v, remain = parse(remain)
d[k] = v
return d, remain
-def _parse(b):
+def parse(b):
if not b:
return None
@@ -64,11 +64,6 @@ def _parse(b):
raise ViewStateException('Unable to parse remainder of bytes {}'.format(b))
return b, bytes()
- return None
-
-def parse(b):
- return _parse(b)[0]
-
class ViewState(object):
@@ -97,5 +92,5 @@ class ViewState(object):
def decode(self):
if not self.is_valid():
raise ViewStateException('Cannot decode invalid viewstate, bad preamble')
- self.decoded = parse(self.body)
+ self.decoded, self.remainder = parse(self.body)
return self.decoded