{-| 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 = ',' }