1use oak_core::SyntaxKind;
2
3#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, serde::Serialize)]
5pub enum JsonSyntaxKind {
6 Root,
8 Value,
9 Object,
10 Array,
11 String,
12 Number,
13 Boolean,
14 Null,
15 ObjectEntry,
16 ArrayElement,
17 ErrorNode,
18
19 LeftBrace, RightBrace, LeftBracket, RightBracket, Comma, Colon, StringLiteral,
27 NumberLiteral,
28 BooleanLiteral,
29 NullLiteral,
30 BareKey, Whitespace,
32 Comment,
33 Eof,
34 Error,
35}
36
37impl SyntaxKind for JsonSyntaxKind {
38 fn is_trivia(&self) -> bool {
39 matches!(self, JsonSyntaxKind::Whitespace | JsonSyntaxKind::Comment)
40 }
41
42 fn is_comment(&self) -> bool {
43 matches!(self, JsonSyntaxKind::Comment)
44 }
45
46 fn is_whitespace(&self) -> bool {
47 matches!(self, JsonSyntaxKind::Whitespace)
48 }
49
50 fn is_token_type(&self) -> bool {
51 matches!(
52 self,
53 JsonSyntaxKind::LeftBrace
54 | JsonSyntaxKind::RightBrace
55 | JsonSyntaxKind::LeftBracket
56 | JsonSyntaxKind::RightBracket
57 | JsonSyntaxKind::Comma
58 | JsonSyntaxKind::Colon
59 | JsonSyntaxKind::StringLiteral
60 | JsonSyntaxKind::NumberLiteral
61 | JsonSyntaxKind::BooleanLiteral
62 | JsonSyntaxKind::NullLiteral
63 | JsonSyntaxKind::BareKey
64 | JsonSyntaxKind::Whitespace
65 | JsonSyntaxKind::Comment
66 | JsonSyntaxKind::Eof
67 | JsonSyntaxKind::Error
68 )
69 }
70
71 fn is_element_type(&self) -> bool {
72 matches!(
73 self,
74 JsonSyntaxKind::Root
75 | JsonSyntaxKind::Value
76 | JsonSyntaxKind::Object
77 | JsonSyntaxKind::Array
78 | JsonSyntaxKind::String
79 | JsonSyntaxKind::Number
80 | JsonSyntaxKind::Boolean
81 | JsonSyntaxKind::Null
82 | JsonSyntaxKind::ObjectEntry
83 | JsonSyntaxKind::ArrayElement
84 | JsonSyntaxKind::ErrorNode
85 )
86 }
87}