@@ -12,7 +12,8 @@ use super::{Token, Parser};
12
12
/// in which case the caller needs to check if the arguments’ parser is exhausted.
13
13
/// Return `Ok((A, B))`, or `Err(())` for a syntax error.
14
14
pub fn parse_nth ( input : & mut Parser ) -> Result < ( i32 , i32 ) , ( ) > {
15
- match try!( input. next ( ) ) {
15
+ let tok = try!( input. next ( ) ) ;
16
+ match tok {
16
17
Token :: Number ( value) => Ok ( ( 0 , try!( value. int_value . ok_or ( ( ) ) ) as i32 ) ) ,
17
18
Token :: Dimension ( value, unit) => {
18
19
let a = try!( value. int_value . ok_or ( ( ) ) ) as i32 ;
@@ -37,12 +38,17 @@ pub fn parse_nth(input: &mut Parser) -> Result<(i32, i32), ()> {
37
38
}
38
39
}
39
40
}
40
- Token :: Delim ( '+' ) => match try!( input. next_including_whitespace ( ) ) {
41
- Token :: Ident ( value) => {
42
- match_ignore_ascii_case ! { & value,
43
- "n" => parse_b( input, 1 ) ,
44
- "n-" => parse_signless_b( input, 1 , -1 ) ,
45
- _ => Ok ( ( 1 , try!( parse_n_dash_digits( & * value) ) ) )
41
+ Token :: Delim ( '+' ) | Token :: Delim ( '-' ) => match try!( input. next_including_whitespace ( ) ) {
42
+ Token :: Ident ( n) => {
43
+ let val = if Token :: Delim ( '+' ) == tok {
44
+ 1
45
+ } else {
46
+ -1
47
+ } ;
48
+ match_ignore_ascii_case ! { & n,
49
+ "n" => parse_b( input, val) ,
50
+ "n-" => parse_signless_b( input, val, -1 ) ,
51
+ _ => Ok ( ( 1 , try!( parse_n_dash_digits( & * n) ) ) )
46
52
}
47
53
}
48
54
_ => Err ( ( ) )
0 commit comments