siphon-0.1: src/Siphon/Types.hs
module Siphon.Types where
import Data.Vector (Vector)
import Colonnade.Types (DecodingRowError)
import qualified Data.Attoparsec.Types as Atto
newtype Escaped c = Escaped { getEscaped :: c }
data Siphon c = Siphon
{ siphonEscape :: !(c -> Escaped c)
, siphonIntercalate :: !(Vector (Escaped c) -> c)
, siphonParseRow :: c -> Atto.IResult c (Vector c)
, siphonNull :: c -> Bool
}
-- -- | This type is provided for convenience with @pipes-text@
-- data CsvResult f c
-- = CsvResultSuccess
-- | CsvResultTextDecodeError
-- | CsvResultDecodeError (DecodingRowError f c)
-- deriving (Show,Read,Eq)
-- | Consider changing out the use of 'Vector' here
-- with the humble list instead. It might fuse away
-- better. Not sure though.
-- data SiphonX c1 c2 = SiphonX
-- { siphonXEscape :: !(c1 -> Escaped c2)
-- , siphonXIntercalate :: !(Vector (Escaped c2) -> c2)
-- }
--
-- data SiphonDecoding c1 c2 = SiphonDecoding
-- { siphonDecodingParse :: c1 -> Atto.IResult c1 (Vector c2)
-- , siphonDecodingNull :: c1 -> Bool
-- }
-- data WithEnd c = WithEnd
-- { withEndEnded :: !Bool
-- , withEndContent :: !c
-- }
-- data SiphonDecodingError
-- { clarify
-- }