Skip to main content

tree_sitter_cfml/
lib.rs

1//! This crate provides CFML language support for the [tree-sitter][] parsing library.
2
3use tree_sitter_language::LanguageFn;
4
5extern "C" {
6    fn tree_sitter_cfml() -> *const ();
7    fn tree_sitter_cfscript() -> *const ();
8    fn tree_sitter_cfquery() -> *const ();
9}
10
11/// The tree-sitter [`LanguageFn`] for CFML.
12///
13/// [LanguageFn]: https://docs.rs/tree-sitter-language/*/tree_sitter_language/struct.LanguageFn.html
14pub const LANGUAGE_CFML: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_cfml) };
15
16/// The tree-sitter [`LanguageFn`] for CFSCRIPT.
17///
18/// [LanguageFn]: https://docs.rs/tree-sitter-language/*/tree_sitter_language/struct.LanguageFn.html
19pub const LANGUAGE_CFSCRIPT: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_cfscript) };
20
21/// The tree-sitter [`LanguageFn`] for CFQUERY SQL dialect.
22///
23/// [LanguageFn]: https://docs.rs/tree-sitter-language/*/tree_sitter_language/struct.LanguageFn.html
24pub const LANGUAGE_CFQUERY: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_cfquery) };
25
26/// The content of the [`node-types.json`][] file for this grammar.
27///
28/// [`node-types.json`]: https://tree-sitter.github.io/tree-sitter/using-parsers#static-node-types
29pub const CFML_NODE_TYPES: &str = include_str!("../../cfml/src/node-types.json");
30pub const CFSCRIPT_NODE_TYPES: &str = include_str!("../../cfscript/src/node-types.json");
31pub const CFQUERY_NODE_TYPES: &str = include_str!("../../cfquery/src/node-types.json");
32
33/// The syntax highlighting query for CFML.
34pub const HIGHLIGHTS_QUERY: &str = include_str!("../../cfml/queries/highlights.scm");
35
36/// The injection query for CFML.
37pub const INJECTIONS_QUERY: &str = include_str!("../../cfml/queries/injections.scm");
38
39/// The symbol tagging query for CFML.
40pub const TAGS_QUERY: &str = include_str!("../../cfml/queries/tags.scm");
41
42#[cfg(test)]
43mod tests {
44    #[test]
45    fn test_can_load_cfml_grammar() {
46        let mut parser = tree_sitter::Parser::new();
47        parser
48            .set_language(&super::LANGUAGE_CFML.into())
49            .expect("Error loading CFML parser");
50    }
51
52    #[test]
53    fn test_can_load_cfscript_grammar() {
54        let mut parser = tree_sitter::Parser::new();
55        parser
56            .set_language(&super::LANGUAGE_CFSCRIPT.into())
57            .expect("Error loading CFSCRIPT parser");
58    }
59
60    #[test]
61    fn test_can_load_cfquery_grammar() {
62        let mut parser = tree_sitter::Parser::new();
63        parser
64            .set_language(&super::LANGUAGE_CFQUERY.into())
65            .expect("Error loading CFQUERY parser");
66    }
67}