formatting: adding vprintf by request.

db4
John Benediktsson 2013-05-14 09:22:14 -07:00
parent 40fcee3f16
commit f29aac24bb
2 changed files with 12 additions and 1 deletions

View File

@ -21,6 +21,8 @@ IN: formatting.tests
[ "1.2346" ] [ 1.23456789 "%.4f" sprintf ] unit-test
[ " 1.23" ] [ 1.23456789 "%6.2f" sprintf ] unit-test
{ "foo: 1 bar: 2" } [ { 1 2 3 } "foo: %d bar: %s" vsprintf ] unit-test
os windows? [
[ "1.234000e+008" ] [ 123400000 "%e" sprintf ] unit-test
[ "-1.234000e+008" ] [ -123400000 "%e" sprintf ] unit-test

View File

@ -98,6 +98,15 @@ MACRO: printf ( format-string -- )
: sprintf ( format-string -- result )
[ printf ] with-string-writer ; inline
: vprintf ( seq format-string -- )
parse-printf reverse! [
first dup string?
[ '[ _ write ] ] [ '[ unclip-slice @ write ] ] if
] map concat call( x -- x ) drop ;
: vsprintf ( seq format-string -- result )
[ vprintf ] with-string-writer ; inline
<PRIVATE
: pad-00 ( n -- string ) number>string 2 CHAR: 0 pad-head ; inline