blob: e320e42c3cf4235157e35fc148568f81519075d3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
; Keywords
[
"select"
"asc"
"desc"
] @keyword
[
"in"
"match"
] @keyword.operator
; Operators
[
"=="
"!="
">"
">="
"<"
"<="
"&&"
"||"
"!"
"+"
"-"
"*"
"/"
"%"
"**"
".."
"..."
"=>"
"->"
"|"
] @operator
; Punctuation
[
"("
")"
"["
"]"
"{"
"}"
] @punctuation.bracket
[
","
":"
"."
] @punctuation.delimiter
; Literals
(string) @string
(number) @number
[
(true)
(false)
] @boolean
; Special references
[
(null)
(star)
(parent)
(this)
] @constant.builtin
; Identifiers
(identifier) @variable
; Parameters
(parameter
"$" @variable.parameter
(identifier) @variable.parameter)
; Function calls
(function_call
(identifier) @function)
(order_function
"order" @function.builtin)
; Comments
(comment) @comment @spell
; String keys in projections/objects
(pair
(literal
(string) @property))
; Highlight field names in projections
(projection
(identifier) @property)
; Built-in functions (essential GROQ functions)
(function_call
(identifier) @function.builtin
(#any-of? @function.builtin
"count" "length" "defined" "references" "now" "dateTime" "coalesce" "unique" "max" "min" "sum"
"avg" "round" "floor" "ceil" "abs" "sqrt" "upper" "lower" "string" "number" "boolean" "array"
"object" "type" "global" "sanity" "path" "delta" "after" "before"))
|