[librsvg: 33/51] CoordUnits: simplify parsing
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 33/51] CoordUnits: simplify parsing
- Date: Thu, 19 Dec 2019 01:50:47 +0000 (UTC)
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]