#[derive(Clone, Debug)]
pub struct AdditiveTuple
{
pub weight: u32,
pub symbol: Symbol,
}
impl ToCss for AdditiveTuple
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
self.weight.to_css(dest)?;
dest.write_char(' ')?;
self.symbol.to_css(dest)
}
}
impl Separated for AdditiveTuple
{
type Delimiter = Comma;
}
impl Parse for AdditiveTuple
{
fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i, CustomParseError<'i>>>
{
let symbol = input.try(|input| Symbol::parse(context, input));
let weight = input.expect_integer()?;
if weight < 0
{
return Err(ParseError::Custom(CustomParseError::CounterStyleAdditiveTupleWeightCanNotBeNegative(weight)))
}
let symbol = symbol.or_else(|_| Symbol::parse(context, input))?;
Ok
(
Self
{
weight: weight as u32,
symbol,
}
)
}
}