From 2c54c5ce58f4415b042dcdc6eb3ad518e6d5f7bf Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sat, 10 Feb 2018 11:01:49 -0800 Subject: [PATCH 1/5] Revert "Revert "Merge pull request #184 from dahlia/3_5_beta1"" This reverts commit e3f54a201838988088c032006b29a6dc1cb54621. --- libsass | 2 +- pysass.cpp | 9 +++++++-- sass.py | 11 +++++++---- sasstests.py | 31 +++++++++++++++++++++++++------ 4 files changed, 40 insertions(+), 13 deletions(-) diff --git a/libsass b/libsass index 6de5050d..82c49d88 160000 --- a/libsass +++ b/libsass @@ -1 +1 @@ -Subproject commit 6de5050d11a1789d9922eb24e2925047ecbb499b +Subproject commit 82c49d88a57c29d579b69ea99451c9b1d20fcfd5 diff --git a/pysass.cpp b/pysass.cpp index e4f284f1..5cbf6fc7 100644 --- a/pysass.cpp +++ b/pysass.cpp @@ -68,6 +68,8 @@ static PyObject* _to_py_value(const union Sass_Value* value) { size_t i = 0; PyObject* items = PyTuple_New(sass_list_get_length(value)); PyObject* separator = sass_comma; + int is_bracketed = sass_list_get_is_bracketed(value); + PyObject* bracketed = PyBool_FromLong(is_bracketed); switch (sass_list_get_separator(value)) { case SASS_COMMA: separator = sass_comma; @@ -87,7 +89,7 @@ static PyObject* _to_py_value(const union Sass_Value* value) { ); } retv = PyObject_CallMethod( - types_mod, "SassList", "OO", items, separator + types_mod, "SassList", "OOO", items, separator, bracketed ); break; } @@ -151,6 +153,7 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) { Py_ssize_t i = 0; PyObject* items = PyObject_GetAttrString(value, "items"); PyObject* separator = PyObject_GetAttrString(value, "separator"); + PyObject* bracketed = PyObject_GetAttrString(value, "bracketed"); Sass_Separator sep = SASS_COMMA; if (separator == sass_comma) { sep = SASS_COMMA; @@ -159,7 +162,8 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) { } else { assert(0); } - retv = sass_make_list(PyTuple_Size(items), sep); + int is_bracketed = bracketed == Py_True; + retv = sass_make_list(PyTuple_Size(items), sep, is_bracketed); for (i = 0; i < PyTuple_Size(items); i += 1) { sass_list_set_value( retv, i, _to_sass_value(PyTuple_GET_ITEM(items, i)) @@ -170,6 +174,7 @@ static union Sass_Value* _list_to_sass_value(PyObject* value) { Py_DECREF(sass_space); Py_DECREF(items); Py_DECREF(separator); + Py_DECREF(bracketed); return retv; } diff --git a/sass.py b/sass.py index cce296cc..54047ee9 100644 --- a/sass.py +++ b/sass.py @@ -702,12 +702,15 @@ def __new__(cls, r, g, b, a): SEPARATORS = frozenset((SASS_SEPARATOR_COMMA, SASS_SEPARATOR_SPACE)) -class SassList(collections.namedtuple('SassList', ('items', 'separator'))): +class SassList(collections.namedtuple( + 'SassList', ('items', 'separator', 'bracketed'), +)): - def __new__(cls, items, separator): + def __new__(cls, items, separator, bracketed=False): items = tuple(items) - assert separator in SEPARATORS - return super(SassList, cls).__new__(cls, items, separator) + assert separator in SEPARATORS, separator + assert isinstance(bracketed, bool), bracketed + return super(SassList, cls).__new__(cls, items, separator, bracketed) class SassError(collections.namedtuple('SassError', ('msg',))): diff --git a/sasstests.py b/sasstests.py index 7ff2b17e..c2c807a8 100644 --- a/sasstests.py +++ b/sasstests.py @@ -921,16 +921,12 @@ def test_color_conversion(self): assert type(color.a) is float, type(color.a) def test_sass_list_no_conversion(self): - lst = sass.SassList( - ('foo', 'bar'), sass.SASS_SEPARATOR_COMMA, - ) + lst = sass.SassList(('foo', 'bar'), sass.SASS_SEPARATOR_COMMA) assert type(lst.items) is tuple, type(lst.items) assert lst.separator is sass.SASS_SEPARATOR_COMMA, lst.separator def test_sass_list_conversion(self): - lst = sass.SassList( - ['foo', 'bar'], sass.SASS_SEPARATOR_SPACE, - ) + lst = sass.SassList(['foo', 'bar'], sass.SASS_SEPARATOR_SPACE) assert type(lst.items) is tuple, type(lst.items) assert lst.separator is sass.SASS_SEPARATOR_SPACE, lst.separator @@ -1004,6 +1000,12 @@ def returns_space_list(): return sass.SassList(('medium', 'none'), sass.SASS_SEPARATOR_SPACE) +def returns_bracketed_list(): + return sass.SassList( + ('hello', 'ohai'), sass.SASS_SEPARATOR_SPACE, bracketed=True, + ) + + def returns_py_dict(): return {'foo': 'bar'} @@ -1035,6 +1037,7 @@ def identity(x): sass.SassFunction('returns_color', (), returns_color), sass.SassFunction('returns_comma_list', (), returns_comma_list), sass.SassFunction('returns_space_list', (), returns_space_list), + sass.SassFunction('returns_bracketed_list', (), returns_bracketed_list), sass.SassFunction('returns_py_dict', (), returns_py_dict), sass.SassFunction('returns_map', (), returns_map), sass.SassFunction('identity', ('$x',), identity), @@ -1054,6 +1057,7 @@ def identity(x): 'returns_color': returns_color, 'returns_comma_list': returns_comma_list, 'returns_space_list': returns_space_list, + 'returns_bracketed_list': returns_bracketed_list, 'returns_py_dict': returns_py_dict, 'returns_map': returns_map, 'identity': identity, @@ -1073,6 +1077,7 @@ def identity(x): returns_color, returns_comma_list, returns_space_list, + returns_bracketed_list, returns_py_dict, returns_map, identity, @@ -1237,6 +1242,12 @@ def test_space_list(self): 'a{border-right:medium none}\n', ) + def test_bracketed_list(self): + self.assertEqual( + compile_with_func('a { content: returns_bracketed_list(); }'), + 'a{content:[hello ohai]}\n' + ) + def test_py_dict(self): self.assertEqual( compile_with_func( @@ -1307,6 +1318,14 @@ def test_identity_space_list(self): 'a{border-right:medium none}\n', ) + def test_identity_bracketed_list(self): + self.assertEqual( + compile_with_func( + 'a { content: identity(returns_bracketed_list()); }', + ), + 'a{content:[hello ohai]}\n', + ) + def test_identity_py_dict(self): self.assertEqual( compile_with_func( From 05af7f84de66db1e87ca238d4f616ddec4520635 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sat, 10 Feb 2018 11:01:54 -0800 Subject: [PATCH 2/5] Revert "Revert "Merge pull request #185 from dahlia/3_5_beta2"" This reverts commit bffeb2d62aa309c3afc0d2d2e534dbf2409365f1. --- libsass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsass b/libsass index 82c49d88..10085f66 160000 --- a/libsass +++ b/libsass @@ -1 +1 @@ -Subproject commit 82c49d88a57c29d579b69ea99451c9b1d20fcfd5 +Subproject commit 10085f663195a84981368b5fd865b0aa854e2d0e From 9676bc52bfa4f9f0cbd666ed4b6b1055d99b9906 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sat, 10 Feb 2018 11:01:55 -0800 Subject: [PATCH 3/5] Revert "Revert "Merge pull request #187 from dahlia/3_5_beta3"" This reverts commit 0f6db8d75803e9f5c968c5a19575c205a9e58d0b. --- libsass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsass b/libsass index 10085f66..4454eb65 160000 --- a/libsass +++ b/libsass @@ -1 +1 @@ -Subproject commit 10085f663195a84981368b5fd865b0aa854e2d0e +Subproject commit 4454eb65f738b3391095bfa2e669939ba9bb9d0f From 7a16ee5497c6cfb5b133d77d1d39d362e3515e0c Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Sat, 10 Feb 2018 11:18:48 -0800 Subject: [PATCH 4/5] Update submodule to master --- libsass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsass b/libsass index 4454eb65..813b8ea2 160000 --- a/libsass +++ b/libsass @@ -1 +1 @@ -Subproject commit 4454eb65f738b3391095bfa2e669939ba9bb9d0f +Subproject commit 813b8ea2bc9b479fabc47d7e4d569fe6a5711675 From 2957d0589a464329546d2e5283663c90dba91a49 Mon Sep 17 00:00:00 2001 From: Anthony Sottile Date: Tue, 6 Mar 2018 09:59:02 -0800 Subject: [PATCH 5/5] Update to 3.5.0 release! --- libsass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsass b/libsass index 813b8ea2..60f83915 160000 --- a/libsass +++ b/libsass @@ -1 +1 @@ -Subproject commit 813b8ea2bc9b479fabc47d7e4d569fe6a5711675 +Subproject commit 60f839158eff1f1bb84cb44f0f0c4bce3ed86a6d