! Copyright (C) 2016 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs combinators.extras kernel math sequences
-sequences.deep sequences.extras sequences.private strings
-unicode ;
+sequences.deep sequences.extras strings unicode ;
IN: modern.slices
: >strings ( seq -- str )
ERROR: subseq-expected-but-got-eof n string expected ;
:: slice-til-string ( n string search -- n' string payload end-string )
- search string n subseq-start-from :> n'
+ n string search subseq-index-from :> n'
n' [ n string search subseq-expected-but-got-eof ] unless
n' search length + string
n n' string ?<slice>
: rewind-slice ( n string slice -- n' string )
2nip [ from>> ] [ seq>> ] bi ; inline
-:: take-from? ( n seq subseq -- n'/f seq ? )
- subseq seq n pick length (subseq-start-from) 2nip [
+:: take-from? ( n seq subseq -- n'/f seq ? )
+ n seq subseq subseq-starts-at? [
n subseq length +
seq
t