about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
authorBrian Anderson <andersrb@gmail.com>2011-04-18 21:25:22 -0400
committerBrian Anderson <andersrb@gmail.com>2011-04-18 21:36:04 -0400
commit869b28e393f1b87723c9186097bd6acd16366fbd (patch)
tree6d5069e96da7cff50446c4261968d02bcc2f06b0 /src/lib
parentd4f1a48111673c158d1c9493be4a87eaa24064b1 (diff)
Left-justification overrides 0-padding in #fmt
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/ExtFmt.rs46
1 files changed, 24 insertions, 22 deletions
diff --git a/src/lib/ExtFmt.rs b/src/lib/ExtFmt.rs
index ec778f6dd96..938e86b6511 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