on master help sign in
Export stuff
commit7c8bbcab1d59194d65f80246d3c6c0d69333a169 authorBryan O'Sullivan <bos@serpentine.com> dateMon 25 May 2015, 13:34 (11 years ago) parentb7cb1ee
1 file changed+16−4
Data/Aeson/Encode/ByteString.hs+16−4
Data/Aeson/Encode/ByteString.hs+16−4
@@ -15,6 +15,12 @@ module Data.Aeson.Encode.ByteString
1515 ( encode
1616 , encodeToBuilder
1717 , encodeToByteStringBuilder
18+ , null_
19+ , bool
20+ , array
21+ , object
22+ , text
23+ , number
1824 ) where
1925
2026import Data.Aeson.Types (ToJSON(..), Value(..))
@@ -41,7 +47,7 @@ encodeToBuilder :: Value -> Builder
4147encodeToBuilder Null = null_
4248encodeToBuilder (Bool b) = bool b
4349encodeToBuilder (Number n) = number n
44−encodeToBuilder (String s) = string s
50+encodeToBuilder (String s) = text s
4551encodeToBuilder (Array v) = array v
4652encodeToBuilder (Object m) = object m
4753
@@ -50,13 +56,16 @@ encodeToByteStringBuilder :: Value -> Builder
5056encodeToByteStringBuilder = encodeToBuilder
5157{-# DEPRECATED encodeToByteStringBuilder "Use encodeToBuilder instead." #-}
5258
59+-- | Encode a JSON null.
5360null_ :: Builder
5461null_ = BP.primBounded (ascii4 ('n',('u',('l','l')))) ()
5562
63+-- | Encode a JSON boolean.
5664bool :: Bool -> Builder
5765bool = BP.primBounded (BP.condB id (ascii4 ('t',('r',('u','e'))))
5866 (ascii5 ('f',('a',('l',('s','e'))))))
5967
68+-- | Encode a JSON array.
6069array :: V.Vector Value -> Builder
6170array v
6271 | V.null v = B.char8 '[' <> B.char8 ']'
@@ -66,16 +75,18 @@ array v
6675 where
6776 withComma a z = B.char8 ',' <> encodeToBuilder a <> z
6877
78+-- Encode a JSON object.
6979object :: HMS.HashMap T.Text Value -> Builder
7080object m = case HMS.toList m of
7181 (x:xs) -> B.char8 '{' <> one x <> foldr withComma (B.char8 '}') xs
7282 _ -> B.char8 '{' <> B.char8 '}'
7383 where
7484 withComma a z = B.char8 ',' <> one a <> z
75− one (k,v) = string k <> B.char8 ':' <> encodeToBuilder v
85+ one (k,v) = text k <> B.char8 ':' <> encodeToBuilder v
7686
77−string :: T.Text -> B.Builder
78−string t =
87+-- | Encode a JSON string.
88+text :: T.Text -> Builder
89+text t =
7990 B.char8 '"' <> TE.encodeUtf8BuilderEscaped escapeAscii t <> B.char8 '"'
8091 where
8192 escapeAscii :: BP.BoundedPrim Word8
@@ -94,6 +105,7 @@ string t =
94105 hexEscape = (\c -> ('\\', ('u', fromIntegral c))) BP.>$<
95106 BP.char8 BP.>*< BP.char8 BP.>*< BP.word16HexFixed
96107
108+-- | Encode a JSON number.
97109number :: Scientific -> Builder
98110number s
99111 | e < 0 = scientificBuilder s