[librsvg: 33/51] CoordUnits: simplify parsing



commit 7a5d0da77c8c28c35ec87ed39b1a1d6aa7cff12e
Author: Federico Mena Quintero <federico gnome org>
Date:   Tue Dec 17 20:53:48 2019 -0600

    CoordUnits: simplify parsing

 rsvg_internals/src/coord_units.rs | 25 +++++++------------------
 rsvg_internals/src/lib.rs         |  6 +++---
 2 files changed, 10 insertions(+), 21 deletions(-)
---
diff --git a/rsvg_internals/src/coord_units.rs b/rsvg_internals/src/coord_units.rs
index 54464e4f..266a06d3 100644
--- a/rsvg_internals/src/coord_units.rs
+++ b/rsvg_internals/src/coord_units.rs
@@ -1,8 +1,8 @@
 //! `userSpaceOnUse` or `objectBoundingBox` values.
 
-use cssparser::{CowRcStr, Parser, Token};
+use cssparser::Parser;
 
-use crate::error::ValueErrorKind;
+use crate::error::*;
 use crate::parsers::Parse;
 
 /// Defines the units to be used for things that can consider a
@@ -16,22 +16,11 @@ pub enum CoordUnits {
 
 impl Parse for CoordUnits {
     fn parse(parser: &mut Parser<'_, '_>) -> Result<CoordUnits, ValueErrorKind> {
-        let loc = parser.current_source_location();
-
-        parser
-            .expect_ident()
-            .and_then(|cow| match cow.as_ref() {
-                "userSpaceOnUse" => Ok(CoordUnits::UserSpaceOnUse),
-                "objectBoundingBox" => Ok(CoordUnits::ObjectBoundingBox),
-                _ => Err(
-                    loc.new_basic_unexpected_token_error(Token::Ident(CowRcStr::from(
-                        cow.as_ref().to_string(),
-                    ))),
-                ),
-            })
-            .map_err(|_| {
-                ValueErrorKind::parse_error("expected 'userSpaceOnUse' or 'objectBoundingBox'")
-            })
+        parse_identifiers!(
+            parser,
+            "userSpaceOnUse" => CoordUnits::UserSpaceOnUse,
+            "objectBoundingBox" => CoordUnits::ObjectBoundingBox,
+        ).map_err(|_: ParseError| ValueErrorKind::parse_error("parse error"))
     }
 }
 
diff --git a/rsvg_internals/src/lib.rs b/rsvg_internals/src/lib.rs
index e888009f..806d9382 100644
--- a/rsvg_internals/src/lib.rs
+++ b/rsvg_internals/src/lib.rs
@@ -67,13 +67,13 @@ pub use crate::viewbox::ViewBox;
 pub mod log;
 
 #[macro_use]
-mod coord_units;
+mod parsers;
 
 #[macro_use]
-mod float_eq_cairo;
+mod coord_units;
 
 #[macro_use]
-mod parsers;
+mod float_eq_cairo;
 
 #[macro_use]
 mod property_macros;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]