Recently Written · git

CSV

Convert CSV (in a reader macro, or in a file) in to Lisp lists.

git clone https://github.com/equwal/CSV

Log | Files | Refs


commit 374842de191e56f2f0f5e14100f093846068aaca
Spenser Truex <spensertruexonline@gmail.com>
2019-01-07 11:55:07 -0800

Fix quoting bug

 csv.lisp | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/csv.lisp b/csv.lisp
index 244b6e3..7665baf 100644
--- a/csv.lisp
+++ b/csv.lisp
@@ -45,13 +45,12 @@
                    (inner (subseq str (1+ res)) (push (subseq str 0 res) acc!))))))
     (inner str nil)))
 (make-reader my-csv (stream #\# #\!)
-  (macrolet ((once (&body body) ``',,@body))
-    (do ((prev #1= (read-char stream nil nil) curr)
-	 (curr #1# #1#)
-	 (str (make-array 0 :adjustable t :element-type 'character)
-	      (switches prev curr str)))
-	((and (char= curr #\#)
-              (char= prev #\!)) (once (splice (switches nil nil str)))))))
+  (do ((prev #1= (read-char stream nil nil) curr)
+       (curr #1# #1#)
+       (str (make-array 0 :adjustable t :element-type 'character)
+	    (switches prev curr str)))
+      ((and (char= curr #\#)
+            (char= prev #\!)) (splice (switches nil nil str)))))
 (defun read-to-string (stream)
   (with-output-to-string (s)
     (dolines (line stream)