[ pick subseq ] keep swap
] map 2nip ;
-! lines uses string-nth-fast which is 50% faster over
+! split-lines uses string-nth-fast which is 50% faster over
! nth-unsafe. be careful when changing the definition so that
! you don't unoptimize it.
-GENERIC: lines ( seq -- seq' )
+GENERIC: split-lines ( seq -- seq' )
-ALIAS: string-lines lines
+ALIAS: string-lines split-lines
-M: string lines
+M: string split-lines
[ V{ } clone 0 ] dip [ 2dup bounds-check? ] [
2dup [ "\r\n" member? ] find-from swapd [
over [ [ nip length ] keep ] unless
] when
] while 2drop { } like ;
-M: sbuf lines "" like lines ;
+M: sbuf split-lines "" like split-lines ;
-: unlines-as ( seq exemplar -- seq ) "\n" swap join-as ; inline
-: unlines ( seq -- seq ) "" unlines-as ; inline
-: words ( seq -- seq ) " " split ; inline
-: unwords-as ( seq exemplar -- seq ) " " swap join-as ; inline
-: unwords ( seq -- seq ) " " unwords-as ; inline
+: join-lines-as ( seq exemplar -- seq ) "\n" swap join-as ; inline
+: join-lines ( seq -- seq ) "" join-lines-as ; inline
+: split-words ( seq -- seq ) " " split ; inline
+: join-words-as ( seq exemplar -- seq ) " " swap join-as ; inline
+: join-words ( seq -- seq ) " " join-words-as ; inline