feat(css/ast): Improve parsing of colors (#3680)

This commit is contained in:
Alexander Akait 2022-02-22 22:45:33 +03:00 committed by GitHub
parent 874c9087e0
commit 003a7b85a4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
82 changed files with 11393 additions and 8 deletions

View File

@ -110,6 +110,8 @@ pub enum Color {
// TODO more
#[tag("HexColor")]
HexColor(HexColor),
#[tag("Function")]
Function(Function),
}
#[ast_node("HexColor")]

View File

@ -691,6 +691,7 @@ where
let need_delim = match node {
Value::SimpleBlock(_)
| Value::Function(_)
| Value::Color(Color::Function(_))
| Value::Delimiter(_)
| Value::Str(_)
| Value::Url(_)
@ -1130,6 +1131,7 @@ where
fn emit_color(&mut self, n: &Color) -> Result {
match n {
Color::HexColor(n) => emit!(self, n),
Color::Function(n) => emit!(self, n),
}
}

View File

@ -0,0 +1,39 @@
div {
color: rgb(255, 255, 255);
color: hwb(1.5708rad 20% 10% / 0.7);
color: hsla(30, 100%, 50%, .3);
color: hsl(30, 100%, 50%);
color: rgb(214, 122, 127);
border: 4mm ridge rgba(170, 50, 220, .6);
border-color: red rgba(170, 50, 220, .6) green;
border-color: red yellow green hsla(60, 90%, 50%, .8);
prop: rgb(255, 255, 255) rgb(255, 255, 255);
}
.rgb-and-rgba {
color: rgb(34, 12, 64, 0.6);
color: rgba(34, 12, 64, 0.6);
color: rgb(34 12 64 / 0.6);
color: rgba(34 12 64 / 0.3);
color: rgb(34.0 12 64 / 60%);
color: rgba(34.6 12 64 / 30%);
}
.hsl-and-hsla {
color: hsl(30, 100%, 50%, 0.6);
color: hsla(30, 100%, 50%, 0.6);
color: hsl(30 100% 50% / 0.6);
color: hsla(30 100% 50% / 0.6);
color: hsl(30.0 100% 50% / 60%);
color: hsla(30.2 100% 50% / 60%);
}
.hwb {
color: hwb(90 10% 10%);
color: hwb(90 10% 10% / 0.5);
color: hwb(90deg 10% 10%);
color: hwb(1.5708rad 60% 0%);
color: hwb(.25turn 0% 40% / 50%);
}

View File

@ -0,0 +1,34 @@
div {
color: rgb(255, 255, 255);
color: hwb(1.5708rad 20% 10% / 0.7);
color: hsla(30, 100%, 50%, .3);
color: hsl(30, 100%, 50%);
color: rgb(214, 122, 127);
border: 4mm ridge rgba(170, 50, 220, .6);
border-color: red rgba(170, 50, 220, .6) green;
border-color: red yellow green hsla(60, 90%, 50%, .8);
prop: rgb(255, 255, 255) rgb(255, 255, 255);
}
.rgb-and-rgba {
color: rgb(34, 12, 64, 0.6);
color: rgba(34, 12, 64, 0.6);
color: rgb(34 12 64/ 0.6);
color: rgba(34 12 64/ 0.3);
color: rgb(34.0 12 64/ 60%);
color: rgba(34.6 12 64/ 30%);
}
.hsl-and-hsla {
color: hsl(30, 100%, 50%, 0.6);
color: hsla(30, 100%, 50%, 0.6);
color: hsl(30 100% 50% / 0.6);
color: hsla(30 100% 50% / 0.6);
color: hsl(30.0 100% 50% / 60%);
color: hsla(30.2 100% 50% / 60%);
}
.hwb {
color: hwb(90 10% 10%);
color: hwb(90 10% 10% / 0.5);
color: hwb(90deg 10% 10%);
color: hwb(1.5708rad 60% 0%);
color: hwb(.25turn 0% 40% / 50%);
}

View File

@ -0,0 +1 @@
div{color:rgb(255,255,255);color:hwb(1.5708rad 20%10%/.7);color:hsla(30,100%,50%,.3);color:hsl(30,100%,50%);color:rgb(214,122,127);border:4mm ridge rgba(170,50,220,.6);border-color:red rgba(170,50,220,.6)green;border-color:red yellow green hsla(60,90%,50%,.8);prop:rgb(255,255,255)rgb(255,255,255)}.rgb-and-rgba{color:rgb(34,12,64,.6);color:rgba(34,12,64,.6);color:rgb(34 12 64/.6);color:rgba(34 12 64/.3);color:rgb(34 12 64/60%);color:rgba(34.6 12 64/30%)}.hsl-and-hsla{color:hsl(30,100%,50%,.6);color:hsla(30,100%,50%,.6);color:hsl(30 100%50%/.6);color:hsla(30 100%50%/.6);color:hsl(30 100%50%/60%);color:hsla(30.2 100%50%/60%)}.hwb{color:hwb(90 10%10%);color:hwb(90 10%10%/.5);color:hwb(90deg 10%10%);color:hwb(1.5708rad 60%0%);color:hwb(.25turn 0%40%/50%)}

View File

@ -19,3 +19,7 @@ div {
background: url("starsolid.gif") repeat-y fixed #99f;
background: url("starsolid.gif") repeat-y 12 #99f;
}
.foo {
border: thick double #32a1ce;
}

View File

@ -18,3 +18,6 @@ background: url("starsolid.gif") #99f repeat-y fixed;
background: url("starsolid.gif") repeat-y fixed #99f;
background: url("starsolid.gif") repeat-y 12 #99f;
}
.foo {
border: thick double #32a1ce;
}

View File

@ -1 +1 @@
div{color:#fff;color:#fff;color:#fff;color:#fff;color:#dc143c;color:#f00;color:#f00;color:#f09;color:#f09;color:#0f38;color:#0f38;color:#0a0a0a;color:#0a0a0afa}div{background:url("starsolid.gif")#99f repeat-y fixed;background:url("starsolid.gif")repeat-y fixed#99f;background:url("starsolid.gif")repeat-y 12#99f}
div{color:#fff;color:#fff;color:#fff;color:#fff;color:#dc143c;color:#f00;color:#f00;color:#f09;color:#f09;color:#0f38;color:#0f38;color:#0a0a0a;color:#0a0a0afa}div{background:url("starsolid.gif")#99f repeat-y fixed;background:url("starsolid.gif")repeat-y fixed#99f;background:url("starsolid.gif")repeat-y 12#99f}.foo{border:thick double#32a1ce}

View File

@ -169,13 +169,12 @@ where
tok!("url") => return Ok(Value::Url(self.parse()?)),
Token::Function { value, .. } => {
if &*value.to_ascii_lowercase() == "url" || &*value.to_ascii_lowercase() == "src" {
return Ok(Value::Url(self.parse()?));
}
return Ok(Value::Function(self.parse()?));
}
Token::Function { value, .. } => match &*value.to_ascii_lowercase() {
"url" | "src" => return Ok(Value::Url(self.parse()?)),
"rgb" | "rgba" | "hsl" | "hsla" | "hwb" | "lab" | "lch" | "oklab" | "oklch"
| "color" => return Ok(Value::Color(self.parse()?)),
_ => return Ok(Value::Function(self.parse()?)),
},
tok!("percentage") => return Ok(Value::Percentage(self.parse()?)),
@ -1084,6 +1083,30 @@ where
}
}
impl<I> Parse<Color> for Parser<I>
where
I: ParserInput,
{
fn parse(&mut self) -> PResult<Color> {
let span = self.input.cur_span()?;
if !is_one_of!(self, "#", "function") {
return Err(Error::new(
span,
ErrorKind::Expected("hash or function token"),
));
}
match cur!(self) {
tok!("#") => Ok(Color::HexColor(self.parse()?)),
tok!("function") => Ok(Color::Function(self.parse()?)),
_ => {
unreachable!()
}
}
}
}
impl<I> Parse<Percentage> for Parser<I>
where
I: ParserInput,

View File

@ -320,6 +320,8 @@ impl Visit for SpanVisualizer<'_> {
mtd!(Function, visit_function);
mtd!(Color, visit_color);
mtd!(HexColor, visit_hex_color);
mtd!(Number, visit_number);

View File

@ -1727,6 +1727,12 @@ error: Value
44 | p { color: #222; }
| ^^^^
error: Color
--> $DIR/tests/fixture/at-rule/layer/input.css:44:20
|
44 | p { color: #222; }
| ^^^^
error: HexColor
--> $DIR/tests/fixture/at-rule/layer/input.css:44:20
|

View File

@ -139,6 +139,12 @@ error: Value
4 | initial-value: #c0ffee;
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/at-rule/property/input.css:4:20
|
4 | initial-value: #c0ffee;
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/at-rule/property/input.css:4:20
|

View File

@ -785,6 +785,12 @@ error: Value
14 | prop: #ccc#ccc;
| ^^^^
error: Color
--> $DIR/tests/fixture/declaration/input.css:14:11
|
14 | prop: #ccc#ccc;
| ^^^^
error: HexColor
--> $DIR/tests/fixture/declaration/input.css:14:11
|
@ -797,6 +803,12 @@ error: Value
14 | prop: #ccc#ccc;
| ^^^^
error: Color
--> $DIR/tests/fixture/declaration/input.css:14:15
|
14 | prop: #ccc#ccc;
| ^^^^
error: HexColor
--> $DIR/tests/fixture/declaration/input.css:14:15
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #112333 }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/-4j83DwgJa0nPQIjlb0RIA/input.css:1:12
|
1 | a { color: #112333 }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/-4j83DwgJa0nPQIjlb0RIA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { box-shadow: rgb(255, 0, 17) 0 0 1 inset }
| ^^^^^^^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/-gboAEi1zyjFW5mtEM24Rg/input.css:1:17
|
1 | a { box-shadow: rgb(255, 0, 17) 0 0 1 inset }
| ^^^^^^^^^^^^^^^
error: Function
--> $DIR/tests/fixture/esbuild/misc/-gboAEi1zyjFW5mtEM24Rg/input.css:1:17
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #ABCD }
| ^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/39pbt1sIeFh8WWhCalZS4g/input.css:1:12
|
1 | a { color: #ABCD }
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/39pbt1sIeFh8WWhCalZS4g/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #ABBBCCDD }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/3EgMpLwjJNG0ht4U_r6cnw/input.css:1:12
|
1 | a { color: #ABBBCCDD }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/3EgMpLwjJNG0ht4U_r6cnw/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #abcf }
| ^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/3JGye8AhworwNFoUL1gKbg/input.css:1:12
|
1 | a { color: #abcf }
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/3JGye8AhworwNFoUL1gKbg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #\30hash }
| ^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/486QvEO8dmLFsXYp6xgKVw/input.css:1:12
|
1 | a { value: #\30hash }
| ^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/486QvEO8dmLFsXYp6xgKVw/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #1234 }
| ^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/5yer6GUWydidDHrfgacUkA/input.css:1:12
|
1 | a { color: #1234 }
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/5yer6GUWydidDHrfgacUkA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabbccef }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/7CK6ZYt4CWz7Ge5KWLKBYg/input.css:1:12
|
1 | a { color: #aabbccef }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/7CK6ZYt4CWz7Ge5KWLKBYg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABBCCFF }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/9IIa-42s3YQFw8ilk39GdQ/input.css:1:12
|
1 | a { color: #AABBCCFF }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/9IIa-42s3YQFw8ilk39GdQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #abbbccff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/Afm91-TMNbzd52HsPrCCNA/input.css:1:12
|
1 | a { color: #abbbccff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/Afm91-TMNbzd52HsPrCCNA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABCCCDD }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/AigZ338AGwCqF4M9a3Quqw/input.css:1:12
|
1 | a { color: #AABCCCDD }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/AigZ338AGwCqF4M9a3Quqw/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabccc }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/AocxkR5Gt30Hu6JV7J56Wg/input.css:1:12
|
1 | a { color: #aabccc }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/AocxkR5Gt30Hu6JV7J56Wg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #\68 ash }
| ^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/BKyQWW5j9vRP-kr41nqcjg/input.css:1:12
|
1 | a { value: #\68 ash }
| ^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/BKyQWW5j9vRP-kr41nqcjg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #0h\61sh }
| ^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/C4I0cdQcSbpaGOS-V8fwew/input.css:1:12
|
1 | a { value: #0h\61sh }
| ^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/C4I0cdQcSbpaGOS-V8fwew/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #112234ff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/C6gS3Kl0KEwGsFaUUGXzFg/input.css:1:12
|
1 | a { color: #112234ff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/C6gS3Kl0KEwGsFaUUGXzFg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #ABBBCC }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/CQiowK9DjojqKtlpQifemA/input.css:1:12
|
1 | a { color: #ABBBCC }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/CQiowK9DjojqKtlpQifemA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabbcc }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/EJPa4WhTn_fRRrDiA2bczg/input.css:1:12
|
1 | a { color: #aabbcc }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/EJPa4WhTn_fRRrDiA2bczg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #122233 }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/EYFn-trzBus37dDEvK1jUQ/input.css:1:12
|
1 | a { color: #122233 }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/EYFn-trzBus37dDEvK1jUQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabbcd }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/FlqjDLebWxQvNIxKppBllw/input.css:1:12
|
1 | a { color: #aabbcd }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/FlqjDLebWxQvNIxKppBllw/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #x\, }
| ^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/Fm7gvlx7uRyvrfzUC7rJxg/input.css:1:12
|
1 | a { value: #x\, }
| ^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/Fm7gvlx7uRyvrfzUC7rJxg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #h\61sh }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/HDNE73X9waUrBkTAzz-20g/input.css:1:12
|
1 | a { value: #h\61sh }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/HDNE73X9waUrBkTAzz-20g/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABCCC }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/LoeMqdekBkn3XKYHQFHOZA/input.css:1:12
|
1 | a { color: #AABCCC }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/LoeMqdekBkn3XKYHQFHOZA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabbccdd }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/MK5PGiCFMf7RHDp05gnDCw/input.css:1:12
|
1 | a { color: #aabbccdd }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/MK5PGiCFMf7RHDp05gnDCw/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #abbbccdd }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/MU8JgGd_-h5ocqkfawNxeQ/input.css:1:12
|
1 | a { color: #abbbccdd }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/MU8JgGd_-h5ocqkfawNxeQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABBCCDE }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/Oc6Obl7mbH-MlFllIoAbdg/input.css:1:12
|
1 | a { color: #AABBCCDE }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/Oc6Obl7mbH-MlFllIoAbdg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABBCCEF }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/R6OYU1g_sB_euLV8Yzjw6w/input.css:1:12
|
1 | a { color: #AABBCCEF }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/R6OYU1g_sB_euLV8Yzjw6w/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #123f }
| ^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/RmGccmub1dooAN8WPKTwhQ/input.css:1:12
|
1 | a { color: #123f }
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/RmGccmub1dooAN8WPKTwhQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #ABCF }
| ^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/SFBgyV9jnFbMzWZoo9VbSQ/input.css:1:12
|
1 | a { color: #ABCF }
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/SFBgyV9jnFbMzWZoo9VbSQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #112333ff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/Ssg_Qhdw7h_c6ZtY52Qe4A/input.css:1:12
|
1 | a { color: #112333ff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/Ssg_Qhdw7h_c6ZtY52Qe4A/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabbccde }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/T1SOp4KXmIb1WNsyPFEKqg/input.css:1:12
|
1 | a { color: #aabbccde }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/T1SOp4KXmIb1WNsyPFEKqg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABBCD }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/U2nuhvtnEWZ_kMd6i7EDWA/input.css:1:12
|
1 | a { color: #AABBCD }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/U2nuhvtnEWZ_kMd6i7EDWA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABBCCDD }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/W3R-c5DPSkhG9QWYdcFdFg/input.css:1:12
|
1 | a { color: #AABBCCDD }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/W3R-c5DPSkhG9QWYdcFdFg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #112234 }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/YIW6UUMmxrTYJjJ3JSL3uQ/input.css:1:12
|
1 | a { color: #112234 }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/YIW6UUMmxrTYJjJ3JSL3uQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #\,x }
| ^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/Ys7z8C2qi5O_HM9ElZQrUQ/input.css:1:12
|
1 | a { value: #\,x }
| ^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/Ys7z8C2qi5O_HM9ElZQrUQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABBCDFF }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/_APxY5Pe47Bb71-CwD1nhw/input.css:1:12
|
1 | a { color: #AABBCDFF }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/_APxY5Pe47Bb71-CwD1nhw/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #f00 }
| ^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/_U4zAUbS93Xo7_tJOolGuA/input.css:1:12
|
1 | a { color: #f00 }
| ^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/_U4zAUbS93Xo7_tJOolGuA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABCCCFF }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/a0Yurt7E7InOYieD7nMCXg/input.css:1:12
|
1 | a { color: #AABCCCFF }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/a0Yurt7E7InOYieD7nMCXg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABBCDDD }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/a7KElWOMF9ilrSsoliHkcg/input.css:1:12
|
1 | a { color: #AABBCDDD }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/a7KElWOMF9ilrSsoliHkcg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #ff0000ff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/b102IE1MrM3aGTKCRrSU6Q/input.css:1:12
|
1 | a { color: #ff0000ff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/b102IE1MrM3aGTKCRrSU6Q/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabbccff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/b2m1STf0F5CKity6Nd4vmQ/input.css:1:12
|
1 | a { color: #aabbccff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/b2m1STf0F5CKity6Nd4vmQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #\68ash }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/bdiLSVQWZCfQNNwD_OM6qA/input.css:1:12
|
1 | a { value: #\68ash }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/bdiLSVQWZCfQNNwD_OM6qA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabbcddd }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/cxYYDM0_rXbkvaqi8UPWOg/input.css:1:12
|
1 | a { color: #aabbcddd }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/cxYYDM0_rXbkvaqi8UPWOg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #12223344 }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/eVSpM_pYsIvyyewUkjTa2A/input.css:1:12
|
1 | a { color: #12223344 }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/eVSpM_pYsIvyyewUkjTa2A/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #\2cx }
| ^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/eivsIn6ub-xYiqErLqd8oA/input.css:1:12
|
1 | a { value: #\2cx }
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/eivsIn6ub-xYiqErLqd8oA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #11223345 }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/fTZzFds73kLZoyY9Y2gZdQ/input.css:1:12
|
1 | a { color: #11223345 }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/fTZzFds73kLZoyY9Y2gZdQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #122233ff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/ftc5-zf_sliOrFRRBGGS-g/input.css:1:12
|
1 | a { color: #122233ff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/ftc5-zf_sliOrFRRBGGS-g/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { value: #x\2c }
| ^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/gxBoWO36fKxIuYwPzrWyKQ/input.css:1:12
|
1 | a { value: #x\2c }
| ^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/gxBoWO36fKxIuYwPzrWyKQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #11233344 }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/inMW5rttJFPDfH0aKVFg_Q/input.css:1:12
|
1 | a { color: #11233344 }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/inMW5rttJFPDfH0aKVFg_Q/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #112233 }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/isfWm5W8qb6_aJSz_bdwDw/input.css:1:12
|
1 | a { color: #112233 }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/isfWm5W8qb6_aJSz_bdwDw/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabcccff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/j9dr5-Ih68VDH1exMwsmZA/input.css:1:12
|
1 | a { color: #aabcccff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/j9dr5-Ih68VDH1exMwsmZA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #112233ef }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/mJEhy0k_dxoszsTVHb3x_Q/input.css:1:12
|
1 | a { color: #112233ef }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/mJEhy0k_dxoszsTVHb3x_Q/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #abcd }
| ^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/niufyVEBI4s-ZqSXdfhptA/input.css:1:12
|
1 | a { color: #abcd }
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/niufyVEBI4s-ZqSXdfhptA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #f00f }
| ^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/nlYSjWzJfpf38YhsJNbwmA/input.css:1:12
|
1 | a { color: #f00f }
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/nlYSjWzJfpf38YhsJNbwmA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabcccdd }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/oj5Yn0RxnGFEbVphKqrL2Q/input.css:1:12
|
1 | a { color: #aabcccdd }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/oj5Yn0RxnGFEbVphKqrL2Q/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #aabbcdff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/pTW2Z7kJ0nR_yQzsOsjAwQ/input.css:1:12
|
1 | a { color: #aabbcdff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/pTW2Z7kJ0nR_yQzsOsjAwQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #AABBCC }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/qmXSF9N8euK5gfPoFGmV_Q/input.css:1:12
|
1 | a { color: #AABBCC }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/qmXSF9N8euK5gfPoFGmV_Q/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #11223444 }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/rZIFO-RMBeLmmQK8U6nNmQ/input.css:1:12
|
1 | a { color: #11223444 }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/rZIFO-RMBeLmmQK8U6nNmQ/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #112233ff }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/vN7xRB9YekSqanW68eIoNA/input.css:1:12
|
1 | a { color: #112233ff }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/vN7xRB9YekSqanW68eIoNA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #ABBBCCFF }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/xc1mD3YfHByTKL-N-FL49A/input.css:1:12
|
1 | a { color: #ABBBCCFF }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/xc1mD3YfHByTKL-N-FL49A/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #abbbcc }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/xdJ7w6fdV3po3r2aWrgPdA/input.css:1:12
|
1 | a { color: #abbbcc }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/xdJ7w6fdV3po3r2aWrgPdA/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #11223344 }
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/yboE7Tr5zjKHy9-m10AZTg/input.css:1:12
|
1 | a { color: #11223344 }
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/yboE7Tr5zjKHy9-m10AZTg/input.css:1:12
|

View File

@ -94,6 +94,12 @@ error: Value
1 | a { color: #ff0000 }
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/esbuild/misc/zUuWz4A8Y6yZO8JMLAe2fQ/input.css:1:12
|
1 | a { color: #ff0000 }
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/esbuild/misc/zUuWz4A8Y6yZO8JMLAe2fQ/input.css:1:12
|

View File

@ -119,6 +119,12 @@ error: Value
2 | color: #000000;
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:2:10
|
2 | color: #000000;
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:2:10
|
@ -155,6 +161,12 @@ error: Value
3 | color: #ffffff;
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:3:10
|
3 | color: #ffffff;
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:3:10
|
@ -191,6 +203,12 @@ error: Value
4 | color: #FFFFFF;
| ^^^^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:4:10
|
4 | color: #FFFFFF;
| ^^^^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:4:10
|
@ -227,6 +245,12 @@ error: Value
5 | color: #0000ffcc;
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:5:10
|
5 | color: #0000ffcc;
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:5:10
|
@ -263,6 +287,12 @@ error: Value
6 | color: #0000FFCC;
| ^^^^^^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:6:10
|
6 | color: #0000FFCC;
| ^^^^^^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:6:10
|
@ -299,6 +329,12 @@ error: Value
7 | color: #000;
| ^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:7:10
|
7 | color: #000;
| ^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:7:10
|
@ -335,6 +371,12 @@ error: Value
8 | color: #fff;
| ^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:8:10
|
8 | color: #fff;
| ^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:8:10
|
@ -371,6 +413,12 @@ error: Value
9 | color: #FFF;
| ^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:9:10
|
9 | color: #FFF;
| ^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:9:10
|
@ -407,6 +455,12 @@ error: Value
10 | color: #0000;
| ^^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:10:10
|
10 | color: #0000;
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:10:10
|
@ -443,6 +497,12 @@ error: Value
11 | color: #ffff;
| ^^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:11:10
|
11 | color: #ffff;
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:11:10
|
@ -479,6 +539,12 @@ error: Value
12 | color: #FFFF;
| ^^^^^
error: Color
--> $DIR/tests/fixture/hex-colors/input.css:12:10
|
12 | color: #FFFF;
| ^^^^^
error: HexColor
--> $DIR/tests/fixture/hex-colors/input.css:12:10
|

View File

@ -2575,6 +2575,12 @@ error: Value
58 | background: hsl(0 0% 0% / 50%);
| ^^^^^^^^^^^^^^^^^^
error: Color
--> $DIR/tests/fixture/selector/nesting/input.css:58:21
|
58 | background: hsl(0 0% 0% / 50%);
| ^^^^^^^^^^^^^^^^^^
error: Function
--> $DIR/tests/fixture/selector/nesting/input.css:58:21
|

View File

@ -0,0 +1,79 @@
.hex-color {
color: #00ff00;
color: #0000ffcc;
color: #123;
color: #123c;
}
.rgb {
color: rgb(255, 165, 0);
color: rgb(255,165,0);
color: rGb(255,165,0);
color: rgb(0 255 0);
color: rgb(0%100%0%);
color: rgb(29 164 192 / 95%);
color: rgb(123 255 255 / .5);
color: rgb(123 255 255 / 50%);
color: rgb(48% 100% 100% / 50%);
}
.rgba {
color: rgba(255, 0, 0, 100%);
color: rgba(255, 255, 0, 1);
color: rgba(255, 255, 0, 0.8);
}
.hsl {
color: hsl(38.824 100% 50%);
color: HsL(39 100% 50%);
color: hsl(100deg, 100%, 50%);
color: hsl(100, 100%, 50%);
color: hsl(100 100% 50%);
color: hsl(100, 100%, 50%, .8);
color: hsl(100 100% 50% / .8);
}
.hsla {
color: hsla(100, 100%, 50%, .8);
color: hsla(100 100% 50% / .8);
}
.hwb {
color: hwb(194 0% 0%);
color: hwb(194 0% 0% / 50%);
color: hwb(194 0% 50%);
color: hwb(194 50% 0%);
color: hwb(194 50% 50%);
}
.lab {
color: lab(29.2345% 39.3825 20.0664);
color: lab(29.2345% 39.3825 20.0664 / 100%);
color: lab(29.2345% 39.3825 20.0664 / 50%);
}
.lch {
color: lch(52.2345% 72.2 56.2 / 1);
color: lch(29.2345% 44.2 27);
color: lch(29.2345% 44.2 45deg);
color: lch(29.2345% 44.2 .5turn);
color: lch(29.2345% 44.2 27 / 100%);
color: lch(29.2345% 44.2 27 / 50%);
}
.oklab {
color: oklab(40.101% 0.1147 0.0453);
}
.oklch {
color: oklch(42.1% 0.192 328.6 / 1);
color: oklch(42.1% 0.192 328.6);
}
.color {
color: color(sRGB 0 1 0);
color: color(display-p3 0.823 0.6554 0.2537 /1);
color: color(display-p3 0.823 0.6554 0.2537);
color: color(xyz 0.472 0.372 0.131);
color: color(xyz-d65 0.472 0.372 0.131);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -311,6 +311,12 @@ error: Value
6 | prop: [red #fff 12px];
| ^^^^
error: Color
--> $DIR/tests/fixture/value/square-brackets/input.css:6:17
|
6 | prop: [red #fff 12px];
| ^^^^
error: HexColor
--> $DIR/tests/fixture/value/square-brackets/input.css:6:17
|

View File

@ -138,6 +138,7 @@ define!({
pub enum Color {
HexColor(HexColor),
Function(Function),
}
pub struct HexColor {