Skip to main content

floz_macros/
lib.rs

1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4
5#[proc_macro]
6pub fn schema(input: TokenStream) -> TokenStream {
7    // Note: macro parsing is handled in floz_macros_core with syn::parse2 directly,
8    // so we convert input to proc_macro2::TokenStream and let the core handle parsing and generation
9    let input2: proc_macro2::TokenStream = input.into();
10    let schema_input = match syn::parse2::<floz_macros_core::ast::SchemaInput>(input2) {
11        Ok(s) => s,
12        Err(e) => return e.to_compile_error().into(),
13    };
14    floz_macros_core::codegen::generate(&schema_input).into()
15}
16
17#[proc_macro_attribute]
18pub fn route(attr: TokenStream, item: TokenStream) -> TokenStream {
19    floz_macros_core::route::expand_route(attr.into(), item.into()).into()
20}
21
22#[proc_macro_attribute]
23pub fn task(attr: TokenStream, item: TokenStream) -> TokenStream {
24    floz_macros_core::task::expand_task(attr.into(), item.into()).into()
25}
26
27#[proc_macro_attribute]
28pub fn main(_attr: TokenStream, item: TokenStream) -> TokenStream {
29    floz_macros_core::route::expand_main(item.into()).into()
30}