sequences.extras: adding slice-when (non-destructive split-when).
parent
449814a387
commit
5b83dc2e90
|
@ -1,4 +1,5 @@
|
||||||
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
|
IN: sequences.extras.tests
|
||||||
|
|
||||||
|
@ -45,3 +46,6 @@ IN: sequences.extras.tests
|
||||||
|
|
||||||
{ " a b c d e " }
|
{ " a b c d e " }
|
||||||
[ " a b c d e " [ blank? ] " " collapse ] unit-test
|
[ " a b c d e " [ blank? ] " " collapse ] unit-test
|
||||||
|
|
||||||
|
{ { "hello," " " "world!" " " " " } }
|
||||||
|
[ "hello, world! " [ blank? ] slice-when [ >string ] map ] unit-test
|
||||||
|
|
|
@ -95,3 +95,11 @@ IN: sequences.extras
|
||||||
[ [ first empty? ] dip [ prepend ] curry when ]
|
[ [ first empty? ] dip [ prepend ] curry when ]
|
||||||
[ [ last empty? ] dip [ append ] curry when ]
|
[ [ last empty? ] dip [ append ] curry when ]
|
||||||
2tri ; inline
|
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
|
||||||
|
|
Loading…
Reference in New Issue