From 869b28e393f1b87723c9186097bd6acd16366fbd Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Mon, 18 Apr 2011 21:25:22 -0400 Subject: Left-justification overrides 0-padding in #fmt --- src/lib/ExtFmt.rs | 46 ++++++++++++++++++++++++---------------------- 1 file changed, 24 insertions(+), 22 deletions(-) (limited to 'src/lib') 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 -- cgit v1.2.3