From ea8f63c630b35af941237e9c76493dff78aade8c Mon Sep 17 00:00:00 2001 From: Federico Bond Date: Sat, 25 Apr 2026 21:37:03 -0300 Subject: [PATCH] fix(mrml-core): accept unitless zero in Pixel::try_from Signed-off-by: Federico Bond --- packages/mrml-core/src/helper/size.rs | 2 ++ packages/mrml-core/src/helper/spacing.rs | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/packages/mrml-core/src/helper/size.rs b/packages/mrml-core/src/helper/size.rs index c0e4a1ea..24fee38f 100644 --- a/packages/mrml-core/src/helper/size.rs +++ b/packages/mrml-core/src/helper/size.rs @@ -146,6 +146,8 @@ impl TryFrom<&str> for Pixel { .parse::() .map(Pixel::new) .map_err(SizeParserError::InvalidFloat) + } else if value == "0" { + Ok(Pixel::new(0.0)) } else { Err(SizeParserError::MissingSuffix("px")) } diff --git a/packages/mrml-core/src/helper/spacing.rs b/packages/mrml-core/src/helper/spacing.rs index be51d2df..8e2e6ad9 100644 --- a/packages/mrml-core/src/helper/spacing.rs +++ b/packages/mrml-core/src/helper/spacing.rs @@ -188,4 +188,13 @@ pub mod tests { let res = Spacing::try_from("2tx 3px 4px 5px"); assert!(res.is_err()); } + + #[test] + fn unitless_zero() { + let res: Spacing = Spacing::try_from("20px 20px 0 20px").unwrap(); + assert_eq!(res.top(), &Pixel::new(20.0)); + assert_eq!(res.right(), &Pixel::new(20.0)); + assert_eq!(res.bottom(), &Pixel::new(0.0)); + assert_eq!(res.left(), &Pixel::new(20.0)); + } }