From a806922d47bb7ea3e401a99ed2c918c4ab745973 Mon Sep 17 00:00:00 2001 From: pml68 Date: Mon, 24 Feb 2025 19:08:32 +0100 Subject: feat: create separate `ValueFromStr` struct --- src/values/padding.rs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/values/padding.rs (limited to 'src/values/padding.rs') diff --git a/src/values/padding.rs b/src/values/padding.rs new file mode 100644 index 0000000..3cec7a7 --- /dev/null +++ b/src/values/padding.rs @@ -0,0 +1,37 @@ +use std::str::FromStr; + +use iced::Padding; + +use super::ValueFromStr; + +#[derive(Debug)] +pub enum PaddingError { + Nah, +} + +impl ValueFromStr for Padding { + type Err = PaddingError; + + fn value_from_str(s: &str) -> Result { + s.strip_prefix('[') + .and_then(|s| s.strip_suffix(']')) + .map(|s| { + s.split(',') + .map(|n| f32::from_str(n).unwrap()) + .collect::>() + }) + .and_then(|s| { + if s.len() == 4 { + Some(Padding { + top: s[0], + right: s[1], + bottom: s[2], + left: s[3], + }) + } else { + None + } + }) + .ok_or(PaddingError::Nah) + } +} -- cgit v1.2.3