From: Andrea Zagli Date: Thu, 12 Mar 2026 13:06:49 +0000 (+0100) Subject: Added Validator::set_enabled. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=2b568f0c422f355a9825ba2bbf4e925ca3c2512d;p=rust%2Fzakform Added Validator::set_enabled. --- diff --git a/src/validators.rs b/src/validators.rs index 00edb56..a6203eb 100644 --- a/src/validators.rs +++ b/src/validators.rs @@ -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(',');