Compare commits

7 Commits
Author SHA1 Message Date
jlamothe 82085eaaf9 note about pull requests 2022-04-24 22:11:28 -04:00
jlamothe 493b7dd9d4 version 0.1.0 2022-04-24 19:03:01 -04:00
jlamothe 723f046ea4 added homepage and bug reports information 2022-04-24 19:00:47 -04:00
jlamothe bb970e4f42 removed warning about API changes 2022-04-24 18:47:53 -04:00
jlamothe 1b20188dfc added executive summary to README.md 2022-04-24 18:47:28 -04:00
jlamothe 886f991ee3 implemented file producers/consumers
- readFromCSV
- readFromCSVRaw
- writeToCSV
- writeToCSVRaw
2022-04-24 18:32:30 -04:00
jlamothe 659b817252 removed writeCSVFromStream and writeRawCSVFromStream 2022-04-24 17:15:27 -04:00
4 changed files with 46 additions and 24 deletions
+5 -2
View File
@@ -14,5 +14,8 @@ General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
## Important Note
This library is not yet ready for release. As such, all code should be considered to be unstable and subject to change at any time.
## Executive Summary
This library allows for reading and writing to and from CSV files in a streaming manner. Files can be read and written to on a row-by-row basis allowing larger files to be worked with, since the whole file doesn't have to be loaded to manipulate it. It is based on the [conduit](https://hackage.haskell.org/package/conduit] library.
## Pull Requests
Please make pull requests to the `dev` branch.
+3 -1
View File
@@ -5,10 +5,12 @@ cabal-version: 2.2
-- see: https://github.com/sol/hpack
name: csv-sip
version: 0.0.0
version: 0.1.0
synopsis: extracts data from a CSV file
description: extracts data from a CSV file - see README.md for more details
category: Data
homepage: https://codeberg.org/jlamothe/csv-sip
bug-reports: https://codeberg.org/jlamothe/csv-sip/issues
author: Jonathan Lamothe
maintainer: jonathan@jlamothe.net
copyright: (C) 2022 Jonathan Lamothe
+3 -1
View File
@@ -1,5 +1,5 @@
name: csv-sip
version: 0.0.0
version: 0.1.0
license: GPL-3.0-or-later
author: "Jonathan Lamothe"
maintainer: "jonathan@jlamothe.net"
@@ -17,6 +17,8 @@ category: Data
# complications of embedding Haddock markup inside cabal files, it is
# common to point users to the README.md file.
description: extracts data from a CSV file - see README.md for more details
homepage: https://codeberg.org/jlamothe/csv-sip
bug-reports: https://codeberg.org/jlamothe/csv-sip/issues
ghc-options:
- -Wall
+35 -20
View File
@@ -35,15 +35,20 @@ module Data.CSV.Sip (
-- ** Write an entire CSV file
writeCSV,
writeRawCSV,
writeCSVFromStream,
writeRawCSVFromStream,
-- * Conduits
-- ** Encoding
-- ** Producers
readFromCSV,
readFromCSVRaw,
encodeCSV,
encodeRawCSV,
-- ** Consumers
writeToCSV,
writeToCSVRaw,
-- ** Transformers
-- *** Encoding
encodeRows,
encodeRawRows,
-- ** Decoding
-- *** Decoding
labelFields,
decodeRows,
decodeRawRows,
@@ -127,27 +132,21 @@ writeRawCSV
-> m ()
writeRawCSV file csv = runConduit $ encodeRawCSV csv .| sinkFile file
-- | Write a CSV file from a stream of Text-based rows
writeCSVFromStream
-- | reads a stream of Text-based rows from a CSV file
readFromCSV
:: MonadResource m
=> FilePath
-- ^ the path to the file to write to
-> ConduitT () [T.Text] m ()
-- ^ the source conduit
-> m ()
writeCSVFromStream file src = runConduit $
src .| encodeRows .| sinkFile file
-- ^ the path to the CSV file to read from
-> ConduitT i [T.Text] m ()
readFromCSV file = sourceFile file .| decodeRows
-- | Write a CSV file from a stream of ByteString-based rows
writeRawCSVFromStream
-- | reads a stream of ByteString-based rows from a CSV file
readFromCSVRaw
:: MonadResource m
=> FilePath
-- ^ the path to the file to write to
-> ConduitT () [BS.ByteString] m ()
-- ^ the source conduit
-> m ()
writeRawCSVFromStream file src = runConduit $
src .| encodeRawRows .| sinkFile file
-- ^ the path to the CSV file to read from
-> ConduitT i [BS.ByteString] m ()
readFromCSVRaw file = sourceFile file .| decodeRawRows
-- | encode an entire CSV file
encodeCSV
@@ -165,6 +164,22 @@ encodeRawCSV
-> ConduitT () BS.ByteString m ()
encodeRawCSV csv = sourceList csv .| encodeRawRows
-- | Writes a stream of Text-based rows to a CSV file
writeToCSV
:: MonadResource m
=> FilePath
-- ^ the path to the CSV file to write to
-> ConduitT [T.Text] o m ()
writeToCSV file = encodeRows .| sinkFile file
-- | Writes a stream of ByteString-based rows to a CSV file
writeToCSVRaw
:: MonadResource m
=> FilePath
-- ^ the path to the CSV file to write to
-> ConduitT [BS.ByteString] o m ()
writeToCSVRaw file = encodeRawRows .| sinkFile file
-- | encode a CSV stream row by row, each element in the list read
-- represents a field, with the entire list representing a row
encodeRows :: Monad m => ConduitT [T.Text] BS.ByteString m ()