diff options
-rw-r--r-- | stream.c | 3 | ||||
-rw-r--r-- | tests/018/format.tl | 5 | ||||
-rw-r--r-- | txr.1 | 12 |
3 files changed, 20 insertions, 0 deletions
@@ -3351,6 +3351,9 @@ val formatv(val stream_in, val fmtstr, struct args *al) case '+': case ' ': sign = ch; continue; + case '-': + sign = '0'; + continue; case '*': saved_state = state; state = vf_star; diff --git a/tests/018/format.tl b/tests/018/format.tl index b8cf7445..6c58d45b 100644 --- a/tests/018/format.tl +++ b/tests/018/format.tl @@ -24,6 +24,11 @@ (fmt "~4,03x" #xaf) " 0af" (fmt "~-4,03X" #xaf) "0AF ") +(mtest + (fmt "~8,02f" 12) " 0012.00" + (fmt "~8,+02f" 12) "+0012.00" + (fmt "~8,-02f" 12) "00012.00") + (test (fmt "~x" (sha256 "abc")) "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad") @@ -54526,9 +54526,21 @@ The precision specifier may begin with these optional characters: (the "leading zero indicator"), .coIP + (print a sign for positive values") +.coIP - +(print a zero in place of a positive sign). .IP space (print a space in place of a positive sign). .RE +If the +.codn + , +.code - +or +space are multiply specified, the rightmost one takes precedence. The +prefix character that these three options produce (plus sign, zero or space) is +produced unconditionally, even if it overflows the width of the field. +Leading zeros produced by the +.code 0 +option are not generated if they would overflow the field. The precision specifier itself follows: it must be either a decimal integer or the |