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 {
|
impl Gradient {
|
||||||
/// Parses a gradient from the given arguments.
|
/// Parses a gradient from the given arguments.
|
||||||
pub fn parse_function(context: &ParserContext, input: &mut Parser) -> Result<Gradient, ()> {
|
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 mut repeating = false;
|
||||||
let (gradient_kind, stops) = match_ignore_ascii_case! { &try!(input.expect_function()),
|
let (gradient_kind, stops) = match_ignore_ascii_case! { &try!(input.expect_function()),
|
||||||
"linear-gradient" => {
|
"linear-gradient" => {
|
||||||
try!(input.parse_nested_block(|input| {
|
try!(parse_linear_gradient(input))
|
||||||
let kind = try!(GradientKind::parse_linear(context, input));
|
|
||||||
let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i)));
|
|
||||||
Ok((kind, stops))
|
|
||||||
})
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
"repeating-linear-gradient" => {
|
"repeating-linear-gradient" => {
|
||||||
repeating = true;
|
repeating = true;
|
||||||
try!(input.parse_nested_block(|input| {
|
try!(parse_linear_gradient(input))
|
||||||
let kind = try!(GradientKind::parse_linear(context, input));
|
|
||||||
let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i)));
|
|
||||||
Ok((kind, stops))
|
|
||||||
})
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
"radial-gradient" => {
|
"radial-gradient" => {
|
||||||
try!(input.parse_nested_block(|input| {
|
try!(parse_radial_gradient(input))
|
||||||
let kind = try!(GradientKind::parse_radial(context, input));
|
|
||||||
let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i)));
|
|
||||||
Ok((kind, stops))
|
|
||||||
})
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
"repeating-radial-gradient" => {
|
"repeating-radial-gradient" => {
|
||||||
repeating = true;
|
repeating = true;
|
||||||
try!(input.parse_nested_block(|input| {
|
try!(parse_radial_gradient(input))
|
||||||
let kind = try!(GradientKind::parse_radial(context, input));
|
|
||||||
let stops = try!(input.parse_comma_separated(|i| ColorStop::parse(context, i)));
|
|
||||||
Ok((kind, stops))
|
|
||||||
})
|
|
||||||
)
|
|
||||||
},
|
},
|
||||||
_ => { return Err(()); }
|
_ => { return Err(()); }
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue