;; input stream based on character list (require-extension test typeclass csv) (require-library abnf) (import (only abnf CharLex->CoreABNF Input->Token Token->CharLex make- )) (define char-list- (make- null? car cdr)) (define char-list- (Input->Token char-list-)) (define char-list- (Token->CharLex char-list-)) (define char-list- (CharLex->CoreABNF char-list-)) (define char-list- (CoreABNF->CSV char-list- )) (define pcsv ((make-parser char-list-) #\|)) (define-values (fcell _ fcsv) (make-format #\|)) (define (->char-list s) (if (string? s) (string->list s) s)) (let ((res (pcsv (->char-list "\"Test \n1\"|Test 2|Test 3\nTest 4|Test 5\n")))) (print (map csv-record->list res))) (test-group "csv parse test" (test `(,(list->csv-record (list "Test \n1" "Test 2" "Test 3")) ,(list->csv-record (list "Test 4" "Test 5" ))) (pcsv (->char-list "\"Test \n1\"|Test 2|Test 3\nTest 4|Test 5\n")))) (test-group "csv format test" (test "Test 1|Test 2|Test 3\r\nTest 4|Test 5\r\n" (fcsv `(,(list->csv-record (list "Test 1" "Test 2" "Test 3")) ,(list->csv-record (list "Test 4" "Test 5" )))))) (test-exit)