From 0fddbc2af16dec30d7031d146f2a5cabe5ce899e Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sat, 10 Jun 2017 13:31:26 -0700 Subject: [PATCH] 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. --- basis/formatting/formatting-docs.factor | 38 +++++++++++------------- basis/formatting/formatting-tests.factor | 13 -------- basis/formatting/formatting.factor | 14 ++++----- 3 files changed, 24 insertions(+), 41 deletions(-) diff --git a/basis/formatting/formatting-docs.factor b/basis/formatting/formatting-docs.factor index 9d4d267e88..ee8b214138 100755 --- a/basis/formatting/formatting-docs.factor +++ b/basis/formatting/formatting-docs.factor @@ -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 "\" \"" } ") " diff --git a/basis/formatting/formatting-tests.factor b/basis/formatting/formatting-tests.factor index 957eb20df7..f018c8bb36 100755 --- a/basis/formatting/formatting-tests.factor +++ b/basis/formatting/formatting-tests.factor @@ -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 diff --git a/basis/formatting/formatting.factor b/basis/formatting/formatting.factor index 7cad3b9448..54c131c191 100644 --- a/basis/formatting/formatting.factor +++ b/basis/formatting/formatting.factor @@ -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_ => [[ 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 -- 2.34.1