@@ -12,6 +12,7 @@ module Json.Encode
@@ -25,6 +26,7 @@ import Control.Arrow ((***))
25import qualified Data.ByteString.Char8 as BSC
26import qualified Data.ByteString.Char8 as BSC
26import qualified Data.ByteString.Builder as B
27import qualified Data.ByteString.Builder as B
27import qualified Data.Map as Map
28import qualified Data.Map as Map
29+import qualified Data.Scientific as Sci
28import Data.Monoid ((<>))
30import Data.Monoid ((<>))
29import qualified Data.Text as Text
31import qualified Data.Text as Text
30import qualified Numeric
32import qualified Numeric
@@ -41,6 +43,7 @@ data Value
41 | String B.Builder
43 | String B.Builder
42 | Boolean Bool
44 | Boolean Bool
43 | Integer Int
45 | Integer Int
46+ | Number Sci.Scientific
@@ -74,6 +77,11 @@ int =
80+number :: Sci.Scientific -> Value
77null :: Value
85null :: Value
@@ -150,6 +158,9 @@ encodeUgly value =
150 Integer n ->
158 Integer n ->
151 B.intDec n
159 B.intDec n
161+ Number scientific ->
162+ B.string7 (Sci.formatScientific Sci.Generic Nothing scientific)
@@ -242,7 +253,7 @@ encodeSequence :: B.Builder -> B.Builder -> (BSC.ByteString -> a -> B.Builder) -
242encodeSequence open close encodeEntry indent first rest =
253encodeSequence open close encodeEntry indent first rest =
244 newIndent =
255 newIndent =
245− indent <> "\t"
256+ indent <> " "
247 newIndentBuilder =
258 newIndentBuilder =
248 B.byteString newIndent
259 B.byteString newIndent