interoptopus_proc_impl 0.16.0-alpha.22

Macros to produce Interoptopus item info.
Documentation
mod emit;
mod model;

use proc_macro2::TokenStream;
use syn::parse2;

use model::PluginModel;

pub fn plugin(input: TokenStream) -> TokenStream {
    match parse_and_emit(input) {
        Ok(tokens) => tokens,
        Err(err) => err.to_compile_error(),
    }
}

fn parse_and_emit(input: TokenStream) -> syn::Result<TokenStream> {
    let model = PluginModel::from_input(parse2(input)?)?;
    Ok(model.emit())
}