#[allow(unused_extern_crates)]
extern crate proc_macro;
use proc_macro2::TokenStream as T;
use proc_macro::TokenStream;
mod main_func;
mod routes;
mod app;
#[proc_macro_attribute]
pub fn main(cfg: TokenStream, input: TokenStream) -> TokenStream {
main_func::main(cfg.into(), input.into()).into()
}
#[proc_macro]
#[allow(non_snake_case)]
pub fn App(input: TokenStream) -> TokenStream {
app::app(input.into()).into()
}
macro_rules! routes {
($(
$(#[$attr:meta])*
@$method:ident
)+) => ($(
$(#[$attr])*
#[proc_macro_attribute]
pub fn $method(cfg: TokenStream, input: TokenStream) -> TokenStream {
routes::$method(cfg.into(), input.into()).into()
}
)+)
}
routes!(
@get
@post
@put
@delete
@patch
@head
@options
@trace
);