zyn 0.5.4

A proc macro framework with templates, composable elements, and built-in diagnostics
Documentation
use zyn::quote::quote;

#[zyn::element]
fn pretty_struct(name: zyn::syn::Ident) -> zyn::TokenStream {
    zyn::zyn!(
        impl {{ name }} {
            fn validate(&self) -> bool { true }
        }
    )
}

#[test]
fn assert_tokens_pretty_multi_line() {
    let input: zyn::Input = zyn::parse!("struct Foo;").unwrap();
    let result = zyn::zyn!(@pretty_struct(name = zyn::format_ident!("Foo")));
    let expected = quote!(
        impl Foo {
            fn validate(&self) -> bool { true }
        }
    );
    zyn::assert_tokens_pretty!(result, expected);
}

#[test]
fn assert_tokens_contain_pretty_multi_line() {
    let input: zyn::Input = zyn::parse!("struct Foo;").unwrap();
    let result = zyn::zyn!(@pretty_struct(name = zyn::format_ident!("Foo")));
    zyn::assert_tokens_contain_pretty!(result, "fn validate");
}