]> gitweb.factorcode.org Git - factor.git/blobdiff - core/splitting/splitting.factor
sequences: Add join-as, which takes an exemplar. Move split-subseq and replace from...
[factor.git] / core / splitting / splitting.factor
index 0398cb66d66a9861b2ba43b2805e35b4bc9dafea..65125eed467b552c16fb6d040af38b2d10f5d83b 100644 (file)
@@ -44,6 +44,13 @@ PRIVATE>
 : split1-slice ( seq subseq -- before-slice after-slice )
     [ snip-slice ] (split1) ;
 
+: split-subseq ( seq subseq -- seqs )
+    dup empty? [
+        drop 1array
+    ] [
+        [ dup ] swap [ split1-slice swap ] curry produce nip
+    ] if ;
+
 : split1-when ( ... seq quot: ( ... elt -- ... ? ) -- ... before after )
     dupd find drop [ swap [ dup 1 + ] dip snip ] [ f ] if* ; inline
 
@@ -55,6 +62,9 @@ PRIVATE>
     [ <reversed> ] bi@ split1-slice [ <reversed> ] bi@
     [ f ] [ swap ] if-empty ;
 
+: replace ( seq old new -- new-seq )
+    pick [ [ split-subseq ] dip ] dip join-as ;
+
 <PRIVATE
 
 : (split) ( n seq quot: ( ... elt -- ... ? ) -- )