scrappy_web_codegen/
lib.rs1#![recursion_limit = "512"]
2extern crate proc_macro;
44
45mod route;
46
47use proc_macro::TokenStream;
48use syn::parse_macro_input;
49
50#[proc_macro_attribute]
59pub fn get(args: TokenStream, input: TokenStream) -> TokenStream {
60 let args = parse_macro_input!(args as syn::AttributeArgs);
61 let gen = match route::Route::new(args, input, route::GuardType::Get) {
62 Ok(gen) => gen,
63 Err(err) => return err.to_compile_error().into(),
64 };
65 gen.generate()
66}
67
68#[proc_macro_attribute]
74pub fn post(args: TokenStream, input: TokenStream) -> TokenStream {
75 let args = parse_macro_input!(args as syn::AttributeArgs);
76 let gen = match route::Route::new(args, input, route::GuardType::Post) {
77 Ok(gen) => gen,
78 Err(err) => return err.to_compile_error().into(),
79 };
80 gen.generate()
81}
82
83#[proc_macro_attribute]
89pub fn put(args: TokenStream, input: TokenStream) -> TokenStream {
90 let args = parse_macro_input!(args as syn::AttributeArgs);
91 let gen = match route::Route::new(args, input, route::GuardType::Put) {
92 Ok(gen) => gen,
93 Err(err) => return err.to_compile_error().into(),
94 };
95 gen.generate()
96}
97
98#[proc_macro_attribute]
104pub fn delete(args: TokenStream, input: TokenStream) -> TokenStream {
105 let args = parse_macro_input!(args as syn::AttributeArgs);
106 let gen = match route::Route::new(args, input, route::GuardType::Delete) {
107 Ok(gen) => gen,
108 Err(err) => return err.to_compile_error().into(),
109 };
110 gen.generate()
111}
112
113#[proc_macro_attribute]
119pub fn head(args: TokenStream, input: TokenStream) -> TokenStream {
120 let args = parse_macro_input!(args as syn::AttributeArgs);
121 let gen = match route::Route::new(args, input, route::GuardType::Head) {
122 Ok(gen) => gen,
123 Err(err) => return err.to_compile_error().into(),
124 };
125 gen.generate()
126}
127
128#[proc_macro_attribute]
134pub fn connect(args: TokenStream, input: TokenStream) -> TokenStream {
135 let args = parse_macro_input!(args as syn::AttributeArgs);
136 let gen = match route::Route::new(args, input, route::GuardType::Connect) {
137 Ok(gen) => gen,
138 Err(err) => return err.to_compile_error().into(),
139 };
140 gen.generate()
141}
142
143#[proc_macro_attribute]
149pub fn options(args: TokenStream, input: TokenStream) -> TokenStream {
150 let args = parse_macro_input!(args as syn::AttributeArgs);
151 let gen = match route::Route::new(args, input, route::GuardType::Options) {
152 Ok(gen) => gen,
153 Err(err) => return err.to_compile_error().into(),
154 };
155 gen.generate()
156}
157
158#[proc_macro_attribute]
164pub fn trace(args: TokenStream, input: TokenStream) -> TokenStream {
165 let args = parse_macro_input!(args as syn::AttributeArgs);
166 let gen = match route::Route::new(args, input, route::GuardType::Trace) {
167 Ok(gen) => gen,
168 Err(err) => return err.to_compile_error().into(),
169 };
170 gen.generate()
171}
172
173#[proc_macro_attribute]
179pub fn patch(args: TokenStream, input: TokenStream) -> TokenStream {
180 let args = parse_macro_input!(args as syn::AttributeArgs);
181 let gen = match route::Route::new(args, input, route::GuardType::Patch) {
182 Ok(gen) => gen,
183 Err(err) => return err.to_compile_error().into(),
184 };
185 gen.generate()
186}