From 83a8e056b68bd9d185264b3a220ddb81e60eba3f Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Thu, 10 Dec 2020 17:12:20 -0800 Subject: [PATCH] sequences.extras: simplify pad-center, add docs. --- extra/sequences/extras/extras-docs.factor | 5 +++++ extra/sequences/extras/extras.factor | 10 ++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/extra/sequences/extras/extras-docs.factor b/extra/sequences/extras/extras-docs.factor index 58dc7bba66..93d5dd7111 100644 --- a/extra/sequences/extras/extras-docs.factor +++ b/extra/sequences/extras/extras-docs.factor @@ -2,6 +2,11 @@ USING: arrays help.markup help.syntax kernel math multiline quotations sequences ; IN: sequences.extras +HELP: pad-center +{ $values { "seq" sequence } { "n" "a non-negative integer" } { "elt" object } { "padded" "a new sequence" } } +{ $description "Outputs a new sequence consisting of " { $snippet "seq" } " padded on the left and right with enough repetitions of " { $snippet "elt" } " to have the result be of length " { $snippet "n" } "." } +{ $examples { $example "USING: io sequences ;" "{ \"ab\" \"quux\" } [ 5 CHAR: - pad-center print ] each" "-ab--\nquux-" } } ; + HELP: ?supremum { $values { "seq/f" { $maybe sequence } } diff --git a/extra/sequences/extras/extras.factor b/extra/sequences/extras/extras.factor index c20e3d448a..2746c0d733 100644 --- a/extra/sequences/extras/extras.factor +++ b/extra/sequences/extras/extras.factor @@ -61,12 +61,10 @@ IN: sequences.extras : pad-longest ( seq1 seq2 elt -- seq1 seq2 ) [ 2dup max-length ] dip [ pad-tail ] 2curry bi@ ; -:: pad-center ( seq n elt -- padded ) - n seq length [-] :> extra - extra 2/ :> left - extra left - :> right - left elt seq right elt - seq 3append-as ; +: pad-center ( seq n elt -- padded ) + swap pick length [-] [ drop ] [ + [ 2/ ] [ over - ] bi rot '[ _ ] bi@ surround + ] if-zero ; : change-nths ( ... indices seq quot: ( ... elt -- ... elt' ) -- ... ) [ change-nth ] 2curry each ; inline -- 2.34.1