;;;; csv-xml.scm -*- Hen -*-
;;;; Kon Lovett, Jun '17
;;;; Kon Lovett, ??? '??
(module csv-xml
(;export
;
reader-spec
;
make-csv-reader
make-csv-reader-maker
;
csv->list
csv->sxml
csv-for-each
csv-map
;
csv-reader? check-csv-reader error-csv-reader
csv-reader-spec? check-csv-reader-spec error-csv-reader-spec
;
writer-spec
;
make-csv-writer-maker
make-csv-writer
;
list->csv
#;list->sxml
;
csv-writer? check-csv-writer error-csv-writer
csv-writer-spec? check-csv-writer-spec error-csv-writer-spec)
(import scheme
chicken.base
chicken.string
moremacros
srfi-1
srfi-13
srfi-14
type-checks
unicode-utils
)
#;(import (except chicken provide))
;; (import chicken)
;;;
;Need to process `#lang' as well. So just "commented out" the "offending"
;sections in the source.
#;(define-syntax provide (syntax-rules () ((_ ?x0 ...) (begin))))
(define null '())
(include "csv-xml/csv.ss")
;;;
;; (import (only data-structures conc intersperse ->string alist-ref string-translate*))
;; (require-library data-structures)
;;
;; #;(import (only list-utils alist?))
;; (import (only (srfi 1) every iota append! map))
;; (require-library (srfi 1))
;;
;; (import (only (srfi 13) string-index))
;; (require-library (srfi 13))
;;
;; (import (only (srfi 14) char-set:iso-control))
;; (require-library (srfi 14))
;;
;; (import (only type-checks define-check+error-type check-string check-list))
;; (require-library type-checks)
;;
;; (import (only unicode-utils unicode-char->string))
;; (require-library unicode-utils)
;;
;; (require-extension moremacros)
;(from list-utils egg)
(define (alist? obj)
(if (pair? obj)
(every pair? obj)
(null? obj) ) )
;very loose ...
(define csv-reader-spec? alist?)
(define-check+error-type csv-reader-spec)
(define csv-reader? procedure?)
(define-check+error-type csv-reader)
(define (reader-spec
#!key
(newline-type 'lax)
(separator-chars '(#\,))
(quote-char #\")
(quote-doubling-escapes? #t)
(comment-chars '())
(whitespace-chars '(#\space))
(strip-leading-whitespace? #f)
(strip-trailing-whitespace? #f)
(newlines-in-quotes? #t))
`((newline-type . ,newline-type)
(separator-chars . ,separator-chars)
(quote-char . ,quote-char)
(quote-doubling-escapes? . ,quote-doubling-escapes?)
(comment-chars . ,comment-chars)
(whitespace-chars . ,whitespace-chars)
(strip-leading-whitespace? . ,strip-leading-whitespace?)
(strip-trailing-whitespace? . ,strip-trailing-whitespace?)
(newlines-in-quotes? . ,newlines-in-quotes?)) )
;;;
(include "csv-xml/csv-out.impl")
) ;csv-xml