formatting: revert change to %d, %o, %b, %x for now.

We should have a format character in the future to format using our Factor
binary, octal, and hex parser.  Maybe using the "alternate form" format
character like Python does? And if we do that, maybe print the 0b, 0o, 0x
prefixes? TBD.
modern-harvey2
John Benediktsson 2017-06-10 13:31:26 -07:00
parent c503659a93
commit 0fddbc2af1
3 changed files with 24 additions and 41 deletions

View File

@ -1,5 +1,5 @@
USING: help.syntax help.markup kernel prettyprint sequences strings ;
USING: assocs help.markup help.syntax kernel math prettyprint
sequences strings ;
IN: formatting
@ -13,24 +13,22 @@ HELP: printf
"padding, and decimals."
$nl
{ $table
{ { $snippet "%%" } "Single %" "" }
{ { $snippet "%P.Ds" } "String format" "string" }
{ { $snippet "%P.DS" } "String format uppercase" "string" }
{ { $snippet "%P.Du" } "Unparsed format" "object" }
{ { $snippet "%c" } "Character format" "char" }
{ { $snippet "%C" } "Character format uppercase" "char" }
{ { $snippet "%LPd" } "Base 10 General format" "real" }
{ { $snippet "%LPx" } "Base 16 General format" "real" }
{ { $snippet "%LPX" } "Base 16 General format uppercase" "real" }
{ { $snippet "%LPo" } "Base 8 General format" "real" }
{ { $snippet "%LPO" } "Base 8 General format uppercase" "real" }
{ { $snippet "%LPb" } "Base 2 General format" "real" }
{ { $snippet "%LPB" } "Base 2 General format uppercase" "real" }
{ { $snippet "%LP.De" } "Base 10 Scientific format" "real" }
{ { $snippet "%LP.DE" } "Base 10 Scientific format uppercase" "real" }
{ { $snippet "%LP.Df" } "Base 10 Fixed format" "real" }
{ { $snippet "%[%?, %]" } "Sequence format" "sequence" }
{ { $snippet "%[%?: %? %]" } "Assocs format" "assocs" }
{ { $snippet "%%" } "Single %" "" }
{ { $snippet "%P.Ds" } "String" { $link string } }
{ { $snippet "%P.DS" } "String uppercase" { $link string } }
{ { $snippet "%P.Du" } "Unparsed" { $link object } }
{ { $snippet "%c" } "Character" "char" }
{ { $snippet "%C" } "Character uppercase" "char" }
{ { $snippet "%LPd" } "Integer decimal (base 10)" { $link real } }
{ { $snippet "%LPx" } "Integer hexadecimal (base 16)" { $link real } }
{ { $snippet "%LPX" } "Integer hexadecimal uppercase (base 16)" { $link real } }
{ { $snippet "%LPo" } "Integer octal (base 8)" { $link real } }
{ { $snippet "%LPb" } "Integer binary (base 2)" { $link real } }
{ { $snippet "%LP.De" } "Scientific (base 10)" { $link real } }
{ { $snippet "%LP.DE" } "Scientific uppercase (base 10)" { $link real } }
{ { $snippet "%LP.Df" } "Fixed (base 10)" { $link real } }
{ { $snippet "%[%?, %]" } "Sequence" { $link sequence } }
{ { $snippet "%[%?: %? %]" } "Assocs" { $link assoc } }
}
$nl
"Leading (" { $snippet "L" } ") is used to optionally prefix a plus sign (" { $snippet "\"+\"" } ") or space (" { $snippet "\" \"" } ") "

View File

@ -116,19 +116,6 @@ IN: formatting.tests
{ "1.0e+418" } [ 997654321098765432 10 400 ^ * "%.1e" sprintf ] unit-test
{ "1.00e+418" } [ 999654321098765432 10 400 ^ * "%.2e" sprintf ] unit-test
{ "1.5625" } [ 1.5625 "%d" sprintf ] unit-test
{ "1.9p0" } [ 1.5625 "%x" sprintf ] unit-test
{ "1.9P0" } [ 1.5625 "%X" sprintf ] unit-test
{ "1.44p0" } [ 1.5625 "%o" sprintf ] unit-test
{ "1.44P0" } [ 1.5625 "%O" sprintf ] unit-test
{ "1.1001p0" } [ 1.5625 "%b" sprintf ] unit-test
{ "1.1001P0" } [ 1.5625 "%B" sprintf ] unit-test
{ "14+17/20" } [ 14+17/20 "%d" sprintf ] unit-test
{ "e+11/14" } [ 14+17/20 "%x" sprintf ] unit-test
{ "E+11/14" } [ 14+17/20 "%X" sprintf ] unit-test
{ "16+21/24" } [ 14+17/20 "%o" sprintf ] unit-test
{ "1110+10001/10100" } [ 14+17/20 "%b" sprintf ] unit-test
{ "ff" } [ 0xff "%x" sprintf ] unit-test
{ "FF" } [ 0xff "%X" sprintf ] unit-test
{ "0f" } [ 0xf "%02x" sprintf ] unit-test

View File

@ -121,22 +121,20 @@ fmt-C = "C" => [[ [ 1string >upper ] ]]
fmt-s = "s" => [[ [ present ] ]]
fmt-S = "S" => [[ [ present >upper ] ]]
fmt-u = "u" => [[ [ unparse ] ]]
fmt-d = "d" => [[ [ number>string ] ]]
fmt-o = "o" => [[ [ >oct ] ]]
fmt-O = "O" => [[ [ >oct >upper ] ]]
fmt-b = "b" => [[ [ >bin ] ]]
fmt-B = "B" => [[ [ >bin >upper ] ]]
fmt-d = "d" => [[ [ >integer number>string ] ]]
fmt-o = "o" => [[ [ >integer >oct ] ]]
fmt-b = "b" => [[ [ >integer >bin ] ]]
fmt-e = digits "e" => [[ first '[ _ format-scientific ] ]]
fmt-E = digits "E" => [[ first '[ _ format-scientific >upper ] ]]
fmt-f = digits "f" => [[ first '[ _ format-decimal ] ]]
fmt-x = "x" => [[ [ >hex ] ]]
fmt-X = "X" => [[ [ >hex >upper ] ]]
fmt-x = "x" => [[ [ >integer >hex ] ]]
fmt-X = "X" => [[ [ >integer >hex >upper ] ]]
unknown = (.)* => [[ unknown-printf-directive ]]
strings_ = fmt-c|fmt-C|fmt-s|fmt-S|fmt-u
strings = pad width strings_ => [[ <reversed> compose-all ]]
numbers_ = fmt-d|fmt-o|fmt-O|fmt-b|fmt-B|fmt-e|fmt-E|fmt-f|fmt-x|fmt-X
numbers_ = fmt-d|fmt-o|fmt-b|fmt-e|fmt-E|fmt-f|fmt-x|fmt-X
numbers = sign pad numbers_ => [[ unclip-last prefix compose-all [ fix-sign ] append ]]
types = strings|numbers