on master help sign in
Merge pull request #70 from xkollar/fix-aeson-under-0.7.0
24803deMichael Snoyman
Data/Yaml.hs−2
@@ -68,8 +68,6 @@ import Control.Exception
68import qualified Data.Conduit as C
68import qualified Data.Conduit as C
69import qualified Data.Conduit.List as CL
69import qualified Data.Conduit.List as CL
70import qualified Data.Vector as V
70import qualified Data.Vector as V
71−import Data.Text (Text)
72−import qualified Data.Text as T
73import Data.Text.Encoding (encodeUtf8)
71import Data.Text.Encoding (encodeUtf8)
74import qualified Data.HashMap.Strict as M
72import qualified Data.HashMap.Strict as M
75import qualified Data.HashSet as HashSet
73import qualified Data.HashSet as HashSet
Data/Yaml/Builder.hs+9−3
@@ -23,10 +23,11 @@ import Data.ByteString (ByteString)
23import Text.Libyaml
23import Text.Libyaml
24import Data.Yaml.Internal
24import Data.Yaml.Internal
25import Data.Text (Text)
25import Data.Text (Text)
26+#if MIN_VERSION_aeson(0, 7, 0)
26import Data.Scientific (Scientific)
27import Data.Scientific (Scientific)
27import Data.Aeson.Types (Value(..))
28import Data.Aeson.Types (Value(..))
29+#endif
28import qualified Data.HashSet as HashSet
30import qualified Data.HashSet as HashSet
29−import qualified Data.Text as T
30import Data.Text.Encoding (encodeUtf8)
31import Data.Text.Encoding (encodeUtf8)
31import System.IO.Unsafe (unsafePerformIO)
32import System.IO.Unsafe (unsafePerformIO)
32import Control.Arrow (second)
33import Control.Arrow (second)
@@ -38,7 +39,7 @@ import qualified Data.Text.Lazy as TL
38import Data.Text.Lazy.Builder (toLazyText)
39import Data.Text.Lazy.Builder (toLazyText)
39import Data.Aeson.Encode (encodeToTextBuilder)
40import Data.Aeson.Encode (encodeToTextBuilder)
40#else
41#else
41−import qualified Data.ByteString.Char8 as S8
42+import Data.Attoparsec.Number
42#endif
43#endif
43import Prelude hiding (null)
44import Prelude hiding (null)
44
45
@@ -88,8 +89,13 @@ string s =
88 | otherwise = EventScalar (encodeUtf8 s) StrTag PlainNoTag Nothing
89 | otherwise = EventScalar (encodeUtf8 s) StrTag PlainNoTag Nothing
89
90
90-- Use aeson's implementation which gets rid of annoying decimal points
91-- Use aeson's implementation which gets rid of annoying decimal points
92+#if MIN_VERSION_aeson(0, 7, 0)
91scientific :: Scientific -> YamlBuilder
93scientific :: Scientific -> YamlBuilder
92scientific n = YamlBuilder (EventScalar (TE.encodeUtf8 $ TL.toStrict $ toLazyText $ encodeToTextBuilder (Number n)) IntTag PlainNoTag Nothing :)
94scientific n = YamlBuilder (EventScalar (TE.encodeUtf8 $ TL.toStrict $ toLazyText $ encodeToTextBuilder (Number n)) IntTag PlainNoTag Nothing :)
95+#else
96+scientific :: Number -> YamlBuilder
97+scientific n = YamlBuilder (EventScalar (S8.pack $ show n) IntTag PlainNoTag Nothing :)
98+#endif
93
99
94{-# DEPRECATED number "Use scientific" #-}
100{-# DEPRECATED number "Use scientific" #-}
95#if MIN_VERSION_aeson(0,7,0)
101#if MIN_VERSION_aeson(0,7,0)
@@ -97,7 +103,7 @@ number :: Scientific -> YamlBuilder
97number = scientific
103number = scientific
98#else
104#else
99number :: Number -> YamlBuilder
105number :: Number -> YamlBuilder
100−number n rest = YamlBuilder (EventScalar (S8.pack $ show n) IntTag PlainNoTag Nothing :)
106+number n = YamlBuilder (EventScalar (S8.pack $ show n) IntTag PlainNoTag Nothing :)
101#endif
107#endif
102
108
103bool :: Bool -> YamlBuilder
109bool :: Bool -> YamlBuilder
Data/Yaml/Internal.hs−1
@@ -19,7 +19,6 @@ import Data.Aeson.Types hiding (parse)
19import Text.Libyaml hiding (encode, decode, encodeFile, decodeFile)
19import Text.Libyaml hiding (encode, decode, encodeFile, decodeFile)
20import Data.ByteString (ByteString)
20import Data.ByteString (ByteString)
21import qualified Data.Map as Map
21import qualified Data.Map as Map
22−import Data.Maybe (isNothing)
23import Control.Exception
22import Control.Exception
24import Control.Exception.Enclosed
23import Control.Exception.Enclosed
25import Control.Monad.Trans.State
24import Control.Monad.Trans.State
Data/Yaml/Pretty.hs+1−1
@@ -48,7 +48,7 @@ pretty cfg = go
48 go (Array a) = array (fmap go $ V.toList a)
48 go (Array a) = array (fmap go $ V.toList a)
49 go Null = null
49 go Null = null
50 go (String s) = string s
50 go (String s) = string s
51− go (Number n) = number n
51+ go (Number n) = scientific n
52 go (Bool b) = bool b
52 go (Bool b) = bool b
53
53
54-- | Configurable 'encode'.
54-- | Configurable 'encode'.