@@ -33,6 +33,12 @@ module Text.Yaml
3333 , encodeText
3434 , decodeText
3535 , decodeTextSuccess
36+ -- * Converting to/from 'ScalarObject's
37+ , encodeScalar'
38+ , decodeScalar'
39+ , encodeScalar
40+ , decodeScalar
41+ , decodeScalarSuccess
3642#if TEST
3743 , testSuite
3844#endif
@@ -41,12 +47,13 @@ module Text.Yaml
4147import Prelude hiding (readList)
4248import Text.Libyaml
4349import Data.ByteString (ByteString)
44−import Data.Object.Text
4550import System.IO.Unsafe
4651import Control.Monad (join)
4752import Data.Convertible.Text
4853import Data.Attempt
4954
55+import Data.Object.Text
56+import Data.Object.Scalar
5057import Data.Object.Yaml
5158
5259#if TEST
@@ -130,6 +137,34 @@ decodeTextSuccess :: ( MonadFailure YamlException m
130137 -> m x
131138decodeTextSuccess = fmap convertSuccess . decodeText'
132139
140+-- ScalarObjects
141+encodeScalar' :: ScalarObject -> ByteString
142+encodeScalar' = encodeYaml
143+
144+decodeScalar' :: MonadFailure YamlException m
145+ => ByteString
146+ -> m ScalarObject
147+decodeScalar' = decodeYamlSuccess
148+
149+-- ScalarObject conversions
150+encodeScalar :: ConvertSuccess x ScalarObject => x -> ByteString
151+encodeScalar = encodeScalar' . convertSuccess
152+
153+decodeScalar :: ( MonadFailure YamlException m
154+ , ConvertAttempt ScalarObject x
155+ , Failure ConversionException m
156+ )
157+ => ByteString
158+ -> m x
159+decodeScalar bs = decodeScalar' bs >>= convertAttemptWrap
160+
161+decodeScalarSuccess :: ( MonadFailure YamlException m
162+ , ConvertSuccess ScalarObject x
163+ )
164+ => ByteString
165+ -> m x
166+decodeScalarSuccess = fmap convertSuccess . decodeScalar'
167+
133168#if TEST
134169newtype MyString = MyString String
135170 deriving (Eq, Show)