shellder_macros/
lib.rs

1// Copyright (c) 2025 Saugata Kundu - kundusaugata576@gmail.com
2// Licensed under the Apache-2.0 License
3
4extern crate proc_macro;
5use proc_macro::TokenStream;
6mod hook;
7mod inject;
8mod application;
9
10/// Marks a struct as a Shellder component
11#[proc_macro_derive(Hooks)]
12pub fn derive_hooks(input: TokenStream) -> TokenStream {
13    hook::derive_hooks_impl(input)
14}
15
16#[proc_macro_derive(Inject, attributes(component))]
17pub fn inject(item: TokenStream) -> TokenStream {
18    inject::inject_derive(item)
19}
20
21#[proc_macro_derive(App, attributes(component))]
22pub fn app(item: TokenStream) -> TokenStream {
23    application::app_impl(item)
24}