io.streams.sequence: bounds check sequence-read-until.
parent
0b04d3f279
commit
ee9ead89f8
|
@ -15,9 +15,7 @@ M: string-reader stream-read-unsafe
|
||||||
[ dup string? [ "not a string" throw ] unless ]
|
[ dup string? [ "not a string" throw ] unless ]
|
||||||
[ sequence-read-unsafe ] tri* ;
|
[ sequence-read-unsafe ] tri* ;
|
||||||
M: string-reader stream-read1 sequence-read1 ;
|
M: string-reader stream-read1 sequence-read1 ;
|
||||||
M: string-reader stream-read-until
|
M: string-reader stream-read-until sequence-read-until ;
|
||||||
dup >sequence-stream< bounds-check?
|
|
||||||
[ sequence-read-until ] [ 2drop f f ] if ;
|
|
||||||
M: string-reader stream-readln
|
M: string-reader stream-readln
|
||||||
dup >sequence-stream< bounds-check? [
|
dup >sequence-stream< bounds-check? [
|
||||||
"\r\n" over sequence-read-until CHAR: \r eq? [
|
"\r\n" over sequence-read-until CHAR: \r eq? [
|
||||||
|
|
|
@ -35,11 +35,15 @@ SLOT: i
|
||||||
[ member-eq? ] curry [ find-from swap ] curry 2keep
|
[ member-eq? ] curry [ find-from swap ] curry 2keep
|
||||||
pick [ drop - ] [ length swap - nip ] if ; inline
|
pick [ drop - ] [ length swap - nip ] if ; inline
|
||||||
|
|
||||||
: sequence-read-until ( seps stream -- seq sep/f )
|
: (sequence-read-until) ( seps stream -- seq sep/f )
|
||||||
[ find-separator ] keep
|
[ find-separator ] keep
|
||||||
[ [ (sequence-read-unsafe) ] (read-into-new) ]
|
[ [ (sequence-read-unsafe) ] (read-into-new) ]
|
||||||
[ [ 1 + ] change-i drop ] bi swap ; inline
|
[ [ 1 + ] change-i drop ] bi swap ; inline
|
||||||
|
|
||||||
|
: sequence-read-until ( seps stream -- seq sep/f )
|
||||||
|
dup >sequence-stream< bounds-check?
|
||||||
|
[ (sequence-read-until) ] [ 2drop f f ] if ; inline
|
||||||
|
|
||||||
! Writers
|
! Writers
|
||||||
M: growable dispose drop ;
|
M: growable dispose drop ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue