Skip to content

Commit 2c54c5c

Browse files
committed
Revert "Revert "Merge pull request #184 from dahlia/3_5_beta1""
This reverts commit e3f54a2.
1 parent 58f7b31 commit 2c54c5c

File tree

4 files changed

+40
-13
lines changed

4 files changed

+40
-13
lines changed

libsass

Submodule libsass updated 108 files

pysass.cpp

+7-2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ static PyObject* _to_py_value(const union Sass_Value* value) {
6868
size_t i = 0;
6969
PyObject* items = PyTuple_New(sass_list_get_length(value));
7070
PyObject* separator = sass_comma;
71+
int is_bracketed = sass_list_get_is_bracketed(value);
72+
PyObject* bracketed = PyBool_FromLong(is_bracketed);
7173
switch (sass_list_get_separator(value)) {
7274
case SASS_COMMA:
7375
separator = sass_comma;
@@ -87,7 +89,7 @@ static PyObject* _to_py_value(const union Sass_Value* value) {
8789
);
8890
}
8991
retv = PyObject_CallMethod(
90-
types_mod, "SassList", "OO", items, separator
92+
types_mod, "SassList", "OOO", items, separator, bracketed
9193
);
9294
break;
9395
}
@@ -151,6 +153,7 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) {
151153
Py_ssize_t i = 0;
152154
PyObject* items = PyObject_GetAttrString(value, "items");
153155
PyObject* separator = PyObject_GetAttrString(value, "separator");
156+
PyObject* bracketed = PyObject_GetAttrString(value, "bracketed");
154157
Sass_Separator sep = SASS_COMMA;
155158
if (separator == sass_comma) {
156159
sep = SASS_COMMA;
@@ -159,7 +162,8 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) {
159162
} else {
160163
assert(0);
161164
}
162-
retv = sass_make_list(PyTuple_Size(items), sep);
165+
int is_bracketed = bracketed == Py_True;
166+
retv = sass_make_list(PyTuple_Size(items), sep, is_bracketed);
163167
for (i = 0; i < PyTuple_Size(items); i += 1) {
164168
sass_list_set_value(
165169
retv, i, _to_sass_value(PyTuple_GET_ITEM(items, i))
@@ -170,6 +174,7 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) {
170174
Py_DECREF(sass_space);
171175
Py_DECREF(items);
172176
Py_DECREF(separator);
177+
Py_DECREF(bracketed);
173178
return retv;
174179
}
175180

sass.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -702,12 +702,15 @@ def __new__(cls, r, g, b, a):
702702
SEPARATORS = frozenset((SASS_SEPARATOR_COMMA, SASS_SEPARATOR_SPACE))
703703

704704

705-
class SassList(collections.namedtuple('SassList', ('items', 'separator'))):
705+
class SassList(collections.namedtuple(
706+
'SassList', ('items', 'separator', 'bracketed'),
707+
)):
706708

707-
def __new__(cls, items, separator):
709+
def __new__(cls, items, separator, bracketed=False):
708710
items = tuple(items)
709-
assert separator in SEPARATORS
710-
return super(SassList, cls).__new__(cls, items, separator)
711+
assert separator in SEPARATORS, separator
712+
assert isinstance(bracketed, bool), bracketed
713+
return super(SassList, cls).__new__(cls, items, separator, bracketed)
711714

712715

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

sasstests.py

+25-6
Original file line numberDiff line numberDiff line change
@@ -921,16 +921,12 @@ def test_color_conversion(self):
921921
assert type(color.a) is float, type(color.a)
922922

923923
def test_sass_list_no_conversion(self):
924-
lst = sass.SassList(
925-
('foo', 'bar'), sass.SASS_SEPARATOR_COMMA,
926-
)
924+
lst = sass.SassList(('foo', 'bar'), sass.SASS_SEPARATOR_COMMA)
927925
assert type(lst.items) is tuple, type(lst.items)
928926
assert lst.separator is sass.SASS_SEPARATOR_COMMA, lst.separator
929927

930928
def test_sass_list_conversion(self):
931-
lst = sass.SassList(
932-
['foo', 'bar'], sass.SASS_SEPARATOR_SPACE,
933-
)
929+
lst = sass.SassList(['foo', 'bar'], sass.SASS_SEPARATOR_SPACE)
934930
assert type(lst.items) is tuple, type(lst.items)
935931
assert lst.separator is sass.SASS_SEPARATOR_SPACE, lst.separator
936932

@@ -1004,6 +1000,12 @@ def returns_space_list():
10041000
return sass.SassList(('medium', 'none'), sass.SASS_SEPARATOR_SPACE)
10051001

10061002

1003+
def returns_bracketed_list():
1004+
return sass.SassList(
1005+
('hello', 'ohai'), sass.SASS_SEPARATOR_SPACE, bracketed=True,
1006+
)
1007+
1008+
10071009
def returns_py_dict():
10081010
return {'foo': 'bar'}
10091011

@@ -1035,6 +1037,7 @@ def identity(x):
10351037
sass.SassFunction('returns_color', (), returns_color),
10361038
sass.SassFunction('returns_comma_list', (), returns_comma_list),
10371039
sass.SassFunction('returns_space_list', (), returns_space_list),
1040+
sass.SassFunction('returns_bracketed_list', (), returns_bracketed_list),
10381041
sass.SassFunction('returns_py_dict', (), returns_py_dict),
10391042
sass.SassFunction('returns_map', (), returns_map),
10401043
sass.SassFunction('identity', ('$x',), identity),
@@ -1054,6 +1057,7 @@ def identity(x):
10541057
'returns_color': returns_color,
10551058
'returns_comma_list': returns_comma_list,
10561059
'returns_space_list': returns_space_list,
1060+
'returns_bracketed_list': returns_bracketed_list,
10571061
'returns_py_dict': returns_py_dict,
10581062
'returns_map': returns_map,
10591063
'identity': identity,
@@ -1073,6 +1077,7 @@ def identity(x):
10731077
returns_color,
10741078
returns_comma_list,
10751079
returns_space_list,
1080+
returns_bracketed_list,
10761081
returns_py_dict,
10771082
returns_map,
10781083
identity,
@@ -1237,6 +1242,12 @@ def test_space_list(self):
12371242
'a{border-right:medium none}\n',
12381243
)
12391244

1245+
def test_bracketed_list(self):
1246+
self.assertEqual(
1247+
compile_with_func('a { content: returns_bracketed_list(); }'),
1248+
'a{content:[hello ohai]}\n'
1249+
)
1250+
12401251
def test_py_dict(self):
12411252
self.assertEqual(
12421253
compile_with_func(
@@ -1307,6 +1318,14 @@ def test_identity_space_list(self):
13071318
'a{border-right:medium none}\n',
13081319
)
13091320

1321+
def test_identity_bracketed_list(self):
1322+
self.assertEqual(
1323+
compile_with_func(
1324+
'a { content: identity(returns_bracketed_list()); }',
1325+
),
1326+
'a{content:[hello ohai]}\n',
1327+
)
1328+
13101329
def test_identity_py_dict(self):
13111330
self.assertEqual(
13121331
compile_with_func(

0 commit comments

Comments
 (0)