kaptn-syn 0.3.0

Syntax parsing and code generation for Kaptn Transfer-Hook Framework
Documentation
use proc_macro2::TokenStream;
use quote::quote;
use syn::ItemFn;

mod codegen;
mod parse;

pub use parse::parse_transfer_hook_input;

pub struct TransferHookInput {
    pub fn_name: syn::Ident,
    pub item_fn: ItemFn,
}

pub fn generate_transfer_hook_code(input: TransferHookInput) -> TokenStream {
    generate(&input)
}

fn generate(program: &TransferHookInput) -> proc_macro2::TokenStream {
    let entry = codegen::entry::generate(program);
    let processor = codegen::processor::generate(program);
    let user_defined_function = &program.item_fn;
    let execute = codegen::execute::generate(program);
    let initialize = codegen::initialize::generate(program);
    let update = codegen::update::generate(program);

    quote! {
        #user_defined_function
        #entry
        #processor
        #execute
        #initialize
        #update
    }
}