summaryrefslogtreecommitdiff
path: root/src/values/padding.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/values/padding.rs37
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)
+ }
+}