summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEevee (Lexy Munroe) <eevee.git@veekun.com>2016-06-08 18:07:07 -0700
committerEevee (Lexy Munroe) <eevee.git@veekun.com>2016-06-08 18:07:07 -0700
commit6c3c4f0d3a14c6b53f1bfb64c1eb1a079345730d (patch)
tree7114e4cb1829874757e22d630794e51b1567c62f
parentefcbde372e9d6ddfd429a463f31cf6f37fa22d9a (diff)
downloadpyscss-6c3c4f0d3a14c6b53f1bfb64c1eb1a079345730d.tar.gz
Leave invert(N) alone; it's a CSS filter. Fixes #331
-rw-r--r--scss/extension/core.py6
-rw-r--r--scss/tests/extension/test_core.py5
2 files changed, 11 insertions, 0 deletions
diff --git a/scss/extension/core.py b/scss/extension/core.py
index 7b69315..966a830 100644
--- a/scss/extension/core.py
+++ b/scss/extension/core.py
@@ -378,6 +378,12 @@ def invert(color):
"""Returns the inverse (negative) of a color. The red, green, and blue
values are inverted, while the opacity is left alone.
"""
+ if isinstance(color, Number):
+ # invert(n) and invert(n%) are CSS3 filters and should be left
+ # intact
+ return String.unquoted("invert(%s)" % (color.render(),))
+
+ expect_type(color, Color)
r, g, b, a = color.rgba
return Color.from_rgb(1 - r, 1 - g, 1 - b, alpha=a)
diff --git a/scss/tests/extension/test_core.py b/scss/tests/extension/test_core.py
index 7151c76..4e83e99 100644
--- a/scss/tests/extension/test_core.py
+++ b/scss/tests/extension/test_core.py
@@ -152,6 +152,11 @@ def test_invert():
assert calc('invert(yellow)') == Color.from_rgb(0., 0., 1.)
+def test_invert_css_filter():
+ # invert(number) is a CSS filter and should be left alone
+ assert calc('invert(50%)') == String("invert(50%)")
+
+
# ------------------------------------------------------------------------------
# Opacity functions