use rowan::Language;
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[repr(u16)]
pub enum Sk {
Ws,
Newline,
Comment,
Key,
Sep, ValStr, Error,
Value, Entry, Root,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum EnvLang {}
impl Language for EnvLang {
type Kind = Sk;
fn kind_from_raw(raw: rowan::SyntaxKind) -> Sk {
const KINDS: [Sk; 10] = [
Sk::Ws,
Sk::Newline,
Sk::Comment,
Sk::Key,
Sk::Sep,
Sk::ValStr,
Sk::Error,
Sk::Value,
Sk::Entry,
Sk::Root,
];
KINDS[raw.0 as usize]
}
fn kind_to_raw(kind: Sk) -> rowan::SyntaxKind {
rowan::SyntaxKind(kind as u16)
}
}
pub type SyntaxNode = rowan::SyntaxNode<EnvLang>;
pub(crate) fn sk(kind: Sk) -> rowan::SyntaxKind {
rowan::SyntaxKind(kind as u16)
}