use {
crate::{
parsers::{Parse, ParserContext},
CustomParseError,
},
cssparser::{ParseError, Parser, ToCss, Token},
std::fmt,
};
#[derive(Clone, Debug, PartialEq)]
pub struct SingleValue(pub u32);
impl Parse for SingleValue {
fn parse<'i, 't>(
_context: &ParserContext,
input: &mut Parser<'i, 't>,
) -> Result<SingleValue, ParseError<'i, CustomParseError<'i>>> {
match *input.next()? {
Token::Number {
int_value: Some(value),
..
} if value >= 0 => Ok(SingleValue(value as u32)),
ref unexpectedToken => {
CustomParseError::unexpectedToken(unexpectedToken)
}
}
}
}
impl ToCss for SingleValue {
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result {
self.0.to_css(dest)
}
}