use cssparser::{Delimiter, Token};
use less_allocator::Allocator;
use crate::{error::ParserError, traits::Parse};
#[derive(Clone, Debug, PartialEq, Eq, Hash, Default)]
pub struct VariableReference<'i>(pub(crate) cssparser::CowRcStr<'i>);
impl<'i> Parse<'i> for VariableReference<'i> {
fn parse<'t>(
_allocator: &'i Allocator,
input: &mut cssparser::Parser<'i, 't>,
) -> Result<Self, cssparser::ParseError<'i, ParserError<'i>>> {
input.parse_until_before(Delimiter::Semicolon, |parser| {
if let Ok(Token::AtKeyword(keyword)) = parser.next() {
Ok(VariableReference(keyword.clone()))
} else {
Err(parser.new_custom_error(ParserError::InvalidLessVariable))
}
})
}
}