1use bool_to_option::BoolToOption;
2use call::Call;
3use container::Container;
4use get::Get;
5use inject::Inject;
6use syn::parse_macro_input;
7
8mod bool_to_option;
9mod call;
10mod container;
11mod get;
12mod inject;
13
14#[proc_macro_attribute]
15pub fn inject(
16 arguments: proc_macro::TokenStream,
17 method: proc_macro::TokenStream,
18) -> proc_macro::TokenStream {
19 let inject = match Inject::try_parse(arguments, method) {
20 Ok(inject) => inject,
21 Err(err) => return err.to_compile_error().into(),
22 };
23 inject.expand().into()
24}
25
26#[proc_macro]
27pub fn get(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
28 parse_macro_input!(input as Get).expand().into()
29}
30
31#[proc_macro]
32pub fn call(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
33 parse_macro_input!(input as Call).expand().into()
34}
35
36#[proc_macro]
37pub fn container(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
38 parse_macro_input!(input as Container).expand().into()
39}