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


-- | Servant CSV content-type for cassava
--   
--   Servant CSV content-type for cassava.
@package servant-cassava
@version 0.10


-- | A <tt>CSV</tt> empty datatype with <a>MimeRender</a> and
--   <a>MimeUnrender</a> instances for <tt>cassava</tt>'s encoding and
--   decoding classes.
--   
--   <pre>
--   &gt;&gt;&gt; type Eg = Get '[CSV' 'HasHeader MyEncodeOptions] [(Int, String)]
--   </pre>
--   
--   Default encoding and decoding options are also provided, along with
--   the <tt>CSV</tt> type synonym that uses them.
--   
--   <pre>
--   &gt;&gt;&gt; type EgDefault = Get '[CSV] [(Int, String)]
--   </pre>
module Servant.CSV.Cassava
class EncodeOpts opt
encodeOpts :: EncodeOpts opt => Proxy opt -> EncodeOptions
decodeOpts :: EncodeOpts opt => Proxy opt -> DecodeOptions
csvContentType :: EncodeOpts opt => Proxy opt -> MediaType

-- | A class to determine how to encode a list of elements
--   
--   <ul>
--   <li><a>HasHeader</a> encode with
--   <a>encodeDefaultOrderedByNameWith</a></li>
--   <li><a>NoHeader</a> encode with <a>encodeWith</a></li>
--   </ul>
--   
--   Currently, it's not possible to encode without headers using
--   <a>encodeDefaultOrderedByNameWith</a>.
class EncodeList (hasHeader :: HasHeader) a
encodeList :: EncodeList hasHeader a => Proxy hasHeader -> EncodeOptions -> [a] -> ByteString

-- | Options that work for tab delimited data, with content type
--   <tt>text/tab-separated-values;charset=utf-8</tt>
data TabSeparatedOpts

-- | Default options, instances providing <a>defaultDecodeOptions</a> and
--   <a>defaultEncodeOptions</a>, and content type
--   <tt>text/csv;charset=utf-8</tt>
data DefaultOpts

-- | Class to provide <a>SHasHeader</a> implicitly.
class SHasHeaderI (hasHeader :: HasHeader)
shasheader :: SHasHeaderI hasHeader => SHasHeader hasHeader

-- | 'HasHeader singleton.
data SHasHeader (hasHeader :: HasHeader)
[SHasHeader] :: SHasHeader  'HasHeader
[SNoHeader] :: SHasHeader  'NoHeader
type CSV = CSV'  'HasHeader DefaultOpts
data CSV' (hasHeader :: HasHeader) opt
shasheaderToBool :: SHasHeader hasHeader -> Bool
lowerSHasHeader :: SHasHeader hasHeader -> HasHeader
encodeOpts' :: forall opt hasHeader. (EncodeOpts opt, SHasHeaderI hasHeader) => Proxy opt -> Proxy hasHeader -> EncodeOptions

-- | 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
instance GHC.Generics.Generic Servant.CSV.Cassava.TabSeparatedOpts
instance GHC.Generics.Generic Servant.CSV.Cassava.DefaultOpts
instance Servant.CSV.Cassava.EncodeOpts opt => Servant.API.ContentTypes.Accept (Servant.CSV.Cassava.CSV' hasHeader opt)
instance (Data.Csv.Conversion.ToNamedRecord a, Servant.CSV.Cassava.EncodeOpts opt, Servant.CSV.Cassava.SHasHeaderI hasHeader) => Servant.API.ContentTypes.MimeRender (Servant.CSV.Cassava.CSV' hasHeader opt) (Data.Csv.Types.Header, [a])
instance (Servant.CSV.Cassava.EncodeOpts opt, Servant.CSV.Cassava.EncodeList hasHeader a) => Servant.API.ContentTypes.MimeRender (Servant.CSV.Cassava.CSV' hasHeader opt) [a]
instance (Data.Csv.Conversion.ToNamedRecord a, Servant.CSV.Cassava.EncodeOpts opt, Servant.CSV.Cassava.SHasHeaderI hasHeader) => Servant.API.ContentTypes.MimeRender (Servant.CSV.Cassava.CSV' hasHeader opt) (Data.Csv.Types.Header, Data.Vector.Vector a)
instance (Servant.CSV.Cassava.EncodeOpts opt, Servant.CSV.Cassava.EncodeList hasHeader a) => Servant.API.ContentTypes.MimeRender (Servant.CSV.Cassava.CSV' hasHeader opt) (Data.Vector.Vector a)
instance Servant.CSV.Cassava.EncodeOpts Servant.CSV.Cassava.DefaultOpts
instance Servant.CSV.Cassava.EncodeOpts Servant.CSV.Cassava.TabSeparatedOpts
instance (Data.Csv.Conversion.FromNamedRecord a, Servant.CSV.Cassava.EncodeOpts opt) => Servant.API.ContentTypes.MimeUnrender (Servant.CSV.Cassava.CSV' 'Data.Csv.Types.HasHeader opt) (Data.Csv.Types.Header, [a])
instance (Data.Csv.Conversion.FromRecord a, Servant.CSV.Cassava.EncodeOpts opt, Servant.CSV.Cassava.SHasHeaderI hasHeader) => Servant.API.ContentTypes.MimeUnrender (Servant.CSV.Cassava.CSV' hasHeader opt) [a]
instance (Data.Csv.Conversion.FromNamedRecord a, Servant.CSV.Cassava.EncodeOpts opt) => Servant.API.ContentTypes.MimeUnrender (Servant.CSV.Cassava.CSV' 'Data.Csv.Types.HasHeader opt) (Data.Csv.Types.Header, Data.Vector.Vector a)
instance (Data.Csv.Conversion.FromRecord a, Servant.CSV.Cassava.EncodeOpts opt, Servant.CSV.Cassava.SHasHeaderI hasHeader) => Servant.API.ContentTypes.MimeUnrender (Servant.CSV.Cassava.CSV' hasHeader opt) (Data.Vector.Vector a)
instance (Data.Csv.Conversion.DefaultOrdered a, Data.Csv.Conversion.ToNamedRecord a) => Servant.CSV.Cassava.EncodeList 'Data.Csv.Types.HasHeader a
instance Data.Csv.Conversion.ToRecord a => Servant.CSV.Cassava.EncodeList 'Data.Csv.Types.NoHeader a
instance Servant.CSV.Cassava.SHasHeaderI 'Data.Csv.Types.HasHeader
instance Servant.CSV.Cassava.SHasHeaderI 'Data.Csv.Types.NoHeader
