Skip to content

Commit 203fa3c

Browse files
authored
feat: support <string> in @property syntax (#1134)
1 parent e2a7d52 commit 203fa3c

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/lib.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28661,6 +28661,17 @@ mod tests {
2866128661
"@property --property-name{syntax:\"<length>\";inherits:true;initial-value:25px}",
2866228662
);
2866328663

28664+
minify_test(
28665+
r#"
28666+
@property --property-name {
28667+
syntax: '<string>';
28668+
inherits: true;
28669+
initial-value: "hi";
28670+
}
28671+
"#,
28672+
"@property --property-name{syntax:\"<string>\";inherits:true;initial-value:\"hi\"}",
28673+
);
28674+
2866428675
error_test(
2866528676
r#"
2866628677
@property --property-name {

src/values/syntax.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)