#[derive(Clone, Debug, PartialEq)]
pub struct VectorValues(pub Vec<u32>);
impl Parse for VectorValues
{
fn parse<'i, 't>(_context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<VectorValues, ParseError<'i, CustomParseError<'i>>>
{
let mut vec = vec![];
loop
{
match input.next()
{
Ok(&Token::Number { int_value: Some(a), .. }) if a >= 0 =>
{
vec.push(a as u32);
},
Ok(unexpectedToken) => return CustomParseError::unexpectedToken(unexpectedToken),
Err(_) => break,
}
}
if vec.len() == 0
{
return Err(BasicParseError::EndOfInput.into());
}
Ok(VectorValues(vec))
}
}
impl ToCss for VectorValues
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
let mut iter = self.0.iter();
let first = iter.next();
if let Some(first) = first
{
first.to_css(dest)?;
for value in iter
{
dest.write_char(' ')?;
value.to_css(dest)?;
}
}
Ok(())
}
}