bevy_butler_proc_macro/
lib.rs

1use proc_macro::TokenStream;
2use proc_macro2::TokenStream as TokenStream2;
3
4pub(crate) mod utils;
5
6pub(crate) mod butler_plugin;
7
8fn result_to_tokens(result: syn::Result<TokenStream2>) -> TokenStream {
9    match result {
10        Ok(tokens) => tokens.into(),
11        Err(e) => e.to_compile_error().into(),
12    }
13}
14
15#[proc_macro_attribute]
16pub fn butler_plugin(attr: TokenStream, body: TokenStream) -> TokenStream {
17    result_to_tokens(butler_plugin::macro_impl(attr, body))
18}
19
20pub(crate) mod add_system;
21#[proc_macro_attribute]
22pub fn add_system(attr: TokenStream, body: TokenStream) -> TokenStream {
23    result_to_tokens(add_system::macro_impl(attr, body))
24}
25
26pub(crate) mod add_observer;
27#[proc_macro_attribute]
28pub fn add_observer(attr: TokenStream, body: TokenStream) -> TokenStream {
29    result_to_tokens(add_observer::macro_impl(attr, body))
30}
31
32pub(crate) mod insert_resource;
33#[proc_macro_attribute]
34pub fn insert_resource(attr: TokenStream, body: TokenStream) -> TokenStream {
35    result_to_tokens(insert_resource::macro_impl(attr, body))
36}
37
38pub(crate) mod add_message;
39#[proc_macro_attribute]
40pub fn add_message(attr: TokenStream, body: TokenStream) -> TokenStream {
41    result_to_tokens(add_message::macro_impl(attr, body))
42}
43
44pub(crate) mod register_type;
45#[proc_macro_attribute]
46pub fn register_type(attr: TokenStream, body: TokenStream) -> TokenStream {
47    result_to_tokens(register_type::macro_impl(attr, body))
48}
49
50pub(crate) mod butler_plugin_group;
51#[proc_macro_attribute]
52pub fn butler_plugin_group(attr: TokenStream, body: TokenStream) -> TokenStream {
53    result_to_tokens(butler_plugin_group::macro_impl(attr, body))
54}
55
56pub(crate) mod add_plugin;
57#[proc_macro_attribute]
58pub fn add_plugin(attr: TokenStream, body: TokenStream) -> TokenStream {
59    result_to_tokens(add_plugin::macro_impl(attr, body))
60}
61
62pub(crate) mod add_plugin_group;
63#[proc_macro_attribute]
64pub fn add_plugin_group(attr: TokenStream, body: TokenStream) -> TokenStream {
65    result_to_tokens(add_plugin_group::macro_impl(attr, body))
66}
67
68pub(crate) mod insert_state;
69#[proc_macro_attribute]
70pub fn insert_state(attr: TokenStream, body: TokenStream) -> TokenStream {
71    result_to_tokens(insert_state::macro_impl(attr, body))
72}
73
74pub(crate) mod add_sub_state;
75#[proc_macro_attribute]
76pub fn add_sub_state(attr: TokenStream, body: TokenStream) -> TokenStream {
77    result_to_tokens(add_sub_state::macro_impl(attr, body))
78}