on master help sign in
encodeToText and encodeFileToText
2e3d569Michael Snoyman
Text/Yaml.hs+19−3
@@ -23,6 +23,7 @@ module Text.Yaml
23 ,
23 ,
24 -- * Converting to/from 'TextObject's
24 -- * Converting to/from 'TextObject's
25 encodeText
25 encodeText
26+ , encodeToText
26 , decodeText
27 , decodeText
27 , decodeFromText
28 , decodeFromText
28 , decodeFromTextWrap
29 , decodeFromTextWrap
@@ -31,6 +32,7 @@ module Text.Yaml
31 , decodeScalar
32 , decodeScalar
32 -- * Files
33 -- * Files
33 , encodeFile
34 , encodeFile
35+ , encodeFileToText
34 , decodeFile
36 , decodeFile
35 , decodeFileFromTextWrap
37 , decodeFileFromTextWrap
36#if TEST
38#if TEST
@@ -94,6 +96,11 @@ encodeText :: ConvertSuccess B.ByteString a
94 -> a
96 -> a
95encodeText = unsafePerformIO . join . encode'
97encodeText = unsafePerformIO . join . encode'
96
98
99+encodeToText :: (ConvertSuccess B.ByteString a, ToObject x Text Text)
100+ => x
101+ -> a
102+encodeToText = unsafePerformIO . join . encode' . toTextObject
103+
97decodeText :: (ConvertSuccess a B.ByteString,
104decodeText :: (ConvertSuccess a B.ByteString,
98 MonadFailure YamlException m)
105 MonadFailure YamlException m)
99 => a
106 => a
@@ -129,15 +136,24 @@ decodeScalar :: (ConvertSuccess a B.ByteString,
129decodeScalar = liftM toScalarObject . unsafePerformIO . decode'
136decodeScalar = liftM toScalarObject . unsafePerformIO . decode'
130
137
131-- File API
138-- File API
132−encodeFile :: (ToObject o Text Text, MonadIO m, MonadFailure YamlException m)
139+encodeFile :: (MonadIO m, MonadFailure YamlException m)
133 => FilePath
140 => FilePath
134− -> o
141+ -> TextObject
135 -> m ()
142 -> m ()
136encodeFile path o = do
143encodeFile path o = do
137− content <- liftIO $ encode' $ toTextObject o
144+ content <- liftIO $ encode' o
138 content' <- content
145 content' <- content
139 liftIO $ ltWriteFile path content'
146 liftIO $ ltWriteFile path content'
140
147
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+
141ltWriteFile :: FilePath -> Text -> IO ()
157ltWriteFile :: FilePath -> Text -> IO ()
142ltWriteFile fp = BL.writeFile fp . LTE.encodeUtf8
158ltWriteFile fp = BL.writeFile fp . LTE.encodeUtf8
143
159