module Pipes.KeyValueCsv.Csv
( parseCsv
, WrapParser(..)
, wrapParser
) where
import Pipes.KeyValueCsv.Internal.Csv
import Pipes.KeyValueCsv.Internal.Types
import Pipes.KeyValueCsv.Common
import Pipes.KeyValueCsv.Types.Common
import Pipes.KeyValueCsv.Types.Csv
import Control.Lens
import Data.Reflection
import Data.Vinyl
import Data.Vinyl.Functor
import qualified Pipes.Group as Group
parseCsv
:: forall (m :: * -> *) (f :: k -> *) (rs :: [k]) (r :: *)
. ( Given Delimiter
, Monad m
)
=> CsvOptions m f rs
-> Lines m r
-> Producer (Rec (WithCsvError :. f) rs) m r
parseCsv options =
Group.concats
. Group.maps (parseLine $ options^.csvParser)
. unLines