From cd0a55e4a8c94b8e80c1b4b604831bdec4e522eb Mon Sep 17 00:00:00 2001 From: Nala Ginrut Date: Fri, 8 Feb 2013 11:04:58 +0800 Subject: [PATCH] add sxml->csv and csv-write --- csv.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/csv.scm b/csv.scm index 5558b7e..a2cb5e7 100644 --- a/csv.scm +++ b/csv.scm @@ -23,7 +23,7 @@ (define-module (csv) #:use-module (ice-9 optargs) #:use-module (sxml simple) - #:export (make-csv-reader csv->xml)) + #:export (make-csv-reader csv->xml sxml->csv csv-write)) ;;; FIXME: rewrite with some kind of parser generator? functional, of ;;; course :-) Based on code from Ken Anderson , from @@ -96,4 +96,11 @@ (r (string->symbol (format #f "record-~a" n)))) (lp (cdr rest) (cons (list r line) result) (1+ n)))))))) - +(define* (sxml->csv sxml port #:key (delimiter #\,)) + (let* ((d (string delimiter)) + (csv (map (lambda (l) (string-join l d)) sxml))) + (for-each (lambda (l) + (format port "~a~%" l)) + csv))) + +(define csv-write sxml->csv)