@@ -18,15 +18,21 @@
19module Text.Yaml
19module Text.Yaml
21 -- * Converting to/from 'TextObject's
24 -- * Converting to/from 'TextObject's
22 encodeText
25 encodeText
23 , decodeText
26 , decodeText
24 -- * Convert to/from 'ScalarObejct's
29 -- * Convert to/from 'ScalarObejct's
25 , encodeScalar
30 , encodeScalar
26 , decodeScalar
31 , decodeScalar
27 -- * Files
32 -- * Files
28 , encodeFile
33 , encodeFile
29 , decodeFile
34 , decodeFile
35+ , decodeFileFromTextWrap
31 , testSuite
37 , testSuite
@@ -44,7 +50,7 @@ import Control.Arrow (first)
44import Control.Monad (liftM, join)
50import Control.Monad (liftM, join)
45import Control.Monad.Trans
51import Control.Monad.Trans
46import Data.Convertible
52import Data.Convertible
47−import Control.Monad.Failure
53+import Data.Attempt
49import Data.Text.Lazy (Text)
55import Data.Text.Lazy (Text)
50import qualified Data.Text.Lazy as LT
56import qualified Data.Text.Lazy as LT
@@ -94,6 +100,21 @@ decodeText :: (ConvertSuccess a B.ByteString,
94 -> m TextObject
100 -> m TextObject
95decodeText = unsafePerformIO . decode'
101decodeText = unsafePerformIO . decode'
103+decodeFromText :: (ConvertSuccess a B.ByteString,
104+ FromObject x Text Text)
107+decodeFromText a = decodeText a >>= fromObject
109+decodeFromTextWrap :: (ConvertSuccess a B.ByteString,
110+ FromObject x Text Text,
111+ MonadFailure YamlException m,
112+ MonadFailure FromObjectException m
116+decodeFromTextWrap a = decodeText a >>= fromObjectWrap
97-- Scalar API
118-- Scalar API
98-- FIXME: this *should* be in a MonadFailure...
119-- FIXME: this *should* be in a MonadFailure...
99encodeScalar :: ConvertSuccess B.ByteString a
120encodeScalar :: ConvertSuccess B.ByteString a
@@ -131,6 +152,15 @@ decodeFile path = do
131ltReadFile :: FilePath -> IO Text
152ltReadFile :: FilePath -> IO Text
132ltReadFile = fmap LTE.decodeUtf8 . BL.readFile
153ltReadFile = fmap LTE.decodeUtf8 . BL.readFile
155+decodeFileFromTextWrap :: (MonadFailure YamlException m,
156+ MonadFailure FromObjectException m,
158+ FromObject x Text Text
162+decodeFileFromTextWrap path = decodeFile path >>= fromObjectWrap
134-- The real worker functions
164-- The real worker functions
135objectToEvents :: TextObject -> [Event]
165objectToEvents :: TextObject -> [Event]
136objectToEvents y = concat
166objectToEvents y = concat