]> saetta.ns0.it Git - rust/zakform/commitdiff
Added Validator::set_enabled.
authorAndrea Zagli <azagli@libero.it>
Thu, 12 Mar 2026 13:06:49 +0000 (14:06 +0100)
committerAndrea Zagli <azagli@libero.it>
Thu, 12 Mar 2026 13:06:49 +0000 (14:06 +0100)
src/validators.rs

index 00edb56355fc6481077ff15c2b10f599d76df1a2..a6203ebd76e4795ee203aaf1a22ed6cfb046709f 100644 (file)
@@ -6,6 +6,7 @@ use regex::Regex;
 pub struct Validator {
        pub name: String,
        pub message: String,
+       pub enabled: bool,
 }
 
 pub trait TValidator {
@@ -15,6 +16,8 @@ pub trait TValidator {
        fn set_message(&mut self, message: &str);
 
        fn validate(&self, value: &String) -> String;
+
+       fn set_enabled(&mut self, enabled: bool);
 }
 
 #[derive(Default)]
@@ -36,12 +39,20 @@ impl TValidator for ValidatorNotEmpty {
        }
 
        fn validate(&self, value: &String) -> String {
-               if value == "" {
-                       self.get_message()
+               if self.validator.enabled {
+                       if value == "" {
+                               self.get_message()
+                       } else {
+                               String::from("")
+                       }
                } else {
                        String::from("")
                }
        }
+
+       fn set_enabled(&mut self, enabled: bool) {
+               self.validator.enabled = enabled;
+       }
 }
 
 impl ValidatorNotEmpty {
@@ -49,6 +60,7 @@ impl ValidatorNotEmpty {
                let mut v: ValidatorNotEmpty = Default::default();
                v.validator.name = String::from(name);
                v.validator.message = String::from(super::TR.gettext("Mandatory field"));
+               v.validator.enabled = true;
 
                v
        }
@@ -75,6 +87,10 @@ impl TValidator for ValidatorRegex {
        }
 
        fn validate(&self, value: &String) -> String {
+               if !self.validator.enabled {
+                       return String::from("");
+               }
+
                match &self.re {
                        Some(re) => {
                                if re.is_match(value) {
@@ -86,6 +102,10 @@ impl TValidator for ValidatorRegex {
                        None => { String::from("") },
                }
        }
+
+       fn set_enabled(&mut self, enabled: bool) {
+               self.validator.enabled = enabled;
+       }
 }
 
 impl ValidatorRegex {
@@ -93,6 +113,7 @@ impl ValidatorRegex {
                let mut v: ValidatorRegex = Default::default();
                v.validator.name = String::from(name);
                v.validator.message = String::from(super::TR.gettext("Invalid value"));
+               v.validator.enabled = true;
                v.set_regex(regex);
 
                v
@@ -138,6 +159,10 @@ impl TValidator for ValidatorDate {
        }
 
        fn validate(&self, value: &String) -> String {
+               if !self.validator.enabled {
+                       return String::from("");
+               }
+
                let value_ = value.trim();
                if value_ == "" {
                        return String::from("");
@@ -199,6 +224,10 @@ impl TValidator for ValidatorDate {
 
                return String::from("");
        }
+
+       fn set_enabled(&mut self, enabled: bool) {
+               self.validator.enabled = enabled;
+       }
 }
 
 impl ValidatorDate {
@@ -206,6 +235,7 @@ impl ValidatorDate {
                let mut v: ValidatorDate = Default::default();
                v.validator.name = String::from(name);
                v.validator.message = String::from(super::TR.gettext("Invalid date"));
+               v.validator.enabled = true;
 
                v
        }
@@ -242,6 +272,10 @@ impl ValidatorDate {
                        None => { self.compare_value = None; },
                }
        }
+
+       fn set_enabled(&mut self, enabled: bool) {
+               self.validator.enabled = enabled;
+       }
 }
 
 pub enum ValidatorTimeCompareType {
@@ -274,6 +308,10 @@ impl TValidator for ValidatorTime {
        }
 
        fn validate(&self, value: &String) -> String {
+               if !self.validator.enabled {
+                       return String::from("");
+               }
+
                let value_ = value.trim();
                if value_ == "" {
                        return String::from("");
@@ -343,6 +381,10 @@ impl TValidator for ValidatorTime {
 
                return String::from("");
        }
+
+       fn set_enabled(&mut self, enabled: bool) {
+               self.validator.enabled = enabled;
+       }
 }
 
 impl ValidatorTime {
@@ -350,6 +392,7 @@ impl ValidatorTime {
                let mut v: ValidatorTime = Default::default();
                v.validator.name = String::from(name);
                v.validator.message = String::from(super::TR.gettext("Invalid time"));
+               v.validator.enabled = true;
 
                v
        }
@@ -430,6 +473,10 @@ impl TValidator for ValidatorNumber {
        }
 
        fn validate(&self, value: &String) -> String {
+               if !self.validator.enabled {
+                       return String::from("");
+               }
+
                let tesc: String;
                let desc: String;
 
@@ -523,6 +570,10 @@ impl TValidator for ValidatorNumber {
 
                return String::from("");
        }
+
+       fn set_enabled(&mut self, enabled: bool) {
+               self.validator.enabled = enabled;
+       }
 }
 
 impl ValidatorNumber {
@@ -530,6 +581,7 @@ impl ValidatorNumber {
                let mut v: ValidatorNumber = Default::default();
                v.validator.name = String::from(name);
                v.validator.message = String::from(super::TR.gettext("Invalid number"));
+               v.validator.enabled = true;
                v.thousands_separator = Some('.');
                v.decimals_separator = Some(',');