oak_java/highlighter/
mod.rs

1use crate::kind::JavaSyntaxKind;
2
3/// 高亮类型的本地定义
4#[derive(Debug, Clone, Copy, PartialEq, Eq)]
5pub enum HighlightKind {
6    /// 关键字
7    Keyword,
8    /// 字面量
9    Literal,
10    /// 标识符
11    Identifier,
12    /// 注释
13    Comment,
14    /// 运算符
15    Operator,
16    /// 标点符号
17    Punctuation,
18    /// 函数/方法
19    Function,
20    /// 类型/类
21    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}