darabonba/number.py (21 lines of code) (raw):
class Number:
def __init__(self, value):
self.value = self.to_number(value)
def to_number(self, value):
if isinstance(value, bool):
return 1 if value else 0
elif value is None:
return 0
elif isinstance(value, (int, float)):
return float(value)
elif isinstance(value, str):
try:
return float(value)
except ValueError:
return float('nan')
elif isinstance(value, (list, dict)):
return float('nan')
else:
return float('nan')
def __str__(self):
return str(self.value)