1#![cfg_attr(docsrs, feature(doc_cfg))]
16
17use tree_sitter_language::LanguageFn;
18
19extern "C" {
20 fn tree_sitter_markdown() -> *const ();
21 fn tree_sitter_markdown_inline() -> *const ();
22}
23
24pub const LANGUAGE: LanguageFn = unsafe { LanguageFn::from_raw(tree_sitter_markdown) };
26
27pub const INLINE_LANGUAGE: LanguageFn =
29 unsafe { LanguageFn::from_raw(tree_sitter_markdown_inline) };
30
31pub const HIGHLIGHT_QUERY_BLOCK: &str =
33 include_str!("../../tree-sitter-markdown/queries/highlights.scm");
34
35pub const INJECTION_QUERY_BLOCK: &str =
37 include_str!("../../tree-sitter-markdown/queries/injections.scm");
38
39pub const HIGHLIGHT_QUERY_INLINE: &str =
41 include_str!("../../tree-sitter-markdown-inline/queries/highlights.scm");
42
43pub const INJECTION_QUERY_INLINE: &str =
45 include_str!("../../tree-sitter-markdown-inline/queries/injections.scm");
46
47pub const NODE_TYPES_BLOCK: &str = include_str!("../../tree-sitter-markdown/src/node-types.json");
51
52pub const NODE_TYPES_INLINE: &str =
56 include_str!("../../tree-sitter-markdown-inline/src/node-types.json");
57
58#[cfg(feature = "parser")]
59#[cfg_attr(docsrs, doc(cfg(feature = "parser")))]
60mod parser;
61
62#[cfg(feature = "parser")]
63#[cfg_attr(docsrs, doc(cfg(feature = "parser")))]
64pub use parser::*;
65
66#[cfg(test)]
67mod tests {
68 use super::*;
69
70 #[test]
71 fn can_load_block_grammar() {
72 let mut parser = tree_sitter::Parser::new();
73 parser
74 .set_language(&LANGUAGE.into())
75 .expect("Error loading Markdown block grammar");
76 }
77
78 #[test]
79 fn can_load_inline_grammar() {
80 let mut parser = tree_sitter::Parser::new();
81 parser
82 .set_language(&INLINE_LANGUAGE.into())
83 .expect("Error loading Markdown inline grammar");
84 }
85}