mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
style: Fix whitespace handling inside CSS variables
As per w3c/csswg-drafts#881 and w3c/csswg-drafts#774. Differential Revision: https://phabricator.services.mozilla.com/D116459
This commit is contained in:
parent
832807f15f
commit
b4546993b4
3 changed files with 20 additions and 61 deletions
|
@ -1076,15 +1076,9 @@ impl PropertyDeclarationBlock {
|
|||
// AppendableValue::Css.
|
||||
let mut v = CssString::new();
|
||||
let value = match appendable_value {
|
||||
AppendableValue::Css {
|
||||
css,
|
||||
with_variables,
|
||||
} => {
|
||||
AppendableValue::Css(css) => {
|
||||
debug_assert!(!css.is_empty());
|
||||
AppendableValue::Css {
|
||||
css,
|
||||
with_variables,
|
||||
}
|
||||
appendable_value
|
||||
},
|
||||
other => {
|
||||
append_declaration_value(&mut v, other)?;
|
||||
|
@ -1096,14 +1090,13 @@ impl PropertyDeclarationBlock {
|
|||
continue;
|
||||
}
|
||||
|
||||
AppendableValue::Css {
|
||||
AppendableValue::Css({
|
||||
// Safety: serialization only generates valid utf-8.
|
||||
#[cfg(feature = "gecko")]
|
||||
css: unsafe { v.as_str_unchecked() },
|
||||
unsafe { v.as_str_unchecked() }
|
||||
#[cfg(feature = "servo")]
|
||||
css: &v,
|
||||
with_variables: false,
|
||||
}
|
||||
&v
|
||||
})
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -1185,12 +1178,7 @@ where
|
|||
DeclarationsForShorthand(ShorthandId, I),
|
||||
/// A raw CSS string, coming for example from a property with CSS variables,
|
||||
/// or when storing a serialized shorthand value before appending directly.
|
||||
Css {
|
||||
/// The raw CSS string.
|
||||
css: &'a str,
|
||||
/// Whether the original serialization contained variables or not.
|
||||
with_variables: bool,
|
||||
},
|
||||
Css(&'a str),
|
||||
}
|
||||
|
||||
/// Potentially appends whitespace after the first (property: value;) pair.
|
||||
|
@ -1215,7 +1203,7 @@ where
|
|||
I: Iterator<Item = &'a PropertyDeclaration>,
|
||||
{
|
||||
match appendable_value {
|
||||
AppendableValue::Css { css, .. } => dest.write_str(css),
|
||||
AppendableValue::Css(css) => dest.write_str(css),
|
||||
AppendableValue::Declaration(decl) => decl.to_css(dest),
|
||||
AppendableValue::DeclarationsForShorthand(shorthand, decls) => {
|
||||
shorthand.longhands_to_css(decls, &mut CssWriter::new(dest))
|
||||
|
@ -1238,25 +1226,7 @@ where
|
|||
handle_first_serialization(dest, is_first_serialization)?;
|
||||
|
||||
property_name.to_css(&mut CssWriter::new(dest))?;
|
||||
dest.write_char(':')?;
|
||||
|
||||
// for normal parsed values, add a space between key: and value
|
||||
match appendable_value {
|
||||
AppendableValue::Declaration(decl) => {
|
||||
if !decl.value_is_unparsed() {
|
||||
// For normal parsed values, add a space between key: and value.
|
||||
dest.write_str(" ")?
|
||||
}
|
||||
},
|
||||
AppendableValue::Css { with_variables, .. } => {
|
||||
if !with_variables {
|
||||
dest.write_str(" ")?
|
||||
}
|
||||
},
|
||||
// Currently append_serialization is only called with a Css or
|
||||
// a Declaration AppendableValue.
|
||||
AppendableValue::DeclarationsForShorthand(..) => unreachable!(),
|
||||
}
|
||||
dest.write_str(": ")?;
|
||||
|
||||
append_declaration_value(dest, appendable_value)?;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue