|
|
|
|
@ -1,7 +1,8 @@
|
|
|
|
|
;; guile-csv
|
|
|
|
|
;; Copyright (C) 2008, 2012, 2013
|
|
|
|
|
;; Copyright (C) 2008, 2012, 2013, 2021
|
|
|
|
|
;; Andy Wingo <wingo at pobox dot com>
|
|
|
|
|
;; Nala Ginrut <nalaginrut@gmail.com>
|
|
|
|
|
;; Brady McDonough
|
|
|
|
|
|
|
|
|
|
;; This program is free software; you can redistribute it and/or modify
|
|
|
|
|
;; it under the terms of the GNU Lesser General Public License as
|
|
|
|
|
@ -36,13 +37,17 @@
|
|
|
|
|
(define (finish-cell b seed)
|
|
|
|
|
(have-cell (list->string (reverse b)) seed))
|
|
|
|
|
(define (next-cell b seed)
|
|
|
|
|
(state-init (!) (finish-cell b seed)))
|
|
|
|
|
(state-finish-cell (!) (finish-cell b seed)))
|
|
|
|
|
(define (state-init c seed)
|
|
|
|
|
(cond ((eqv? c delimiter) (state-init (!) (have-cell "" seed)))
|
|
|
|
|
((eqv? c #\") (state-string (!) '() seed))
|
|
|
|
|
((eqv? c #\newline) seed)
|
|
|
|
|
((eqv? c #\newline) (have-cell "" seed))
|
|
|
|
|
((eof-object? c) seed)
|
|
|
|
|
(else (state-any c '() seed))))
|
|
|
|
|
(define (state-finish-cell c seed)
|
|
|
|
|
(cond ((eqv? c #\newline) seed)
|
|
|
|
|
((eof-object? c) seed)
|
|
|
|
|
(else (state-init c seed))))
|
|
|
|
|
(define (state-string c b seed)
|
|
|
|
|
(cond ((eqv? c #\") (state-string-quote (!) b seed))
|
|
|
|
|
((eof-object? c) (error "Open double-quoted string" (list->string (reverse b))))
|
|
|
|
|
|