Skip to content

Commit 29ec860

Browse files
committed
Revert "Revert "Merge pull request #184 from dahlia/3_5_beta1""
This reverts commit e3f54a2.
1 parent fce952f commit 29ec860

File tree

4 files changed

+40
-13
lines changed

4 files changed

+40
-13
lines changed

libsass

Submodule libsass updated 108 files

pysass.cpp

Lines changed: 7 additions & 2 deletions
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

Lines changed: 7 additions & 4 deletions
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

Lines changed: 25 additions & 6 deletions
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)
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