aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2017-09-22 08:15:28 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2017-09-22 14:14:55 +0200
commitaeb51e89c1103836b2fd991a0ac789354465b55e (patch)
treee9b4b70f21a9e7f80bd3f667fc31f10b5f96f47b /src
parent21972f97987d239c0bd924c090ede852a0427bec (diff)
downloadee-python-aeb51e89c1103836b2fd991a0ac789354465b55e.tar.gz
ee-python-aeb51e89c1103836b2fd991a0ac789354465b55e.tar.bz2
ee-python-aeb51e89c1103836b2fd991a0ac789354465b55e.tar.xz
ee-python-aeb51e89c1103836b2fd991a0ac789354465b55e.zip
o Properly implementing EeVal as a value parser. Still missing units.
Diffstat (limited to 'src')
-rw-r--r--src/ee/__init__.py25
-rw-r--r--src/ee/formatting/__init__.py2
2 files changed, 17 insertions, 10 deletions
diff --git a/src/ee/__init__.py b/src/ee/__init__.py
index bb45ce6..b4da410 100644
--- a/src/ee/__init__.py
+++ b/src/ee/__init__.py
@@ -1,6 +1,8 @@
+import math
import numpy as np
import re
from functools import total_ordering
+from ee.formatting import eng_str
__all__ = [
"EeException",
@@ -21,17 +23,18 @@ class EeVal(object):
raise EeException("Could not parse value: " + str(s))
gs = m.groups()
exp = gs[1].strip()
- self._value = gs[0]
- self._exp = EeVal.exponents.get(gs[1], 0)
- self._unit = gs[2]
+ unit = gs[2]
+ self._value = int(gs[0])
+ self._exp = EeVal.exponents.get(exp, 0)
+ self._unit = unit if len(unit) > 0 else None
@property
def value(self):
- return self._value
+ return self.__float__()
@property
def unit(self):
- return self._exp
+ return self._unit
def __eq__(self, other):
return ((self._value, self._unit) == (other._value, other._unit))
@@ -40,13 +43,17 @@ class EeVal(object):
return ((self._value, self._unit) < (other._value, other._unit))
def __str__(self):
- return str(self._value) + (" " + str(self._unit) if self._unit else "")
+# return str(self._value) + (" " + str(self._unit) if self._unit else "")
+ return eng_str(self.__float__(), self._unit)
+
+ def __float__(self):
+ return self._value * math.pow(10, self._exp)
EeVal.exponents = {
- 'f': -12,
- 'p': -9,
- 'n': -6,
+ 'f': -15,
+ 'p': -12,
+ 'n': -9,
'u': -6,
'\u00B5': -6, # The micro symbol
'm': -3,
diff --git a/src/ee/formatting/__init__.py b/src/ee/formatting/__init__.py
index c2b5688..4527a96 100644
--- a/src/ee/formatting/__init__.py
+++ b/src/ee/formatting/__init__.py
@@ -72,7 +72,7 @@ def eng_str(value, unit=None):
s = '0' + (' ' + unit if unit is not None else '')
else:
big = ['k', 'M', 'G', 'T']
- small = ['m', 'u', 'p']
+ small = ['m', 'u', 'n', 'p']
if unit is not None:
big = [' ' + unit] + [' ' + x + unit for x in big]