Implement missing 'space' formatting flag
This flag causes space (padding) to be reserved for the sign even if the number is positive. It is basically the same as the 'plus' flag except that a space is displayed instead of a plus sign. The 'plus' flag takes precedence.
This commit is contained in:
Родитель
b72b6d8972
Коммит
61c9d6ede1
|
@ -1974,6 +1974,7 @@ LibraryManager.library = {
|
||||||
var flagLeftAlign = false;
|
var flagLeftAlign = false;
|
||||||
var flagAlternative = false;
|
var flagAlternative = false;
|
||||||
var flagZeroPad = false;
|
var flagZeroPad = false;
|
||||||
|
var flagPadSign = false;
|
||||||
flagsLoop: while (1) {
|
flagsLoop: while (1) {
|
||||||
switch (next) {
|
switch (next) {
|
||||||
case {{{ charCode('+') }}}:
|
case {{{ charCode('+') }}}:
|
||||||
|
@ -1992,6 +1993,9 @@ LibraryManager.library = {
|
||||||
flagZeroPad = true;
|
flagZeroPad = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case {{{ charCode(' ') }}}:
|
||||||
|
flagPadSign = true;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break flagsLoop;
|
break flagsLoop;
|
||||||
}
|
}
|
||||||
|
@ -2158,8 +2162,12 @@ LibraryManager.library = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add sign if needed
|
// Add sign if needed
|
||||||
if (flagAlwaysSigned && currArg >= 0) {
|
if (currArg >= 0) {
|
||||||
prefix = '+' + prefix;
|
if (flagAlwaysSigned) {
|
||||||
|
prefix = '+' + prefix;
|
||||||
|
} else if (flagPadSign) {
|
||||||
|
prefix = ' ' + prefix;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Move sign to prefix so we zero-pad after the sign
|
// Move sign to prefix so we zero-pad after the sign
|
||||||
|
@ -2250,8 +2258,12 @@ LibraryManager.library = {
|
||||||
if (next == {{{ charCode('E') }}}) argText = argText.toUpperCase();
|
if (next == {{{ charCode('E') }}}) argText = argText.toUpperCase();
|
||||||
|
|
||||||
// Add sign.
|
// Add sign.
|
||||||
if (flagAlwaysSigned && currArg >= 0) {
|
if (currArg >= 0) {
|
||||||
argText = '+' + argText;
|
if (flagAlwaysSigned) {
|
||||||
|
argText = '+' + argText;
|
||||||
|
} else if (flagPadSign) {
|
||||||
|
argText = ' ' + argText;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,12 @@ Decimals: 1977 650000 12 4
|
||||||
Preceding with blanks: 1977 -1977
|
Preceding with blanks: 1977 -1977
|
||||||
Preceding with zeros: 0000001977 -000001977
|
Preceding with zeros: 0000001977 -000001977
|
||||||
Force sign: +1977 -1977 +1977 -1977
|
Force sign: +1977 -1977 +1977 -1977
|
||||||
|
Force sign or space: 1977 -1977 1977 -1977
|
||||||
|
Sign overrides space: +1977 -1977 +1977 -1977
|
||||||
Some different radixes: 100 64 144 0x64 0144
|
Some different radixes: 100 64 144 0x64 0144
|
||||||
floats: 3.14 +3e+00 3.141600E+00 00003.14
|
floats: 3.14 +3e+00 3.141600E+00 00003.14
|
||||||
negative floats: -3.14 -3e+00 -3.141600E+00 -0003.14
|
negative floats: -3.14 -3e+00 -3.141600E+00 -0003.14
|
||||||
|
Force sign or space: 3.14 -3.14 3.14 -3.14
|
||||||
Width trick: 10
|
Width trick: 10
|
||||||
A string %
|
A string %
|
||||||
Null string: (null)
|
Null string: (null)
|
||||||
|
|
|
@ -6,9 +6,12 @@ Decimals: 1977 650000 12 4
|
||||||
Preceding with blanks: 1977 -1977
|
Preceding with blanks: 1977 -1977
|
||||||
Preceding with zeros: 0000001977 -000001977
|
Preceding with zeros: 0000001977 -000001977
|
||||||
Force sign: +1977 -1977 +1977 -1977
|
Force sign: +1977 -1977 +1977 -1977
|
||||||
|
Force sign or space: 1977 -1977 1977 -1977
|
||||||
|
Sign overrides space: +1977 -1977 +1977 -1977
|
||||||
Some different radixes: 100 64 144 0x64 0144
|
Some different radixes: 100 64 144 0x64 0144
|
||||||
floats: 3.14 +3e+00 3.141600E+00 00003.14
|
floats: 3.14 +3e+00 3.141600E+00 00003.14
|
||||||
negative floats: -3.14 -3e+00 -3.141600E+00 -0003.14
|
negative floats: -3.14 -3e+00 -3.141600E+00 -0003.14
|
||||||
|
Force sign or space: 3.14 -3.14 3.14 -3.14
|
||||||
Width trick: 10
|
Width trick: 10
|
||||||
A string %
|
A string %
|
||||||
Null string: (null)
|
Null string: (null)
|
||||||
|
|
|
@ -11,9 +11,12 @@ int main() {
|
||||||
printf("Preceding with blanks: %10d %10d\n", 1977, -1977);
|
printf("Preceding with blanks: %10d %10d\n", 1977, -1977);
|
||||||
printf("Preceding with zeros: %010d %010d\n", 1977, -1977);
|
printf("Preceding with zeros: %010d %010d\n", 1977, -1977);
|
||||||
printf("Force sign: %+d %+d %+6d %+6d\n", 1977, -1977, 1977, -1977);
|
printf("Force sign: %+d %+d %+6d %+6d\n", 1977, -1977, 1977, -1977);
|
||||||
|
printf("Force sign or space: % d % d % 6d % 6d\n", 1977, -1977, 1977, -1977);
|
||||||
|
printf("Sign overrides space: % +d % +d % +6d % +6d\n", 1977, -1977, 1977, -1977);
|
||||||
printf("Some different radixes: %d %x %o %#x %#o\n", 100, 100, 100, 100, 100);
|
printf("Some different radixes: %d %x %o %#x %#o\n", 100, 100, 100, 100, 100);
|
||||||
printf("floats: %4.2f %+.0e %E %08.2f\n", 3.1416, 3.1416, 3.1416, 3.1416);
|
printf("floats: %4.2f %+.0e %E %08.2f\n", 3.1416, 3.1416, 3.1416, 3.1416);
|
||||||
printf("negative floats: %4.2f %+.0e %E %08.2f\n", -3.1416, -3.1416, -3.1416, -3.1416);
|
printf("negative floats: %4.2f %+.0e %E %08.2f\n", -3.1416, -3.1416, -3.1416, -3.1416);
|
||||||
|
printf("Force sign or space: % .2f % .2f % 6.2f % 6.2f\n", 3.1416, -3.1416, 3.1416, -3.1416);
|
||||||
printf("Width trick: %*d\n", 5, 10);
|
printf("Width trick: %*d\n", 5, 10);
|
||||||
printf("%s %%\n", "A string");
|
printf("%s %%\n", "A string");
|
||||||
printf("Null string: %7s\n", NULL);
|
printf("Null string: %7s\n", NULL);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче