From 49c2ec6180f70fab2cffccd391ad91fed3b84fb7 Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Sat, 14 Jul 2012 15:33:24 -0700 Subject: [PATCH] csv: 20% faster. --- basis/csv/csv.factor | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/basis/csv/csv.factor b/basis/csv/csv.factor index b7c08ceec5..aa35264f12 100644 --- a/basis/csv/csv.factor +++ b/basis/csv/csv.factor @@ -14,7 +14,7 @@ CHAR: , delimiter set-global : delimiter> ( -- delimiter ) delimiter get ; inline MEMO: (field-end) ( delimiter -- delimiter' ) - "\n" swap suffix ; + "\n" swap suffix ; inline : skip-to-field-end ( -- endchar ) delimiter> (field-end) read-until nip ; inline @@ -22,16 +22,14 @@ MEMO: (field-end) ( delimiter -- delimiter' ) DEFER: quoted-field MEMO: (quoted-field) ( delimiter -- delimiter' ) - "\"\n" swap suffix ; + "\"\n" swap suffix ; inline : not-quoted-field ( -- endchar ) delimiter> (quoted-field) read-until - dup { - { CHAR: " [ 2drop quoted-field ] } - { delimiter> [ swap [ blank? ] trim % ] } - { CHAR: \n [ swap [ blank? ] trim % ] } - { f [ swap [ blank? ] trim % ] } - } case ; + dup CHAR: " = + [ 2drop quoted-field ] + [ swap [ blank? ] trim % ] + if ; : maybe-escaped-quote ( -- endchar ) read1 dup {