Introduce #[css(function)] for #[derive(ToCss)]

Any variant with this attribute gets serialised as a CSS function,
using the variant name as the function name.
This commit is contained in:
Anthony Ramine 2017-06-08 09:36:11 +02:00
parent fd1ab75af9
commit 43a5257a0c
7 changed files with 66 additions and 66 deletions

View file

@ -54,13 +54,14 @@ impl SymbolsType {
///
/// Since wherever <counter-style> is used, 'none' is a valid value as
/// well, we combine them into one type to make code simpler.
#[derive(Clone, Debug, PartialEq, Eq)]
#[derive(Clone, Debug, Eq, PartialEq, ToCss)]
pub enum CounterStyleOrNone {
/// none
None_,
/// <counter-style-name>
/// `none`
None,
/// `<counter-style-name>`
Name(CustomIdent),
/// symbols()
/// `symbols()`
#[css(function)]
Symbols(SymbolsType, Symbols),
}
@ -84,7 +85,7 @@ impl Parse for CounterStyleOrNone {
return Ok(CounterStyleOrNone::Name(name));
}
if input.try(|i| i.expect_ident_matching("none")).is_ok() {
return Ok(CounterStyleOrNone::None_);
return Ok(CounterStyleOrNone::None);
}
if input.try(|i| i.expect_function_matching("symbols")).is_ok() {
return input.parse_nested_block(|input| {
@ -108,23 +109,6 @@ impl Parse for CounterStyleOrNone {
}
}
impl ToCss for CounterStyleOrNone {
#[inline]
fn to_css<W>(&self, dest: &mut W) -> fmt::Result where W: fmt::Write {
match self {
&CounterStyleOrNone::None_ => dest.write_str("none"),
&CounterStyleOrNone::Name(ref name) => name.to_css(dest),
&CounterStyleOrNone::Symbols(ref symbols_type, ref symbols) => {
dest.write_str("symbols(")?;
symbols_type.to_css(dest)?;
dest.write_str(" ")?;
symbols.to_css(dest)?;
dest.write_str(")")
}
}
}
}
/// A settings tag, defined by a four-character tag and a setting value
///
/// For font-feature-settings, this is a tag and an integer,