diff options
Diffstat (limited to 'src/values')
| -rw-r--r-- | src/values/padding.rs | 37 |
1 files changed, 37 insertions, 0 deletions
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<Self, Self::Err> { + s.strip_prefix('[') + .and_then(|s| s.strip_suffix(']')) + .map(|s| { + s.split(',') + .map(|n| f32::from_str(n).unwrap()) + .collect::<Vec<_>>() + }) + .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) + } +} |
