summaryrefslogtreecommitdiff
path: root/scss/types.py
diff options
context:
space:
mode:
Diffstat (limited to 'scss/types.py')
-rw-r--r--scss/types.py16
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