seedle_macros/
lib.rs

1mod cddl;
2mod parse;
3mod print;
4use proc_macro::TokenStream;
5use proc_macro2::TokenStream as TokenStream2;
6
7#[proc_macro_attribute]
8pub fn seedle(attrs: TokenStream, toks: TokenStream) -> TokenStream {
9    do_seedle(attrs, toks).map_or_else(
10        |e| TokenStream::from(e.to_compile_error()),
11        TokenStream::from,
12    )
13}
14
15fn do_seedle(attrs: TokenStream, toks: TokenStream) -> syn::Result<TokenStream2> {
16    let attrs: parse::Attributes = syn::parse(attrs)?;
17    let item: parse::Mod = syn::parse(toks)?;
18    crate::print::cddl::build(item, attrs).map(|toks| toks.into())
19}