freckle-app-1.8.1.0: Haskell application toolkit used at Freckle
Safe HaskellSafe-Inferred
LanguageHaskell2010

Freckle.App.Csv

Description

Stream, parse, and validate CSVs

A minor extension of cassava. Using MonadValidate and Conduit.

Synopsis

Documentation

csvWithValidationSink Source #

Arguments

:: forall a b err m. (MonadThrow m, MonadUnliftIO m, PrimMonad m, ValidateHeader a, FromNamedRecord a) 
=> ConduitT () ByteString (ResourceT m) ()

CSV as a byte stream

-> (Vector a -> Validate (NonEmpty (CsvException err)) (Vector b))

Validation to apply to resulting rows

-> m (Validate (NonEmpty (CsvException err)) (Vector b)) 

Stream parse a CSV

  • Expects UTF-8
  • Provides incremental validation

csvWithParserAndValidationSink Source #

Arguments

:: forall a b err m. (MonadThrow m, MonadUnliftIO m, PrimMonad m) 
=> (Header -> Validate (NESeq String) ()) 
-> (NamedRecord -> Parser a)

Custom record parser

-> ConduitT () ByteString (ResourceT m) ()

CSV as a byte stream

-> (Vector a -> Validate (NonEmpty (CsvException err)) (Vector b))

Validation to apply to resulting rows

-> m (Validate (NonEmpty (CsvException err)) (Vector b)) 

Stream parse a CSV with a custom parser

  • Expects UTF-8
  • Provides incremental validation

Conduit Primitives

runCsvConduit :: forall r m err. MonadUnliftIO m => ConduitT () Void (ValidateT (Seq (CsvException err)) (ResourceT m)) r -> m (Either (Seq (CsvException err)) r) Source #

Run a CSV conduit handling invalid UTF8

decodeCsv :: forall a m err. (MonadThrow m, MonadValidate (Seq (CsvException err)) m, ValidateHeader a, FromNamedRecord a) => ConduitT ByteString a m () Source #

Stream in ByteStrings and parse records in constant space

Header Validation

class ValidateHeader a Source #

Minimal complete definition

validateHeader

defaultValidateOrderedHeader :: forall a proxy m. (DefaultOrdered a, Monad m) => proxy a -> Header -> ValidateT (NESeq String) m () Source #

Exceptions

data CsvException a Source #

Constructors

CsvMissingColumn !Text 
CsvParseException !Int !Text 
CsvFileNotFound 
CsvUnknownFileEncoding 
CsvExceptionExtension a

A constructor for providing extensible csv exceptions

Instances

Instances details
ToJSON a => ToJSON (CsvException a) Source # 
Instance details

Defined in Freckle.App.Csv

Show a => Show (CsvException a) Source # 
Instance details

Defined in Freckle.App.Csv

Eq a => Eq (CsvException a) Source # 
Instance details

Defined in Freckle.App.Csv

Options

defaultOptions :: Options #

Default conversion options.

  Options
  { fieldLabelModifier = id
  }
  

Since: cassava-0.5.1.0