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