@@ -316,75 +316,75 @@ impl<'a> Printer<'a> {
316
316
pub fn pretty_print ( & mut self , token : Token ) -> io:: Result < ( ) > {
317
317
debug ! ( "pp Vec<{},{}>" , self . left, self . right) ;
318
318
match token {
319
- Token :: Eof => {
320
- if !self . scan_stack . is_empty ( ) {
321
- self . check_stack ( 0 ) ;
322
- self . advance_left ( ) ?;
323
- }
324
- self . indent ( 0 ) ;
325
- Ok ( ( ) )
326
- }
327
- Token :: Begin ( b) => {
328
- if self . scan_stack . is_empty ( ) {
329
- self . left_total = 1 ;
330
- self . right_total = 1 ;
331
- self . left = 0 ;
332
- self . right = 0 ;
333
- } else {
334
- self . advance_right ( ) ;
319
+ Token :: Eof => {
320
+ if !self . scan_stack . is_empty ( ) {
321
+ self . check_stack ( 0 ) ;
322
+ self . advance_left ( ) ?;
323
+ }
324
+ self . indent ( 0 ) ;
325
+ Ok ( ( ) )
335
326
}
336
- debug ! ( "pp Begin({})/buffer Vec<{},{}>" ,
337
- b. offset, self . left, self . right) ;
338
- self . buf [ self . right ] = BufEntry { token : token, size : -self . right_total } ;
339
- let right = self . right ;
340
- self . scan_push ( right) ;
341
- Ok ( ( ) )
342
- }
343
- Token :: End => {
344
- if self . scan_stack . is_empty ( ) {
345
- debug ! ( "pp End/print Vec<{},{}>" , self . left, self . right) ;
346
- self . print ( token, 0 )
347
- } else {
348
- debug ! ( "pp End/buffer Vec<{},{}>" , self . left, self . right) ;
349
- self . advance_right ( ) ;
350
- self . buf [ self . right ] = BufEntry { token : token, size : -1 } ;
327
+ Token :: Begin ( b) => {
328
+ if self . scan_stack . is_empty ( ) {
329
+ self . left_total = 1 ;
330
+ self . right_total = 1 ;
331
+ self . left = 0 ;
332
+ self . right = 0 ;
333
+ } else {
334
+ self . advance_right ( ) ;
335
+ }
336
+ debug ! ( "pp Begin({})/buffer Vec<{},{}>" ,
337
+ b. offset, self . left, self . right) ;
338
+ self . buf [ self . right ] = BufEntry { token : token, size : -self . right_total } ;
351
339
let right = self . right ;
352
340
self . scan_push ( right) ;
353
341
Ok ( ( ) )
354
342
}
355
- }
356
- Token :: Break ( b) => {
357
- if self . scan_stack . is_empty ( ) {
358
- self . left_total = 1 ;
359
- self . right_total = 1 ;
360
- self . left = 0 ;
361
- self . right = 0 ;
362
- } else {
363
- self . advance_right ( ) ;
343
+ Token :: End => {
344
+ if self . scan_stack . is_empty ( ) {
345
+ debug ! ( "pp End/print Vec<{},{}>" , self . left, self . right) ;
346
+ self . print ( token, 0 )
347
+ } else {
348
+ debug ! ( "pp End/buffer Vec<{},{}>" , self . left, self . right) ;
349
+ self . advance_right ( ) ;
350
+ self . buf [ self . right ] = BufEntry { token : token, size : -1 } ;
351
+ let right = self . right ;
352
+ self . scan_push ( right) ;
353
+ Ok ( ( ) )
354
+ }
364
355
}
365
- debug ! ( "pp Break({})/buffer Vec<{},{}>" ,
366
- b. offset, self . left, self . right) ;
367
- self . check_stack ( 0 ) ;
368
- let right = self . right ;
369
- self . scan_push ( right) ;
370
- self . buf [ self . right ] = BufEntry { token : token, size : -self . right_total } ;
371
- self . right_total += b. blank_space ;
372
- Ok ( ( ) )
373
- }
374
- Token :: String ( s, len) => {
375
- if self . scan_stack . is_empty ( ) {
376
- debug ! ( "pp String('{}')/print Vec<{},{}>" ,
377
- s, self . left, self . right) ;
378
- self . print ( Token :: String ( s, len) , len)
379
- } else {
380
- debug ! ( "pp String('{}')/buffer Vec<{},{}>" ,
381
- s, self . left, self . right) ;
382
- self . advance_right ( ) ;
383
- self . buf [ self . right ] = BufEntry { token : Token :: String ( s, len) , size : len } ;
384
- self . right_total += len;
385
- self . check_stream ( )
356
+ Token :: Break ( b) => {
357
+ if self . scan_stack . is_empty ( ) {
358
+ self . left_total = 1 ;
359
+ self . right_total = 1 ;
360
+ self . left = 0 ;
361
+ self . right = 0 ;
362
+ } else {
363
+ self . advance_right ( ) ;
364
+ }
365
+ debug ! ( "pp Break({})/buffer Vec<{},{}>" ,
366
+ b. offset, self . left, self . right) ;
367
+ self . check_stack ( 0 ) ;
368
+ let right = self . right ;
369
+ self . scan_push ( right) ;
370
+ self . buf [ self . right ] = BufEntry { token : token, size : -self . right_total } ;
371
+ self . right_total += b. blank_space ;
372
+ Ok ( ( ) )
373
+ }
374
+ Token :: String ( s, len) => {
375
+ if self . scan_stack . is_empty ( ) {
376
+ debug ! ( "pp String('{}')/print Vec<{},{}>" ,
377
+ s, self . left, self . right) ;
378
+ self . print ( Token :: String ( s, len) , len)
379
+ } else {
380
+ debug ! ( "pp String('{}')/buffer Vec<{},{}>" ,
381
+ s, self . left, self . right) ;
382
+ self . advance_right ( ) ;
383
+ self . buf [ self . right ] = BufEntry { token : Token :: String ( s, len) , size : len } ;
384
+ self . right_total += len;
385
+ self . check_stream ( )
386
+ }
386
387
}
387
- }
388
388
}
389
389
}
390
390
pub fn check_stream ( & mut self ) -> io:: Result < ( ) > {
@@ -523,74 +523,74 @@ impl<'a> Printer<'a> {
523
523
self . right,
524
524
6 ) ) ;
525
525
match token {
526
- Token :: Begin ( b) => {
527
- if l > self . space {
528
- let col = self . margin - self . space + b. offset ;
529
- debug ! ( "print Begin -> push broken block at col {}" , col) ;
530
- self . print_stack . push ( PrintStackElem {
531
- offset : col,
532
- pbreak : PrintStackBreak :: Broken ( b. breaks )
533
- } ) ;
534
- } else {
535
- debug ! ( "print Begin -> push fitting block" ) ;
536
- self . print_stack . push ( PrintStackElem {
537
- offset : 0 ,
538
- pbreak : PrintStackBreak :: Fits
539
- } ) ;
540
- }
541
- Ok ( ( ) )
542
- }
543
- Token :: End => {
544
- debug ! ( "print End -> pop End" ) ;
545
- let print_stack = & mut self . print_stack ;
546
- assert ! ( !print_stack. is_empty( ) ) ;
547
- print_stack. pop ( ) . unwrap ( ) ;
548
- Ok ( ( ) )
549
- }
550
- Token :: Break ( b) => {
551
- let top = self . get_top ( ) ;
552
- match top. pbreak {
553
- PrintStackBreak :: Fits => {
554
- debug ! ( "print Break({}) in fitting block" , b. blank_space) ;
555
- self . space -= b. blank_space ;
556
- self . indent ( b. blank_space ) ;
557
- Ok ( ( ) )
558
- }
559
- PrintStackBreak :: Broken ( Breaks :: Consistent ) => {
560
- debug ! ( "print Break({}+{}) in consistent block" ,
561
- top. offset, b. offset) ;
562
- let ret = self . print_newline ( top. offset + b. offset ) ;
563
- self . space = self . margin - ( top. offset + b. offset ) ;
564
- ret
565
- }
566
- PrintStackBreak :: Broken ( Breaks :: Inconsistent ) => {
526
+ Token :: Begin ( b) => {
567
527
if l > self . space {
568
- debug ! ( "print Break({}+{}) w/ newline in inconsistent" ,
569
- top. offset, b. offset) ;
570
- let ret = self . print_newline ( top. offset + b. offset ) ;
571
- self . space = self . margin - ( top. offset + b. offset ) ;
572
- ret
528
+ let col = self . margin - self . space + b. offset ;
529
+ debug ! ( "print Begin -> push broken block at col {}" , col) ;
530
+ self . print_stack . push ( PrintStackElem {
531
+ offset : col,
532
+ pbreak : PrintStackBreak :: Broken ( b. breaks )
533
+ } ) ;
573
534
} else {
574
- debug ! ( "print Break({}) w/o newline in inconsistent" ,
575
- b . blank_space ) ;
576
- self . indent ( b . blank_space ) ;
577
- self . space -= b . blank_space ;
578
- Ok ( ( ) )
535
+ debug ! ( "print Begin -> push fitting block" ) ;
536
+ self . print_stack . push ( PrintStackElem {
537
+ offset : 0 ,
538
+ pbreak : PrintStackBreak :: Fits
539
+ } ) ;
579
540
}
580
- }
541
+ Ok ( ( ) )
542
+ }
543
+ Token :: End => {
544
+ debug ! ( "print End -> pop End" ) ;
545
+ let print_stack = & mut self . print_stack ;
546
+ assert ! ( !print_stack. is_empty( ) ) ;
547
+ print_stack. pop ( ) . unwrap ( ) ;
548
+ Ok ( ( ) )
549
+ }
550
+ Token :: Break ( b) => {
551
+ let top = self . get_top ( ) ;
552
+ match top. pbreak {
553
+ PrintStackBreak :: Fits => {
554
+ debug ! ( "print Break({}) in fitting block" , b. blank_space) ;
555
+ self . space -= b. blank_space ;
556
+ self . indent ( b. blank_space ) ;
557
+ Ok ( ( ) )
558
+ }
559
+ PrintStackBreak :: Broken ( Breaks :: Consistent ) => {
560
+ debug ! ( "print Break({}+{}) in consistent block" ,
561
+ top. offset, b. offset) ;
562
+ let ret = self . print_newline ( top. offset + b. offset ) ;
563
+ self . space = self . margin - ( top. offset + b. offset ) ;
564
+ ret
565
+ }
566
+ PrintStackBreak :: Broken ( Breaks :: Inconsistent ) => {
567
+ if l > self . space {
568
+ debug ! ( "print Break({}+{}) w/ newline in inconsistent" ,
569
+ top. offset, b. offset) ;
570
+ let ret = self . print_newline ( top. offset + b. offset ) ;
571
+ self . space = self . margin - ( top. offset + b. offset ) ;
572
+ ret
573
+ } else {
574
+ debug ! ( "print Break({}) w/o newline in inconsistent" ,
575
+ b. blank_space) ;
576
+ self . indent ( b. blank_space ) ;
577
+ self . space -= b. blank_space ;
578
+ Ok ( ( ) )
579
+ }
580
+ }
581
+ }
582
+ }
583
+ Token :: String ( ref s, len) => {
584
+ debug ! ( "print String({})" , s) ;
585
+ assert_eq ! ( l, len) ;
586
+ // assert!(l <= space);
587
+ self . space -= len;
588
+ self . print_str ( s)
589
+ }
590
+ Token :: Eof => {
591
+ // Eof should never get here.
592
+ panic ! ( ) ;
581
593
}
582
- }
583
- Token :: String ( ref s, len) => {
584
- debug ! ( "print String({})" , s) ;
585
- assert_eq ! ( l, len) ;
586
- // assert!(l <= space);
587
- self . space -= len;
588
- self . print_str ( s)
589
- }
590
- Token :: Eof => {
591
- // Eof should never get here.
592
- panic ! ( ) ;
593
- }
594
594
}
595
595
}
596
596
0 commit comments