use crate::parser::CssParser;
use crate::syntax::block::parse_declaration_or_rule_list_block;
use crate::syntax::{is_at_identifier, parse_regular_identifier};
use biome_css_syntax::CssSyntaxKind::*;
use biome_css_syntax::T;
use biome_parser::parsed_syntax::ParsedSyntax::Present;
use biome_parser::prelude::ParsedSyntax::Absent;
use biome_parser::prelude::*;
#[inline]
pub(crate) fn is_at_unknown_at_rule(p: &mut CssParser) -> bool {
is_at_identifier(p)
}
#[inline]
pub(crate) fn parse_unknown_at_rule(p: &mut CssParser) -> ParsedSyntax {
if !is_at_unknown_at_rule(p) {
return Absent;
}
let m = p.start();
parse_regular_identifier(p).ok();
{
let m = p.start();
while !(p.at(EOF) || p.at(T!['{']) || p.at(T![;])) {
p.bump_any();
}
m.complete(p, CSS_UNKNOWN_AT_RULE_COMPONENT_LIST);
}
let kind = if p.at(T!['{']) {
parse_declaration_or_rule_list_block(p);
CSS_UNKNOWN_BLOCK_AT_RULE
} else {
p.expect(T![;]);
CSS_UNKNOWN_VALUE_AT_RULE
};
Present(m.complete(p, kind))
}