#![doc = include_str!("../README.md")]
use crate::generate_queries_args::GenerateQueriesArgs;
use generate_nodes_args::GenerateNodesArgs;
use syn::parse_macro_input;
mod generate_nodes_args;
mod generate_queries_args;
#[proc_macro]
pub fn generate_nodes(item: proc_macro::TokenStream) -> proc_macro::TokenStream {
let args = parse_macro_input!(item as GenerateNodesArgs);
type_sitter_gen::generate_nodes(args.path.as_path())
.map(|g| g.collapse())
.unwrap_or_else(|err| err.to_compile_error())
.into()
}
#[proc_macro]
pub fn generate_queries(item: proc_macro::TokenStream) -> proc_macro::TokenStream {
let args = parse_macro_input!(item as GenerateQueriesArgs);
type_sitter_gen::generate_queries(
&args.path,
&args.language_path,
&args.nodes,
use_yak_sitter(),
)
.map(|g| g.collapse(&args.nodes))
.unwrap_or_else(|err| err.to_compile_error())
.into()
}
#[cfg(feature = "yak-sitter")]
fn use_yak_sitter() -> bool {
true
}
#[cfg(not(feature = "yak-sitter"))]
fn use_yak_sitter() -> bool {
false
}