]> gitweb.factorcode.org Git - factor.git/commitdiff
add surround and glue to sequences
authorDoug Coleman <doug.coleman@gmail.com>
Wed, 3 Dec 2008 14:32:54 +0000 (08:32 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Wed, 3 Dec 2008 14:32:54 +0000 (08:32 -0600)
core/sequences/sequences-docs.factor
core/sequences/sequences-tests.factor
core/sequences/sequences.factor

index cc8daba8c0a812bc9daa947a7507dfc5e8de0ebd..08831579bb4c977fada07f422946c348f54a6970 100644 (file)
@@ -714,6 +714,26 @@ HELP: 3append
     }
 } ;
 
+HELP: surround
+{ $values { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "newseq" sequence } }
+{ $description "Outputs a new sequence with " { $snippet "seq1" } " inserted between " { $snippet "seq2" } " and " { $snippet "seq3" } "." }
+{ $examples
+    { $example "USING: sequences prettyprint ;"
+               "\"sssssh\" \"(\" \")\" surround ."
+               "\"(sssssh)\""
+    }
+} ;
+
+HELP: glue
+{ $values { "seq1" sequence } { "seq2" sequence } { "seq3" sequence } { "newseq" sequence } }
+{ $description "Outputs a new sequence with " { $snippet "seq3" } " inserted between " { $snippet "seq1" } " and " { $snippet "seq2" } "." }
+{ $examples
+    { $example "USING: sequences prettyprint ;"
+               "\"a\" \"b\" \",\" glue ."
+               "\"a,b\""
+    }
+} ;
+
 HELP: subseq
 { $values { "from" "a non-negative integer" } { "to" "a non-negative integer" } { "seq" sequence } { "subseq" "a new sequence" } }
 { $description "Outputs a new sequence consisting of all elements starting from and including " { $snippet "from" } ", and up to but not including " { $snippet "to" } "." }
@@ -1348,6 +1368,8 @@ ARTICLE: "sequences-appending" "Appending sequences"
 { $subsection append }
 { $subsection prepend }
 { $subsection 3append }
+{ $subsection surround }
+{ $subsection glue }
 { $subsection concat }
 { $subsection join }
 "A pair of words useful for aligning strings:"
index e27f2410b3a06ddd14f9c5dd7e1cb1ad86111b2c..0d795d453aa44a5b6c6acd2d1838204fb41463e0 100644 (file)
@@ -268,3 +268,6 @@ M: bogus-hashcode hashcode* 2drop 0 >bignum ;
 [ { 1 3 "X" 5 7 } ] [ "X" 2 { 1 3 5 7 } insert-nth ] unit-test
 
 [ V{ 0 2 } ] [ "a" { "a" "b" "a" } indices ] unit-test
+
+[ "a,b" ] [ "a" "b" "," glue ] unit-test
+[ "(abc)" ] [ "abc" "(" ")" surround ] unit-test
index 118969bd3c82394a8427a4d2e66b59cef69d7cdc..3461266081d9de2ac0d1529500d0656fe78c0cea 100644 (file)
@@ -317,6 +317,10 @@ PRIVATE>
 
 : 3append ( seq1 seq2 seq3 -- newseq ) pick 3append-as ;
 
+: surround ( seq1 seq2 seq3 -- newseq ) swapd 3append ; inline
+
+: glue ( seq1 seq2 seq3 -- newseq ) swap 3append ; inline
+
 : change-nth ( i seq quot -- )
     [ [ nth ] dip call ] 3keep drop set-nth ; inline