From 1b8cb62485f47c230990cc85285709ab85fe5b78 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Sun, 4 Mar 2018 09:29:01 -0500 Subject: [PATCH] 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 --- .../style/properties/properties.mako.rs | 43 +++++++------------ 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/servo/components/style/properties/properties.mako.rs b/servo/components/style/properties/properties.mako.rs index f8d13d33a82c..595a90781418 100644 --- a/servo/components/style/properties/properties.mako.rs +++ b/servo/components/style/properties/properties.mako.rs @@ -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, } +impl ToCss for UnparsedValue { + fn to_css(&self, dest: &mut CssWriter) -> 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(&self, dest: &mut CssWriter) -> 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) } }