From 51784123cdbb748243024194b1571e322da3f0d1 Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Thu, 21 Apr 2022 22:23:48 -0400 Subject: [PATCH] implemented slurpLabelledCSV --- src/Data/CSV/Sip.hs | 10 ++++++++++ 1 file changed, 10 insertions(+) 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 ()