From e01529a647fd5c22909b1cdf7bc64a13c38d3730 Mon Sep 17 00:00:00 2001 From: Anthony Ramine Date: Thu, 13 Apr 2017 17:33:18 +0200 Subject: [PATCH] Repeat less code in Gradient::parse_function --- components/style/values/specified/image.rs | 42 ++++++++++------------ 1 file changed, 18 insertions(+), 24 deletions(-) diff --git a/components/style/values/specified/image.rs b/components/style/values/specified/image.rs index bfe31313ea7..4123ed7da67 100644 --- a/components/style/values/specified/image.rs +++ b/components/style/values/specified/image.rs @@ -136,41 +136,35 @@ impl ToCss for Gradient { impl Gradient { /// Parses a gradient from the given arguments. pub fn parse_function(context: &ParserContext, input: &mut Parser) -> Result { + let parse_linear_gradient = |input: &mut Parser| { + input.parse_nested_block(|input| { + let kind = try!(GradientKind::parse_linear(context, input)); + let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i))); + Ok((kind, stops)) + }) + }; + let parse_radial_gradient = |input: &mut Parser| { + input.parse_nested_block(|input| { + let kind = try!(GradientKind::parse_radial(context, input)); + let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i))); + Ok((kind, stops)) + }) + }; let mut repeating = false; let (gradient_kind, stops) = match_ignore_ascii_case! { &try!(input.expect_function()), "linear-gradient" => { - try!(input.parse_nested_block(|input| { - let kind = try!(GradientKind::parse_linear(context, input)); - let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i))); - Ok((kind, stops)) - }) - ) + try!(parse_linear_gradient(input)) }, "repeating-linear-gradient" => { repeating = true; - try!(input.parse_nested_block(|input| { - let kind = try!(GradientKind::parse_linear(context, input)); - let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i))); - Ok((kind, stops)) - }) - ) + try!(parse_linear_gradient(input)) }, "radial-gradient" => { - try!(input.parse_nested_block(|input| { - let kind = try!(GradientKind::parse_radial(context, input)); - let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i))); - Ok((kind, stops)) - }) - ) + try!(parse_radial_gradient(input)) }, "repeating-radial-gradient" => { repeating = true; - try!(input.parse_nested_block(|input| { - let kind = try!(GradientKind::parse_radial(context, input)); - let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i))); - Ok((kind, stops)) - }) - ) + try!(parse_radial_gradient(input)) }, _ => { return Err(()); } };