@@ -458,64 +458,66 @@ mod RT {
458
458
}
459
459
460
460
fn pad ( & conv cv, str s, pad_type pt) -> str {
461
+ auto uwidth;
461
462
alt ( cv. width ) {
462
463
case ( count_implied) {
463
464
ret s;
464
465
}
465
466
case ( count_is ( ?width) ) {
466
467
// FIXME: Maybe width should be uint
467
- auto uwidth = width as uint ;
468
- auto strlen = _str. char_len ( s) ;
469
- if ( strlen < uwidth) {
470
- auto padchar = ' ' ;
471
- auto diff = uwidth - strlen;
472
- if ( have_flag ( cv. flags , flag_left_justify) ) {
473
- auto padstr = str_init_elt ( padchar, diff) ;
474
- ret s + padstr;
475
- } else {
476
- auto zero_padding = false ;
477
- auto signed = false ;
478
- alt ( pt) {
479
- case ( pad_nozero) {
480
- // fallthrough
481
- }
482
- case ( pad_signed) {
483
- signed = true ;
484
- if ( have_flag ( cv. flags , flag_left_zero_pad) ) {
485
- padchar = '0' ;
486
- zero_padding = true ;
487
- }
488
- }
489
- case ( pad_unsigned) {
490
- if ( have_flag ( cv. flags , flag_left_zero_pad) ) {
491
- padchar = '0' ;
492
- zero_padding = true ;
493
- }
494
- }
495
- }
496
-
497
- auto padstr = str_init_elt ( padchar, diff) ;
498
-
499
- // This is completely heinous. If we have a signed
500
- // value then potentially rip apart the intermediate
501
- // result and insert some zeros. It may make sense
502
- // to convert zero padding to a precision instead.
503
- if ( signed
504
- && zero_padding
505
- && _str. byte_len ( s) > 0 u
506
- && s. ( 0 ) == '-' as u8 ) {
507
-
508
- auto bytelen = _str. byte_len ( s) ;
509
- auto numpart = _str. substr ( s, 1 u, bytelen - 1 u) ;
510
- ret "-" + padstr + numpart;
511
- }
512
-
513
- ret padstr + s;
468
+ uwidth = width as uint ;
469
+ }
470
+ }
471
+
472
+ auto strlen = _str. char_len ( s) ;
473
+ if ( uwidth <= strlen) {
474
+ ret s;
475
+ }
476
+
477
+ auto padchar = ' ' ;
478
+ auto diff = uwidth - strlen;
479
+ if ( have_flag ( cv. flags , flag_left_justify) ) {
480
+ auto padstr = str_init_elt ( padchar, diff) ;
481
+ ret s + padstr;
482
+ } else {
483
+ auto zero_padding = false ;
484
+ auto signed = false ;
485
+ alt ( pt) {
486
+ case ( pad_nozero) {
487
+ // fallthrough
488
+ }
489
+ case ( pad_signed) {
490
+ signed = true ;
491
+ if ( have_flag ( cv. flags , flag_left_zero_pad) ) {
492
+ padchar = '0' ;
493
+ zero_padding = true ;
494
+ }
495
+ }
496
+ case ( pad_unsigned) {
497
+ if ( have_flag ( cv. flags , flag_left_zero_pad) ) {
498
+ padchar = '0' ;
499
+ zero_padding = true ;
514
500
}
515
- } else {
516
- ret s;
517
501
}
518
502
}
503
+
504
+ auto padstr = str_init_elt ( padchar, diff) ;
505
+
506
+ // This is completely heinous. If we have a signed value then
507
+ // potentially rip apart the intermediate result and insert some
508
+ // zeros. It may make sense to convert zero padding to a precision
509
+ // instead.
510
+ if ( signed
511
+ && zero_padding
512
+ && _str. byte_len ( s) > 0 u
513
+ && s. ( 0 ) == '-' as u8 ) {
514
+
515
+ auto bytelen = _str. byte_len ( s) ;
516
+ auto numpart = _str. substr ( s, 1 u, bytelen - 1 u) ;
517
+ ret "-" + padstr + numpart;
518
+ }
519
+
520
+ ret padstr + s;
519
521
}
520
522
}
521
523
0 commit comments