on master help sign in
Added emit combinators
d21fafeMichael Snoyman
Text/Libyaml.hs+17
@@ -22,6 +22,11 @@ module Text.Libyaml
22 , YamlDecoder
22 , YamlDecoder
23 , parseEvent
23 , parseEvent
24 , emitEvent
24 , emitEvent
25+ -- ** Combinators
26+ , emitStream
27+ , emitDocument
28+ , emitSequence
29+ , emitMapping
25 -- * Higher level functions
30 -- * Higher level functions
26 , encode
31 , encode
27 , decode
32 , decode
@@ -417,6 +422,18 @@ emitEvent e = do
417 problem <- liftIO $ makeString c_get_emitter_error emitter
422 problem <- liftIO $ makeString c_get_emitter_error emitter
418 failure $ YamlEmitterException e problem
423 failure $ YamlEmitterException e problem
419
424
425+emitStream, emitDocument, emitSequence, emitMapping
426+ :: (MonadIO m, MonadFailure YamlException m)
427+ => YamlEncoder m ()
428+ -> YamlEncoder m ()
429+emitStream e = emitEvent EventStreamStart >> e >> emitEvent EventStreamEnd
430+emitDocument e = emitEvent EventDocumentStart >> e
431+ >> emitEvent EventDocumentEnd
432+emitSequence e = emitEvent EventSequenceStart >> e
433+ >> emitEvent EventSequenceEnd
434+emitMapping e = emitEvent EventMappingStart >> e
435+ >> emitEvent EventMappingEnd
436+
420parseEvent :: (With m, MonadFailure YamlException m)
437parseEvent :: (With m, MonadFailure YamlException m)
421 => YamlDecoder m Event
438 => YamlDecoder m Event
422parseEvent = ask >>= parserParseOne
439parseEvent = ask >>= parserParseOne