oxc_css_parser/parser/at_rule/
custom_media.rs1use super::Parser;
2use crate::{Parse, ast::*, error::PResult, pos::Span, tokenizer::Token};
3
4impl<'a> Parse<'a> for CustomMedia<'a> {
6 fn parse(input: &mut Parser<'a>) -> PResult<Self> {
7 let name = input.parse_dashed_ident()?;
8 let value = input.parse::<CustomMediaValue>()?;
9 let span = Span { start: name.span().start, end: value.span().end };
10 Ok(CustomMedia { name, value, span })
11 }
12}
13
14impl<'a> Parse<'a> for CustomMediaValue<'a> {
15 fn parse(input: &mut Parser<'a>) -> PResult<Self> {
16 match &input.cursor.peek()?.token {
17 Token::Ident(ident) => {
18 let name = ident.name();
19 if name.eq_ignore_ascii_case("true") {
20 input.parse().map(CustomMediaValue::True)
21 } else if name.eq_ignore_ascii_case("false") {
22 input.parse().map(CustomMediaValue::False)
23 } else {
24 input.parse().map(CustomMediaValue::MediaQueryList)
25 }
26 }
27 _ => input.parse().map(CustomMediaValue::MediaQueryList),
28 }
29 }
30}