[librsvg] Generate slightly more meaningful ParseError messages



commit 7b7b983f919173ed6465920b50de1452c11e3441
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Dec 4 18:18:25 2019 -0600

    Generate slightly more meaningful ParseError messages

 rsvg_internals/src/parsers.rs | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/rsvg_internals/src/parsers.rs b/rsvg_internals/src/parsers.rs
index f107bc0a..71bb9848 100644
--- a/rsvg_internals/src/parsers.rs
+++ b/rsvg_internals/src/parsers.rs
@@ -1,4 +1,4 @@
-use cssparser::{BasicParseError, Parser, ParserInput, Token};
+use cssparser::{BasicParseError, BasicParseErrorKind, Parser, ParserInput, Token};
 use markup5ever::QualName;
 
 use std::str;
@@ -19,8 +19,18 @@ impl ParseError {
 }
 
 impl<'a> From<BasicParseError<'a>> for ParseError {
-    fn from(_: BasicParseError<'_>) -> ParseError {
-        ParseError::new("parse error")
+    fn from(e: BasicParseError<'_>) -> ParseError {
+        let BasicParseError { kind, location: _ } =  e;
+
+        let msg = match kind {
+            BasicParseErrorKind::UnexpectedToken(_) => "unexpected token",
+            BasicParseErrorKind::EndOfInput => "unexpected end of input",
+            BasicParseErrorKind::AtRuleInvalid(_) => "invalid @-rule",
+            BasicParseErrorKind::AtRuleBodyInvalid => "invalid @-rule body",
+            BasicParseErrorKind::QualifiedRuleInvalid => "invalid qualified rule",
+        };
+
+        ParseError::new(msg)
     }
 }
 


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