use crate::prelude as txl;
use crate::token;
use crate::traits::*;
use crate::vm;
pub fn parse_keyword<S: TexlangState>(
input: &mut vm::ExpandedStream<S>,
keyword: &str,
) -> txl::Result<bool> {
let Some(c) = keyword.chars().next() else {
return Ok(true);
};
let Some(token) = input.next_or()? else {
return Ok(false);
};
if token.value() != token::Value::Letter(c.to_ascii_lowercase())
&& token.value() != token::Value::Letter(c.to_ascii_uppercase())
{
input.back(token);
return Ok(false);
}
let result = parse_keyword(input, &keyword[c.len_utf8()..]);
if let Ok(false) = result {
input.back(token);
}
result
}