tparse_url: parse exponents - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 7963f22a8059988f03e1ee9f116fe9ec46765ca3 DIR parent e9862e0b716f0a8b2b2dd62430e924dddc003f63 HTML Author: ThomasV <thomasv@gitorious> Date: Wed, 8 Jan 2014 14:08:53 +0100 parse_url: parse exponents Diffstat: M lib/util.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) --- DIR diff --git a/lib/util.py b/lib/util.py t@@ -156,6 +156,7 @@ _ud = re.compile('%([0-9a-hA-H]{2})', re.MULTILINE) urldecode = lambda x: _ud.sub(lambda m: chr(int(m.group(1), 16)), x) def parse_url(url): + from decimal import Decimal url = str(url) o = url[8:].split('?') address = o[0] t@@ -168,9 +169,18 @@ def parse_url(url): for p in params: k,v = p.split('=') uv = urldecode(v) - if k == 'amount': amount = uv - elif k == 'message': message = uv - elif k == 'label': label = uv + if k == 'amount': + amount = uv + m = re.match('([0-9\.]+)X([0-9])', uv) + if m: + k = int(m.group(2)) - 8 + amount = Decimal(m.group(1)) * pow( Decimal(10) , k) + else: + amount = Decimal(uv) + elif k == 'message': + message = uv + elif k == 'label': + label = uv elif k == 'signature': identity, signature = uv.split(':') url = url.replace('&%s=%s'%(k,v),'')