diff options
author | Eevee (Alex Munroe) <eevee.git@veekun.com> | 2014-08-26 17:23:59 -0700 |
---|---|---|
committer | Eevee (Alex Munroe) <eevee.git@veekun.com> | 2014-08-26 17:23:59 -0700 |
commit | 8c8d728cb3b375d85b9d5776b0fc598fc39efa88 (patch) | |
tree | 752cccace8427bf085edf19de0af5c49eafdb0a1 | |
parent | e045cd72c467eacd16aaee2613ef0850e559a3ce (diff) | |
download | pyscss-8c8d728cb3b375d85b9d5776b0fc598fc39efa88.tar.gz |
Cut down on the punctuation noise in Sass reprs.
-rw-r--r-- | scss/types.py | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/scss/types.py b/scss/types.py index f310a1c..05973fe 100644 --- a/scss/types.py +++ b/scss/types.py @@ -3,6 +3,7 @@ from __future__ import division from __future__ import print_function from __future__ import unicode_literals +from collections import Iterable import colorsys import operator from warnings import warn @@ -23,7 +24,7 @@ class Value(object): sass_type_name = 'unknown' def __repr__(self): - return '<%s(%s)>' % (self.__class__.__name__, repr(self.value)) + return "<{0}: {1!r}>".format(type(self).__name__, self.value) # Sass values are all true, except for booleans and nulls def __bool__(self): @@ -136,7 +137,7 @@ class Null(Value): return self.sass_type_name def __repr__(self): - return "<%s()>" % (self.__class__.__name__,) + return "<{0}>".format(type(self).__name__) def __hash__(self): return hash(None) @@ -262,6 +263,11 @@ class Number(Value): self.value = amount * (numer_factor / denom_factor) def __repr__(self): + value = self.value + int_value = int(value) + if value == int_value: + value = int_value + full_unit = ' * '.join(self.unit_numer) if self.unit_denom: full_unit += ' / ' @@ -270,7 +276,7 @@ class Number(Value): if full_unit: full_unit = ' ' + full_unit - return '<%s(%r%s)>' % (self.__class__.__name__, self.value, full_unit) + return "<{0} {1}{2}>".format(type(self).__name__, value, full_unit) def __hash__(self): return hash((self.value, self.unit_numer, self.unit_denom)) @@ -557,7 +563,8 @@ class List(Value): if isinstance(iterable, List): iterable = iterable.value - if not isinstance(iterable, (list, tuple)): + if (not isinstance(iterable, Iterable) or + isinstance(iterable, six.string_types)): raise TypeError("Expected list, got %r" % (iterable,)) self.value = list(iterable) @@ -620,9 +627,9 @@ class List(Value): return cls(args, use_comma=use_comma) def __repr__(self): - return "<List(%r, %r)>" % ( - self.value, - self.delimiter(compress=True), + return "<{0} {1}>".format( + type(self).__name__, + self.delimiter().join(repr(item) for item in self), ) def __hash__(self): @@ -857,7 +864,7 @@ class Color(Value): ) def __repr__(self): - return '<%s(%s)>' % (self.__class__.__name__, repr(self.value)) + return "<{0} {1}>".format(type(self).__name__, self.render()) def __hash__(self): return hash(self.value) @@ -1024,11 +1031,12 @@ class String(Value): return self.value def __repr__(self): - if self.quotes != '"': - quotes = ', quotes=%r' % self.quotes + if self.quotes: + quotes = '(' + self.quotes + ')' else: quotes = '' - return '<%s(%s%s)>' % (self.__class__.__name__, repr(self.value), quotes) + return "<{0}{1} {2!r}>".format( + type(self).__name__, quotes, self.value) def __eq__(self, other): return Boolean(isinstance(other, String) and self.value == other.value) |