From: Andrea Zagli Date: Thu, 15 Oct 2026 07:08:19 +0000 (+0200) Subject: Started macro_rules. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=f167c10530aaa7425ba5c4db18bfe158f6272ef2;p=rust%2Fzakform Started macro_rules. --- 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)); + }; +}