| CL-CSV - a Common Lisp library for csv reading and writing |
| ===== |
|
|
| # Abstract |
|
|
| A common lisp library providing easy csv reading and writing. |
|
|
| The code license is found |
| [here](https://github.com/AccelerationNet/cl-csv/blob/master/LICENSE). |
|
|
|
|
| # Contents |
|
|
| 1. [Download](#download) |
| 2. [The CL-CSV dictionary](#dictionary) |
| 1. [`*default-external-format*`](#*default-external-format*) |
| 2. [`*write-newline*`](#*write-newline*) |
| 3. [`*quote*`](#*quote*) |
| 4. [`*quote-escape*`](#*quote-escape*) |
| 5. [`*separator*`](#*separator*) |
| 6. [`csv-parse-error`](#csv-parse-error) |
| 7. [`csv-parse-error`](#csv-parse-error) |
| 8. [`do-csv`](#do-csv) |
| 9. [`format-csv-value`](#format-csv-value) |
| 10. [`read-csv`](#read-csv) |
| 11. [`read-csv-row`](#read-csv-row) |
| 12. [`write-csv`](#write-csv) |
| 13. [`write-csv-row`](#write-csv-row) |
| 14. [`write-csv-value`](#write-csv-value) |
|
|
| 3. [Acknowledgements](#ack) |
|
|
|
|
|
|
| # Download |
|
|
| CL-CSV together with this documentation can be downloaded from |
| [https://github.com/AccelerationNet/cl-csv](https://github.com/AccelerationNet/cl-csv). |
|
|
| # The CL-CSV dictionary |
|
|
| _[Special variable]_ |
| **\*default-external-format*** |
|
|
| The external format used for opening files |
|
|
| _[Special variable]_ |
| **\*write-newline*** |
|
|
| Default newline string |
|
|
| _[Special variable]_ |
| **\*quote*** |
|
|
| Default quote character |
|
|
| _[Special variable]_ |
| **\*quote-escape*** |
|
|
| Default setting for escaping quotes |
|
|
| _[Special variable]_ |
| **\*separator*** |
|
|
| Default separator character |
|
|
| - - - |
| _[Condition type]_ |
| **csv-parse-error** |
| - - - |
| _[Function]_ |
| **csv-parse-error** ( *msg `&rest` args* ) =\> \*result* |
| - - - |
| _[Macro]_ |
| **do-csv** *((row-var stream-or-pathname `&rest` read-csv-keys) |
| `&body` body)* =\> \*result* |
|
|
|
|
| row-var: a variable that is passed into _body_ |
|
|
| stream-or-pathname: a stream or a pathname to read the CSV data from |
|
|
| read-csv-keys: keys and values passed to the _read-csv_ function |
|
|
| body: body of the macro |
|
|
| - - - |
| _[Generic function]_ |
| **format-csv-value** ( *val* ) =\> \*result* |
|
|
| - - - |
| _[Method]_ |
| **format-csv-value** ( *val* ) =\> \*result* |
|
|
| Print values in ways that are most cross compatible with the csv |
| format |
| - - - |
| _[Function]_ |
| **read-csv** ( *stream-or-string* `&key` *row-fn* *map-fn* *sample* |
| *skip-first-p* ( separator \*separator\* ) (quote \*quote\*) (escape |
| \*quote-escape\*))* =\> \*result* |
|
|
| Read in a CSV by data-row (which due to quoted newlines may be more |
| than one line from the stream) |
|
|
| row-fn: passing this parameter will cause this read to be streaming |
| and results will be discarded after the row-fn is called with data |
|
|
| map-fn: used for manipulating the data by row during collection if |
| specified; (funcall map-fn data) is collected instead of data |
|
|
| sample: when a positive integer, only take that many samples from |
| the input file |
|
|
| skip-first-p: when true, skips the first line in the csv |
|
|
| _Keywords:_ |
|
|
| separator: character separating between data cells. Defaults to |
| \*separator* |
|
|
| quote: quoting character for text strings. Defaults to \*quote* |
|
|
| escape: escape character. Defaults to \*quote-escape* |
|
|
| - - - |
| _[Function]_ |
| **read-csv-row** ( *stream-or-string* `&key` (separator \*separator\*) |
| (quote \*quote\*) (escape \*quote-escape\*) `&aux` *current state line |
| llen c elen*) =\> \*result\* |
|
|
|
|
| Read in a CSV by _data-row_ (which due to quoted newlines may be more |
| than one line from the stream) |
|
|
| - - - |
| _[Function]_ |
| **write-csv** (*rows-of-items* `&key` *stream* (separator \*separator\*) |
| (quote \*quote\*) (escape \*quote-escape\*) (newline \*write-newline\*) |
| (always-quote \*always-quote\*) ) =\> \*result\* |
|
|
| Writes a CSV |
|
|
| rows-of-items: iterable |
|
|
| _Keywords:_ |
|
|
| stream: stream to write to. Default: nil. |
|
|
| quote: quoting character. Defaults to \*quote\* |
|
|
| escape: escaping character. Defaults to \*quote-escape\* |
|
|
| newline: newline character. Defaults to \*write-newline\* |
|
|
| always-quote: Defaults to \*always-quote\* |
|
|
| - - - |
| _[Function]_ |
| **write-csv-row** ( *items* `&key` *stream* (separator \*separator\*) |
| (quote \*quote\*) (escape \*quote-escape\*) (newline \*write-newline\*) |
| (always-quote \*always-quote\*) ) =\> \*result* |
|
|
|
|
| Writes a list items to stream |
|
|
| rows-of-items: iterable |
|
|
| _Keywords:_ |
|
|
| stream: stream to write to. Default: nil. |
|
|
| quote: quoting character. Defaults to \*quote\* |
|
|
| escape: escaping character. Defaults to \*quote-escape\* |
|
|
| newline: newline character. Defaults to \*write-newline\* |
|
|
| always-quote: Defaults to \*always-quote\* |
|
|
| - - - |
| _[Generic function]_ |
| **write-csv-value** ( *val csv-stream* `&key` *formatter quote separator |
| escape always-quote* ) =\> \*result* |
|
|
| - - - |
| _[Method]_ |
| **write-csv-value** ( *val csv-stream* `&key` *formatter quote separator |
| escape always-quote* ) =\> \*result* |
|
|
|
|
| Writes val to csv-stream in a formatted fashion. |
|
|
| _Keywords:_ |
|
|
| formatter: used to format val. Defaults to format-csv-value. |
|
|
| quote: quoting character. Defaults to \*quote* |
|
|
| escape: escaping character. Defaults to \*quote-escape* |
|
|
| newline: newline character. Defaults to \*write-newline* |
|
|
| always-quote: Defaults to \*always-quote* |
|
|
| # Acknowledgements |
|
|
| This documentation was prepared with |
| [DOCUMENTATION-TEMPLATE](http://weitz.de/documentation-template/), |
| then passed through |
| [pandoc](http://johnmacfarlane.net/pandoc/index.html), *then* hand-edited. |
|
|