@@ -63,6 +63,8 @@ pub enum SyntaxComponentKind {
6363 Percentage ,
6464 /// A `<length-percentage>` component.
6565 LengthPercentage ,
66+ /// A `<string>` component.
67+ String ,
6668 /// A `<color>` component.
6769 Color ,
6870 /// An `<image>` component.
@@ -126,6 +128,8 @@ pub enum ParsedComponent<'i> {
126128 Percentage ( values:: percentage:: Percentage ) ,
127129 /// A `<length-percentage>` value.
128130 LengthPercentage ( values:: length:: LengthPercentage ) ,
131+ /// A `<string>` value.
132+ String ( values:: string:: CSSString < ' i > ) ,
129133 /// A `<color>` value.
130134 Color ( values:: color:: CssColor ) ,
131135 /// An `<image>` value.
@@ -222,6 +226,7 @@ impl<'i> SyntaxString {
222226 SyntaxComponentKind :: LengthPercentage => {
223227 ParsedComponent :: LengthPercentage ( values:: length:: LengthPercentage :: parse ( input) ?)
224228 }
229+ SyntaxComponentKind :: String => ParsedComponent :: String ( values:: string:: CSSString :: parse ( input) ?) ,
225230 SyntaxComponentKind :: Color => ParsedComponent :: Color ( values:: color:: CssColor :: parse ( input) ?) ,
226231 SyntaxComponentKind :: Image => ParsedComponent :: Image ( values:: image:: Image :: parse ( input) ?) ,
227232 SyntaxComponentKind :: Url => ParsedComponent :: Url ( values:: url:: Url :: parse ( input) ?) ,
@@ -343,6 +348,7 @@ impl SyntaxComponentKind {
343348 "number" => SyntaxComponentKind :: Number ,
344349 "percentage" => SyntaxComponentKind :: Percentage ,
345350 "length-percentage" => SyntaxComponentKind :: LengthPercentage ,
351+ "string" => SyntaxComponentKind :: String ,
346352 "color" => SyntaxComponentKind :: Color ,
347353 "image" => SyntaxComponentKind :: Image ,
348354 "url" => SyntaxComponentKind :: Url ,
@@ -440,6 +446,7 @@ impl ToCss for SyntaxComponentKind {
440446 Number => "<number>" ,
441447 Percentage => "<percentage>" ,
442448 LengthPercentage => "<length-percentage>" ,
449+ String => "<string>" ,
443450 Color => "<color>" ,
444451 Image => "<image>" ,
445452 Url => "<url>" ,
@@ -467,6 +474,7 @@ impl<'i> ToCss for ParsedComponent<'i> {
467474 Number ( v) => v. to_css ( dest) ,
468475 Percentage ( v) => v. to_css ( dest) ,
469476 LengthPercentage ( v) => v. to_css ( dest) ,
477+ String ( v) => v. to_css ( dest) ,
470478 Color ( v) => v. to_css ( dest) ,
471479 Image ( v) => v. to_css ( dest) ,
472480 Url ( v) => v. to_css ( dest) ,
@@ -640,6 +648,12 @@ mod tests {
640648
641649 test ( "foo | bar | baz" , "bar" , ParsedComponent :: Literal ( "bar" . into ( ) ) ) ;
642650
651+ test (
652+ "<string>" ,
653+ "'foo'" ,
654+ ParsedComponent :: String ( values:: string:: CSSString ( "foo" . into ( ) ) ) ,
655+ ) ;
656+
643657 test (
644658 "<custom-ident>" ,
645659 "hi" ,
0 commit comments