1#[macro_use]
10extern crate proc_macro_hack;
11#[cfg_attr(test, macro_use)]
12extern crate pest;
13#[macro_use]
14extern crate pest_derive;
15
16mod grammar;
17proc_macro_item_impl! {
20 pub fn template_impl(input: &str) -> String {
21 let body_start = input.find("{").expect("Couldn't find function body.");
23 let (signature, body) = input.split_at(body_start);
24 let result = grammar::parse_signature(signature);
25 let macro_name = result.macro_name();
26 let macro_signature = result.to_macro_signature();
27 let binding = result.to_binding();
28 let out = format!("macro_rules! {} {{({}) =>\
29 {{ {{ {} {} }} }} \
30 }}", macro_name, macro_signature, binding, body);
31out
33 }
34}
35
36