hw-prim 0.6.2.7 → 0.6.2.8
raw patch · 2 files changed
+20/−4 lines, 2 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ HaskellWorks.Data.ByteString.Lazy: hGetContentsChunkedBy :: Int -> Handle -> IO ByteString
Files
hw-prim.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack name: hw-prim-version: 0.6.2.7+version: 0.6.2.8 synopsis: Primitive functions and data types description: Primitive functions and data types. category: Data
src/HaskellWorks/Data/ByteString/Lazy.hs view
@@ -1,17 +1,24 @@+{-# LANGUAGE CPP #-} {-# LANGUAGE FlexibleInstances #-} module HaskellWorks.Data.ByteString.Lazy ( ToLazyByteString(..) , resegment , resegmentPadded+ , hGetContentsChunkedBy ) where import Data.Word import HaskellWorks.Data.ByteString (ToByteString (..)) -import qualified Data.ByteString.Lazy as LBS-import qualified Data.Vector.Storable as DVS-import qualified HaskellWorks.Data.ByteString as BS+import qualified Data.ByteString as BS+import qualified Data.ByteString.Internal as BS+import qualified Data.ByteString.Lazy as LBS+import qualified Data.ByteString.Lazy.Internal as LBS+import qualified Data.Vector.Storable as DVS+import qualified HaskellWorks.Data.ByteString as BS+import qualified System.IO as IO+import qualified System.IO.Unsafe as IO class ToLazyByteString a where toLazyByteString :: a -> LBS.ByteString@@ -57,3 +64,12 @@ resegmentPadded :: Int -> LBS.ByteString -> LBS.ByteString resegmentPadded multiple = LBS.fromChunks . BS.resegmentPadded multiple . LBS.toChunks++hGetContentsChunkedBy :: Int -> IO.Handle -> IO LBS.ByteString+hGetContentsChunkedBy k h = lazyRead+ where lazyRead = IO.unsafeInterleaveIO loop+ loop = do+ c <- BS.createAndTrim k $ \p -> IO.hGetBuf h p k+ if BS.null c+ then IO.hClose h >> return LBS.Empty+ else LBS.Chunk c <$> lazyRead