;; input stream based on character list (require-extension test typeclass csv) (require-library abnf) (import (only abnf Token.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- (Token.CharLex->CoreABNF char-list- char-list-)) (define char-list- (CoreABNF->CSV char-list- )) (define pcsv ((make-parser char-list-) #\|)) (define-values (fcell _ fcsv) (make-format #\|)) (test-group "csv parse test" (test `(,(list->csv-record (list "Test 1" "Test 2" "Test 3")) ,(list->csv-record (list "Test 4" "Test 5" ))) (pcsv "\"Test 1\"|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" ))))))