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