@@ -140,14 +140,14 @@ pub trait AtRuleParser<'i> {
140
140
141
141
/// A trait to provide various parsing of qualified rules.
142
142
///
143
- /// For example, there could be different implementations
144
- /// for top-level qualified rules (i.e. style rules with Selectors as prelude)
145
- /// and for qualified rules inside `@keyframes` (keyframe rules with keyframe selectors as prelude).
143
+ /// For example, there could be different implementations for top-level qualified rules (i.e. style
144
+ /// rules with Selectors as prelude) and for qualified rules inside `@keyframes` (keyframe rules
145
+ /// with keyframe selectors as prelude).
146
146
///
147
- /// Default implementations that reject all qualified rules are provided,
148
- /// so that `impl QualifiedRuleParser<(), ()> for ... {}` can be used
149
- /// for example for using `RuleListParser` to parse a rule list with only at-rules
150
- /// (such as inside `@font-feature-values`).
147
+ /// Default implementations that reject all qualified rules are provided, so that
148
+ /// `impl QualifiedRuleParser<(), ()> for ... {}` can be used for example for using
149
+ /// `RuleListParser` to parse a rule list with only at-rules (such as inside
150
+ /// `@font-feature-values`).
151
151
pub trait QualifiedRuleParser < ' i > {
152
152
/// The intermediate representation of a qualified rule prelude.
153
153
type Prelude ;
@@ -223,10 +223,7 @@ where
223
223
/// since `<DeclarationListParser as Iterator>::next` can return either.
224
224
/// It could be a custom enum.
225
225
pub fn new ( input : & ' a mut Parser < ' i , ' t > , parser : P ) -> Self {
226
- DeclarationListParser {
227
- input : input,
228
- parser : parser,
229
- }
226
+ DeclarationListParser { input, parser }
230
227
}
231
228
}
232
229
@@ -249,12 +246,10 @@ where
249
246
let name = name. clone ( ) ;
250
247
let result = {
251
248
let parser = & mut self . parser ;
252
- // FIXME: https://github.com/servo/rust-cssparser/issues/254
253
- let callback = |input : & mut Parser < ' i , ' _ > | {
249
+ parse_until_after ( self . input , Delimiter :: Semicolon , |input| {
254
250
input. expect_colon ( ) ?;
255
251
parser. parse_value ( name, input)
256
- } ;
257
- parse_until_after ( self . input , Delimiter :: Semicolon , callback)
252
+ } )
258
253
} ;
259
254
return Some ( result. map_err ( |e| ( e, self . input . slice_from ( start. position ( ) ) ) ) ) ;
260
255
}
@@ -304,8 +299,8 @@ where
304
299
/// It could be a custom enum.
305
300
pub fn new_for_stylesheet ( input : & ' a mut Parser < ' i , ' t > , parser : P ) -> Self {
306
301
RuleListParser {
307
- input : input ,
308
- parser : parser ,
302
+ input,
303
+ parser,
309
304
is_stylesheet : true ,
310
305
any_rule_so_far : false ,
311
306
}
@@ -319,8 +314,8 @@ where
319
314
/// (This is to deal with legacy workarounds for `<style>` HTML element parsing.)
320
315
pub fn new_for_nested_rule ( input : & ' a mut Parser < ' i , ' t > , parser : P ) -> Self {
321
316
RuleListParser {
322
- input : input ,
323
- parser : parser ,
317
+ input,
318
+ parser,
324
319
is_stylesheet : false ,
325
320
any_rule_so_far : false ,
326
321
}
@@ -439,34 +434,28 @@ where
439
434
P : AtRuleParser < ' i , Error = E > ,
440
435
{
441
436
let delimiters = Delimiter :: Semicolon | Delimiter :: CurlyBracketBlock ;
442
- // FIXME: https://github.com/servo/rust-cssparser/issues/254
443
- let callback = |input : & mut Parser < ' i , ' _ > | parser. parse_prelude ( name, input) ;
444
- let result = parse_until_before ( input, delimiters, callback) ;
437
+ let result = parse_until_before ( input, delimiters, |input| parser. parse_prelude ( name, input) ) ;
445
438
match result {
446
439
Ok ( prelude) => {
447
440
let result = match input. next ( ) {
448
- Ok ( & Token :: Semicolon ) | Err ( _) => {
449
- parser. rule_without_block ( prelude, start)
450
- . map_err ( |( ) | input. new_unexpected_token_error ( Token :: Semicolon ) )
451
- } ,
441
+ Ok ( & Token :: Semicolon ) | Err ( _) => parser
442
+ . rule_without_block ( prelude, start)
443
+ . map_err ( |( ) | input. new_unexpected_token_error ( Token :: Semicolon ) ) ,
452
444
Ok ( & Token :: CurlyBracketBlock ) => {
453
- // FIXME: https://github.com/servo/rust-cssparser/issues/254
454
- let callback =
455
- |input : & mut Parser < ' i , ' _ > | parser. parse_block ( prelude, start, input) ;
456
- parse_nested_block ( input, callback)
457
- } ,
445
+ parse_nested_block ( input, |input| parser. parse_block ( prelude, start, input) )
446
+ }
458
447
Ok ( _) => unreachable ! ( ) ,
459
448
} ;
460
449
result. map_err ( |e| ( e, input. slice_from ( start. position ( ) ) ) )
461
- } ,
450
+ }
462
451
Err ( error) => {
463
452
let end_position = input. position ( ) ;
464
453
match input. next ( ) {
465
454
Ok ( & Token :: CurlyBracketBlock ) | Ok ( & Token :: Semicolon ) | Err ( _) => { }
466
455
_ => unreachable ! ( ) ,
467
456
} ;
468
457
Err ( ( error, input. slice ( start. position ( ) ..end_position) ) )
469
- } ,
458
+ }
470
459
}
471
460
}
472
461
@@ -478,16 +467,14 @@ where
478
467
P : QualifiedRuleParser < ' i , Error = E > ,
479
468
{
480
469
let start = input. state ( ) ;
481
- // FIXME: https://github.com/servo/rust-cssparser/issues/254
482
- let callback = | input : & mut Parser < ' i , ' _ > | parser. parse_prelude ( input) ;
483
- let prelude = parse_until_before ( input , Delimiter :: CurlyBracketBlock , callback ) ;
470
+ let prelude = parse_until_before ( input , Delimiter :: CurlyBracketBlock , |input| {
471
+ parser. parse_prelude ( input)
472
+ } ) ;
484
473
match * input. next ( ) ? {
485
474
Token :: CurlyBracketBlock => {
486
475
// Do this here so that we consume the `{` even if the prelude is `Err`.
487
476
let prelude = prelude?;
488
- // FIXME: https://github.com/servo/rust-cssparser/issues/254
489
- let callback = |input : & mut Parser < ' i , ' _ > | parser. parse_block ( prelude, & start, input) ;
490
- parse_nested_block ( input, callback)
477
+ parse_nested_block ( input, |input| parser. parse_block ( prelude, & start, input) )
491
478
}
492
479
_ => unreachable ! ( ) ,
493
480
}
0 commit comments