-
-USING: help.syntax help.markup kernel prettyprint sequences strings ;
+USING: assocs help.markup help.syntax kernel math prettyprint
+sequences strings ;
IN: formatting
"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 "\" \"" } ") "
{ "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
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