on master help sign in
Added emit combinators
commitd21fafe15fd9082dd544f8b9440c9d4e8430f650 authorMichael Snoyman <michael@snoyman.com> dateWed 27 Jan 2010, 00:13 (17 years ago) parent48b5ad5
1 file changed+17
Text/Libyaml.hs+17
Text/Libyaml.hs+17
@@ -22,6 +22,11 @@ module Text.Libyaml
2222 , YamlDecoder
2323 , parseEvent
2424 , emitEvent
25+ -- ** Combinators
26+ , emitStream
27+ , emitDocument
28+ , emitSequence
29+ , emitMapping
2530 -- * Higher level functions
2631 , encode
2732 , decode
@@ -417,6 +422,18 @@ emitEvent e = do
417422 problem <- liftIO $ makeString c_get_emitter_error emitter
418423 failure $ YamlEmitterException e problem
419424
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+
420437parseEvent :: (With m, MonadFailure YamlException m)
421438 => YamlDecoder m Event
422439parseEvent = ask >>= parserParseOne