@@ -316,75 +316,75 @@ impl<'a> Printer<'a> {
316316 pub fn pretty_print ( & mut self , token : Token ) -> io:: Result < ( ) > {
317317 debug ! ( "pp Vec<{},{}>" , self . left, self . right) ;
318318 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 ( ( ) )
335326 }
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 } ;
351339 let right = self . right ;
352340 self . scan_push ( right) ;
353341 Ok ( ( ) )
354342 }
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+ }
364355 }
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+ }
386387 }
387- }
388388 }
389389 }
390390 pub fn check_stream ( & mut self ) -> io:: Result < ( ) > {
@@ -523,74 +523,74 @@ impl<'a> Printer<'a> {
523523 self . right,
524524 6 ) ) ;
525525 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) => {
567527 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+ } ) ;
573534 } 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+ } ) ;
579540 }
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 ! ( ) ;
581593 }
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- }
594594 }
595595 }
596596
0 commit comments