@@ -17,15 +17,14 @@ module Data.Aeson.Encode.ByteString
17 , encodeToByteStringBuilder
17 , encodeToByteStringBuilder
20−import Prelude hiding (null)
21import Data.Aeson.Types (ToJSON(..), Value(..))
20import Data.Aeson.Types (ToJSON(..), Value(..))
21+import Data.ByteString.Builder as B
22+import Data.ByteString.Builder.Prim as BP
23+import Data.ByteString.Builder.Scientific (scientificBuilder)
22import Data.Char (ord)
24import Data.Char (ord)
23−import Data.Scientific (Scientific, coefficient, base10Exponent)
24−import Data.Word (Word8)
25import Data.Monoid ((<>))
25import Data.Monoid ((<>))
26−import Data.ByteString.Builder as B
26+import Data.Scientific (Scientific, base10Exponent, coefficient)
27−import Data.ByteString.Builder.Prim as BP
27+import Data.Word (Word8)
28−import Data.ByteString.Builder.Scientific (scientificBuilder)
29import qualified Data.ByteString.Lazy as L
28import qualified Data.ByteString.Lazy as L
30import qualified Data.HashMap.Strict as HMS
29import qualified Data.HashMap.Strict as HMS
31import qualified Data.Text as T
30import qualified Data.Text as T
@@ -39,7 +38,7 @@ encode = B.toLazyByteString . encodeToBuilder . toJSON
39-- | Encode a JSON value to a ByteString 'B.Builder'. Use this function if you
38-- | Encode a JSON value to a ByteString 'B.Builder'. Use this function if you
40-- must prepend or append further bytes to the encoded JSON value.
39-- must prepend or append further bytes to the encoded JSON value.
41encodeToBuilder :: Value -> Builder
40encodeToBuilder :: Value -> Builder
42−encodeToBuilder Null = null
41+encodeToBuilder Null = null_
43encodeToBuilder (Bool b) = bool b
42encodeToBuilder (Bool b) = bool b
44encodeToBuilder (Number n) = number n
43encodeToBuilder (Number n) = number n
45encodeToBuilder (String s) = string s
44encodeToBuilder (String s) = string s
@@ -51,8 +50,8 @@ encodeToByteStringBuilder :: Value -> Builder
51encodeToByteStringBuilder = encodeToBuilder
50encodeToByteStringBuilder = encodeToBuilder
52{-# DEPRECATED encodeToByteStringBuilder "Use encodeToBuilder instead." #-}
51{-# DEPRECATED encodeToByteStringBuilder "Use encodeToBuilder instead." #-}
54−null :: Builder
53+null_ :: Builder
55−null = BP.primBounded (ascii4 ('n',('u',('l','l')))) ()
54+null_ = BP.primBounded (ascii4 ('n',('u',('l','l')))) ()
57bool :: Bool -> Builder
56bool :: Bool -> Builder
58bool = BP.primBounded (BP.condB id (ascii4 ('t',('r',('u','e'))))
57bool = BP.primBounded (BP.condB id (ascii4 ('t',('r',('u','e'))))