cereal-enumerator (empty) → 0.1
raw patch · 3 files changed
+55/−0 lines, 3 filesdep +basedep +bytestringdep +cerealsetup-changed
Dependencies added: base, bytestring, cereal, enumerator
Files
- Data/Serialize/Get/Enumerator.hs +36/−0
- Setup.hs +2/−0
- cereal-enumerator.cabal +17/−0
+ Data/Serialize/Get/Enumerator.hs view
@@ -0,0 +1,36 @@+{-# LANGUAGE DeriveDataTypeable #-}+module Data.Serialize.Get.Enumerator+ ( ParseError(..)+ , iterGet+ ) where++import Control.Exception+import Data.Monoid+import Data.Typeable++import Data.Serialize.Get+import Data.Enumerator+import Data.ByteString++data ParseError = ParseError String+ | EOFError+ deriving (Show, Typeable)++instance Exception ParseError+++-- | Convert a 'Get' to an 'Iteratee'. A 'ParseError' is emitted on failure.+iterGet :: Monad m => Get a -> Iteratee ByteString m a+iterGet = continue . step . runGetPartial+ where+ step p (Chunks xs) = loop p xs+ step p EOF = case p mempty of+ Done r _ -> yield r EOF+ Partial{} -> throwError EOFError+ Fail s -> throwError (ParseError s)++ loop p [] = continue (step p)+ loop p (x:xs) = case p x of+ Done r bs -> yield r $ Chunks (bs:xs)+ Partial c -> loop c xs+ Fail s -> throwError (ParseError s)
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ cereal-enumerator.cabal view
@@ -0,0 +1,17 @@+name: cereal-enumerator+version: 0.1+synopsis: Deserialize things with cereal and enumerator+license: PublicDomain+author: Patrick Palka+maintainer: patrick@parcs.ath.cx+category: Text+build-type: Simple+cabal-version: >=1.8++library+ exposed-modules: Data.Serialize.Get.Enumerator+ build-depends: base < 5+ , enumerator+ , cereal+ , bytestring+