1#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
3pub enum TwigSyntaxKind {
4 Root,
6 Document,
7 Template,
8 Block,
9 Variable,
10 Filter,
11 Function,
12 Tag,
13 Comment,
14 Text,
15 Expression,
16
17 String,
19 Number,
20 Boolean,
21 Null,
22 Array,
23 Object,
24 Identifier,
25 Operator,
26 ErrorNode,
27
28 LeftBrace, RightBrace, LeftBracket, RightBracket, DoubleLeftBrace, DoubleRightBrace, LeftBracePercent, PercentRightBrace, LeftParen, RightParen, Pipe, Comma, Dot, Colon, Semicolon, Eq, Plus, Minus, Star, Slash, Percent, Bang, Question, Lt, Gt, Amp, Caret, Tilde, Whitespace,
58 Eof,
59 Error,
60}
61
62impl oak_core::TokenType for TwigSyntaxKind {
63 type Role = oak_core::UniversalTokenRole;
64 const END_OF_STREAM: Self = TwigSyntaxKind::Eof;
65
66 fn role(&self) -> Self::Role {
67 match self {
68 Self::Whitespace => oak_core::UniversalTokenRole::Whitespace,
69 Self::Comment => oak_core::UniversalTokenRole::Comment,
70 _ => oak_core::UniversalTokenRole::None,
71 }
72 }
73}
74
75impl oak_core::ElementType for TwigSyntaxKind {
76 type Role = oak_core::UniversalElementRole;
77
78 fn role(&self) -> Self::Role {
79 match self {
80 Self::Root | Self::Document | Self::Template => oak_core::UniversalElementRole::Root,
81 Self::Error | Self::ErrorNode => oak_core::UniversalElementRole::Error,
82 _ => oak_core::UniversalElementRole::None,
83 }
84 }
85}
86
87impl core::fmt::Display for TwigSyntaxKind {
88 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
89 match self {
90 TwigSyntaxKind::Root => f.write_str("Root"),
91 TwigSyntaxKind::Document => f.write_str("Document"),
92 TwigSyntaxKind::Template => f.write_str("Template"),
93 TwigSyntaxKind::Block => f.write_str("Block"),
94 TwigSyntaxKind::Variable => f.write_str("Variable"),
95 TwigSyntaxKind::Filter => f.write_str("Filter"),
96 TwigSyntaxKind::Function => f.write_str("Function"),
97 TwigSyntaxKind::Tag => f.write_str("Tag"),
98 TwigSyntaxKind::Comment => f.write_str("Comment"),
99 TwigSyntaxKind::Text => f.write_str("Text"),
100 TwigSyntaxKind::Expression => f.write_str("Expression"),
101 TwigSyntaxKind::String => f.write_str("String"),
102 TwigSyntaxKind::Number => f.write_str("Number"),
103 TwigSyntaxKind::Boolean => f.write_str("Boolean"),
104 TwigSyntaxKind::Null => f.write_str("Null"),
105 TwigSyntaxKind::Array => f.write_str("Array"),
106 TwigSyntaxKind::Object => f.write_str("Object"),
107 TwigSyntaxKind::Identifier => f.write_str("Identifier"),
108 TwigSyntaxKind::Operator => f.write_str("Operator"),
109 TwigSyntaxKind::ErrorNode => f.write_str("ErrorNode"),
110 TwigSyntaxKind::LeftBrace => f.write_str("{"),
111 TwigSyntaxKind::RightBrace => f.write_str("}"),
112 TwigSyntaxKind::LeftBracket => f.write_str("["),
113 TwigSyntaxKind::RightBracket => f.write_str("]"),
114 TwigSyntaxKind::DoubleLeftBrace => f.write_str("{{"),
115 TwigSyntaxKind::DoubleRightBrace => f.write_str("}}"),
116 TwigSyntaxKind::LeftBracePercent => f.write_str("{%"),
117 TwigSyntaxKind::PercentRightBrace => f.write_str("%}"),
118 TwigSyntaxKind::LeftParen => f.write_str("("),
119 TwigSyntaxKind::RightParen => f.write_str(")"),
120 TwigSyntaxKind::Pipe => f.write_str("|"),
121 TwigSyntaxKind::Comma => f.write_str(","),
122 TwigSyntaxKind::Dot => f.write_str("."),
123 TwigSyntaxKind::Colon => f.write_str(":"),
124 TwigSyntaxKind::Semicolon => f.write_str(";"),
125 TwigSyntaxKind::Eq => f.write_str("="),
126 TwigSyntaxKind::Plus => f.write_str("+"),
127 TwigSyntaxKind::Minus => f.write_str("-"),
128 TwigSyntaxKind::Star => f.write_str("*"),
129 TwigSyntaxKind::Slash => f.write_str("/"),
130 TwigSyntaxKind::Percent => f.write_str("%"),
131 TwigSyntaxKind::Bang => f.write_str("!"),
132 TwigSyntaxKind::Question => f.write_str("?"),
133 TwigSyntaxKind::Lt => f.write_str("<"),
134 TwigSyntaxKind::Gt => f.write_str(">"),
135 TwigSyntaxKind::Amp => f.write_str("&"),
136 TwigSyntaxKind::Caret => f.write_str("^"),
137 TwigSyntaxKind::Tilde => f.write_str("~"),
138 TwigSyntaxKind::Whitespace => f.write_str("Whitespace"),
139 TwigSyntaxKind::Eof => f.write_str("EOF"),
140 TwigSyntaxKind::Error => f.write_str("Error"),
141 }
142 }
143}