[librsvg: 1/4] Length: don't use an intermediate value when parsing
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 1/4] Length: don't use an intermediate value when parsing
- Date: Tue, 8 Dec 2020 21:39:57 +0000 (UTC)
commit 4ee56856bffcaf8eb9a27ed2cdf1353f35376da1
Author: Federico Mena Quintero <federico gnome org>
Date: Mon Dec 7 17:28:27 2020 -0600
Length: don't use an intermediate value when parsing
src/length.rs | 75 ++++++++++++++++++++++++++++++-----------------------------
1 file changed, 38 insertions(+), 37 deletions(-)
---
diff --git a/src/length.rs b/src/length.rs
index f4503a8d..bc091425 100644
--- a/src/length.rs
+++ b/src/length.rs
@@ -231,45 +231,46 @@ const PICA_PER_INCH: f64 = 6.0;
impl<N: Normalize> Parse for Length<N> {
fn parse<'i>(parser: &mut Parser<'i, '_>) -> Result<Length<N>, ParseError<'i>> {
- let length = {
- let token = parser.next()?.clone();
-
- match token {
- Token::Number { value, .. } => Length::new(
- f64::from(finite_f32(value).map_err(|e| parser.new_custom_error(e))?),
- LengthUnit::Px,
- ),
-
- Token::Percentage { unit_value, .. } => Length::new(
- f64::from(finite_f32(unit_value).map_err(|e| parser.new_custom_error(e))?),
- LengthUnit::Percent,
- ),
-
- Token::Dimension {
- value, ref unit, ..
- } => {
- let value =
- f64::from(finite_f32(value).map_err(|e| parser.new_custom_error(e))?);
-
- match unit.as_ref() {
- "px" => Length::new(value, LengthUnit::Px),
- "em" => Length::new(value, LengthUnit::Em),
- "ex" => Length::new(value, LengthUnit::Ex),
- "in" => Length::new(value, LengthUnit::In),
- "cm" => Length::new(value, LengthUnit::Cm),
- "mm" => Length::new(value, LengthUnit::Mm),
- "pt" => Length::new(value, LengthUnit::Pt),
- "pc" => Length::new(value, LengthUnit::Pc),
-
- _ => return Err(parser.new_unexpected_token_error(token.clone())),
- }
- }
-
- _ => return Err(parser.new_unexpected_token_error(token.clone())),
+ let l_value;
+ let l_unit;
+
+ let token = parser.next()?.clone();
+
+ match token {
+ Token::Number { value, .. } => {
+ l_value = f64::from(finite_f32(value).map_err(|e| parser.new_custom_error(e))?);
+ l_unit = LengthUnit::Px;
+ }
+
+ Token::Percentage { unit_value, .. } => {
+ l_value =
+ f64::from(finite_f32(unit_value).map_err(|e| parser.new_custom_error(e))?);
+ l_unit = LengthUnit::Percent;
}
- };
- Ok(length)
+ Token::Dimension {
+ value, ref unit, ..
+ } => {
+ l_value = f64::from(finite_f32(value).map_err(|e| parser.new_custom_error(e))?);
+
+ l_unit = match unit.as_ref() {
+ "px" => LengthUnit::Px,
+ "em" => LengthUnit::Em,
+ "ex" => LengthUnit::Ex,
+ "in" => LengthUnit::In,
+ "cm" => LengthUnit::Cm,
+ "mm" => LengthUnit::Mm,
+ "pt" => LengthUnit::Pt,
+ "pc" => LengthUnit::Pc,
+
+ _ => return Err(parser.new_unexpected_token_error(token.clone())),
+ };
+ }
+
+ _ => return Err(parser.new_unexpected_token_error(token.clone())),
+ }
+
+ Ok(Length::new(l_value, l_unit))
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]