I should really just delete the `parseForever` and `parseForever_`
functions since they will silently terminate when you run out of input
as you just experienced. They were contributed by a user, but I think I
should not have accepted them.
The correct function to use is `parsed`, which will do the right thing.
On 2/13/16 4:51 PM, Sean Parsons wrote:
I'm trying to parse a very large XML file, so I've hooked up tagsoup
to create a minimalistic streaming XML parser.
The following Parser I've been using to do a little bit of cleanup,
but when I introduce it into the pipeline with parseForever_ the last
element disappears.
|
textCombiner :: (Monad m) => PP.Parser TTag m (Maybe TTag)
textCombiner = do
first <- PP.draw
second <- PP.peek
case (first, second) of
(Just firstTag@(TS.TagText firstText), (Just secondTag@(TS.TagOpen
_ _))) -> trace "1" $ if T.all (== ' ') firstText then PP.draw >>
return (Just secondTag) else return (Just firstTag)
(Just (TS.TagText firstText), Just (TS.TagText secondText))
-> trace "2" $ PP.draw >> (return $ Just $ TS.TagText $ append
firstText secondText)
(Just firstTag, _) -> trace "3" $ return (Just firstTag)
(Nothing, _) -> trace "4" $ return Nothing
|
With a TagOpen, TagText and then TagClose test combination I see the
trace "3" twice and only the TagOpen and TagText elements make it
through the pipeline.
Originally this code used draw twice, but I changed the second one to
use peek as I thought that might make a difference, but nothing has
changed.
What do I do?
Sean.
--
You received this message because you are subscribed to the Google
Groups "Haskell Pipes" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to haskell-pipes+unsubscr...@googlegroups.com
<mailto:haskell-pipes+unsubscr...@googlegroups.com>.
To post to this group, send email to haskell-pipes@googlegroups.com
<mailto:haskell-pipes@googlegroups.com>.
--
You received this message because you are subscribed to the Google Groups "Haskell
Pipes" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to haskell-pipes+unsubscr...@googlegroups.com.
To post to this group, send email to haskell-pipes@googlegroups.com.