{-

This file is part of the Haskell package cassava-streams. It is
subject to the license terms in the LICENSE file found in the
top-level directory of this distribution and at
git://pmade.com/cassava-streams/LICENSE. No part of cassava-streams
package, including this file, may be copied, modified, propagated, or
distributed except according to the terms contained in the LICENSE
file.

-}

--------------------------------------------------------------------------------
-- | This module exports functions which can be used to read instances
-- of the cassava classes @FromRecord@ and @FromNamedRecord@ from an
-- io-streams @InputStream ByteString@.
--
-- It also exports functions which can write instances of @ToRecord@
-- and @ToNamedRecord@ to an io-streams @OutputStream ByteString@.
--
-- See the "System.IO.Streams.Csv.Tutorial" module for a simple tutorial.
module System.IO.Streams.Csv
       ( -- * Decoding CSV
         -- | These functions convert an io-streams @InputStream
         -- ByteString@ stream into one that decodes CSV records and
         -- produces these decoded records.
         --
         -- Each of the decoding functions produce an @InputStream@
         -- which yields an @Either@ value.  @Left String@ represents
         -- a record which failed type conversion.  @Right a@ is a
         -- successfully decoded record.
         --
         -- See the tutorial in "System.IO.Streams.Csv.Tutorial" for
         -- details on how to use the 'onlyValidRecords' function to
         -- transform the decoding streams so that they only produce
         -- valid records and throw exceptions for bad records.
         module System.IO.Streams.Csv.Decode

         -- * Encoding CSV
         -- | These functions convert an io-streams @OutputStream
         -- ByteString@ stream into one that encodes records into CSV
         -- format before sending them downstream.
       , module System.IO.Streams.Csv.Encode

         -- * Convenience Exports
         -- | Export data types from Data.Csv
       , module Data.Csv
       ) where

--------------------------------------------------------------------------------
import System.IO.Streams.Csv.Decode
import System.IO.Streams.Csv.Encode

import Data.Csv ( HasHeader(..)
                , defaultEncodeOptions
                , defaultDecodeOptions
                , DecodeOptions(..)
                , EncodeOptions(..)
                , Quoting(..)
                )