oak_java/highlighter/
mod.rs1use crate::kind::JavaSyntaxKind;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum HighlightKind {
6 Keyword,
8 Literal,
10 Identifier,
12 Comment,
14 Operator,
16 Punctuation,
18 Function,
20 Type,
22}
23
24pub struct JavaHighlighter;
25
26impl JavaHighlighter {
27 pub fn highlight(&self, kind: JavaSyntaxKind) -> Option<HighlightKind> {
28 match kind {
29 JavaSyntaxKind::Abstract
30 | JavaSyntaxKind::Assert
31 | JavaSyntaxKind::Boolean
32 | JavaSyntaxKind::Break
33 | JavaSyntaxKind::Byte
34 | JavaSyntaxKind::Case
35 | JavaSyntaxKind::Catch
36 | JavaSyntaxKind::Char
37 | JavaSyntaxKind::Class
38 | JavaSyntaxKind::Const
39 | JavaSyntaxKind::Continue
40 | JavaSyntaxKind::Default
41 | JavaSyntaxKind::Do
42 | JavaSyntaxKind::Double
43 | JavaSyntaxKind::Else
44 | JavaSyntaxKind::Enum
45 | JavaSyntaxKind::Extends
46 | JavaSyntaxKind::Final
47 | JavaSyntaxKind::Finally
48 | JavaSyntaxKind::Float
49 | JavaSyntaxKind::For
50 | JavaSyntaxKind::If
51 | JavaSyntaxKind::Goto
52 | JavaSyntaxKind::Implements
53 | JavaSyntaxKind::Import
54 | JavaSyntaxKind::Instanceof
55 | JavaSyntaxKind::Int
56 | JavaSyntaxKind::Interface
57 | JavaSyntaxKind::Long
58 | JavaSyntaxKind::Native
59 | JavaSyntaxKind::New
60 | JavaSyntaxKind::Package
61 | JavaSyntaxKind::Private
62 | JavaSyntaxKind::Protected
63 | JavaSyntaxKind::Public
64 | JavaSyntaxKind::Return
65 | JavaSyntaxKind::Short
66 | JavaSyntaxKind::Static
67 | JavaSyntaxKind::Strictfp
68 | JavaSyntaxKind::Super
69 | JavaSyntaxKind::Switch
70 | JavaSyntaxKind::Synchronized
71 | JavaSyntaxKind::This
72 | JavaSyntaxKind::Throw
73 | JavaSyntaxKind::Throws
74 | JavaSyntaxKind::Transient
75 | JavaSyntaxKind::Try
76 | JavaSyntaxKind::Void
77 | JavaSyntaxKind::Volatile
78 | JavaSyntaxKind::While => Some(HighlightKind::Keyword),
79
80 JavaSyntaxKind::IntegerLiteral | JavaSyntaxKind::FloatingPointLiteral | JavaSyntaxKind::BooleanLiteral | JavaSyntaxKind::CharacterLiteral | JavaSyntaxKind::StringLiteral | JavaSyntaxKind::NullLiteral => Some(HighlightKind::Literal),
81
82 JavaSyntaxKind::Identifier => Some(HighlightKind::Identifier),
83
84 JavaSyntaxKind::LineComment | JavaSyntaxKind::BlockComment => Some(HighlightKind::Comment),
85
86 JavaSyntaxKind::Assign
87 | JavaSyntaxKind::GreaterThan
88 | JavaSyntaxKind::LessThan
89 | JavaSyntaxKind::Bang
90 | JavaSyntaxKind::Tilde
91 | JavaSyntaxKind::Question
92 | JavaSyntaxKind::Colon
93 | JavaSyntaxKind::Equals
94 | JavaSyntaxKind::LessThanEquals
95 | JavaSyntaxKind::GreaterThanEquals
96 | JavaSyntaxKind::BangEquals
97 | JavaSyntaxKind::AmpersandAmpersand
98 | JavaSyntaxKind::PipePipe
99 | JavaSyntaxKind::PlusPlus
100 | JavaSyntaxKind::MinusMinus
101 | JavaSyntaxKind::Plus
102 | JavaSyntaxKind::Minus
103 | JavaSyntaxKind::Asterisk
104 | JavaSyntaxKind::Slash
105 | JavaSyntaxKind::Ampersand
106 | JavaSyntaxKind::Pipe
107 | JavaSyntaxKind::Caret
108 | JavaSyntaxKind::Percent
109 | JavaSyntaxKind::LeftShift
110 | JavaSyntaxKind::RightShift
111 | JavaSyntaxKind::UnsignedRightShift
112 | JavaSyntaxKind::PlusEquals
113 | JavaSyntaxKind::MinusEquals
114 | JavaSyntaxKind::AsteriskEquals
115 | JavaSyntaxKind::SlashEquals
116 | JavaSyntaxKind::AmpersandEquals
117 | JavaSyntaxKind::PipeEquals
118 | JavaSyntaxKind::CaretEquals
119 | JavaSyntaxKind::PercentEquals
120 | JavaSyntaxKind::LeftShiftEquals
121 | JavaSyntaxKind::RightShiftEquals
122 | JavaSyntaxKind::UnsignedRightShiftEquals => Some(HighlightKind::Operator),
123
124 JavaSyntaxKind::LeftParen
125 | JavaSyntaxKind::RightParen
126 | JavaSyntaxKind::LeftBrace
127 | JavaSyntaxKind::RightBrace
128 | JavaSyntaxKind::LeftBracket
129 | JavaSyntaxKind::RightBracket
130 | JavaSyntaxKind::Semicolon
131 | JavaSyntaxKind::Comma
132 | JavaSyntaxKind::Dot
133 | JavaSyntaxKind::Ellipsis
134 | JavaSyntaxKind::At
135 | JavaSyntaxKind::DoubleColon => Some(HighlightKind::Punctuation),
136
137 _ => None,
138 }
139 }
140}