Skip to content

Commit de4812d

Browse files
committed
Merge pull request servo#32 from SimonSapin/master
Remove Python-generated binary search and use match for color keywords
2 parents 43ad856 + 1d36062 commit de4812d

File tree

5 files changed

+178
-211
lines changed

5 files changed

+178
-211
lines changed

.gitignore

-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,3 @@
77
*.dummy
88
*-test
99
Makefile
10-
/color_data.rs

Makefile.in

+1-6
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ AR ?= ar
77
RUSTC ?= rustc
88
RUSTFLAGS ?=
99

10-
COLOR_DATA_RS=$(VPATH)/color_data.rs
11-
RUST_SRC=$(shell find $(VPATH)/. -type f -name '*.rs') $(COLOR_DATA_RS)
10+
RUST_SRC=$(shell find $(VPATH)/. -type f -name '*.rs')
1211

1312
.PHONY: all
1413
all: libcssparser.dummy
@@ -31,7 +30,3 @@ check-debug: cssparser-tests
3130
.PHONY: clean
3231
clean:
3332
rm -f *.o *.a *.so *.dylib *.dll *.dummy *-test
34-
35-
36-
$(COLOR_DATA_RS): make_color_data.py
37-
python $< > $@

color.rs

+155-8
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@
55
use std::ascii::StrAsciiExt;
66

77
use ast::*;
8-
use self::color_data::{COLOR_KEYWORDS, COLOR_VALUES};
9-
10-
mod color_data;
118

129

