README.md

# gsv

[![Package Version](https://img.shields.io/hexpm/v/gsv)](https://hex.pm/packages/gsv)
[![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gsv/)

This is a simple csv parser and writer for Gleam. It will get more performant/battle tested in the future,
but if you're looking for that now, I'd recommend doing ffi to an existing parser in your target runtime.

#### Example

```gleam
import gsv.{Unix, Windows}

pub fn main() {
  let csv_str = "Hello, World\nGoodbye, Mars"

  // Parse a CSV string to a List(List(String))
  let assert Ok(records) = gsv.to_lists(csv_str)

  // Write a List(List(String)) to a CSV string
  let csv_str = records
  |> gsv.from_lists(separator: ",", line_ending: Windows)

  // Parse a CSV string with headers to a List(Dict(String, String))
  let assert Ok(records) = gsv.to_dicts(csv_str)
  // => [ dict.from_list([ #("Hello", "Goodbye"), #("World", "Mars") ]) ]

  // Write a List(Dict(String, String)) to a CSV string, treating the keys as the header row
  let csv_str = records
    |> gsv.from_dicts(separator: ",", line_ending: Windows)
}
```

## Installation

If available on Hex this package can be added to your Gleam project:

```sh
gleam add gsv
```

and its documentation can be found at <https://hexdocs.pm/gsv>.