mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
Repeat less code in Gradient::parse_function
This commit is contained in:
parent
bb66bf81d5
commit
e01529a647
1 changed files with 18 additions and 24 deletions
|
@ -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<Gradient, ()> {
|
||||
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(()); }
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue