1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4use syn::parse_macro_input;
5
6mod dialogue;
7mod handler;
8
9#[proc_macro_attribute]
10pub fn dialogue(_args: TokenStream, input: TokenStream) -> TokenStream {
11 let input = parse_macro_input!(input as dialogue::DialogueMeta);
12 TokenStream::from(dialogue::build(input))
13}
14
15#[proc_macro_attribute]
16pub fn handler(args: TokenStream, input: TokenStream) -> TokenStream {
17 let input = parse_macro_input!(input as handler::HandlerMeta);
18 let args = if args.is_empty() {
19 None
20 } else {
21 Some(parse_macro_input!(args as handler::HandlerArgs))
22 };
23 TokenStream::from(handler::build(input, args))
24}