diff --git a/src/Data/CSV/Sip.hs b/src/Data/CSV/Sip.hs index e5a362c..f91156b 100644 --- a/src/Data/CSV/Sip.hs +++ b/src/Data/CSV/Sip.hs @@ -29,6 +29,7 @@ module Data.CSV.Sip ( -- * Read an entire CSV file slurpCSV, slurpRawCSV, + slurpLabelledCSV, -- * Conduits labelFields, decodeRows, @@ -74,6 +75,15 @@ slurpRawCSV -> m [[BS.ByteString]] slurpRawCSV file = runConduit $ sourceFile file .| decodeRawRows .| consume +-- | read an entire CSV file with a header +slurpLabelledCSV + :: MonadResource m + => FilePath + -- ^ the path to the file to read + -> m [M.Map T.Text T.Text] +slurpLabelledCSV file = runConduit $ + sourceFile file .| decodeRows .| labelFields .|consume + -- | read a CSV stream, using the first row as a header containing -- field labels labelFields :: (Monad m, Ord a) => ConduitT [a] (M.Map a a) m ()