Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_analyze(self):
test = utility.analyze_number
self.assertEqual((0, ''), test('0'))
self.assertEqual((1, ''), test('1'))
self.assertEqual(type(test('1')[0]), int)
self.assertEqual(type(test('-1')[0]), int)
self.assertEqual((1.0, ''), test('1.0'))
self.assertEqual(type(test('-1.0')[0]), float)
self.assertEqual((0, 'px'), test('0px'))
self.assertEqual((1, 'px'), test('1px'))
self.assertEqual((1.0, 'px'), test('1.0px'))
self.assertEqual((0, 'px'), test('-0px'))
self.assertEqual((-1, 'px'), test('-1px'))
self.assertEqual(type(test('-1px')[0]), int)
self.assertEqual((-1.0, 'px'), test('-1.0px'))
self.assertEqual(type(test('-1.0px')[0]), float)
self.assertRaises(SyntaxError, test, 'gg')
self.assertRaises(SyntaxError, test, '-o')
def floor(self, value, *args):
""" Floor number
args:
value (str): target
returns:
str
"""
n, u = utility.analyze_number(value)
return utility.with_unit(int(math.floor(n)), u)
def decrement(self, value, *args):
""" Decrement function
args:
value (str): target
returns:
str
"""
n, u = utility.analyze_number(value)
return utility.with_unit(n - 1, u)
def ceil(self, value, *args):
""" Ceil number
args:
value (str): target
returns:
str
"""
n, u = utility.analyze_number(value)
return utility.with_unit(int(math.ceil(n)), u)
def round(self, value, *args):
""" Round number
args:
value (str): target
returns:
str
"""
n, u = utility.analyze_number(value)
return utility.with_unit(
int(utility.away_from_zero_round(float(n))), u)
def increment(self, value, *args):
""" Increment function
args:
value (str): target
returns:
str
"""
n, u = utility.analyze_number(value)
return utility.with_unit(n + 1, u)
def percentage(self, value, *args):
""" Return percentage value
args:
value (str): target
returns:
str
"""
n, u = utility.analyze_number(value)
n = int(n * 100.0)
u = '%'
return utility.with_unit(n, u)
""" Parse Node
args:
scope (Scope): Scope object
raises:
SyntaxError
returns:
str
"""
assert (len(self.tokens) == 3)
expr = self.process(self.tokens, scope)
A, O, B = [
e[0] if isinstance(e, tuple) else e for e in expr
if str(e).strip()
]
try:
a, ua = utility.analyze_number(A, 'Illegal element in expression')
b, ub = utility.analyze_number(B, 'Illegal element in expression')
except SyntaxError:
return ' '.join([str(A), str(O), str(B)])
if (a is False or b is False):
return ' '.join([str(A), str(O), str(B)])
if ua == 'color' or ub == 'color':
return color.Color().process((A, O, B))
if a == 0 and O == '/':
# NOTE(saschpe): The ugliest but valid CSS since sliced bread: 'font: 0/1 a;'
return ''.join([str(A), str(O), str(B), ' '])
out = self.operate(a, b, O)
if isinstance(out, bool):
return out
return self.with_units(out, ua, ub)
def isnumber(self, string, *args):
"""Is number
args:
string (str): match
returns:
bool
"""
try:
n, u = utility.analyze_number(string)
except SyntaxError:
return False
return True