diff --git a/lesscpy/plib/expression.py b/lesscpy/plib/expression.py index e914d66..a5de90e 100644 --- a/lesscpy/plib/expression.py +++ b/lesscpy/plib/expression.py @@ -2,6 +2,7 @@ """ from .node import Node from lesscpy.lessc import utility +from lesscpy.lessc import color class Expression(Node): def parse(self, scope): @@ -17,12 +18,15 @@ class Expression(Node): if type(e) is tuple else e for e in expr] - a, ua = utility.analyze_number(A, 'Illegal element in expression') - b, ub = utility.analyze_number(B, 'Illegal element in expression') + 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([A, O, B]) + return ' '.join([str(A), str(O), str(B)]) if ua == 'color' or ub == 'color': - return color.LessColor().process(expression) + return color.LessColor().process((A, O, B)) out = self.operate(a, b, O) if type(a) is int and type(b) is int: out = int(out) @@ -43,16 +47,17 @@ class Expression(Node): def with_units(self, v, ua, ub): """ """ - if v == 0: return v; - if ua and ub: - if ua == ub: + if not v: return v + if ua or ub: + if ua and ub: + if ua == ub: + return str(v) + ua + else: + raise SyntaxError("Error in expression %s != %s" % (ua, ub)) + elif ua: return str(v) + ua - else: - raise SyntaxError("Error in expression %s != %s" % (ua, ub)) - elif ua: - return str(v) + ua - elif ub: - return str(v) + ub + elif ub: + return str(v) + ub return v def operate(self, a, b, o): diff --git a/lesscpy/plib/property.py b/lesscpy/plib/property.py index 1acdb3b..5c78a8d 100644 --- a/lesscpy/plib/property.py +++ b/lesscpy/plib/property.py @@ -25,7 +25,7 @@ class Property(Node): 'property': self.property, 'style': ''.join([p.format(fills) if hasattr(p, 'format') - else p + else str(p) for p in self.parsed]), }) return f % fills