gpui-form-core 0.4.1

Core crate for multiple gpui-form-* crates
Documentation
use derive_more::From;
use quote::{ToTokens, format_ident, quote};

#[derive(From)]
pub struct ComponentFieldName(pub String);

impl ComponentFieldName {
    pub fn new(component_name: &str, field_name: &str) -> Self {
        format!("{}_{}", field_name, component_name).into()
    }
}

impl ToTokens for ComponentFieldName {
    fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
        let ident = format_ident!("{}", &self.0);
        tokens.extend(quote! { #ident });
    }
}

#[macro_export]
macro_rules! component_field_name {
    ($name:expr) => {
        $crate::names::ComponentFieldName::new(Self::component_name(), $name)
    };
}