]> gitweb.factorcode.org Git - factor.git/commitdiff
sequences.extras: adding pad-center.
authorJohn Benediktsson <mrjbq7@gmail.com>
Wed, 3 Aug 2016 18:25:06 +0000 (11:25 -0700)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 3 Aug 2016 18:25:06 +0000 (11:25 -0700)
extra/sequences/extras/extras-tests.factor
extra/sequences/extras/extras.factor

index 4016696298d7e5af0d3f60fd5f31ce3f3e23bbfb..eef8d01888e85bac47dd6c0d8fad9e5ac70d16c9 100644 (file)
@@ -21,6 +21,21 @@ IN: sequences.extras.tests
 { "abc" "   " } [ "abc" "" CHAR: \s pad-longest ] unit-test
 { "abc..." "foobar" } [ "abc" "foobar" CHAR: . pad-longest ] unit-test
 
+{
+    {
+        "ABC"
+        "ABC"
+        "ABC"
+        "ABC"
+        "ABC-"
+        "-ABC-"
+        "-ABC--"
+        "--ABC--"
+    }
+} [
+    "ABC" 8 iota [ CHAR: - pad-center ] with map
+] unit-test
+
 { { 0 1 0 1 } } [
     { 0 0 0 0 } { 1 3 } over [ 1 + ] change-nths
 ] unit-test
index e23c9725d1f3d2da8368b4e4fddd5b596ff5cd05..cc459ebead037ee47dd03a58918b5c1daca54e9a 100644 (file)
@@ -82,6 +82,13 @@ 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 <repetition> seq right elt <repetition>
+    seq 3append-as ;
+
 : change-nths ( ... indices seq quot: ( ... elt -- ... elt' ) -- ... )
     [ change-nth ] 2curry each ; inline