1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
#![recursion_limit="256"] extern crate proc_macro; extern crate url; extern crate syn; #[macro_use] extern crate quote; mod extractors; mod extenders; mod state; mod helpers; #[proc_macro_derive(PathExtractor)] pub fn base_path_extractor(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let ast = syn::parse_macro_input(&input.to_string()).unwrap(); let gen = extractors::base_path(&ast); gen.parse().unwrap() } #[proc_macro_derive(QueryStringExtractor)] pub fn base_query_string_extractor(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let ast = syn::parse_macro_input(&input.to_string()).unwrap(); let gen = extractors::base_query_string(&ast); gen.parse().unwrap() } #[proc_macro_derive(StaticResponseExtender)] pub fn static_response_extender(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let ast = syn::parse_macro_input(&input.to_string()).unwrap(); let gen = extenders::bad_request_static_response_extender(&ast); gen.parse().unwrap() } #[proc_macro_derive(StateData)] pub fn state_data(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let ast = syn::parse_macro_input(&input.to_string()).unwrap(); let gen = state::state_data(&ast); gen.parse().unwrap() } #[proc_macro_derive(FromState)] pub fn from_state(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let ast = syn::parse_macro_input(&input.to_string()).unwrap(); let gen = state::from_state(&ast); gen.parse().unwrap() }