From f158f037089b335d36fe034ea512583a53748d49 Mon Sep 17 00:00:00 2001 From: ConnorSkees <39542938+ConnorSkees@users.noreply.github.com> Date: Sun, 26 Apr 2020 22:51:38 -0400 Subject: [PATCH] better handle named color transparent --- src/color/mod.rs | 2 +- src/color/name.rs | 283 +++++++++++++++++++++++---------------------- src/value/parse.rs | 2 +- tests/color.rs | 10 ++ 4 files changed, 154 insertions(+), 143 deletions(-) diff --git a/src/color/mod.rs b/src/color/mod.rs index a1dfc64..484bb69 100644 --- a/src/color/mod.rs +++ b/src/color/mod.rs @@ -499,7 +499,7 @@ fn repr(red: &Number, green: &Number, blue: &Number, alpha: &Number) -> String { if alpha < &Number::one() { format!("rgba({}, {}, {}, {})", red, green, blue, alpha) - } else if let Some(c) = NAMED_COLORS.get_by_right(&[red, green, blue]) { + } else if let Some(c) = NAMED_COLORS.get_by_right(&[red, green, blue, 0xFF]) { format!("{}", c) } else { format!("#{:0>2x}{:0>2x}{:0>2x}", red, green, blue) diff --git a/src/color/name.rs b/src/color/name.rs index 5717a65..d5c5620 100644 --- a/src/color/name.rs +++ b/src/color/name.rs @@ -4,146 +4,147 @@ use bimap::BiMap; use once_cell::sync::Lazy; -pub(crate) static NAMED_COLORS: Lazy> = Lazy::new(|| { - let mut m = BiMap::with_capacity(148); - m.insert("aliceblue", [0xF0, 0xF8, 0xFF]); - m.insert("antiquewhite", [0xFA, 0xEB, 0xD7]); - m.insert("aqua", [0x00, 0xFF, 0xFF]); - m.insert("aquamarine", [0x7F, 0xFF, 0xD4]); - m.insert("azure", [0xF0, 0xFF, 0xFF]); - m.insert("beige", [0xF5, 0xF5, 0xDC]); - m.insert("bisque", [0xFF, 0xE4, 0xC4]); - m.insert("black", [0x00, 0x00, 0x00]); - m.insert("blanchedalmond", [0xFF, 0xEB, 0xCD]); - m.insert("blue", [0x00, 0x00, 0xFF]); - m.insert("blueviolet", [0x8A, 0x2B, 0xE2]); - m.insert("brown", [0xA5, 0x2A, 0x2A]); - m.insert("burlywood", [0xDE, 0xB8, 0x87]); - m.insert("cadetblue", [0x5F, 0x9E, 0xA0]); - m.insert("chartreuse", [0x7F, 0xFF, 0x00]); - m.insert("chocolate", [0xD2, 0x69, 0x1E]); - m.insert("coral", [0xFF, 0x7F, 0x50]); - m.insert("cornflowerblue", [0x64, 0x95, 0xED]); - m.insert("cornsilk", [0xFF, 0xF8, 0xDC]); - m.insert("crimson", [0xDC, 0x14, 0x3C]); - m.insert("darkblue", [0x00, 0x00, 0x8B]); - m.insert("darkcyan", [0x00, 0x8B, 0x8B]); - m.insert("darkgoldenrod", [0xB8, 0x86, 0x0B]); - m.insert("darkgray", [0xA9, 0xA9, 0xA9]); - m.insert("darkgreen", [0x00, 0x64, 0x00]); - m.insert("darkkhaki", [0xBD, 0xB7, 0x6B]); - m.insert("darkmagenta", [0x8B, 0x00, 0x8B]); - m.insert("darkolivegreen", [0x55, 0x6B, 0x2F]); - m.insert("darkorange", [0xFF, 0x8C, 0x00]); - m.insert("darkorchid", [0x99, 0x32, 0xCC]); - m.insert("darkred", [0x8B, 0x00, 0x00]); - m.insert("darksalmon", [0xE9, 0x96, 0x7A]); - m.insert("darkseagreen", [0x8F, 0xBC, 0x8F]); - m.insert("darkslateblue", [0x48, 0x3D, 0x8B]); - m.insert("darkslategray", [0x2F, 0x4F, 0x4F]); - m.insert("darkturquoise", [0x00, 0xCE, 0xD1]); - m.insert("darkviolet", [0x94, 0x00, 0xD3]); - m.insert("deeppink", [0xFF, 0x14, 0x93]); - m.insert("deepskyblue", [0x00, 0xBF, 0xFF]); - m.insert("dimgray", [0x69, 0x69, 0x69]); - m.insert("dodgerblue", [0x1E, 0x90, 0xFF]); - m.insert("firebrick", [0xB2, 0x22, 0x22]); - m.insert("floralwhite", [0xFF, 0xFA, 0xF0]); - m.insert("forestgreen", [0x22, 0x8B, 0x22]); - m.insert("fuchsia", [0xFF, 0x00, 0xFF]); - m.insert("gainsboro", [0xDC, 0xDC, 0xDC]); - m.insert("ghostwhite", [0xF8, 0xF8, 0xFF]); - m.insert("gold", [0xFF, 0xD7, 0x00]); - m.insert("goldenrod", [0xDA, 0xA5, 0x20]); - m.insert("gray", [0x80, 0x80, 0x80]); - m.insert("green", [0x00, 0x80, 0x00]); - m.insert("greenyellow", [0xAD, 0xFF, 0x2F]); - m.insert("honeydew", [0xF0, 0xFF, 0xF0]); - m.insert("hotpink", [0xFF, 0x69, 0xB4]); - m.insert("indianred", [0xCD, 0x5C, 0x5C]); - m.insert("indigo", [0x4B, 0x00, 0x82]); - m.insert("ivory", [0xFF, 0xFF, 0xF0]); - m.insert("khaki", [0xF0, 0xE6, 0x8C]); - m.insert("lavender", [0xE6, 0xE6, 0xFA]); - m.insert("lavenderblush", [0xFF, 0xF0, 0xF5]); - m.insert("lawngreen", [0x7C, 0xFC, 0x00]); - m.insert("lemonchiffon", [0xFF, 0xFA, 0xCD]); - m.insert("lightblue", [0xAD, 0xD8, 0xE6]); - m.insert("lightcoral", [0xF0, 0x80, 0x80]); - m.insert("lightcyan", [0xE0, 0xFF, 0xFF]); - m.insert("lightgoldenrodyellow", [0xFA, 0xFA, 0xD2]); - m.insert("lightgray", [0xD3, 0xD3, 0xD3]); - m.insert("lightgreen", [0x90, 0xEE, 0x90]); - m.insert("lightpink", [0xFF, 0xB6, 0xC1]); - m.insert("lightsalmon", [0xFF, 0xA0, 0x7A]); - m.insert("lightseagreen", [0x20, 0xB2, 0xAA]); - m.insert("lightskyblue", [0x87, 0xCE, 0xFA]); - m.insert("lightslategray", [0x77, 0x88, 0x99]); - m.insert("lightsteelblue", [0xB0, 0xC4, 0xDE]); - m.insert("lightyellow", [0xFF, 0xFF, 0xE0]); - m.insert("lime", [0x00, 0xFF, 0x00]); - m.insert("limegreen", [0x32, 0xCD, 0x32]); - m.insert("linen", [0xFA, 0xF0, 0xE6]); - m.insert("maroon", [0x80, 0x00, 0x00]); - m.insert("mediumaquamarine", [0x66, 0xCD, 0xAA]); - m.insert("mediumblue", [0x00, 0x00, 0xCD]); - m.insert("mediumorchid", [0xBA, 0x55, 0xD3]); - m.insert("mediumpurple", [0x93, 0x70, 0xDB]); - m.insert("mediumseagreen", [0x3C, 0xB3, 0x71]); - m.insert("mediumslateblue", [0x7B, 0x68, 0xEE]); - m.insert("mediumspringgreen", [0x00, 0xFA, 0x9A]); - m.insert("mediumturquoise", [0x48, 0xD1, 0xCC]); - m.insert("mediumvioletred", [0xC7, 0x15, 0x85]); - m.insert("midnightblue", [0x19, 0x19, 0x70]); - m.insert("mintcream", [0xF5, 0xFF, 0xFA]); - m.insert("mistyrose", [0xFF, 0xE4, 0xE1]); - m.insert("moccasin", [0xFF, 0xE4, 0xB5]); - m.insert("navajowhite", [0xFF, 0xDE, 0xAD]); - m.insert("navy", [0x00, 0x00, 0x80]); - m.insert("oldlace", [0xFD, 0xF5, 0xE6]); - m.insert("olive", [0x80, 0x80, 0x00]); - m.insert("olivedrab", [0x6B, 0x8E, 0x23]); - m.insert("orange", [0xFF, 0xA5, 0x00]); - m.insert("orangered", [0xFF, 0x45, 0x00]); - m.insert("orchid", [0xDA, 0x70, 0xD6]); - m.insert("palegoldenrod", [0xEE, 0xE8, 0xAA]); - m.insert("palegreen", [0x98, 0xFB, 0x98]); - m.insert("paleturquoise", [0xAF, 0xEE, 0xEE]); - m.insert("palevioletred", [0xDB, 0x70, 0x93]); - m.insert("papayawhip", [0xFF, 0xEF, 0xD5]); - m.insert("peachpuff", [0xFF, 0xDA, 0xB9]); - m.insert("peru", [0xCD, 0x85, 0x3F]); - m.insert("pink", [0xFF, 0xC0, 0xCB]); - m.insert("plum", [0xDD, 0xA0, 0xDD]); - m.insert("powderblue", [0xB0, 0xE0, 0xE6]); - m.insert("purple", [0x80, 0x00, 0x80]); - m.insert("rebeccapurple", [0x66, 0x33, 0x99]); - m.insert("red", [0xFF, 0x00, 0x00]); - m.insert("rosybrown", [0xBC, 0x8F, 0x8F]); - m.insert("royalblue", [0x41, 0x69, 0xE1]); - m.insert("saddlebrown", [0x8B, 0x45, 0x13]); - m.insert("salmon", [0xFA, 0x80, 0x72]); - m.insert("sandybrown", [0xF4, 0xA4, 0x60]); - m.insert("seagreen", [0x2E, 0x8B, 0x57]); - m.insert("seashell", [0xFF, 0xF5, 0xEE]); - m.insert("sienna", [0xA0, 0x52, 0x2D]); - m.insert("silver", [0xC0, 0xC0, 0xC0]); - m.insert("skyblue", [0x87, 0xCE, 0xEB]); - m.insert("slateblue", [0x6A, 0x5A, 0xCD]); - m.insert("slategray", [0x70, 0x80, 0x90]); - m.insert("snow", [0xFF, 0xFA, 0xFA]); - m.insert("springgreen", [0x00, 0xFF, 0x7F]); - m.insert("steelblue", [0x46, 0x82, 0xB4]); - m.insert("tan", [0xD2, 0xB4, 0x8C]); - m.insert("teal", [0x00, 0x80, 0x80]); - m.insert("thistle", [0xD8, 0xBF, 0xD8]); - m.insert("tomato", [0xFF, 0x63, 0x47]); - m.insert("turquoise", [0x40, 0xE0, 0xD0]); - m.insert("violet", [0xEE, 0x82, 0xEE]); - m.insert("wheat", [0xF5, 0xDE, 0xB3]); - m.insert("white", [0xFF, 0xFF, 0xFF]); - m.insert("whitesmoke", [0xF5, 0xF5, 0xF5]); - m.insert("yellow", [0xFF, 0xFF, 0x00]); - m.insert("yellowgreen", [0x9A, 0xCD, 0x32]); +pub(crate) static NAMED_COLORS: Lazy> = Lazy::new(|| { + let mut m = BiMap::with_capacity(150); + m.insert("aliceblue", [0xF0, 0xF8, 0xFF, 0xFF]); + m.insert("antiquewhite", [0xFA, 0xEB, 0xD7, 0xFF]); + m.insert("aqua", [0x00, 0xFF, 0xFF, 0xFF]); + m.insert("aquamarine", [0x7F, 0xFF, 0xD4, 0xFF]); + m.insert("azure", [0xF0, 0xFF, 0xFF, 0xFF]); + m.insert("beige", [0xF5, 0xF5, 0xDC, 0xFF]); + m.insert("bisque", [0xFF, 0xE4, 0xC4, 0xFF]); + m.insert("black", [0x00, 0x00, 0x00, 0xFF]); + m.insert("blanchedalmond", [0xFF, 0xEB, 0xCD, 0xFF]); + m.insert("blue", [0x00, 0x00, 0xFF, 0xFF]); + m.insert("blueviolet", [0x8A, 0x2B, 0xE2, 0xFF]); + m.insert("brown", [0xA5, 0x2A, 0x2A, 0xFF]); + m.insert("burlywood", [0xDE, 0xB8, 0x87, 0xFF]); + m.insert("cadetblue", [0x5F, 0x9E, 0xA0, 0xFF]); + m.insert("chartreuse", [0x7F, 0xFF, 0x00, 0xFF]); + m.insert("chocolate", [0xD2, 0x69, 0x1E, 0xFF]); + m.insert("coral", [0xFF, 0x7F, 0x50, 0xFF]); + m.insert("cornflowerblue", [0x64, 0x95, 0xED, 0xFF]); + m.insert("cornsilk", [0xFF, 0xF8, 0xDC, 0xFF]); + m.insert("crimson", [0xDC, 0x14, 0x3C, 0xFF]); + m.insert("darkblue", [0x00, 0x00, 0x8B, 0xFF]); + m.insert("darkcyan", [0x00, 0x8B, 0x8B, 0xFF]); + m.insert("darkgoldenrod", [0xB8, 0x86, 0x0B, 0xFF]); + m.insert("darkgray", [0xA9, 0xA9, 0xA9, 0xFF]); + m.insert("darkgreen", [0x00, 0x64, 0x00, 0xFF]); + m.insert("darkkhaki", [0xBD, 0xB7, 0x6B, 0xFF]); + m.insert("darkmagenta", [0x8B, 0x00, 0x8B, 0xFF]); + m.insert("darkolivegreen", [0x55, 0x6B, 0x2F, 0xFF]); + m.insert("darkorange", [0xFF, 0x8C, 0x00, 0xFF]); + m.insert("darkorchid", [0x99, 0x32, 0xCC, 0xFF]); + m.insert("darkred", [0x8B, 0x00, 0x00, 0xFF]); + m.insert("darksalmon", [0xE9, 0x96, 0x7A, 0xFF]); + m.insert("darkseagreen", [0x8F, 0xBC, 0x8F, 0xFF]); + m.insert("darkslateblue", [0x48, 0x3D, 0x8B, 0xFF]); + m.insert("darkslategray", [0x2F, 0x4F, 0x4F, 0xFF]); + m.insert("darkturquoise", [0x00, 0xCE, 0xD1, 0xFF]); + m.insert("darkviolet", [0x94, 0x00, 0xD3, 0xFF]); + m.insert("deeppink", [0xFF, 0x14, 0x93, 0xFF]); + m.insert("deepskyblue", [0x00, 0xBF, 0xFF, 0xFF]); + m.insert("dimgray", [0x69, 0x69, 0x69, 0xFF]); + m.insert("dodgerblue", [0x1E, 0x90, 0xFF, 0xFF]); + m.insert("firebrick", [0xB2, 0x22, 0x22, 0xFF]); + m.insert("floralwhite", [0xFF, 0xFA, 0xF0, 0xFF]); + m.insert("forestgreen", [0x22, 0x8B, 0x22, 0xFF]); + m.insert("fuchsia", [0xFF, 0x00, 0xFF, 0xFF]); + m.insert("gainsboro", [0xDC, 0xDC, 0xDC, 0xFF]); + m.insert("ghostwhite", [0xF8, 0xF8, 0xFF, 0xFF]); + m.insert("gold", [0xFF, 0xD7, 0x00, 0xFF]); + m.insert("goldenrod", [0xDA, 0xA5, 0x20, 0xFF]); + m.insert("gray", [0x80, 0x80, 0x80, 0xFF]); + m.insert("green", [0x00, 0x80, 0x00, 0xFF]); + m.insert("greenyellow", [0xAD, 0xFF, 0x2F, 0xFF]); + m.insert("honeydew", [0xF0, 0xFF, 0xF0, 0xFF]); + m.insert("hotpink", [0xFF, 0x69, 0xB4, 0xFF]); + m.insert("indianred", [0xCD, 0x5C, 0x5C, 0xFF]); + m.insert("indigo", [0x4B, 0x00, 0x82, 0xFF]); + m.insert("ivory", [0xFF, 0xFF, 0xF0, 0xFF]); + m.insert("khaki", [0xF0, 0xE6, 0x8C, 0xFF]); + m.insert("lavender", [0xE6, 0xE6, 0xFA, 0xFF]); + m.insert("lavenderblush", [0xFF, 0xF0, 0xF5, 0xFF]); + m.insert("lawngreen", [0x7C, 0xFC, 0x00, 0xFF]); + m.insert("lemonchiffon", [0xFF, 0xFA, 0xCD, 0xFF]); + m.insert("lightblue", [0xAD, 0xD8, 0xE6, 0xFF]); + m.insert("lightcoral", [0xF0, 0x80, 0x80, 0xFF]); + m.insert("lightcyan", [0xE0, 0xFF, 0xFF, 0xFF]); + m.insert("lightgoldenrodyellow", [0xFA, 0xFA, 0xD2, 0xFF]); + m.insert("lightgray", [0xD3, 0xD3, 0xD3, 0xFF]); + m.insert("lightgreen", [0x90, 0xEE, 0x90, 0xFF]); + m.insert("lightpink", [0xFF, 0xB6, 0xC1, 0xFF]); + m.insert("lightsalmon", [0xFF, 0xA0, 0x7A, 0xFF]); + m.insert("lightseagreen", [0x20, 0xB2, 0xAA, 0xFF]); + m.insert("lightskyblue", [0x87, 0xCE, 0xFA, 0xFF]); + m.insert("lightslategray", [0x77, 0x88, 0x99, 0xFF]); + m.insert("lightsteelblue", [0xB0, 0xC4, 0xDE, 0xFF]); + m.insert("lightyellow", [0xFF, 0xFF, 0xE0, 0xFF]); + m.insert("lime", [0x00, 0xFF, 0x00, 0xFF]); + m.insert("limegreen", [0x32, 0xCD, 0x32, 0xFF]); + m.insert("linen", [0xFA, 0xF0, 0xE6, 0xFF]); + m.insert("maroon", [0x80, 0x00, 0x00, 0xFF]); + m.insert("mediumaquamarine", [0x66, 0xCD, 0xAA, 0xFF]); + m.insert("mediumblue", [0x00, 0x00, 0xCD, 0xFF]); + m.insert("mediumorchid", [0xBA, 0x55, 0xD3, 0xFF]); + m.insert("mediumpurple", [0x93, 0x70, 0xDB, 0xFF]); + m.insert("mediumseagreen", [0x3C, 0xB3, 0x71, 0xFF]); + m.insert("mediumslateblue", [0x7B, 0x68, 0xEE, 0xFF]); + m.insert("mediumspringgreen", [0x00, 0xFA, 0x9A, 0xFF]); + m.insert("mediumturquoise", [0x48, 0xD1, 0xCC, 0xFF]); + m.insert("mediumvioletred", [0xC7, 0x15, 0x85, 0xFF]); + m.insert("midnightblue", [0x19, 0x19, 0x70, 0xFF]); + m.insert("mintcream", [0xF5, 0xFF, 0xFA, 0xFF]); + m.insert("mistyrose", [0xFF, 0xE4, 0xE1, 0xFF]); + m.insert("moccasin", [0xFF, 0xE4, 0xB5, 0xFF]); + m.insert("navajowhite", [0xFF, 0xDE, 0xAD, 0xFF]); + m.insert("navy", [0x00, 0x00, 0x80, 0xFF]); + m.insert("oldlace", [0xFD, 0xF5, 0xE6, 0xFF]); + m.insert("olive", [0x80, 0x80, 0x00, 0xFF]); + m.insert("olivedrab", [0x6B, 0x8E, 0x23, 0xFF]); + m.insert("orange", [0xFF, 0xA5, 0x00, 0xFF]); + m.insert("orangered", [0xFF, 0x45, 0x00, 0xFF]); + m.insert("orchid", [0xDA, 0x70, 0xD6, 0xFF]); + m.insert("palegoldenrod", [0xEE, 0xE8, 0xAA, 0xFF]); + m.insert("palegreen", [0x98, 0xFB, 0x98, 0xFF]); + m.insert("paleturquoise", [0xAF, 0xEE, 0xEE, 0xFF]); + m.insert("palevioletred", [0xDB, 0x70, 0x93, 0xFF]); + m.insert("papayawhip", [0xFF, 0xEF, 0xD5, 0xFF]); + m.insert("peachpuff", [0xFF, 0xDA, 0xB9, 0xFF]); + m.insert("peru", [0xCD, 0x85, 0x3F, 0xFF]); + m.insert("pink", [0xFF, 0xC0, 0xCB, 0xFF]); + m.insert("plum", [0xDD, 0xA0, 0xDD, 0xFF]); + m.insert("powderblue", [0xB0, 0xE0, 0xE6, 0xFF]); + m.insert("purple", [0x80, 0x00, 0x80, 0xFF]); + m.insert("rebeccapurple", [0x66, 0x33, 0x99, 0xFF]); + m.insert("red", [0xFF, 0x00, 0x00, 0xFF]); + m.insert("rosybrown", [0xBC, 0x8F, 0x8F, 0xFF]); + m.insert("royalblue", [0x41, 0x69, 0xE1, 0xFF]); + m.insert("saddlebrown", [0x8B, 0x45, 0x13, 0xFF]); + m.insert("salmon", [0xFA, 0x80, 0x72, 0xFF]); + m.insert("sandybrown", [0xF4, 0xA4, 0x60, 0xFF]); + m.insert("seagreen", [0x2E, 0x8B, 0x57, 0xFF]); + m.insert("seashell", [0xFF, 0xF5, 0xEE, 0xFF]); + m.insert("sienna", [0xA0, 0x52, 0x2D, 0xFF]); + m.insert("silver", [0xC0, 0xC0, 0xC0, 0xFF]); + m.insert("skyblue", [0x87, 0xCE, 0xEB, 0xFF]); + m.insert("slateblue", [0x6A, 0x5A, 0xCD, 0xFF]); + m.insert("slategray", [0x70, 0x80, 0x90, 0xFF]); + m.insert("snow", [0xFF, 0xFA, 0xFA, 0xFF]); + m.insert("springgreen", [0x00, 0xFF, 0x7F, 0xFF]); + m.insert("steelblue", [0x46, 0x82, 0xB4, 0xFF]); + m.insert("tan", [0xD2, 0xB4, 0x8C, 0xFF]); + m.insert("teal", [0x00, 0x80, 0x80, 0xFF]); + m.insert("thistle", [0xD8, 0xBF, 0xD8, 0xFF]); + m.insert("tomato", [0xFF, 0x63, 0x47, 0xFF]); + m.insert("turquoise", [0x40, 0xE0, 0xD0, 0xFF]); + m.insert("violet", [0xEE, 0x82, 0xEE, 0xFF]); + m.insert("wheat", [0xF5, 0xDE, 0xB3, 0xFF]); + m.insert("white", [0xFF, 0xFF, 0xFF, 0xFF]); + m.insert("whitesmoke", [0xF5, 0xF5, 0xF5, 0xFF]); + m.insert("yellow", [0xFF, 0xFF, 0x00, 0xFF]); + m.insert("yellowgreen", [0x9A, 0xCD, 0x32, 0xFF]); + m.insert("transparent", [0x00, 0x00, 0x00, 0x00]); m }); diff --git a/src/value/parse.rs b/src/value/parse.rs index 7fd5d3b..3b651ff 100644 --- a/src/value/parse.rs +++ b/src/value/parse.rs @@ -559,7 +559,7 @@ impl Value { _ => { if let Some(c) = NAMED_COLORS.get_by_left(&s.as_str()) { Ok(IntermediateValue::Value(Spanned { - node: Value::Color(Box::new(Color::new(c[0], c[1], c[2], 0xFF, s))), + node: Value::Color(Box::new(Color::new(c[0], c[1], c[2], c[3], s))), span, })) } else { diff --git a/tests/color.rs b/tests/color.rs index afb5df8..c36db0d 100644 --- a/tests/color.rs +++ b/tests/color.rs @@ -557,3 +557,13 @@ test!( ", "p {\n color: #102005;\n color: rgba(16, 32, 48, 0.325);\n color: #782005;\n color: rgba(204, 85, 0, 0.8);\n}\n" ); +test!( + transparent_from_function, + "a {\n color: rgb(transparent, 0);\n}\n", + "a {\n color: rgba(0, 0, 0, 0);\n}\n" +); +test!( + named_color_transparent_opacity, + "a {\n color: opacity(transparent);\n}\n", + "a {\n color: 0;\n}\n" +);