scripts: Adopted dat tweak in other scripts
This just makes dat behave similarly to Python's getattr, etc:
- dat("bogus") -> raises ValueError
- dat("bogus", 1234) -> returns 1234
This replaces try_dat, which is easy to forget about when copy-pasting
between scripts.
Though all of this wouldn't be necessary if only we could catch
exceptions in expressions...
This commit is contained in:
+2
-2
@@ -1296,11 +1296,11 @@ def punescape(s, attrs=None):
|
||||
f = m.group('format')
|
||||
if f[-1] in 'dboxX':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = int(v)
|
||||
elif f[-1] in 'fFeEgG':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = float(v)
|
||||
else:
|
||||
f = ('<' if '-' in f else '>') + f.replace('-', '')
|
||||
|
||||
+10
-8
@@ -245,7 +245,8 @@ class RingIO:
|
||||
|
||||
|
||||
# parse different data representations
|
||||
def dat(x):
|
||||
def dat(x, *args):
|
||||
try:
|
||||
# allow the first part of an a/b fraction
|
||||
if '/' in x:
|
||||
x, _ = x.split('/', 1)
|
||||
@@ -265,11 +266,12 @@ def dat(x):
|
||||
# else give up
|
||||
raise ValueError("invalid dat %r" % x)
|
||||
|
||||
def try_dat(x):
|
||||
try:
|
||||
return dat(x)
|
||||
except ValueError:
|
||||
return None
|
||||
# default on error?
|
||||
except ValueError as e:
|
||||
if args:
|
||||
return args[0]
|
||||
else:
|
||||
raise
|
||||
|
||||
def collect(csv_paths, defines=[]):
|
||||
# collect results from CSV files
|
||||
@@ -495,11 +497,11 @@ def punescape(s, attrs=None):
|
||||
f = m.group('format')
|
||||
if f[-1] in 'dboxX':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = int(v)
|
||||
elif f[-1] in 'fFeEgG':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = float(v)
|
||||
else:
|
||||
f = ('<' if '-' in f else '>') + f.replace('-', '')
|
||||
|
||||
+10
-8
@@ -169,7 +169,8 @@ def openio(path, mode='r', buffering=-1):
|
||||
return open(path, mode, buffering)
|
||||
|
||||
# parse different data representations
|
||||
def dat(x):
|
||||
def dat(x, *args):
|
||||
try:
|
||||
# allow the first part of an a/b fraction
|
||||
if '/' in x:
|
||||
x, _ = x.split('/', 1)
|
||||
@@ -189,11 +190,12 @@ def dat(x):
|
||||
# else give up
|
||||
raise ValueError("invalid dat %r" % x)
|
||||
|
||||
def try_dat(x):
|
||||
try:
|
||||
return dat(x)
|
||||
except ValueError:
|
||||
return None
|
||||
# default on error?
|
||||
except ValueError as e:
|
||||
if args:
|
||||
return args[0]
|
||||
else:
|
||||
raise
|
||||
|
||||
def collect(csv_paths, defines=[]):
|
||||
# collect results from CSV files
|
||||
@@ -419,11 +421,11 @@ def punescape(s, attrs=None):
|
||||
f = m.group('format')
|
||||
if f[-1] in 'dboxX':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = int(v)
|
||||
elif f[-1] in 'fFeEgG':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = float(v)
|
||||
else:
|
||||
f = ('<' if '-' in f else '>') + f.replace('-', '')
|
||||
|
||||
+10
-8
@@ -46,7 +46,8 @@ def openio(path, mode='r', buffering=-1):
|
||||
return open(path, mode, buffering)
|
||||
|
||||
# parse different data representations
|
||||
def dat(x):
|
||||
def dat(x, *args):
|
||||
try:
|
||||
# allow the first part of an a/b fraction
|
||||
if '/' in x:
|
||||
x, _ = x.split('/', 1)
|
||||
@@ -66,11 +67,12 @@ def dat(x):
|
||||
# else give up
|
||||
raise ValueError("invalid dat %r" % x)
|
||||
|
||||
def try_dat(x):
|
||||
try:
|
||||
return dat(x)
|
||||
except ValueError:
|
||||
return None
|
||||
# default on error?
|
||||
except ValueError as e:
|
||||
if args:
|
||||
return args[0]
|
||||
else:
|
||||
raise
|
||||
|
||||
def collect(csv_paths, defines=[]):
|
||||
# collect results from CSV files
|
||||
@@ -279,11 +281,11 @@ def punescape(s, attrs=None):
|
||||
f = m.group('format')
|
||||
if f[-1] in 'dboxX':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = int(v)
|
||||
elif f[-1] in 'fFeEgG':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = float(v)
|
||||
else:
|
||||
f = ('<' if '-' in f else '>') + f.replace('-', '')
|
||||
|
||||
+10
-8
@@ -62,7 +62,8 @@ def openio(path, mode='r', buffering=-1):
|
||||
return open(path, mode, buffering)
|
||||
|
||||
# parse different data representations
|
||||
def dat(x):
|
||||
def dat(x, *args):
|
||||
try:
|
||||
# allow the first part of an a/b fraction
|
||||
if '/' in x:
|
||||
x, _ = x.split('/', 1)
|
||||
@@ -82,11 +83,12 @@ def dat(x):
|
||||
# else give up
|
||||
raise ValueError("invalid dat %r" % x)
|
||||
|
||||
def try_dat(x):
|
||||
try:
|
||||
return dat(x)
|
||||
except ValueError:
|
||||
return None
|
||||
# default on error?
|
||||
except ValueError as e:
|
||||
if args:
|
||||
return args[0]
|
||||
else:
|
||||
raise
|
||||
|
||||
def collect(csv_paths, defines=[]):
|
||||
# collect results from CSV files
|
||||
@@ -295,11 +297,11 @@ def punescape(s, attrs=None):
|
||||
f = m.group('format')
|
||||
if f[-1] in 'dboxX':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = int(v)
|
||||
elif f[-1] in 'fFeEgG':
|
||||
if isinstance(v, str):
|
||||
v = try_dat(v) or 0
|
||||
v = dat(v, 0)
|
||||
v = float(v)
|
||||
else:
|
||||
f = ('<' if '-' in f else '>') + f.replace('-', '')
|
||||
|
||||
Reference in New Issue
Block a user