dars-macros 0.1.0

Declarative Agents in Rust
Documentation
use proc_macro::TokenStream;
use quote::quote;
use syn::parse_macro_input;

mod args;
mod model;
mod signature;
mod util;

#[allow(non_snake_case)]
#[proc_macro_attribute]
pub fn Signature(args: TokenStream, input: TokenStream) -> TokenStream {
    let sig = parse_macro_input!(input as signature::Signature);
    let args = parse_macro_input!(args as args::Args);
    let sig = sig.with_instruction(args);
    TokenStream::from(quote!(#sig))
}

#[allow(non_snake_case)]
#[proc_macro_attribute]
pub fn Model(args: TokenStream, input: TokenStream) -> TokenStream {
    let model = parse_macro_input!(input as model::Model);
    let args = parse_macro_input!(args as args::Args);
    let model = model.with_args(args);
    TokenStream::from(quote!(#model))
}