oxc_css_parser/parser/at_rule/
font_feature_values.rs1use super::Parser;
2use crate::{Parse, ast::*, error::PResult, tokenizer::Token};
3
4impl<'a> Parse<'a> for FontFamilyName<'a> {
9 fn parse(input: &mut Parser<'a>) -> PResult<Self> {
10 match &input.cursor.peek()?.token {
11 Token::Str(..) | Token::StrTemplate(..) => input.parse().map(FontFamilyName::Str),
12 _ => {
13 let first = input.parse::<InterpolableIdent>()?;
14 let mut span = first.span().clone();
15
16 let mut idents = input.vec1(first);
17 while let Token::Ident(..) | Token::HashLBrace(..) | Token::AtLBraceVar(..) =
18 &input.cursor.peek()?.token
19 {
20 idents.push(input.parse()?);
21 }
22 if let Some(last) = idents.last() {
23 span.end = last.span().end;
24 }
25 Ok(FontFamilyName::Unquoted(UnquotedFontFamilyName { idents, span }))
26 }
27 }
28 }
29}