From f167c10530aaa7425ba5c4db18bfe158f6272ef2 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Thu, 15 Oct 2026 09:08:19 +0200 Subject: [PATCH] Started macro_rules. --- src/lib.rs | 1 + src/macros.rs | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/macros.rs diff --git a/src/lib.rs b/src/lib.rs index 34646c7..2350090 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ pub mod filters; pub mod validators; pub mod fields; pub mod form; +pub mod macros; use lazy_static::lazy_static; diff --git a/src/macros.rs b/src/macros.rs new file mode 100644 index 0000000..e8cd8f3 --- /dev/null +++ b/src/macros.rs @@ -0,0 +1,52 @@ +#[macro_export] +macro_rules! form_field_new { + ($field: ident, + $label: expr, + $dbtype: path) => { + $field.set_label($label); + $field.set_db_type($dbtype); + }; +} + +#[macro_export] +macro_rules! form_field_text_new { + ($form: ident, + $name: expr, + $label: expr, + $maxlen: expr, + $dbtype: path) => { + let mut fi = zakform::fields::FieldText::new($name); + zakform::form_field_new!(fi, $label, $dbtype); + fi.set_maxlen($maxlen); + $form.add_field(Box::new(fi)); + }; +} + +#[macro_export] +macro_rules! form_field_radio_new { + ($form: ident, + $name: expr, + $label: expr, + $dbtype: path, + $($opt_value: expr, $opt_label: expr),*,) => { + let mut fi = zakform::fields::FieldRadio::new($name); + zakform::form_field_new!(fi, $label, $dbtype); + $(fi.add_option(zakform::fields::FOption{ value: String::from($opt_value), label: String::from($opt_label) });)* + $form.add_field(Box::new(fi)); + }; +} + +#[macro_export] +macro_rules! form_field_button_new { + ($form: ident, + $name: expr, + $label: expr, + $class: expr) => { + let mut fi = zakform::fields::FieldButton::new($name); + fi.set_label($label); + fi.set_class($class); + fi.set_to_load(false); + fi.set_to_save(false); + $form.add_field(Box::new(fi)); + }; +} -- 2.55.0