From 12fdd818c99fd8dd14bd08d31ca6d5c765b17d66 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Sat, 30 Sep 2023 10:48:48 +0200 Subject: [PATCH] Implemented compare for number validator. --- src/validators.rs | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/src/validators.rs b/src/validators.rs index f5ee2da..1400911 100644 --- a/src/validators.rs +++ b/src/validators.rs @@ -276,6 +276,8 @@ impl TValidator for ValidatorNumber { let tesc: String; let desc: String; + let mut nvalue = String::from(value); + let mut sregex = String::from("^"); if self.plus_minus { @@ -289,6 +291,8 @@ impl TValidator for ValidatorNumber { } else { tesc = format!("{}", t); } + + nvalue = str::replace(&nvalue, t, ""); }, None => { tesc = String::new(); }, } @@ -300,6 +304,8 @@ impl TValidator for ValidatorNumber { } else { desc = format!("{}", t); } + + nvalue = str::replace(&nvalue, t, "."); }, None => { desc = String::new(); }, } @@ -308,13 +314,51 @@ impl TValidator for ValidatorNumber { tesc, desc, desc).as_str()); - println!("REGEX {} - {}", sregex, value); + let re = Regex::new(&sregex).unwrap(); if !re.is_match(value) { return self.get_message(); } + let fvalue = match nvalue.parse::() { + Ok(f) => { f }, + Err(_) => { 0_f64 }, + }; + + match &self.compare_type { + Some(t) => { + match t { + ValidatorNumberCompareType::Less => { + if fvalue >= self.compare_value { + return self.get_message(); + } + }, + ValidatorNumberCompareType::LessEq => { + if fvalue > self.compare_value { + return self.get_message(); + } + }, + ValidatorNumberCompareType::Eq => { + if fvalue != self.compare_value { + return self.get_message(); + } + }, + ValidatorNumberCompareType::Great => { + if fvalue <= self.compare_value { + return self.get_message(); + } + }, + ValidatorNumberCompareType::GreatEq => { + if fvalue < self.compare_value { + return self.get_message(); + } + }, + }; + }, + None => { }, + }; + return String::from(""); } } -- 2.49.0