Skip to content

Commit 919e415

Browse files
committed
Upgrade libsass to 3.5.0.beta1
1 parent 5bcefdd commit 919e415

File tree

4 files changed

+42
-11
lines changed

4 files changed

+42
-11
lines changed

pysass.cpp

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ static PyObject* _to_py_value(const union Sass_Value* value) {
7777
size_t i = 0;
7878
PyObject* items = PyTuple_New(sass_list_get_length(value));
7979
PyObject* separator = sass_comma;
80+
int is_bracketed = sass_list_get_is_bracketed(value);
81+
PyObject* bracketed = PyBool_FromLong(is_bracketed);
8082
switch (sass_list_get_separator(value)) {
8183
case SASS_COMMA:
8284
separator = sass_comma;
@@ -96,7 +98,7 @@ static PyObject* _to_py_value(const union Sass_Value* value) {
9698
);
9799
}
98100
retv = PyObject_CallMethod(
99-
types_mod, "SassList", "OO", items, separator
101+
types_mod, "SassList", "OOO", items, separator, bracketed
100102
);
101103
break;
102104
}
@@ -160,6 +162,7 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) {
160162
Py_ssize_t i = 0;
161163
PyObject* items = PyObject_GetAttrString(value, "items");
162164
PyObject* separator = PyObject_GetAttrString(value, "separator");
165+
PyObject* bracketed = PyObject_GetAttrString(value, "bracketed");
163166
Sass_Separator sep = SASS_COMMA;
164167
if (separator == sass_comma) {
165168
sep = SASS_COMMA;
@@ -168,7 +171,8 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) {
168171
} else {
169172
assert(0);
170173
}
171-
retv = sass_make_list(PyTuple_Size(items), sep);
174+
int is_bracketed = bracketed == Py_True;
175+
retv = sass_make_list(PyTuple_Size(items), sep, is_bracketed);
172176
for (i = 0; i < PyTuple_Size(items); i += 1) {
173177
sass_list_set_value(
174178
retv, i, _to_sass_value(PyTuple_GET_ITEM(items, i))
@@ -179,6 +183,7 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) {
179183
Py_DECREF(sass_space);
180184
Py_DECREF(items);
181185
Py_DECREF(separator);
186+
Py_DECREF(bracketed);
182187
return retv;
183188
}
184189

sass.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -694,12 +694,15 @@ def __new__(cls, r, g, b, a):
694694
SEPARATORS = frozenset((SASS_SEPARATOR_COMMA, SASS_SEPARATOR_SPACE))
695695

696696

697-
class SassList(collections.namedtuple('SassList', ('items', 'separator'))):
697+
class SassList(collections.namedtuple(
698+
'SassList', ('items', 'separator', 'bracketed'),
699+
)):
698700

699-
def __new__(cls, items, separator):
701+
def __new__(cls, items, separator, bracketed):
700702
items = tuple(items)
701-
assert separator in SEPARATORS
702-
return super(SassList, cls).__new__(cls, items, separator)
703+
assert separator in SEPARATORS, separator
704+
assert isinstance(bracketed, bool), bracketed
705+
return super(SassList, cls).__new__(cls, items, separator, bracketed)
703706

704707

705708
class SassError(collections.namedtuple('SassError', ('msg',))):

sasstests.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -943,14 +943,14 @@ def test_color_conversion(self):
943943

944944
def test_sass_list_no_conversion(self):
945945
lst = sass.SassList(
946-
('foo', 'bar'), sass.SASS_SEPARATOR_COMMA,
946+
('foo', 'bar'), sass.SASS_SEPARATOR_COMMA, False,
947947
)
948948
assert type(lst.items) is tuple, type(lst.items)
949949
assert lst.separator is sass.SASS_SEPARATOR_COMMA, lst.separator
950950

951951
def test_sass_list_conversion(self):
952952
lst = sass.SassList(
953-
['foo', 'bar'], sass.SASS_SEPARATOR_SPACE,
953+
['foo', 'bar'], sass.SASS_SEPARATOR_SPACE, False,
954954
)
955955
assert type(lst.items) is tuple, type(lst.items)
956956
assert lst.separator is sass.SASS_SEPARATOR_SPACE, lst.separator
@@ -1018,11 +1018,17 @@ def returns_color():
10181018

10191019

10201020
def returns_comma_list():
1021-
return sass.SassList(('Arial', 'sans-serif'), sass.SASS_SEPARATOR_COMMA)
1021+
return sass.SassList(
1022+
('Arial', 'sans-serif'), sass.SASS_SEPARATOR_COMMA, False,
1023+
)
10221024

10231025

10241026
def returns_space_list():
1025-
return sass.SassList(('medium', 'none'), sass.SASS_SEPARATOR_SPACE)
1027+
return sass.SassList(('medium', 'none'), sass.SASS_SEPARATOR_SPACE, False)
1028+
1029+
1030+
def returns_bracketed_list():
1031+
return sass.SassList(('hello', 'ohai'), sass.SASS_SEPARATOR_SPACE, True)
10261032

10271033

10281034
def returns_py_dict():
@@ -1056,6 +1062,7 @@ def identity(x):
10561062
sass.SassFunction('returns_color', (), returns_color),
10571063
sass.SassFunction('returns_comma_list', (), returns_comma_list),
10581064
sass.SassFunction('returns_space_list', (), returns_space_list),
1065+
sass.SassFunction('returns_bracketed_list', (), returns_bracketed_list),
10591066
sass.SassFunction('returns_py_dict', (), returns_py_dict),
10601067
sass.SassFunction('returns_map', (), returns_map),
10611068
sass.SassFunction('identity', ('$x',), identity),
@@ -1075,6 +1082,7 @@ def identity(x):
10751082
'returns_color': returns_color,
10761083
'returns_comma_list': returns_comma_list,
10771084
'returns_space_list': returns_space_list,
1085+
'returns_bracketed_list': returns_bracketed_list,
10781086
'returns_py_dict': returns_py_dict,
10791087
'returns_map': returns_map,
10801088
'identity': identity,
@@ -1094,6 +1102,7 @@ def identity(x):
10941102
returns_color,
10951103
returns_comma_list,
10961104
returns_space_list,
1105+
returns_bracketed_list,
10971106
returns_py_dict,
10981107
returns_map,
10991108
identity,
@@ -1258,6 +1267,12 @@ def test_space_list(self):
12581267
'a{border-right:medium none}\n',
12591268
)
12601269

1270+
def test_bracketed_list(self):
1271+
self.assertEqual(
1272+
compile_with_func('a { content: returns_bracketed_list(); }'),
1273+
'a{content:[hello ohai]}\n'
1274+
)
1275+
12611276
def test_py_dict(self):
12621277
self.assertEqual(
12631278
compile_with_func(
@@ -1328,6 +1343,14 @@ def test_identity_space_list(self):
13281343
'a{border-right:medium none}\n',
13291344
)
13301345

1346+
def test_identity_bracketed_list(self):
1347+
self.assertEqual(
1348+
compile_with_func(
1349+
'a { content: identity(returns_bracketed_list()); }',
1350+
),
1351+
'a{content:[hello ohai]}\n',
1352+
)
1353+
13311354
def test_identity_py_dict(self):
13321355
self.assertEqual(
13331356
compile_with_func(

0 commit comments

Comments
 (0)