Derive ToCss for ContentItem

This commit is contained in:
Anthony Ramine 2018-03-01 13:13:22 +01:00
parent a4d3a8d74a
commit 91ed0b0aa5
2 changed files with 4 additions and 39 deletions

View file

@ -9,8 +9,7 @@ use computed_values::list_style_type::T as ListStyleType;
use cssparser::{Parser, Token}; use cssparser::{Parser, Token};
use parser::{Parse, ParserContext}; use parser::{Parse, ParserContext};
use selectors::parser::SelectorParseErrorKind; use selectors::parser::SelectorParseErrorKind;
use std::fmt::{self, Write}; use style_traits::{ParseError, StyleParseErrorKind};
use style_traits::{CssWriter, ParseError, StyleParseErrorKind, ToCss};
use values::CustomIdent; use values::CustomIdent;
#[cfg(feature = "gecko")] #[cfg(feature = "gecko")]
use values::generics::CounterStyleOrNone; use values::generics::CounterStyleOrNone;
@ -148,39 +147,3 @@ impl Parse for Content {
Ok(Content::Items(content.into_boxed_slice())) Ok(Content::Items(content.into_boxed_slice()))
} }
} }
impl ToCss for ContentItem {
fn to_css<W>(&self, dest: &mut CssWriter<W>) -> fmt::Result
where W: Write,
{
match *self {
ContentItem::String(ref s) => s.to_css(dest),
ContentItem::Counter(ref s, ref counter_style) => {
dest.write_str("counter(")?;
s.to_css(dest)?;
dest.write_str(", ")?;
counter_style.to_css(dest)?;
dest.write_str(")")
}
ContentItem::Counters(ref s, ref separator, ref counter_style) => {
dest.write_str("counters(")?;
s.to_css(dest)?;
dest.write_str(", ")?;
separator.to_css(dest)?;
dest.write_str(", ")?;
counter_style.to_css(dest)?;
dest.write_str(")")
}
ContentItem::OpenQuote => dest.write_str("open-quote"),
ContentItem::CloseQuote => dest.write_str("close-quote"),
ContentItem::NoOpenQuote => dest.write_str("no-open-quote"),
ContentItem::NoCloseQuote => dest.write_str("no-close-quote"),
#[cfg(feature = "gecko")]
ContentItem::Attr(ref attr) => {
attr.to_css(dest)
}
#[cfg(feature = "gecko")]
ContentItem::Url(ref url) => url.to_css(dest),
}
}
}

View file

@ -97,13 +97,15 @@ pub enum Content {
} }
/// Items for the `content` property. /// Items for the `content` property.
#[derive(Clone, Debug, Eq, MallocSizeOf, PartialEq, ToComputedValue)] #[derive(Clone, Debug, Eq, MallocSizeOf, PartialEq, ToComputedValue, ToCss)]
pub enum ContentItem { pub enum ContentItem {
/// Literal string content. /// Literal string content.
String(Box<str>), String(Box<str>),
/// `counter(name, style)`. /// `counter(name, style)`.
#[css(comma, function)]
Counter(CustomIdent, CounterStyleType), Counter(CustomIdent, CounterStyleType),
/// `counters(name, separator, style)`. /// `counters(name, separator, style)`.
#[css(comma, function)]
Counters(CustomIdent, Box<str>, CounterStyleType), Counters(CustomIdent, Box<str>, CounterStyleType),
/// `open-quote`. /// `open-quote`.
OpenQuote, OpenQuote,