diff options
Diffstat (limited to 'scss/types.py')
-rw-r--r-- | scss/types.py | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/scss/types.py b/scss/types.py index d0079d3..4a027d7 100644 --- a/scss/types.py +++ b/scss/types.py @@ -549,7 +549,7 @@ class List(Value): sass_type_name = u'list' - def __init__(self, iterable, separator=None, use_comma=None): + def __init__(self, iterable, separator=None, use_comma=None, is_literal=False): if isinstance(iterable, List): iterable = iterable.value @@ -568,6 +568,8 @@ class List(Value): else: self.use_comma = use_comma + self.is_literal = is_literal + @classmethod def maybe_new(cls, values, use_comma=True): """If `values` contains only one item, return that item. Otherwise, @@ -662,9 +664,19 @@ class List(Value): delim = self.delimiter(compress) + if self.is_literal: + value = self.value + else: + # Non-literal lists have nulls stripped + value = [item for item in self.value if not item.is_null] + # Non-empty lists containing only nulls become nothing, just like + # single nulls + if not value: + return '' + return delim.join( item.render(compress=compress) - for item in self.value + for item in value ) # DEVIATION: binary ops on lists and scalars act element-wise |