# CSVLixir

A CSV reader/writer for Elixir. Operates on strings and char lists. It'd be
very simple to provide file I/O.

The reader takes a string or a char list and returns a list of lists of the
same type.



    [["row1", "has", "stuff"],["on", "many lines"]]

The writer takes a list of lists (write) or a list (write_row) and returns a
string. The writer always works with strings.

    iex> IO.puts CSVLixir.write([["abc", "def", "gh\",\"i"], [123, 456, 789]])

    iex> CSVLixir.write_row(["abc", "def", "gh\",\"i"])

    iex> CSVLixir.write_row(["abc", "def", "gh\",\"i"]) |> File.write("bar.csv")

## File I/O

If your CSV file can fit into memory, you can easily read the file into a
string and pass it into ``. See the example above. The same
goes for writing: use `CSVLixir.write` to create a string from data and
write that to a file.

# To Do

I'm working on support for `Stream` I/O, but I'm having problems. CSVLixir
needs to read data a character at a time, not a line at a time, since column data
can span multiple lines. I may have to do my own buffering.