Okay, so there, the chunks (xs) will be lines of Text, and not just random blocks.
Isn't there a primitive like printChunks in the enumerator library, or are we forced to handle Chunks and EOF by hand?
blah = do
fp <- openFile "file" ReadMode
run_ $ (ET.enumHandle fp $= ET.lines) $$ printChunks True
printChunks is super duper simple:
printChunks printEmpty = continue loop where
loop (Chunks xs) = do
let hide = null xs && not printEmpty
CM.unless hide (liftIO (print xs))
continue loop
loop EOF = do
liftIO (putStrLn "EOF")
yield () EOF
Just replace print with whatever IO action you wanted to perform.
On Mon, Jul 25, 2011 at 4:31 AM, Yves Parès <limestrael@gmail.com> wrote:
> Sorry, I'm only beginning to understand iteratees, but then how do you
> access each line of text output by the enumeratee "lines" within an
> iteratee?
>
> 2011/7/24 Felipe Almeida Lessa <felipe.lessa@gmail.com>
>>
>> On Sun, Jul 24, 2011 at 12:28 PM, Yves Parès <limestrael@gmail.com> wrote:
>> > If you used Data.Enumerator.Text, you would maybe benefit the "lines"
>> > function:
>> >
>> > lines :: Monad m => Enumeratee Text Text m b
>>
>> It gets arbitrary blocks of text and outputs lines of text.
>>
>> > But there is something I don't get with that signature:
>> > why isn't it:
>> > lines :: Monad m => Enumeratee Text [Text] m b
>> > ??
>>
>> Lists of lines of text?
>>
>> Cheers, =)
>>
>> --
>> Felipe.
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>