@@ -23,6 +23,7 @@ module Text.Yaml
2323 ,
2424 -- * Converting to/from 'TextObject's
2525 encodeText
26+ , encodeToText
2627 , decodeText
2728 , decodeFromText
2829 , decodeFromTextWrap
@@ -31,6 +32,7 @@ module Text.Yaml
3132 , decodeScalar
3233 -- * Files
3334 , encodeFile
35+ , encodeFileToText
3436 , decodeFile
3537 , decodeFileFromTextWrap
3638#if TEST
@@ -94,6 +96,11 @@ encodeText :: ConvertSuccess B.ByteString a
9496 -> a
9597encodeText = unsafePerformIO . join . encode'
9698
99+encodeToText :: (ConvertSuccess B.ByteString a, ToObject x Text Text)
100+ => x
101+ -> a
102+encodeToText = unsafePerformIO . join . encode' . toTextObject
103+
97104decodeText :: (ConvertSuccess a B.ByteString,
98105 MonadFailure YamlException m)
99106 => a
@@ -129,15 +136,24 @@ decodeScalar :: (ConvertSuccess a B.ByteString,
129136decodeScalar = liftM toScalarObject . unsafePerformIO . decode'
130137
131138-- File API
132−encodeFile :: (ToObject o Text Text, MonadIO m, MonadFailure YamlException m)
139+encodeFile :: (MonadIO m, MonadFailure YamlException m)
133140 => FilePath
134− -> o
141+ -> TextObject
135142 -> m ()
136143encodeFile path o = do
137− content <- liftIO $ encode' $ toTextObject o
144+ content <- liftIO $ encode' o
138145 content' <- content
139146 liftIO $ ltWriteFile path content'
140147
148+encodeFileToText :: (ToObject x Text Text,
149+ MonadIO m,
150+ MonadFailure YamlException m
151+ )
152+ => FilePath
153+ -> x
154+ -> m ()
155+encodeFileToText fp = encodeFile fp . toTextObject
156+
141157ltWriteFile :: FilePath -> Text -> IO ()
142158ltWriteFile fp = BL.writeFile fp . LTE.encodeUtf8
143159