@@ -94,22 +94,17 @@ import Data.Aeson
9494 , Object, Array
9595 , withObject, withText, withArray, withScientific, withBool
9696 )
97−#if MIN_VERSION_aeson(1,0,0)
98−import Data.Aeson.Text (encodeToTextBuilder)
99−#else
100−import Data.Aeson.Encode (encodeToTextBuilder)
101−#endif
97+import qualified Data.ByteString.Builder.Scientific
10298import Data.Aeson.Types (Pair, parseMaybe, parseEither, Parser)
10399import Data.ByteString (ByteString)
100+import qualified Data.ByteString.Builder as BB
101+import qualified Data.ByteString.Lazy as BL
104102import Data.Conduit ((.|), runConduitRes)
105103import qualified Data.Conduit.List as CL
106104import qualified Data.HashMap.Strict as M
107105import qualified Data.HashSet as HashSet
108106import Data.Text.Encoding (encodeUtf8)
109107import qualified Data.Text as T
110−import qualified Data.Text.Encoding as TE
111−import qualified Data.Text.Lazy as TL
112−import Data.Text.Lazy.Builder (toLazyText)
113108import qualified Data.Vector as V
114109import System.IO.Unsafe (unsafePerformIO)
115110import Data.Text (Text)
@@ -221,7 +216,11 @@ objToEvents opts o = (:) EventStreamStart
221216 objToEvents' (Bool True) rest = EventScalar "true" BoolTag PlainNoTag Nothing : rest
222217 objToEvents' (Bool False) rest = EventScalar "false" BoolTag PlainNoTag Nothing : rest
223218 -- Use aeson's implementation which gets rid of annoying decimal points
224− objToEvents' n@Number{} rest = EventScalar (TE.encodeUtf8 $ TL.toStrict $ toLazyText $ encodeToTextBuilder n) IntTag PlainNoTag Nothing : rest
219+ objToEvents' (Number s) rest =
220+ let builder = Data.ByteString.Builder.Scientific.scientificBuilder s
221+ lbs = BB.toLazyByteString builder
222+ bs = BL.toStrict lbs
223+ in EventScalar bs IntTag PlainNoTag Nothing : rest
225224
226225 pairToEvents :: Pair -> [Y.Event] -> [Y.Event]
227226 pairToEvents (k, v) = objToEvents' (String k) . objToEvents' v