xavier-derive 0.1.7

Derive module of Xavier. Xavier is a lightweight and versatile XML parsing library designed to streamline the process of handling XML data with ease and efficiency.
Documentation
use proc_macro2::{Ident, TokenStream};
use quote::{quote, ToTokens};

pub struct FieldXmlnsSetter {
    pub field: Ident
}

impl ToTokens for FieldXmlnsSetter {
    fn to_tokens(&self, tokens: &mut TokenStream) {
        let field = &self.field;
        tokens.extend(quote! {
            if xa_attr_name.starts_with("xmlns") {
                if let Some(value) = #field {
                    #field = Some(format!("{} {}=\"{}\"", value, xa_attr_name.clone(), xa_attr_value.clone()));
                } else {
                    #field = Some(format!("{}=\"{}\"", xa_attr_name.clone(), xa_attr_value.clone()));
                }
            }
        })
    }
}