@@ -29,10 +29,9 @@ module Data.Aeson.Encode
30import Data.Aeson.Types (Value(..))
30import Data.Aeson.Types (Value(..))
31import Data.Monoid (mappend)
31import Data.Monoid (mappend)
32−import Data.Scientific (Scientific, coefficient, base10Exponent)
32+import Data.Scientific (FPFormat(..), Scientific, base10Exponent)
33import Data.Text.Lazy.Builder
33import Data.Text.Lazy.Builder
34−import Data.Text.Lazy.Builder.Int (decimal)
34+import Data.Text.Lazy.Builder.Scientific (formatScientificBuilder)
35−import Data.Text.Lazy.Builder.Scientific (scientificBuilder)
36import Numeric (showHex)
35import Numeric (showHex)
37import qualified Data.HashMap.Strict as H
36import qualified Data.HashMap.Strict as H
38import qualified Data.Text as T
37import qualified Data.Text as T
@@ -97,11 +96,11 @@ string s = {-# SCC "string" #-} singleton '"' <> quote s <> singleton '"'
97 where h = showHex (fromEnum c) ""
96 where h = showHex (fromEnum c) ""
99fromScientific :: Scientific -> Builder
98fromScientific :: Scientific -> Builder
100−fromScientific s
99+fromScientific s = formatScientificBuilder format prec s
101− | e < 0 = scientificBuilder s
102− | otherwise = decimal (coefficient s * 10 ^ e)
104− e = base10Exponent s
102+ | base10Exponent s < 0 = (Generic, Nothing)
103+ | otherwise = (Fixed, Just 0)
106(<>) :: Builder -> Builder -> Builder
105(<>) :: Builder -> Builder -> Builder
107(<>) = mappend
106(<>) = mappend