Skip to content

Commit f8cd532

Browse files
authored
Merge pull request #184 from dahlia/3_5_beta1
Upgrade libsass to 3.5.0.beta1
2 parents 5bcefdd + d0d8ece commit f8cd532

File tree

4 files changed

+40
-13
lines changed

4 files changed

+40
-13
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=False):
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: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -942,16 +942,12 @@ def test_color_conversion(self):
942942
assert type(color.a) is float, type(color.a)
943943

944944
def test_sass_list_no_conversion(self):
945-
lst = sass.SassList(
946-
('foo', 'bar'), sass.SASS_SEPARATOR_COMMA,
947-
)
945+
lst = sass.SassList(('foo', 'bar'), sass.SASS_SEPARATOR_COMMA)
948946
assert type(lst.items) is tuple, type(lst.items)
949947
assert lst.separator is sass.SASS_SEPARATOR_COMMA, lst.separator
950948

951949
def test_sass_list_conversion(self):
952-
lst = sass.SassList(
953-
['foo', 'bar'], sass.SASS_SEPARATOR_SPACE,
954-
)
950+
lst = sass.SassList(['foo', 'bar'], sass.SASS_SEPARATOR_SPACE)
955951
assert type(lst.items) is tuple, type(lst.items)
956952
assert lst.separator is sass.SASS_SEPARATOR_SPACE, lst.separator
957953

@@ -1025,6 +1021,12 @@ def returns_space_list():
10251021
return sass.SassList(('medium', 'none'), sass.SASS_SEPARATOR_SPACE)
10261022

10271023

1024+
def returns_bracketed_list():
1025+
return sass.SassList(
1026+
('hello', 'ohai'), sass.SASS_SEPARATOR_SPACE, bracketed=True,
1027+
)
1028+
1029+
10281030
def returns_py_dict():
10291031
return {'foo': 'bar'}
10301032

@@ -1056,6 +1058,7 @@ def identity(x):
10561058
sass.SassFunction('returns_color', (), returns_color),
10571059
sass.SassFunction('returns_comma_list', (), returns_comma_list),
10581060
sass.SassFunction('returns_space_list', (), returns_space_list),
1061+
sass.SassFunction('returns_bracketed_list', (), returns_bracketed_list),
10591062
sass.SassFunction('returns_py_dict', (), returns_py_dict),
10601063
sass.SassFunction('returns_map', (), returns_map),
10611064
sass.SassFunction('identity', ('$x',), identity),
@@ -1075,6 +1078,7 @@ def identity(x):
10751078
'returns_color': returns_color,
10761079
'returns_comma_list': returns_comma_list,
10771080
'returns_space_list': returns_space_list,
1081+
'returns_bracketed_list': returns_bracketed_list,
10781082
'returns_py_dict': returns_py_dict,
10791083
'returns_map': returns_map,
10801084
'identity': identity,
@@ -1094,6 +1098,7 @@ def identity(x):
10941098
returns_color,
10951099
returns_comma_list,
10961100
returns_space_list,
1101+
returns_bracketed_list,
10971102
returns_py_dict,
10981103
returns_map,
10991104
identity,
@@ -1258,6 +1263,12 @@ def test_space_list(self):
12581263
'a{border-right:medium none}\n',
12591264
)
12601265

1266+
def test_bracketed_list(self):
1267+
self.assertEqual(
1268+
compile_with_func('a { content: returns_bracketed_list(); }'),
1269+
'a{content:[hello ohai]}\n'
1270+
)
1271+
12611272
def test_py_dict(self):
12621273
self.assertEqual(
12631274
compile_with_func(
@@ -1328,6 +1339,14 @@ def test_identity_space_list(self):
13281339
'a{border-right:medium none}\n',
13291340
)
13301341

1342+
def test_identity_bracketed_list(self):
1343+
self.assertEqual(
1344+
compile_with_func(
1345+
'a { content: identity(returns_bracketed_list()); }',
1346+
),
1347+
'a{content:[hello ohai]}\n',
1348+
)
1349+
13311350
def test_identity_py_dict(self):
13321351
self.assertEqual(
13331352
compile_with_func(

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy