@@ -66,7 +66,6 @@ import Data.Aeson
66import Data.Aeson.Types (Pair, parseMaybe, parseEither, Parser)
66import Data.Aeson.Types (Pair, parseMaybe, parseEither, Parser)
67import Text.Libyaml hiding (encode, decode, encodeFile, decodeFile)
67import Text.Libyaml hiding (encode, decode, encodeFile, decodeFile)
68import Data.ByteString (ByteString)
68import Data.ByteString (ByteString)
69−import qualified Data.ByteString.Char8 as S8
70import qualified Data.Map as Map
69import qualified Data.Map as Map
71import System.IO.Unsafe (unsafePerformIO)
70import System.IO.Unsafe (unsafePerformIO)
72import Control.Exception (try, throwIO, fromException, Exception, SomeException, AsyncException)
71import Control.Exception (try, throwIO, fromException, Exception, SomeException, AsyncException)
@@ -88,8 +87,13 @@ import qualified Data.HashSet as HashSet
88import Data.Text.Read
87import Data.Text.Read
89#if MIN_VERSION_aeson(0, 7, 0)
88#if MIN_VERSION_aeson(0, 7, 0)
90import Data.Scientific (fromFloatDigits)
89import Data.Scientific (fromFloatDigits)
90+import qualified Data.Text.Encoding as TE
91+import qualified Data.Text.Lazy as TL
92+import Data.Text.Lazy.Builder (toLazyText)
93+import Data.Aeson.Encode (encodeToTextBuilder)
92import Data.Attoparsec.Number
95import Data.Attoparsec.Number
96+import qualified Data.ByteString.Char8 as S8
94import Control.Monad.Trans.Resource (ResourceT, runResourceT)
98import Control.Monad.Trans.Resource (ResourceT, runResourceT)
@@ -140,7 +144,12 @@ objToEvents' (String s) rest =
140objToEvents' Null rest = EventScalar "null" NullTag PlainNoTag Nothing : rest
144objToEvents' Null rest = EventScalar "null" NullTag PlainNoTag Nothing : rest
141objToEvents' (Bool True) rest = EventScalar "true" BoolTag PlainNoTag Nothing : rest
145objToEvents' (Bool True) rest = EventScalar "true" BoolTag PlainNoTag Nothing : rest
142objToEvents' (Bool False) rest = EventScalar "false" BoolTag PlainNoTag Nothing : rest
146objToEvents' (Bool False) rest = EventScalar "false" BoolTag PlainNoTag Nothing : rest
147+#if MIN_VERSION_aeson(0,7,0)
148+-- Use aeson's implementation which gets rid of annoying decimal points
149+objToEvents' n@Number{} rest = EventScalar (TE.encodeUtf8 $ TL.toStrict $ toLazyText $ encodeToTextBuilder n) IntTag PlainNoTag Nothing : rest
143objToEvents' (Number n) rest = EventScalar (S8.pack $ show n) IntTag PlainNoTag Nothing : rest
151objToEvents' (Number n) rest = EventScalar (S8.pack $ show n) IntTag PlainNoTag Nothing : rest
145pairToEvents :: Pair -> [Y.Event] -> [Y.Event]
154pairToEvents :: Pair -> [Y.Event] -> [Y.Event]
146pairToEvents (k, v) rest =
155pairToEvents (k, v) rest =