packages feed

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 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+