diff options
| author | Brian Anderson <[email protected]> | 2011-04-18 21:25:22 -0400 |
|---|---|---|
| committer | Brian Anderson <[email protected]> | 2011-04-18 21:36:04 -0400 |
| commit | 869b28e393f1b87723c9186097bd6acd16366fbd (patch) | |
| tree | 6d5069e96da7cff50446c4261968d02bcc2f06b0 /src/lib | |
| parent | Support 0 flag in #fmt (diff) | |
| download | rust-869b28e393f1b87723c9186097bd6acd16366fbd.tar.xz rust-869b28e393f1b87723c9186097bd6acd16366fbd.zip | |
Left-justification overrides 0-padding in #fmt
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/ExtFmt.rs | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/lib/ExtFmt.rs b/src/lib/ExtFmt.rs index ec778f6d..938e86b6 100644 --- a/src/lib/ExtFmt.rs +++ b/src/lib/ExtFmt.rs @@ -467,33 +467,35 @@ mod RT { auto uwidth = width as uint; auto strlen = _str.char_len(s); if (strlen < uwidth) { - auto zero_padding = false; - auto signed = false; auto padchar = ' '; - alt (pt) { - case (pad_nozero) { - // fallthrough - } - case (pad_signed) { - signed = true; - if (have_flag(cv.flags, flag_left_zero_pad)) { - padchar = '0'; - zero_padding = true; - } - } - case (pad_unsigned) { - if (have_flag(cv.flags, flag_left_zero_pad)) { - padchar = '0'; - zero_padding = true; - } - } - } - auto diff = uwidth - strlen; - auto padstr = str_init_elt(padchar, diff); if (have_flag(cv.flags, flag_left_justify)) { + auto padstr = str_init_elt(padchar, diff); ret s + padstr; } else { + auto zero_padding = false; + auto signed = false; + alt (pt) { + case (pad_nozero) { + // fallthrough + } + case (pad_signed) { + signed = true; + if (have_flag(cv.flags, flag_left_zero_pad)) { + padchar = '0'; + zero_padding = true; + } + } + case (pad_unsigned) { + if (have_flag(cv.flags, flag_left_zero_pad)) { + padchar = '0'; + zero_padding = true; + } + } + } + + auto padstr = str_init_elt(padchar, diff); + // This is completely heinous. If we have a signed // value then potentially rip apart the intermediate // result and insert some zeros. It may make sense |