Skip to main content

oak_clojure/ast/
mod.rs

1use crate::{language::ClojureLanguage, parser::ClojureElementType};
2use oak_core::tree::{RedLeaf, RedNode};
3
4pub type ClojureNode<'a> = RedNode<'a, ClojureLanguage>;
5pub type ClojureToken = RedLeaf<ClojureLanguage>;
6
7#[derive(Debug, Clone, Copy)]
8pub struct ClojureRoot<'a> {
9    syntax: ClojureNode<'a>,
10}
11
12impl<'a> ClojureRoot<'a> {
13    pub fn cast(node: ClojureNode<'a>) -> Option<Self> {
14        if node.green.kind == ClojureElementType::SourceFile { Some(ClojureRoot { syntax: node }) } else { None }
15    }
16
17    pub fn syntax(&self) -> &ClojureNode<'a> {
18        &self.syntax
19    }
20}