1310
#[deriving(Clone, Eq)]
@@ -43,11 +40,161 @@ impl Color {
4340
#[inline]
4441
fn parse_color_keyword(value: &str) -> Option<Color> {
4542
let lower_value = value.to_ascii_lower();
46-
match COLOR_KEYWORDS.bsearch_elem(&lower_value.as_slice()) {
47-
Some(index) => Some(RGBA(COLOR_VALUES[index])),
48-
None => if "currentcolor" == lower_value { Some(CurrentColor) }
49-
else { None }
50-
}
43+
let (r, g, b) = match lower_value.as_slice() {
44+
"black" => (0., 0., 0.),
45+
"silver" => (192., 192., 192.),
46+
"gray" => (128., 128., 128.),
47+
"white" => (255., 255., 255.),
48+
"maroon" => (128., 0., 0.),
49+
"red" => (255., 0., 0.),
50+
"purple" => (128., 0., 128.),
51+
"fuchsia" => (255., 0., 255.),
52+
"green" => (0., 128., 0.),
53+
"lime" => (0., 255., 0.),
54+
"olive" => (128., 128., 0.),
55+
"yellow" => (255., 255., 0.),
56+
"navy" => (0., 0., 128.),
57+
"blue" => (0., 0., 255.),
58+
"teal" => (0., 128., 128.),
59+
"aqua" => (0., 255., 255.),
60+
61+
"aliceblue" => (240., 248., 255.),
62+
"antiquewhite" => (250., 235., 215.),
63+
"aquamarine" => (127., 255., 212.),
64+
"azure" => (240., 255., 255.),
65+
"beige" => (245., 245., 220.),
66+
"bisque" => (255., 228., 196.),
67+
"blanchedalmond" => (255., 235., 205.),
68+
"blueviolet" => (138., 43., 226.),
69+
"brown" => (165., 42., 42.),
70+
"burlywood" => (222., 184., 135.),
71+
"cadetblue" => (95., 158., 160.),
72+
"chartreuse" => (127., 255., 0.),
73+
"chocolate" => (210., 105., 30.),
74+
"coral" => (255., 127., 80.),
75+
"cornflowerblue" => (100., 149., 237.),
76+
"cornsilk" => (255., 248., 220.),
77+
"crimson" => (220., 20., 60.),
78+
"cyan" => (0., 255., 255.),
79+
"darkblue" => (0., 0., 139.),
80+
"darkcyan" => (0., 139., 139.),
81+
"darkgoldenrod" => (184., 134., 11.),
82+
"darkgray" => (169., 169., 169.),
83+
"darkgreen" => (0., 100., 0.),
84+
"darkgrey" => (169., 169., 169.),
85+
"darkkhaki" => (189., 183., 107.),
86+
"darkmagenta" => (139., 0., 139.),
87+
"darkolivegreen" => (85., 107., 47.),
88+
"darkorange" => (255., 140., 0.),
89+
"darkorchid" => (153., 50., 204.),
90+
"darkred" => (139., 0., 0.),
91+
"darksalmon" => (233., 150., 122.),
92+
"darkseagreen" => (143., 188., 143.),
93+
"darkslateblue" => (72., 61., 139.),
94+
"darkslategray" => (47., 79., 79.),
95+
"darkslategrey" => (47., 79., 79.),
96+
"darkturquoise" => (0., 206., 209.),
97+
"darkviolet" => (148., 0., 211.),
98+
"deeppink" => (255., 20., 147.),
99+
"deepskyblue" => (0., 191., 255.),
100+
"dimgray" => (105., 105., 105.),
101+
"dimgrey" => (105., 105., 105.),
102+
"dodgerblue" => (30., 144., 255.),
103+
"firebrick" => (178., 34., 34.),
104+
"floralwhite" => (255., 250., 240.),
105+
"forestgreen" => (34., 139., 34.),
106+
"gainsboro" => (220., 220., 220.),
107+
"ghostwhite" => (248., 248., 255.),
108+
"gold" => (255., 215., 0.),
109+
"goldenrod" => (218., 165., 32.),
110+
"greenyellow" => (173., 255., 47.),
111+
"grey" => (128., 128., 128.),
112+
"honeydew" => (240., 255., 240.),
113+
"hotpink" => (255., 105., 180.),
114+
"indianred" => (205., 92., 92.),
115+
"indigo" => (75., 0., 130.),
116+
"ivory" => (255., 255., 240.),
117+
"khaki" => (240., 230., 140.),
118+
"lavender" => (230., 230., 250.),
119+
"lavenderblush" => (255., 240., 245.),
120+
"lawngreen" => (124., 252., 0.),
121+
"lemonchiffon" => (255., 250., 205.),
122+
"lightblue" => (173., 216., 230.),
123+
"lightcoral" => (240., 128., 128.),
124+
"lightcyan" => (224., 255., 255.),
125+
"lightgoldenrodyellow" => (250., 250., 210.),
126+
"lightgray" => (211., 211., 211.),
127+
"lightgreen" => (144., 238., 144.),
128+
"lightgrey" => (211., 211., 211.),
129+
"lightpink" => (255., 182., 193.),
130+
"lightsalmon" => (255., 160., 122.),
131+
"lightseagreen" => (32., 178., 170.),
132+
"lightskyblue" => (135., 206., 250.),
133+
"lightslategray" => (119., 136., 153.),
134+
"lightslategrey" => (119., 136., 153.),
135+
"lightsteelblue" => (176., 196., 222.),
136+
"lightyellow" => (255., 255., 224.),
137+
"limegreen" => (50., 205., 50.),
138+
"linen" => (250., 240., 230.),
139+
"magenta" => (255., 0., 255.),
140+
"mediumaquamarine" => (102., 205., 170.),
141+
"mediumblue" => (0., 0., 205.),
142+
"mediumorchid" => (186., 85., 211.),
143+
"mediumpurple" => (147., 112., 219.),
144+
"mediumseagreen" => (60., 179., 113.),
145+
"mediumslateblue" => (123., 104., 238.),
146+
"mediumspringgreen" => (0., 250., 154.),
147+
"mediumturquoise" => (72., 209., 204.),
148+
"mediumvioletred" => (199., 21., 133.),
149+
"midnightblue" => (25., 25., 112.),
150+
"mintcream" => (245., 255., 250.),
151+
"mistyrose" => (255., 228., 225.),
152+
"moccasin" => (255., 228., 181.),
153+
"navajowhite" => (255., 222., 173.),
154+
"oldlace" => (253., 245., 230.),
155+
"olivedrab" => (107., 142., 35.),
156+
"orange" => (255., 165., 0.),
157+
"orangered" => (255., 69., 0.),
158+
"orchid" => (218., 112., 214.),
159+
"palegoldenrod" => (238., 232., 170.),
160+
"palegreen" => (152., 251., 152.),
161+
"paleturquoise" => (175., 238., 238.),
162+
"palevioletred" => (219., 112., 147.),
163+
"papayawhip" => (255., 239., 213.),
164+
"peachpuff" => (255., 218., 185.),
165+
"peru" => (205., 133., 63.),
166+
"pink" => (255., 192., 203.),
167+
"plum" => (221., 160., 221.),
168+
"powderblue" => (176., 224., 230.),
169+
"rosybrown" => (188., 143., 143.),
170+
"royalblue" => (65., 105., 225.),
171+
"saddlebrown" => (139., 69., 19.),
172+
"salmon" => (250., 128., 114.),
173+
"sandybrown" => (244., 164., 96.),
174+
"seagreen" => (46., 139., 87.),
175+
"seashell" => (255., 245., 238.),
176+
"sienna" => (160., 82., 45.),
177+
"skyblue" => (135., 206., 235.),
178+
"slateblue" => (106., 90., 205.),
179+
"slategray" => (112., 128., 144.),
180+
"slategrey" => (112., 128., 144.),
181+
"snow" => (255., 250., 250.),
182+
"springgreen" => (0., 255., 127.),
183+
"steelblue" => (70., 130., 180.),
184+
"tan" => (210., 180., 140.),
185+
"thistle" => (216., 191., 216.),
186+
"tomato" => (255., 99., 71.),
187+
"turquoise" => (64., 224., 208.),
188+
"violet" => (238., 130., 238.),
189+
"wheat" => (245., 222., 179.),
190+
"whitesmoke" => (245., 245., 245.),
191+
"yellowgreen" => (154., 205., 50.),
192+
193+
"transparent" => return Some(RGBA(RGBA { red: 0., green: 0., blue: 0., alpha: 0. })),
194+
"currentcolor" => return Some(CurrentColor),
195+
_ => return None,
196+
};
197+
Some(RGBA(RGBA { red: r / 255., green: g / 255., blue: b / 255., alpha: 1. }))
51198
}
52199

53200

make_color_data.py

-196
This file was deleted.

0 commit comments

Comments
 (0)