aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2018-03-04 23:25:40 +0100
committerAnthony Ramine <n.oxyde@gmail.com>2018-03-05 12:02:31 +0100
commit31036d6510e5d996e730b1db2546a70dab361f4d (patch)
tree134fb8c625867c4c10ed50030f57817690949a49
parentfb8b6fc0a5f4b1ab8e20314a512a20729bc98587 (diff)
downloadservo-31036d6510e5d996e730b1db2546a70dab361f4d.tar.gz
servo-31036d6510e5d996e730b1db2546a70dab361f4d.zip
Derive ToCss for MediaList
This uncovered the fancy snowflake `use fmt::Write` in the impl of ToCss for NonTSPseudoClass.
-rw-r--r--components/style/gecko/selector_parser.rs2
-rw-r--r--components/style/lib.rs27
-rw-r--r--components/style/media_queries.rs13
3 files changed, 3 insertions, 39 deletions
diff --git a/components/style/gecko/selector_parser.rs b/components/style/gecko/selector_parser.rs
index c009dc6b65e..434d2fef414 100644
--- a/components/style/gecko/selector_parser.rs
+++ b/components/style/gecko/selector_parser.rs
@@ -66,7 +66,7 @@ apply_non_ts_list!(pseudo_class_name);
impl ToCss for NonTSPseudoClass {
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
use cssparser::CssStringWriter;
- use fmt::Write;
+ use std::fmt::Write;
macro_rules! pseudo_class_serialize {
(bare: [$(($css:expr, $name:ident, $gecko_type:tt, $state:tt, $flags:tt),)*],
string: [$(($s_css:expr, $s_name:ident, $s_gecko_type:tt, $s_state:tt, $s_flags:tt),)*]) => {
diff --git a/components/style/lib.rs b/components/style/lib.rs
index 84ccd32574e..49acbe35f13 100644
--- a/components/style/lib.rs
+++ b/components/style/lib.rs
@@ -133,9 +133,6 @@ pub mod traversal_flags;
#[allow(non_camel_case_types)]
pub mod values;
-use std::fmt::{self, Write};
-use style_traits::{CssWriter, ToCss};
-
#[cfg(feature = "gecko")] pub use gecko_string_cache as string_cache;
#[cfg(feature = "gecko")] pub use gecko_string_cache::Atom;
#[cfg(feature = "gecko")] pub use gecko_string_cache::Namespace;
@@ -181,30 +178,6 @@ macro_rules! reexport_computed_values {
}
longhand_properties_idents!(reexport_computed_values);
-/// Serializes as CSS a comma-separated list of any `T` that supports being
-/// serialized as CSS.
-pub fn serialize_comma_separated_list<W, T>(
- dest: &mut CssWriter<W>,
- list: &[T],
-) -> fmt::Result
-where
- W: Write,
- T: ToCss,
-{
- if list.is_empty() {
- return Ok(());
- }
-
- list[0].to_css(dest)?;
-
- for item in list.iter().skip(1) {
- dest.write_str(", ")?;
- item.to_css(dest)?;
- }
-
- Ok(())
-}
-
#[cfg(feature = "gecko")] use gecko_string_cache::WeakAtom;
#[cfg(feature = "servo")] use servo_atoms::Atom as WeakAtom;
diff --git a/components/style/media_queries.rs b/components/style/media_queries.rs
index 8941b21a30a..e6fb4614762 100644
--- a/components/style/media_queries.rs
+++ b/components/style/media_queries.rs
@@ -13,7 +13,6 @@ use cssparser::{Token, ParserInput};
use error_reporting::{ContextualParseError, ParseErrorReporter};
use parser::{ParserContext, ParserErrorContext};
use selectors::parser::SelectorParseErrorKind;
-use serialize_comma_separated_list;
use std::fmt::{self, Write};
use str::string_as_ascii_lowercase;
use style_traits::{CssWriter, ToCss, ParseError, StyleParseErrorKind};
@@ -25,22 +24,14 @@ pub use servo::media_queries::{Device, Expression};
pub use gecko::media_queries::{Device, Expression};
/// A type that encapsulates a media query list.
-#[derive(Clone, Debug)]
#[cfg_attr(feature = "servo", derive(MallocSizeOf))]
+#[css(comma, iterable)]
+#[derive(Clone, Debug, ToCss)]
pub struct MediaList {
/// The list of media queries.
pub media_queries: Vec<MediaQuery>,
}
-impl ToCss for MediaList {
- fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
- where
- W: Write,
- {
- serialize_comma_separated_list(dest, &self.media_queries)
- }
-}
-
impl MediaList {
/// Create an empty MediaList.
pub fn empty() -> Self {