| Safe Haskell | None |
|---|
Pipes.ByteString.Parse
Contents
Description
Parsing utilities for bytestrings, in the style of pipes-parse
- nextByte :: Monad m => Producer BS.ByteString m r -> m (Either r (Word8, Producer BS.ByteString m r))
- drawByte :: Monad m => StateT (Producer BS.ByteString m r) m (Either r Word8)
- unDrawByte :: Monad m => Word8 -> StateT (Producer BS.ByteString m r) m ()
- peekByte :: Monad m => StateT (Producer BS.ByteString m r) m (Either r Word8)
- isEndOfBytes :: Monad m => StateT (Producer BS.ByteString m r) m Bool
- take :: (Monad m, Integral a) => a -> Pipe BS.ByteString BS.ByteString (StateT (Producer BS.ByteString m r) m) ()
- takeWhile :: Monad m => (Word8 -> Bool) -> Pipe BS.ByteString BS.ByteString (StateT (Producer BS.ByteString m r) m) ()
Parsers
nextByte :: Monad m => Producer BS.ByteString m r -> m (Either r (Word8, Producer BS.ByteString m r))Source
unDrawByte :: Monad m => Word8 -> StateT (Producer BS.ByteString m r) m ()Source
peekByte :: Monad m => StateT (Producer BS.ByteString m r) m (Either r Word8)Source
peekByte checks the first Word8 in the stream, but uses unDrawByte to
push the Word8 back
peekByte = do
x <- drawByte
case x of
Left _ -> return ()
Right w8 -> unDrawByte w8
return x
isEndOfBytes :: Monad m => StateT (Producer BS.ByteString m r) m BoolSource
Check if the underlying Producer has no more bytes
Note that this will skip over empty BS.ByteString chunks, unlike
PP.isEndOfInput from pipes-parse.
isEndOfBytes = liftM isLeft peekByte
take :: (Monad m, Integral a) => a -> Pipe BS.ByteString BS.ByteString (StateT (Producer BS.ByteString m r) m) ()Source
takeWhile :: Monad m => (Word8 -> Bool) -> Pipe BS.ByteString BS.ByteString (StateT (Producer BS.ByteString m r) m) ()Source