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}