summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEevee (Alex Munroe) <eevee.git@veekun.com>2013-08-01 15:53:53 -0700
committerEevee (Alex Munroe) <eevee.git@veekun.com>2013-08-01 15:53:53 -0700
commita21cf8048875b30290263cd2165943a275249678 (patch)
tree91efbc959ea325e347612028addb1e3e77d7c527
parent7780a04e2ce19381b1e001f3c082ac9b42a0f60b (diff)
downloadpyscss-a21cf8048875b30290263cd2165943a275249678.tar.gz
Better support for `transparent`, including on output.
-rw-r--r--scss/cssdefs.py281
-rw-r--r--scss/expression.py2
-rw-r--r--scss/types.py18
3 files changed, 152 insertions, 149 deletions
diff --git a/scss/cssdefs.py b/scss/cssdefs.py
index 19af7bf..602cb66 100644
--- a/scss/cssdefs.py
+++ b/scss/cssdefs.py
@@ -6,146 +6,147 @@ import re
# See: http://www.w3.org/TR/css3-color/#svg-color
COLOR_NAMES = {
- 'aliceblue': (240, 248, 255),
- 'antiquewhite': (250, 235, 215),
- 'aqua': (0, 255, 255),
- 'aquamarine': (127, 255, 212),
- 'azure': (240, 255, 255),
- 'beige': (245, 245, 220),
- 'bisque': (255, 228, 196),
- 'black': (0, 0, 0),
- 'blanchedalmond': (255, 235, 205),
- 'blue': (0, 0, 255),
- 'blueviolet': (138, 43, 226),
- 'brown': (165, 42, 42),
- 'burlywood': (222, 184, 135),
- 'cadetblue': (95, 158, 160),
- 'chartreuse': (127, 255, 0),
- 'chocolate': (210, 105, 30),
- 'coral': (255, 127, 80),
- 'cornflowerblue': (100, 149, 237),
- 'cornsilk': (255, 248, 220),
- 'crimson': (220, 20, 60),
- 'cyan': (0, 255, 255),
- 'darkblue': (0, 0, 139),
- 'darkcyan': (0, 139, 139),
- 'darkgoldenrod': (184, 134, 11),
- 'darkgray': (169, 169, 169),
- 'darkgreen': (0, 100, 0),
- 'darkkhaki': (189, 183, 107),
- 'darkmagenta': (139, 0, 139),
- 'darkolivegreen': (85, 107, 47),
- 'darkorange': (255, 140, 0),
- 'darkorchid': (153, 50, 204),
- 'darkred': (139, 0, 0),
- 'darksalmon': (233, 150, 122),
- 'darkseagreen': (143, 188, 143),
- 'darkslateblue': (72, 61, 139),
- 'darkslategray': (47, 79, 79),
- 'darkturquoise': (0, 206, 209),
- 'darkviolet': (148, 0, 211),
- 'deeppink': (255, 20, 147),
- 'deepskyblue': (0, 191, 255),
- 'dimgray': (105, 105, 105),
- 'dodgerblue': (30, 144, 255),
- 'firebrick': (178, 34, 34),
- 'floralwhite': (255, 250, 240),
- 'forestgreen': (34, 139, 34),
- 'fuchsia': (255, 0, 255),
- 'gainsboro': (220, 220, 220),
- 'ghostwhite': (248, 248, 255),
- 'gold': (255, 215, 0),
- 'goldenrod': (218, 165, 32),
- 'gray': (128, 128, 128),
- 'green': (0, 128, 0),
- 'greenyellow': (173, 255, 47),
- 'honeydew': (240, 255, 240),
- 'hotpink': (255, 105, 180),
- 'indianred': (205, 92, 92),
- 'indigo': (75, 0, 130),
- 'ivory': (255, 255, 240),
- 'khaki': (240, 230, 140),
- 'lavender': (230, 230, 250),
- 'lavenderblush': (255, 240, 245),
- 'lawngreen': (124, 252, 0),
- 'lemonchiffon': (255, 250, 205),
- 'lightblue': (173, 216, 230),
- 'lightcoral': (240, 128, 128),
- 'lightcyan': (224, 255, 255),
- 'lightgoldenrodyellow': (250, 250, 210),
- 'lightgreen': (144, 238, 144),
- 'lightgrey': (211, 211, 211),
- 'lightpink': (255, 182, 193),
- 'lightsalmon': (255, 160, 122),
- 'lightseagreen': (32, 178, 170),
- 'lightskyblue': (135, 206, 250),
- 'lightslategray': (119, 136, 153),
- 'lightsteelblue': (176, 196, 222),
- 'lightyellow': (255, 255, 224),
- 'lime': (0, 255, 0),
- 'limegreen': (50, 205, 50),
- 'linen': (250, 240, 230),
- 'magenta': (255, 0, 255),
- 'maroon': (128, 0, 0),
- 'mediumaquamarine': (102, 205, 170),
- 'mediumblue': (0, 0, 205),
- 'mediumorchid': (186, 85, 211),
- 'mediumpurple': (147, 112, 219),
- 'mediumseagreen': (60, 179, 113),
- 'mediumslateblue': (123, 104, 238),
- 'mediumspringgreen': (0, 250, 154),
- 'mediumturquoise': (72, 209, 204),
- 'mediumvioletred': (199, 21, 133),
- 'midnightblue': (25, 25, 112),
- 'mintcream': (245, 255, 250),
- 'mistyrose': (255, 228, 225),
- 'moccasin': (255, 228, 181),
- 'navajowhite': (255, 222, 173),
- 'navy': (0, 0, 128),
- 'oldlace': (253, 245, 230),
- 'olive': (128, 128, 0),
- 'olivedrab': (107, 142, 35),
- 'orange': (255, 165, 0),
- 'orangered': (255, 69, 0),
- 'orchid': (218, 112, 214),
- 'palegoldenrod': (238, 232, 170),
- 'palegreen': (152, 251, 152),
- 'paleturquoise': (175, 238, 238),
- 'palevioletred': (219, 112, 147),
- 'papayawhip': (255, 239, 213),
- 'peachpuff': (255, 218, 185),
- 'peru': (205, 133, 63),
- 'pink': (255, 192, 203),
- 'plum': (221, 160, 221),
- 'powderblue': (176, 224, 230),
- 'purple': (128, 0, 128),
- 'red': (255, 0, 0),
- 'rosybrown': (188, 143, 143),
- 'royalblue': (65, 105, 225),
- 'saddlebrown': (139, 69, 19),
- 'salmon': (250, 128, 114),
- 'sandybrown': (244, 164, 96),
- 'seagreen': (46, 139, 87),
- 'seashell': (255, 245, 238),
- 'sienna': (160, 82, 45),
- 'silver': (192, 192, 192),
- 'skyblue': (135, 206, 235),
- 'slateblue': (106, 90, 205),
- 'slategray': (112, 128, 144),
- 'snow': (255, 250, 250),
- 'springgreen': (0, 255, 127),
- 'steelblue': (70, 130, 180),
- 'tan': (210, 180, 140),
- 'teal': (0, 128, 128),
- 'thistle': (216, 191, 216),
- 'tomato': (255, 99, 71),
- 'turquoise': (64, 224, 208),
- 'violet': (238, 130, 238),
- 'wheat': (245, 222, 179),
- 'white': (255, 255, 255),
- 'whitesmoke': (245, 245, 245),
- 'yellow': (255, 255, 0),
- 'yellowgreen': (154, 205, 50)
+ 'aliceblue': (240, 248, 255, 1),
+ 'antiquewhite': (250, 235, 215, 1),
+ 'aqua': (0, 255, 255, 1),
+ 'aquamarine': (127, 255, 212, 1),
+ 'azure': (240, 255, 255, 1),
+ 'beige': (245, 245, 220, 1),
+ 'bisque': (255, 228, 196, 1),
+ 'black': (0, 0, 0, 1),
+ 'blanchedalmond': (255, 235, 205, 1),
+ 'blue': (0, 0, 255, 1),
+ 'blueviolet': (138, 43, 226, 1),
+ 'brown': (165, 42, 42, 1),
+ 'burlywood': (222, 184, 135, 1),
+ 'cadetblue': (95, 158, 160, 1),
+ 'chartreuse': (127, 255, 0, 1),
+ 'chocolate': (210, 105, 30, 1),
+ 'coral': (255, 127, 80, 1),
+ 'cornflowerblue': (100, 149, 237, 1),
+ 'cornsilk': (255, 248, 220, 1),
+ 'crimson': (220, 20, 60, 1),
+ 'cyan': (0, 255, 255, 1),
+ 'darkblue': (0, 0, 139, 1),
+ 'darkcyan': (0, 139, 139, 1),
+ 'darkgoldenrod': (184, 134, 11, 1),
+ 'darkgray': (169, 169, 169, 1),
+ 'darkgreen': (0, 100, 0, 1),
+ 'darkkhaki': (189, 183, 107, 1),
+ 'darkmagenta': (139, 0, 139, 1),
+ 'darkolivegreen': (85, 107, 47, 1),
+ 'darkorange': (255, 140, 0, 1),
+ 'darkorchid': (153, 50, 204, 1),
+ 'darkred': (139, 0, 0, 1),
+ 'darksalmon': (233, 150, 122, 1),
+ 'darkseagreen': (143, 188, 143, 1),
+ 'darkslateblue': (72, 61, 139, 1),
+ 'darkslategray': (47, 79, 79, 1),
+ 'darkturquoise': (0, 206, 209, 1),
+ 'darkviolet': (148, 0, 211, 1),
+ 'deeppink': (255, 20, 147, 1),
+ 'deepskyblue': (0, 191, 255, 1),
+ 'dimgray': (105, 105, 105, 1),
+ 'dodgerblue': (30, 144, 255, 1),
+ 'firebrick': (178, 34, 34, 1),
+ 'floralwhite': (255, 250, 240, 1),
+ 'forestgreen': (34, 139, 34, 1),
+ 'fuchsia': (255, 0, 255, 1),
+ 'gainsboro': (220, 220, 220, 1),
+ 'ghostwhite': (248, 248, 255, 1),
+ 'gold': (255, 215, 0, 1),
+ 'goldenrod': (218, 165, 32, 1),
+ 'gray': (128, 128, 128, 1),
+ 'green': (0, 128, 0, 1),
+ 'greenyellow': (173, 255, 47, 1),
+ 'honeydew': (240, 255, 240, 1),
+ 'hotpink': (255, 105, 180, 1),
+ 'indianred': (205, 92, 92, 1),
+ 'indigo': (75, 0, 130, 1),
+ 'ivory': (255, 255, 240, 1),
+ 'khaki': (240, 230, 140, 1),
+ 'lavender': (230, 230, 250, 1),
+ 'lavenderblush': (255, 240, 245, 1),
+ 'lawngreen': (124, 252, 0, 1),
+ 'lemonchiffon': (255, 250, 205, 1),
+ 'lightblue': (173, 216, 230, 1),
+ 'lightcoral': (240, 128, 128, 1),
+ 'lightcyan': (224, 255, 255, 1),
+ 'lightgoldenrodyellow': (250, 250, 210, 1),
+ 'lightgreen': (144, 238, 144, 1),
+ 'lightgrey': (211, 211, 211, 1),
+ 'lightpink': (255, 182, 193, 1),
+ 'lightsalmon': (255, 160, 122, 1),
+ 'lightseagreen': (32, 178, 170, 1),
+ 'lightskyblue': (135, 206, 250, 1),
+ 'lightslategray': (119, 136, 153, 1),
+ 'lightsteelblue': (176, 196, 222, 1),
+ 'lightyellow': (255, 255, 224, 1),
+ 'lime': (0, 255, 0, 1),
+ 'limegreen': (50, 205, 50, 1),
+ 'linen': (250, 240, 230, 1),
+ 'magenta': (255, 0, 255, 1),
+ 'maroon': (128, 0, 0, 1),
+ 'mediumaquamarine': (102, 205, 170, 1),
+ 'mediumblue': (0, 0, 205, 1),
+ 'mediumorchid': (186, 85, 211, 1),
+ 'mediumpurple': (147, 112, 219, 1),
+ 'mediumseagreen': (60, 179, 113, 1),
+ 'mediumslateblue': (123, 104, 238, 1),
+ 'mediumspringgreen': (0, 250, 154, 1),
+ 'mediumturquoise': (72, 209, 204, 1),
+ 'mediumvioletred': (199, 21, 133, 1),
+ 'midnightblue': (25, 25, 112, 1),
+ 'mintcream': (245, 255, 250, 1),
+ 'mistyrose': (255, 228, 225, 1),
+ 'moccasin': (255, 228, 181, 1),
+ 'navajowhite': (255, 222, 173, 1),
+ 'navy': (0, 0, 128, 1),
+ 'oldlace': (253, 245, 230, 1),
+ 'olive': (128, 128, 0, 1),
+ 'olivedrab': (107, 142, 35, 1),
+ 'orange': (255, 165, 0, 1),
+ 'orangered': (255, 69, 0, 1),
+ 'orchid': (218, 112, 214, 1),
+ 'palegoldenrod': (238, 232, 170, 1),
+ 'palegreen': (152, 251, 152, 1),
+ 'paleturquoise': (175, 238, 238, 1),
+ 'palevioletred': (219, 112, 147, 1),
+ 'papayawhip': (255, 239, 213, 1),
+ 'peachpuff': (255, 218, 185, 1),
+ 'peru': (205, 133, 63, 1),
+ 'pink': (255, 192, 203, 1),
+ 'plum': (221, 160, 221, 1),
+ 'powderblue': (176, 224, 230, 1),
+ 'purple': (128, 0, 128, 1),
+ 'red': (255, 0, 0, 1),
+ 'rosybrown': (188, 143, 143, 1),
+ 'royalblue': (65, 105, 225, 1),
+ 'saddlebrown': (139, 69, 19, 1),
+ 'salmon': (250, 128, 114, 1),
+ 'sandybrown': (244, 164, 96, 1),
+ 'seagreen': (46, 139, 87, 1),
+ 'seashell': (255, 245, 238, 1),
+ 'sienna': (160, 82, 45, 1),
+ 'silver': (192, 192, 192, 1),
+ 'skyblue': (135, 206, 235, 1),
+ 'slateblue': (106, 90, 205, 1),
+ 'slategray': (112, 128, 144, 1),
+ 'snow': (255, 250, 250, 1),
+ 'springgreen': (0, 255, 127, 1),
+ 'steelblue': (70, 130, 180, 1),
+ 'tan': (210, 180, 140, 1),
+ 'teal': (0, 128, 128, 1),
+ 'thistle': (216, 191, 216, 1),
+ 'tomato': (255, 99, 71, 1),
+ 'transparent': (0, 0, 0, 0),
+ 'turquoise': (64, 224, 208, 1),
+ 'violet': (238, 130, 238, 1),
+ 'wheat': (245, 222, 179, 1),
+ 'white': (255, 255, 255, 1),
+ 'whitesmoke': (245, 245, 245, 1),
+ 'yellow': (255, 255, 0, 1),
+ 'yellowgreen': (154, 205, 50, 1),
}
COLOR_LOOKUP = dict((v, k) for (k, v) in COLOR_NAMES.items())
diff --git a/scss/expression.py b/scss/expression.py
index 5af719b..65eb4b3 100644
--- a/scss/expression.py
+++ b/scss/expression.py
@@ -333,8 +333,6 @@ class ArgspecLiteral(Expression):
def parse_bareword(word):
if word in COLOR_NAMES:
return ColorValue.from_name(word)
- elif word == 'transparent':
- return ColorValue.from_rgb(0, 0, 0, 0)
elif word in ('null', 'undefined'):
return Null()
elif word == 'true':
diff --git a/scss/types.py b/scss/types.py
index 54cea4e..853d719 100644
--- a/scss/types.py
+++ b/scss/types.py
@@ -577,10 +577,13 @@ class ColorValue(Value):
self = cls.__new__(cls) # TODO
self.tokens = ParserValue(name)
- r, g, b = COLOR_NAMES[name]
+ r, g, b, a = COLOR_NAMES[name]
- self.value = r, g, b, 1.0
- self.types = {'rgb': 1}
+ self.value = r, g, b, a
+ if a == 1.0:
+ self.types = {'rgb': 1}
+ else:
+ self.types = {'rgba': 1}
return self
@@ -670,11 +673,12 @@ class ColorValue(Value):
r, g, b, a = self.value
r, g, b = int(round(r)), int(round(g)), int(round(b))
- if a == 1:
- # Try color name
- if (r, g, b) in COLOR_LOOKUP:
- candidates.append(COLOR_LOOKUP[r, g, b])
+ # Try color name
+ key = r, g, b, a
+ if key in COLOR_LOOKUP:
+ candidates.append(COLOR_LOOKUP[key])
+ if a == 1:
# Hex is always shorter than function notation
if all(ch % 17 == 0 for ch in (r, g, b)):
candidates.append("#%1x%1x%1x" % (r // 17, g // 17, b // 17))