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
parent
c503659a93
commit
0fddbc2af1
|
@ -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 "\" \"" } ") "
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue