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)
9 import qualified Pipes.ByteString as ByteString
10 import qualified Pipes.Text as Text
11 import qualified Pipes.Text.Encoding as Text
13 -- Retrieve all `Text` chunks up to 10 characters
14 parser :: Monad m => Parser ByteString m [Text]
15 parser = zoom (Text.utf8 . Text.splitAt 10) drawAll
18 (textChunks, leftovers) <- runStateT parser ByteString.stdin
21 -- Now print the remaining `ByteString` chunks
22 byteChunks <- evalStateT drawAll leftovers
27 ["Hello, \19990\30028!"]