1extern crate proc_macro2;
2
3use controller_macro::controller_struct::handle_controller_struct;
4use proc_macro::TokenStream;
5use proc_macro2::Span;
6use provider_macro::provider_struct::handle_provider_struct;
7use syn::Ident;
8
9mod utils;
10mod module_macro;
11mod shared;
12mod provider_macro;
13mod controller_macro;
14
15#[proc_macro_attribute]
16pub fn module(attr: TokenStream, item: TokenStream) -> TokenStream {
17 module_macro::module_struct::module(attr, item)
18}
19
20#[proc_macro_attribute]
21pub fn controller_struct(attr: TokenStream, item: TokenStream) -> TokenStream {
22 let attr = proc_macro2::TokenStream::from(attr);
23 let item = proc_macro2::TokenStream::from(item);
24 let trait_name = Ident::new("ControllerTrait", Span::call_site());
25 let output = handle_controller_struct(attr, item, trait_name);
26 proc_macro::TokenStream::from(output.unwrap_or_else(|e| e.to_compile_error()))
27}
28
29#[proc_macro_attribute]
30pub fn provider_struct(attr: TokenStream, item: TokenStream) -> TokenStream {
31 let attr = proc_macro2::TokenStream::from(attr);
32 let item = proc_macro2::TokenStream::from(item);
33 let trait_name = Ident::new("ProviderTrait", Span::call_site());
34 let output = handle_provider_struct(attr, item, trait_name);
35 proc_macro::TokenStream::from(output.unwrap_or_else(|e| e.to_compile_error()))
36}
37
38#[proc_macro_attribute]
39pub fn controller(_attr: TokenStream, item: TokenStream) -> TokenStream {
40 item
41}
42
43
44#[proc_macro_attribute]
45pub fn get(_attr: TokenStream, item: TokenStream) -> TokenStream {
46 item
47}
48#[proc_macro_attribute]
49pub fn post(_attr: TokenStream, item: TokenStream) -> TokenStream {
50 item
51}
52#[proc_macro_attribute]
53pub fn put(_attr: TokenStream, item: TokenStream) -> TokenStream {
54 item
55}
56#[proc_macro_attribute]
57pub fn delete(_attr: TokenStream, item: TokenStream) -> TokenStream {
58 item
59}