1 -- http://www.haskellforall.com/2014/02/pipes-parse-30-lens-based-parsing.html
3 import Data.ByteString (ByteString)
4 import Data.Text (Text)
5 import Lens.Family.State.Strict (zoom)
8 import qualified Pipes.ByteString as ByteString
9 import qualified Pipes.Text as Text
11 -- Retrieve all `Text` chunks up to 10 characters
12 parser :: Monad m => Parser ByteString m [Text]
13 parser = zoom (Text.decodeUtf8 . Text.splitAt 10) drawAll
16 (textChunks, leftovers) <- runStateT parser ByteString.stdin
19 -- Now print the remaining `ByteString` chunks
20 byteChunks <- evalStateT drawAll leftovers
25 ["Hello, \19990\30028!"]