diff options
| author | Martin Haug <mhaug@live.de> | 2020-07-15 20:57:26 +0200 |
|---|---|---|
| committer | Martin Haug <mhaug@live.de> | 2020-07-15 20:57:26 +0200 |
| commit | 1683ca87f797a6262f0a4f75bde0e23eca31798c (patch) | |
| tree | b6ede1d5ba6c966ad2f83fe92d14c0d5b5204ca5 /src/syntax/parsing.rs | |
| parent | 28c3a797ec7a6fbe3f5069604e5b19a00ae52344 (diff) | |
Healed field for RgbaColors, CodeRev feedback 🤝
Diffstat (limited to 'src/syntax/parsing.rs')
| -rw-r--r-- | src/syntax/parsing.rs | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/src/syntax/parsing.rs b/src/syntax/parsing.rs index c85a9c31..772f2dc0 100644 --- a/src/syntax/parsing.rs +++ b/src/syntax/parsing.rs @@ -253,15 +253,13 @@ impl<'s> FuncParser<'s> { Token::ExprSize(s) => take!(Expr::Size(s)), Token::ExprBool(b) => take!(Expr::Bool(b)), Token::ExprHex(s) => { - let color_opt = RgbaColor::from_str(s); - - if let Some(color) = color_opt { + if let Some(color) = RgbaColor::from_str(s) { take!(Expr::Color(color)) } else { // Heal color by assuming black self.feedback.errors.push(err!(first.span; - "expected valid color, found invalid color #{}", s)); - take!(Expr::Color(RgbaColor::new(0, 0, 0, 255))) + "invalid color")); + take!(Expr::Color(RgbaColor::new_healed(0, 0, 0, 255))) } }, @@ -286,8 +284,8 @@ impl<'s> FuncParser<'s> { /// Parse a tuple expression: `name(<expr>, ...)` with a given identifier. fn parse_named_tuple(&mut self, name: Spanned<Ident>) -> Spanned<NamedTuple> { let tuple = self.parse_tuple(); - let start = name.span.start.clone(); - let end = tuple.span.end.clone(); + let start = name.span.start; + let end = tuple.span.end; Spanned::new(NamedTuple::new(name, tuple), Span::new(start, end)) } @@ -549,14 +547,22 @@ mod tests { fn Id(text: &str) -> Expr { Expr::Ident(Ident(text.to_string())) } fn Str(text: &str) -> Expr { Expr::Str(text.to_string()) } fn Pt(points: f32) -> Expr { Expr::Size(Size::pt(points)) } + fn ClrS(color: &str) -> Expr { Expr::Color( RgbaColor::from_str(color).expect("Test color invalid") ) } + fn ClrS_Healed() -> Expr { + let mut c = RgbaColor::from_str("000f") + .expect("Test color invalid"); + c.healed = true; + Expr::Color(c) + } fn Clr(r: u8, g: u8, b: u8, a: u8) -> Expr { Expr::Color(RgbaColor::new(r, g, b, a)) } + fn T(text: &str) -> Node { Node::Text(text.to_string()) } /// Create a raw text node. @@ -819,17 +825,17 @@ mod tests { ]); //Invalid colors - p!("[val: #12345]" => [func!("val": (ClrS("000f")), {})], [ - (0:6, 0:12, "expected valid color, found invalid color #12345"), + p!("[val: #12345]" => [func!("val": (ClrS_Healed()), {})], [ + (0:6, 0:12, "invalid color"), ]); - p!("[val: #a5]" => [func!("val": (ClrS("000f")), {})], [ - (0:6, 0:9, "expected valid color, found invalid color #a5"), + p!("[val: #a5]" => [func!("val": (ClrS_Healed()), {})], [ + (0:6, 0:9, "invalid color"), ]); - p!("[val: #14b2ah]" => [func!("val": (ClrS("000f")), {})], [ - (0:6, 0:13, "expected valid color, found invalid color #14b2a"), + p!("[val: #14b2ah]" => [func!("val": (ClrS_Healed()), {})], [ + (0:6, 0:13, "invalid color"), ]); - p!("[val: #f075ff011]" => [func!("val": (ClrS("000f")), {})], [ - (0:6, 0:16, "expected valid color, found invalid color #f075ff011"), + p!("[val: #f075ff011]" => [func!("val": (ClrS_Healed()), {})], [ + (0:6, 0:16, "invalid color"), ]); } |
