teo_parser/ast/
keyword.rs1use crate::{declare_node, impl_node_defaults};
2use crate::ast::span::Span;
3use crate::format::Writer;
4use crate::traits::write::Write;
5
6declare_node!(Keyword, pub(crate) name: String);
7
8impl_node_defaults!(Keyword);
9
10impl Write for Keyword {
11    fn write<'a>(&'a self, writer: &mut Writer<'a>) {
12        writer.write_content(self, self.name());
13    }
14
15    fn prefer_whitespace_after(&self) -> bool {
16        self.name() != "variant"
17    }
18}
19
20impl Keyword {
21
22    pub(crate) fn new(name: impl AsRef<str>, span: Span, path: Vec<usize>) -> Self {
23        Self {
24            span,
25            path,
26            name: name.as_ref().to_owned(),
27        }
28    }
29
30    pub fn name(&self) -> &str {
31        self.name.as_str()
32    }
33
34    pub fn is_connector(&self) -> bool {
35        self.name.as_str() == "connector"
36    }
37
38    pub fn is_server(&self) -> bool {
39        self.name.as_str() == "server"
40    }
41
42    pub fn is_entity(&self) -> bool {
43        self.name.as_str() == "entity"
44    }
45
46    pub fn is_client(&self) -> bool {
47        self.name.as_str() == "client"
48    }
49
50    pub fn is_debug(&self) -> bool {
51        self.name.as_str() == "debug"
52    }
53
54    pub fn is_admin(&self) -> bool {
55        self.name.as_str() == "admin"
56    }
57}