-USING: ascii kernel make math sequences sequences.extras tools.test ;
+USING: ascii kernel make math sequences sequences.extras strings
+tools.test ;
IN: sequences.extras.tests
{ " a b c d e " }
[ " a b c d e " [ blank? ] " " collapse ] unit-test
+
+{ { "hello," " " "world!" " " " " } }
+[ "hello, world! " [ blank? ] slice-when [ >string ] map ] unit-test
[ [ first empty? ] dip [ prepend ] curry when ]
[ [ last empty? ] dip [ append ] curry when ]
2tri ; inline
+
+:: slice-when ( seq quot: ( elt -- ? ) -- seq' )
+ seq length :> len
+ 0 [ len dupd < ] [
+ dup seq quot find-from drop
+ [ 2dup = [ 1 + ] when ] [ len ] if*
+ [ seq <slice> ] keep len or swap
+ ] produce nip ; inline