on master help sign in
Merge pull request #70 from xkollar/fix-aeson-under-0.7.0

Fix aeson under 0.7.0

commit24803de2e35583c1590871725e90ec1c43619af1 authorMichael Snoyman <michael@snoyman.com> dateSun 6 Sep 2015, 11:30 (11 years ago) parente38f22a831f4b7
4 files changed+10−7
Data/Yaml.hs−2 Data/Yaml/Builder.hs+9−3 Data/Yaml/Internal.hs−1 Data/Yaml/Pretty.hs+1−1
Data/Yaml.hs−2
@@ -68,8 +68,6 @@ import Control.Exception
6868import qualified Data.Conduit as C
6969import qualified Data.Conduit.List as CL
7070import qualified Data.Vector as V
71−import Data.Text (Text)
72−import qualified Data.Text as T
7371import Data.Text.Encoding (encodeUtf8)
7472import qualified Data.HashMap.Strict as M
7573import qualified Data.HashSet as HashSet
Data/Yaml/Builder.hs+9−3
@@ -23,10 +23,11 @@ import Data.ByteString (ByteString)
2323import Text.Libyaml
2424import Data.Yaml.Internal
2525import Data.Text (Text)
26+#if MIN_VERSION_aeson(0, 7, 0)
2627import Data.Scientific (Scientific)
2728import Data.Aeson.Types (Value(..))
29+#endif
2830import qualified Data.HashSet as HashSet
29−import qualified Data.Text as T
3031import Data.Text.Encoding (encodeUtf8)
3132import System.IO.Unsafe (unsafePerformIO)
3233import Control.Arrow (second)
@@ -38,7 +39,7 @@ import qualified Data.Text.Lazy as TL
3839import Data.Text.Lazy.Builder (toLazyText)
3940import Data.Aeson.Encode (encodeToTextBuilder)
4041#else
41−import qualified Data.ByteString.Char8 as S8
42+import Data.Attoparsec.Number
4243#endif
4344import Prelude hiding (null)
4445
@@ -88,8 +89,13 @@ string s =
8889 | otherwise = EventScalar (encodeUtf8 s) StrTag PlainNoTag Nothing
8990
9091-- Use aeson's implementation which gets rid of annoying decimal points
92+#if MIN_VERSION_aeson(0, 7, 0)
9193scientific :: Scientific -> YamlBuilder
9294scientific 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
9399
94100{-# DEPRECATED number "Use scientific" #-}
95101#if MIN_VERSION_aeson(0,7,0)
@@ -97,7 +103,7 @@ number :: Scientific -> YamlBuilder
97103number = scientific
98104#else
99105number :: 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 :)
101107#endif
102108
103109bool :: Bool -> YamlBuilder
Data/Yaml/Internal.hs−1
@@ -19,7 +19,6 @@ import Data.Aeson.Types hiding (parse)
1919import Text.Libyaml hiding (encode, decode, encodeFile, decodeFile)
2020import Data.ByteString (ByteString)
2121import qualified Data.Map as Map
22−import Data.Maybe (isNothing)
2322import Control.Exception
2423import Control.Exception.Enclosed
2524import Control.Monad.Trans.State
Data/Yaml/Pretty.hs+1−1
@@ -48,7 +48,7 @@ pretty cfg = go
4848 go (Array a) = array (fmap go $ V.toList a)
4949 go Null = null
5050 go (String s) = string s
51− go (Number n) = number n
51+ go (Number n) = scientific n
5252 go (Bool b) = bool b
5353
5454-- | Configurable 'encode'.