#[derive(Clone, Debug, Eq, PartialEq)]
pub struct Symbols(pub Vec<Symbol>);
impl ToCss for Symbols
{
fn to_css<W: Write>(&self, dest: &mut W) -> fmt::Result
{
let mut iter = self.0.iter();
let first = iter.next().unwrap();
first.to_css(dest)?;
for item in iter
{
dest.write_char(' ')?;
item.to_css(dest)?;
}
Ok(())
}
}
impl Parse for Symbols
{
fn parse<'i, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<Self, ParseError<'i, CustomParseError<'i>>>
{
let mut symbols = Vec::new();
loop
{
if let Ok(s) = input.try(|input| Symbol::parse(context, input))
{
symbols.push(s)
}
else
{
if symbols.is_empty()
{
return Err(ParseError::Custom(CustomParseError::CounterStyleSymbolsCanNotBeEmpty))
}
else
{
return Ok(Symbols(symbols))
}
}
}
}
}