]> saetta.ns0.it Git - rust/zakform/commitdiff
Started macro_rules.
authorAndrea Zagli <azagli@libero.it>
Thu, 15 Oct 2026 07:08:19 +0000 (09:08 +0200)
committerAndrea Zagli <azagli@libero.it>
Thu, 15 Oct 2026 07:08:19 +0000 (09:08 +0200)
src/lib.rs
src/macros.rs [new file with mode: 0644]

index 34646c714d24fe1de934d79ae9776f295b5aca14..2350090eedeb7b8cc5b126a5d3598ce38ebf04c0 100644 (file)
@@ -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 (file)
index 0000000..e8cd8f3
--- /dev/null
@@ -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));
+       };
+}