pipes-key-value-csv-0.2.0.0: src/Pipes/KeyValueCsv/Types.hs
{-|
Module : Pipes.KeyValueCsv.Types
Copyright : (c) Marcin Mrotek, 2015
License : BSD3
Maintainer : marcin.jan.mrotek@gmail.com
Stability : experimental
Types used by the key-vale + CSV processing part.
-}
{-# LANGUAGE
DataKinds
, FlexibleContexts
, PolyKinds
, RankNTypes
, TemplateHaskell
#-}
module Pipes.KeyValueCsv.Types
( module Pipes.KeyValueCsv.Types
, module Pipes.KeyValueCsv.Types.Common
, module Pipes.KeyValueCsv.Types.Csv
, module Pipes.KeyValueCsv.Types.KeyValue
) where
import Pipes.KeyValueCsv.Types.Common
import Pipes.KeyValueCsv.Types.Csv
import Pipes.KeyValueCsv.Types.KeyValue
import Control.Lens
import Data.Default.Class
import Data.Text (Text)
-- |Options for the whole processing.
data Options (m :: * -> *) (f :: k -> *) (g :: j -> *) (hs :: [k]) (rs :: [j]) = Options
{ _kvOptions :: KeyValueOptions m f hs
, _csvOptions :: CsvOptions m g rs
, _predicate :: Text -> Bool
, _delimiter :: Char
}
makeLenses ''Options
instance ( Default (KeyValueOptions m f hs)
, Default (CsvOptions m g rs)
) => Default (Options m f g hs rs) where
def = Options
{ _kvOptions = def
, _csvOptions = def
, _predicate = const False
, _delimiter = ','
}