[librsvg] opacity.rs: Refactor to not have Ok() all over the place
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg] opacity.rs: Refactor to not have Ok() all over the place
- Date: Mon, 31 Jul 2017 18:09:19 +0000 (UTC)
commit e4a3aeb00fd10a13b4d5ad2b58b46f383219e8fc
Author: Federico Mena Quintero <federico gnome org>
Date: Mon Jul 31 13:02:39 2017 -0500
opacity.rs: Refactor to not have Ok() all over the place
rust/src/opacity.rs | 56 ++++++++++++++++++++++++++++----------------------
1 files changed, 31 insertions(+), 25 deletions(-)
---
diff --git a/rust/src/opacity.rs b/rust/src/opacity.rs
index 5d9e26d..61aed77 100644
--- a/rust/src/opacity.rs
+++ b/rust/src/opacity.rs
@@ -63,6 +63,10 @@ pub fn opacity_to_u8 (val: f64) -> u8 {
(val * 255.0 + 0.5).floor () as u8
}
+fn make_err () -> AttributeError {
+ AttributeError::Parse (ParseError::new ("expected 'inherit' or number"))
+}
+
impl FromStr for Opacity {
type Err = AttributeError;
@@ -70,34 +74,36 @@ impl FromStr for Opacity {
let mut input = ParserInput::new (s);
let mut parser = Parser::new (&mut input);
- let token = parser.next ();
- let result = match token {
- Ok (&Token::Ident (ref value)) => {
- if value.as_ref () == "inherit" {
- Ok (Opacity::Inherit)
- } else {
- Err (())
- }
- },
-
- Ok (&Token::Number { value, .. }) => {
- if value < 0.0 {
- Ok (Opacity::Specified (0.0))
- } else if value > 1.0 {
- Ok (Opacity::Specified (1.0))
- } else {
- Ok (Opacity::Specified (value as f64))
- }
- },
+ let opacity = {
+ let token = parser.next ()
+ .map_err (|_| make_err ())?;
+
+ match token {
+ &Token::Ident (ref value) => {
+ if value.as_ref () == "inherit" {
+ Opacity::Inherit
+ } else {
+ return Err (make_err ());
+ }
+ },
+
+ &Token::Number { value, .. } => {
+ if value < 0.0 {
+ Opacity::Specified (0.0)
+ } else if value > 1.0 {
+ Opacity::Specified (1.0)
+ } else {
+ Opacity::Specified (value as f64)
+ }
+ },
- _ => Err (())
+ _ => return Err (make_err ())
+ }
};
- result.and_then (|opacity|
- parser.expect_exhausted ()
- .map (|_| opacity)
- .map_err (|_| ()))
- .map_err (|_| AttributeError::Parse (ParseError::new ("expected 'inherit' or number")))
+ parser.expect_exhausted ().map_err (|_| make_err ())?;
+
+ Ok (opacity)
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]