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