diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-09-24 16:47:27 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-09-24 16:47:27 -0700 |
commit | d597a4f280914b187a3d01bc6bb11fa3ae53be29 (patch) | |
tree | db81811e9bb91c7ef1730754be0f01ab474925ee /src | |
parent | 061e6255ca15b31d002f22c2ca49eb1197d23f46 (diff) | |
parent | 61c9d6ede1fe9a91ae501dc019d2e5f97803943a (diff) |
Merge pull request #1650 from rharkeadsk/dev/fix-printf-padding
Fix 3 issues with formatting (printf)
Diffstat (limited to 'src')
-rw-r--r-- | src/library.js | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/library.js b/src/library.js index 5c2c858d..2faa40d7 100644 --- a/src/library.js +++ b/src/library.js @@ -1974,6 +1974,7 @@ LibraryManager.library = { var flagLeftAlign = false; var flagAlternative = false; var flagZeroPad = false; + var flagPadSign = false; flagsLoop: while (1) { switch (next) { case {{{ charCode('+') }}}: @@ -1992,6 +1993,9 @@ LibraryManager.library = { flagZeroPad = true; break; } + case {{{ charCode(' ') }}}: + flagPadSign = true; + break; default: break flagsLoop; } @@ -2158,14 +2162,20 @@ LibraryManager.library = { } // Add sign if needed - if (flagAlwaysSigned) { - if (currArg < 0) { - prefix = '-' + prefix; - } else { + if (currArg >= 0) { + if (flagAlwaysSigned) { prefix = '+' + prefix; + } else if (flagPadSign) { + prefix = ' ' + prefix; } } + // Move sign to prefix so we zero-pad after the sign + if (argText.charAt(0) == '-') { + prefix = '-' + prefix; + argText = argText.substr(1); + } + // Add padding. while (prefix.length + argText.length < width) { if (flagLeftAlign) { @@ -2248,8 +2258,12 @@ LibraryManager.library = { if (next == {{{ charCode('E') }}}) argText = argText.toUpperCase(); // Add sign. - if (flagAlwaysSigned && currArg >= 0) { - argText = '+' + argText; + if (currArg >= 0) { + if (flagAlwaysSigned) { + argText = '+' + argText; + } else if (flagPadSign) { + argText = ' ' + argText; + } } } |