use crate::parser::lexer::{TokKind, Token};
pub(crate) fn skip_ws(tokens: &[Token], mut i: usize) -> usize {
while matches!(tokens.get(i).map(|t| t.kind), Some(TokKind::Whitespace)) {
i += 1;
}
i
}
pub(crate) fn skip_ws_and_newlines(tokens: &[Token], mut i: usize) -> usize {
while matches!(
tokens.get(i).map(|t| t.kind),
Some(TokKind::Whitespace | TokKind::Newline)
) {
i += 1;
}
i
}
pub(crate) fn skip_trivia(tokens: &[Token], mut i: usize) -> usize {
while matches!(tokens.get(i).map(|t| t.kind), Some(k) if k.is_trivia()) {
i += 1;
}
i
}
pub(crate) fn consume_to_line_end(tokens: &[Token], mut i: usize) -> usize {
while i < tokens.len() && !matches!(tokens[i].kind, TokKind::Newline) {
i += 1;
}
if i < tokens.len() && matches!(tokens[i].kind, TokKind::Newline) {
i += 1;
}
i
}