1use tree_sitter_language::LanguageFn;
17
18extern "C" {
19 fn tree_sitter_ktav() -> *const ();
20}
21
22pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_ktav) };
24
25pub const HIGHLIGHTS_QUERY: &str = include_str!("../../queries/highlights.scm");
27
28pub const LOCALS_QUERY: &str = include_str!("../../queries/locals.scm");
30
31pub const INJECTIONS_QUERY: &str = include_str!("../../queries/injections.scm");
33
34pub const NODE_TYPES: &str = include_str!("../../src/node-types.json");
36
37#[cfg(test)]
38mod tests {
39 #[test]
40 fn can_load_grammar() {
41 let mut parser = tree_sitter::Parser::new();
42 parser
43 .set_language(&super::LANGUAGE.into())
44 .expect("Error loading Ktav language");
45 }
46
47 #[test]
48 fn parses_basic_document() {
49 let mut parser = tree_sitter::Parser::new();
50 parser
51 .set_language(&super::LANGUAGE.into())
52 .expect("Error loading Ktav language");
53 let tree = parser
54 .parse("name: Russia\nport: 8080\n", None)
55 .expect("parse failed");
56 let sexp = tree.root_node().to_sexp();
57 assert!(sexp.contains("object_pair"));
58 assert!(sexp.contains("integer"));
59 assert!(!tree.root_node().has_error());
60 }
61}