Clone in a terminal:
Commit 363fc60
Johan Mattsson - 2026-07-14T21:06:52+00:00
363fc605916004fafa32435bc3855fff5e2f2f27johan.mattsson.m@gmail.com

Getters and setters for attributes

Changed files (1)

Diff

diff --git a/src/init.rs b/src/init.rsindex 0cdebb3..c7645d7 100644--- a/src/init.rs+++ b/src/init.rs@@ -517,12 +517,27 @@ fn create_component(struct_item: &ItemStruct) -> proc_macro2::TokenStream {                 }             } -            fn get_attribute(&self, name: &str) -> Option<String> {+            fn get_attribute_string(&self, name: &str) -> Option<String> {                 let handle = self.handle.borrow();                 let attr = handle.attribute_values.borrow();                 attr.get_attribute(name)             } +            fn get_attribute<T>(&self, name: &str) -> Option<T>+            where+                T: std::str::FromStr,+            {+                let value = self.get_attribute_string(name)?;++                match value.parse::<T>() {+                    Ok(value) => Some(value),+                    Err(_) => {+                        error!("Failed to parse attribute:", name, "in", #struct_name_lit);+                        None+                    }+                }+            }+             fn get_attributes(&self) -> std::rc::Rc<std::cell::RefCell<#struct_ident>> {                 self.handle.borrow().attribute_values.clone()             }

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112