diff --git a/colorizer/src/color/mod.rs b/colorizer/src/color/mod.rs index 35a495e..d9c9a65 100644 --- a/colorizer/src/color/mod.rs +++ b/colorizer/src/color/mod.rs @@ -26,16 +26,18 @@ pub struct Color(RGB); impl Color { pub fn try_parse(input: String) -> Result { - let input = input.replace(" ", "").to_uppercase(); + let input = input.replace(" ", "").to_lowercase(); + // TODO: clean all of this + // - Move down to custom trait that returns a Result let hex_regex = Regex::new(r".*(#[a-fA-F0-9]{3,6}).*").unwrap(); let rgb_regex = - Regex::new(r"(rgb\([ ]*[0-9]+[ ]*,[ ]*[0-9]+[ ]*,[ ]*[0-9 ]+[ ]*\)).*").unwrap(); + Regex::new(r".*(rgb\([ ]*[0-9]+[ ]*,[ ]*[0-9]+[ ]*,[ ]*[0-9 ]+[ ]*\)).*").unwrap(); let hsl_regex = - Regex::new(r"(hsl\([ ]*[0-9]+[ ]*,[0-9]+[ ]*[%]*[ ]*,[0-9 ]+[ ]*[%]*[ ]*\)).*") + Regex::new(r".*(hsl\([ ]*[0-9]+[ ]*,[0-9]+[ ]*[%]*[ ]*,[0-9 ]+[ ]*[%]*[ ]*\)).*") .unwrap(); let hsv_regex = - Regex::new(r"(hsv\([ ]*[0-9]+[ ]*,[0-9]+[ ]*[%]*[ ]*,[0-9 ]+[ ]*[%]*[ ]*\)).*") + Regex::new(r".*(hsv\([ ]*[0-9]+[ ]*,[0-9]+[ ]*[%]*[ ]*,[0-9 ]+[ ]*[%]*[ ]*\)).*") .unwrap(); let hex_result = hex_regex.captures(&input); diff --git a/colorizer/src/color/test/colors.test.rs b/colorizer/src/color/test/colors.test.rs index 6fd62c5..374b653 100644 --- a/colorizer/src/color/test/colors.test.rs +++ b/colorizer/src/color/test/colors.test.rs @@ -251,4 +251,27 @@ pub mod tests { let color = "hsv(157,29, 37 )"; assert_eq!(HSV::from(color.to_string()), HSV::new(157, 29, 37)); } + + #[test] + fn test_color_string_parse() { + let input = "test1hsv(255 , 83, 3)test2"; + let result = Color::try_parse(input.to_string()); + assert_eq!(result, Ok(Color::from(HSV::from(input.to_string())))); + + let input = "test1hsj(255 , 83, 3)test2"; + let result = Color::try_parse(input.to_string()); + assert_eq!(result, Err(())); + + let input = "test1hsl(25a , 83, 3)test2"; + let result = Color::try_parse(input.to_string()); + assert_eq!(result, Err(())); + + let input = "#afj"; + let result = Color::try_parse(input.to_string()); + assert_eq!(result, Err(())); + + let input = "p#test2#010203j"; + let result = Color::try_parse(input.to_string()); + assert_eq!(result, Ok(Color::from(RGB::new(1, 2, 3)))); + } }