-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Fast, streaming csv parser
--   
--   `pipes-csv` is a streaming csv parser built on top of <a>cassava</a>
--   and <a>pipes</a>
@package pipes-csv
@version 1.4.3


-- | This module contains a couple functions copied from Data.Csv.Encoding
--   that weren't exported. This file can be removed once they are.
module Pipes.Csv.Encoding
encodeRecord :: Word8 -> Record -> Builder
namedRecordToRecord :: Header -> NamedRecord -> Record


-- | This module allows constant-space CSV parsing.
--   
--   It feeds <a>ByteString</a>s into cassavas incremental CSV parser to
--   attain true constant-space record streaming.
module Pipes.Csv

-- | Equivalent to <tt><a>decodeWith</a> <a>defaultDecodeOptions</a></tt>.
decode :: (Monad m, FromRecord a) => HasHeader -> Producer ByteString m () -> Producer (Either String a) m ()

-- | Create a <a>Producer</a> that takes a <a>ByteString</a>
--   <a>Producer</a> as input, producing either errors or
--   <a>FromRecord</a>s.
decodeWith :: (Monad m, FromRecord a) => DecodeOptions -> HasHeader -> Producer ByteString m () -> Producer (Either String a) m ()

-- | Equivalent to <tt><a>decodeByNameWith</a>
--   <a>defaultDecodeOptions</a></tt>.
decodeByName :: (Monad m, FromNamedRecord a) => Producer ByteString m () -> Producer (Either String a) m ()

-- | Create a <a>Producer</a> that takes a <a>ByteString</a>
--   <a>Producer</a> as input, producing either errors or
--   <a>FromNamedRecord</a>s.
decodeByNameWith :: (Monad m, FromNamedRecord a) => DecodeOptions -> Producer ByteString m () -> Producer (Either String a) m ()

-- | Create a Record <a>Producer</a> by feeding <a>ByteString</a>s into a
--   <a>Parser</a>
feedParser :: Monad m => Parser a -> Producer ByteString m () -> Producer (Either String a) m ()

-- | Create a NamedRecord <a>Producer</a> by feeding <a>ByteString</a>s
--   into a <a>Parser</a>
feedHeaderParser :: (Monad m) => HeaderParser (Parser a) -> Producer ByteString m () -> Producer (Either String a) m ()

-- | Encode records as strict <a>ByteString</a>s
encode :: (Monad m, ToRecord a) => Pipe a ByteString m r

-- | Encode records as strict <a>ByteString</a>s
encodeWith :: (Monad m, ToRecord a) => EncodeOptions -> Pipe a ByteString m r

-- | Encode named records as strict <a>ByteString</a>s
encodeByName :: (Monad m, ToNamedRecord a) => Header -> Pipe a ByteString m r

-- | Encode named records as strict <a>ByteString</a>s
encodeByNameWith :: (Monad m, ToNamedRecord a) => EncodeOptions -> Header -> Pipe a ByteString m r

-- | Is the CSV data preceded by a header?
data HasHeader :: *

-- | The CSV data is preceded by a header
HasHeader :: HasHeader

-- | The CSV data is not preceded by a header
NoHeader :: HasHeader
