Source code for dp_tornado.helper.numeric
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from dp_tornado.engine.helper import Helper as dpHelper
import re
[docs]class NumericHelper(dpHelper):
[docs] def extract_numbers(self, string):
if self.helper.misc.system.py_version <= 2:
types = basestring,
types_num = (int, long)
else:
types = str,
types_num = (int, )
if isinstance(string, types_num):
return str(string)
if not isinstance(string, types):
return None
return re.sub(r'\D+', '', string)
[docs] def number_format(self, value, tsep=',', dsep='.'):
if self.helper.misc.type.check.string(value):
value = value.replace(',', '')
if '.' in value:
value_cast = self.helper.numeric.cast.float(value)
else:
value_cast = self.helper.numeric.cast.long(value)
if value_cast is not False:
value = value_cast
else:
value = self.extract_numbers(value)
elif self.helper.misc.type.check.numeric(value):
value = value
else:
raise Exception('Invalid value.')
if not value:
return '0'
s = str(value)
cnt = 0
numchars = dsep + '0123456789'
ls = len(s)
while cnt < ls and s[cnt] not in numchars:
cnt += 1
lhs = s[:cnt]
s = s[cnt:]
if not dsep:
cnt = -1
else:
cnt = s.rfind(dsep)
if cnt > 0:
rhs = dsep + s[cnt+1:]
s = s[:cnt]
else:
rhs = ''
splt = ''
while s != '':
splt = s[-3:] + tsep + splt
s = s[:-3]
return lhs + splt[:-1] + rhs
[docs] @dpHelper.decorators.deprecated
def int(self, a, raise_exception=True):
try:
if self.helper.misc.system.py_version <= 2:
return int(a) if a else 0
else:
return int(a) if a else 0
except ValueError as e:
if raise_exception:
raise e
return False
[docs] @dpHelper.decorators.deprecated
def long(self, a, raise_exception=True):
try:
if self.helper.misc.system.py_version <= 2:
return long(a) if a else long(0)
else:
return int(a) if a else 0
except ValueError as e:
if raise_exception:
raise e
return False
@property
def xxx(self):
return 'ABtQR5JxfghijN_qrb4KSy9-Uuvw6ZVcLnpMFGkeTPd3WXYEHCDma78sz12'
[docs] @dpHelper.decorators.deprecated
def to_xxx(self, x):
__ = self.xxx
_ = ''
while True:
if x <= 0:
break
k = x % len(__)
_ = '%s%s' % (__[k:k+1], _)
x = self.long(x / len(__))
return _
[docs] @dpHelper.decorators.deprecated
def from_xxx(self, x):
__ = self.xxx
_ = 0
c = 0
for i in reversed(str(x)):
i = __.find(i)
_ += i * (len(__) ** c)
c += 1
return _