File tree Expand file tree Collapse file tree 3 files changed +36
-24
lines changed Expand file tree Collapse file tree 3 files changed +36
-24
lines changed Original file line number Diff line number Diff line change 1
1
---
2
- refs/heads/master: d4f1a48111673c158d1c9493be4a87eaa24064b1
2
+ refs/heads/master: 869b28e393f1b87723c9186097bd6acd16366fbd
Original file line number Diff line number Diff line change @@ -467,33 +467,35 @@ mod RT {
467
467
auto uwidth = width as uint ;
468
468
auto strlen = _str. char_len ( s) ;
469
469
if ( strlen < uwidth) {
470
- auto zero_padding = false ;
471
- auto signed = false ;
472
470
auto padchar = ' ' ;
473
- alt ( pt) {
474
- case ( pad_nozero) {
475
- // fallthrough
476
- }
477
- case ( pad_signed) {
478
- signed = true ;
479
- if ( have_flag ( cv. flags , flag_left_zero_pad) ) {
480
- padchar = '0' ;
481
- zero_padding = true ;
482
- }
483
- }
484
- case ( pad_unsigned) {
485
- if ( have_flag ( cv. flags , flag_left_zero_pad) ) {
486
- padchar = '0' ;
487
- zero_padding = true ;
488
- }
489
- }
490
- }
491
-
492
471
auto diff = uwidth - strlen;
493
- auto padstr = str_init_elt ( padchar, diff) ;
494
472
if ( have_flag ( cv. flags , flag_left_justify) ) {
473
+ auto padstr = str_init_elt ( padchar, diff) ;
495
474
ret s + padstr;
496
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
+
497
499
// This is completely heinous. If we have a signed
498
500
// value then potentially rip apart the intermediate
499
501
// result and insert some zeros. It may make sense
Original file line number Diff line number Diff line change @@ -139,7 +139,17 @@ fn main() {
139
139
test ( #fmt ( "%05s" , "test" ) , " test" ) ;
140
140
test ( #fmt ( "%05b" , true ) , " true" ) ;
141
141
142
- // TODO: Left-justify overrides 0-padding
142
+ // Left-justify overrides 0-padding
143
+ test ( #fmt ( "%-05d" , 0 ) , "0 " ) ;
144
+ test ( #fmt ( "%-05d" , 1 ) , "1 " ) ;
145
+ test ( #fmt ( "%-05d" , -1 ) , "-1 " ) ;
146
+ test ( #fmt ( "%-05u" , 1 u) , "1 " ) ;
147
+ test ( #fmt ( "%-05x" , 127 u) , "7f " ) ;
148
+ test ( #fmt ( "%-05X" , 127 u) , "7F " ) ;
149
+ test ( #fmt ( "%-05t" , 3 u) , "11 " ) ;
150
+ test ( #fmt ( "%-05s" , "test" ) , "test " ) ;
151
+ test ( #fmt ( "%-05b" , true ) , "true " ) ;
152
+
143
153
// TODO: Precision overrides 0-padding
144
154
// TODO: Padding and +
145
155
// TODO: Padding and ' '
You can’t perform that action at this time.
0 commit comments