argley_macro 1.3.0

Macro for the `argley` crate
Documentation
use proc_macro2::{Delimiter, Group, TokenStream};
use quote::{quote, ToTokens, TokenStreamExt};

use crate::{new_ident, PROP_ANY_ADDED};

pub struct AnyAddedWrapper<'a, T>(pub &'a T);

impl<T: ToTokens> ToTokens for AnyAddedWrapper<'_, T> {
    fn to_tokens(&self, tokens: &mut TokenStream) {
        tokens.append(new_ident("if"));
        self.0.to_tokens(tokens);

        let inner = {
            let any_added = new_ident(PROP_ANY_ADDED);
            quote! { #any_added = true; }
        };

        tokens.append(Group::new(Delimiter::Brace, inner));
    }
}