csv: 20% faster.

db4
John Benediktsson 2012-07-14 15:33:24 -07:00
parent 1ea580d911
commit 49c2ec6180
1 changed files with 6 additions and 8 deletions

View File

@ -14,7 +14,7 @@ CHAR: , delimiter set-global
: delimiter> ( -- delimiter ) delimiter get ; inline : delimiter> ( -- delimiter ) delimiter get ; inline
MEMO: (field-end) ( delimiter -- delimiter' ) MEMO: (field-end) ( delimiter -- delimiter' )
"\n" swap suffix ; "\n" swap suffix ; inline
: skip-to-field-end ( -- endchar ) : skip-to-field-end ( -- endchar )
delimiter> (field-end) read-until nip ; inline delimiter> (field-end) read-until nip ; inline
@ -22,16 +22,14 @@ MEMO: (field-end) ( delimiter -- delimiter' )
DEFER: quoted-field DEFER: quoted-field
MEMO: (quoted-field) ( delimiter -- delimiter' ) MEMO: (quoted-field) ( delimiter -- delimiter' )
"\"\n" swap suffix ; "\"\n" swap suffix ; inline
: not-quoted-field ( -- endchar ) : not-quoted-field ( -- endchar )
delimiter> (quoted-field) read-until delimiter> (quoted-field) read-until
dup { dup CHAR: " =
{ CHAR: " [ 2drop quoted-field ] } [ 2drop quoted-field ]
{ delimiter> [ swap [ blank? ] trim % ] } [ swap [ blank? ] trim % ]
{ CHAR: \n [ swap [ blank? ] trim % ] } if ;
{ f [ swap [ blank? ] trim % ] }
} case ;
: maybe-escaped-quote ( -- endchar ) : maybe-escaped-quote ( -- endchar )
read1 dup { read1 dup {