Source file tree_sitter_json.ml
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
external language_ptr : unit -> nativeint = "caml_tree_sitter_json_language"
let language () = Tree_sitter.Language.of_address (language_ptr ())
let highlights_query =
{|
(document (string) @string)
(pair value: (string) @string)
(array (string) @string)
(number) @number
(null) @constant
(true) @constant
(false) @constant
(pair key: (string) @property)
|}
let parser = lazy (Tree_sitter.Parser.create (language ()))
let query =
lazy (Tree_sitter.Query.create (language ()) ~source:highlights_query)
let highlight content =
let parser = Lazy.force parser in
let query = Lazy.force query in
let tree = Tree_sitter.Parser.parse_string parser content in
Tree_sitter.highlight query tree