on master help sign in
Removed EventNone
commit4352211ed0800ea4ea39415304303d9398d81eba authorMichael Snoyman <michael@snoyman.com> dateTue 11 May 2010, 14:09 (16 years ago) parent1536f41
1 file changed+18−20
Text/Libyaml.hs+18−20
Text/Libyaml.hs+18−20
@@ -69,8 +69,7 @@ import Control.Monad.CatchIO (MonadCatchIO, finally)
6969import qualified Data.ListLike as LL
7070
7171data Event =
72− EventNone
73− | EventStreamStart
72+ EventStreamStart
7473 | EventStreamEnd
7574 | EventDocumentStart
7675 | EventDocumentEnd
@@ -243,7 +242,7 @@ makeString f a = do
243242
244243parserParseOne :: (MonadFailure YamlException m, With m)
245244 => Parser
246− -> m Event
245+ -> m (Maybe Event)
247246parserParseOne parser = allocaBytesR eventSize $ \er -> do
248247 res <- liftIO $ c_yaml_parser_parse parser er
249248 event <-
@@ -301,21 +300,21 @@ foreign import ccall unsafe "get_mapping_start_anchor"
301300foreign import ccall unsafe "get_alias_anchor"
302301 c_get_alias_anchor :: EventRaw -> IO CString
303302
304−getEvent :: EventRaw -> IO Event
303+getEvent :: EventRaw -> IO (Maybe Event)
305304getEvent er = do
306305 et <- c_get_event_type er
307306 case toEnum $ fromEnum et of
308− YamlNoEvent -> return EventNone
309− YamlStreamStartEvent -> return EventStreamStart
310− YamlStreamEndEvent -> return EventStreamEnd
311− YamlDocumentStartEvent -> return EventDocumentStart
312− YamlDocumentEndEvent -> return EventDocumentEnd
307+ YamlNoEvent -> return Nothing
308+ YamlStreamStartEvent -> return $ Just EventStreamStart
309+ YamlStreamEndEvent -> return $ Just EventStreamEnd
310+ YamlDocumentStartEvent -> return $ Just EventDocumentStart
311+ YamlDocumentEndEvent -> return $ Just EventDocumentEnd
313312 YamlAliasEvent -> do
314313 yanchor <- c_get_alias_anchor er
315314 anchor <- if yanchor == nullPtr
316315 then error "got YamlAliasEvent with empty anchor"
317316 else peekCString yanchor
318− return $ EventAlias anchor
317+ return $ Just $ EventAlias anchor
319318 YamlScalarEvent -> do
320319 yvalue <- c_get_scalar_value er
321320 ylen <- c_get_scalar_length er
@@ -338,21 +337,21 @@ getEvent er = do
338337 anchor <- if yanchor == nullPtr
339338 then return Nothing
340339 else fmap Just $ peekCString yanchor
341− return $ EventScalar bs (bsToTag tagbs) style anchor
340+ return $ Just $ EventScalar bs (bsToTag tagbs) style anchor
342341 YamlSequenceStartEvent -> do
343342 yanchor <- c_get_sequence_start_anchor er
344343 anchor <- if yanchor == nullPtr
345344 then return Nothing
346345 else fmap Just $ peekCString yanchor
347− return $ EventSequenceStart anchor
348− YamlSequenceEndEvent -> return EventSequenceEnd
346+ return $ Just $ EventSequenceStart anchor
347+ YamlSequenceEndEvent -> return $ Just EventSequenceEnd
349348 YamlMappingStartEvent -> do
350349 yanchor <- c_get_mapping_start_anchor er
351350 anchor <- if yanchor == nullPtr
352351 then return Nothing
353352 else fmap Just $ peekCString yanchor
354− return $ EventMappingStart anchor
355− YamlMappingEndEvent -> return EventMappingEnd
353+ return $ Just $ EventMappingStart anchor
354+ YamlMappingEndEvent -> return $ Just EventMappingEnd
356355
357356-- Emitter
358357
@@ -425,7 +424,7 @@ emitMappingWithAnchor e a = emitEvent (EventMappingStart a) >> e
425424
426425
427426parseEvent :: (With m, MonadFailure YamlException m)
428− => YamlDecoder m Event
427+ => YamlDecoder m (Maybe Event)
429428parseEvent = ask >>= parserParseOne
430429
431430type YamlDecoder = ReaderT Parser
@@ -576,7 +575,6 @@ toEventRaw e f = allocaBytesR eventSize $ \er -> do
576575 c_yaml_alias_event_initialize
577576 er
578577 anchorP
579− EventNone -> error "toEventRaw: EventNone not supported"
580578 unless (ret == 1) $ throwIO $ ToEventRawException ret
581579 f er
582580
@@ -636,8 +634,8 @@ runParser fp iter = do
636634 e <- liftIO $ withForeignPtr fp parserParseOne'
637635 case e of
638636 Left err -> return $ throwErr $ Err $ show err
639− Right EventNone -> return iter
640− Right ev -> do
637+ Right Nothing -> return iter
638+ Right (Just ev) -> do
641639 igv <- runIter iter $ Chunk $ SC.fromList [ev]
642640 case igv of
643641 Done a _ -> return $ return a
@@ -645,7 +643,7 @@ runParser fp iter = do
645643 Cont _ (Just err) -> return $ throwErr err
646644
647645parserParseOne' :: Parser
648− -> IO (Either YamlException Event)
646+ -> IO (Either YamlException (Maybe Event))
649647parserParseOne' parser = allocaBytesR eventSize $ \er -> do
650648 res <- liftIO $ c_yaml_parser_parse parser er
651649 flip finally (c_yaml_event_delete er) $