servo: Merge #20192 - Derive ToCss for DeclaredValue (from servo:derive-all-the-things); r=emilio

Source-Repo: https://github.com/servo/servo
Source-Revision: a716dfd40b091cbe94228a11e5cb75e5cc17f0e3

--HG--
extra : subtree_source : https%3A//hg.mozilla.org/projects/converted-servo-linear
extra : subtree_revision : 500af6e601ae62b29682fc41f0e19ce9d23b56c5
This commit is contained in:
Anthony Ramine 2018-03-04 09:29:01 -05:00
Родитель 4fff12589f
Коммит 1b8cb62485
1 изменённых файлов: 15 добавлений и 28 удалений

Просмотреть файл

@ -1308,7 +1308,7 @@ impl ShorthandId {
/// Servo's representation of a declared value for a given `T`, which is the
/// declared value for that property.
#[derive(Clone, Debug, Eq, PartialEq)]
#[derive(Clone, Debug, Eq, PartialEq, ToCss)]
pub enum DeclaredValue<'a, T: 'a> {
/// A known specified value from the stylesheet.
Value(&'a T),
@ -1360,6 +1360,19 @@ pub struct UnparsedValue {
from_shorthand: Option<ShorthandId>,
}
impl ToCss for UnparsedValue {
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
where
W: Write,
{
// https://drafts.csswg.org/css-variables/#variables-in-shorthands
if self.from_shorthand.is_none() {
dest.write_str(&*self.css)?;
}
Ok(())
}
}
impl UnparsedValue {
fn substitute_variables(
&self,
@ -1425,25 +1438,6 @@ impl UnparsedValue {
}
}
impl<'a, T: ToCss> ToCss for DeclaredValue<'a, T> {
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
where
W: Write,
{
match *self {
DeclaredValue::Value(ref inner) => inner.to_css(dest),
DeclaredValue::WithVariables(ref with_variables) => {
// https://drafts.csswg.org/css-variables/#variables-in-shorthands
if with_variables.from_shorthand.is_none() {
dest.write_str(&*with_variables.css)?
}
Ok(())
},
DeclaredValue::CSSWideKeyword(ref keyword) => keyword.to_css(dest),
}
}
}
/// An identifier for a given property declaration, which can be either a
/// longhand or a custom property.
#[derive(Clone, Copy, PartialEq)]
@ -1742,14 +1736,7 @@ impl ToCss for VariableDeclaration {
where
W: fmt::Write,
{
// https://drafts.csswg.org/css-variables/#variables-in-shorthands
match self.value.from_shorthand {
None => {
dest.write_str(&*self.value.css)?
}
Some(..) => {},
}
Ok(())
self.value.to_css(dest)
}
}