on master help sign in
Move the encode function to a more convenient place
commitfa4dfb660e32f9355ad838758f38b0c265ad54fd authorBryan O'Sullivan <bos@serpentine.com> dateMon 20 Jul 2015, 20:42 (11 years ago) parentc532301
2 files changed+12−10
Data/Aeson/Encode.hs+2−10 Data/Aeson/Encode/Functions.hs+10
Data/Aeson/Encode.hs+2−10
@@ -28,25 +28,17 @@ module Data.Aeson.Encode
2828 ) where
2929
3030import Data.Aeson.Encode.Builder (encodeToBuilder)
31−import Data.Aeson.Types (ToJSON(..), Value(..), fromEncoding)
31+import Data.Aeson.Encode.Functions (encode)
32+import Data.Aeson.Types (Value(..))
3233import Data.Monoid ((<>))
3334import Data.Scientific (FPFormat(..), Scientific, base10Exponent)
3435import Data.Text.Lazy.Builder
3536import Data.Text.Lazy.Builder.Scientific (formatScientificBuilder)
3637import Numeric (showHex)
37−import qualified Data.ByteString.Builder as B
38−import qualified Data.ByteString.Lazy as L
3938import qualified Data.HashMap.Strict as H
4039import qualified Data.Text as T
4140import qualified Data.Vector as V
4241
43−-- | Efficiently serialize a JSON value as a lazy 'L.ByteString'.
44−--
45−-- This is implemented in terms of the 'ToJSON' class's 'toEncoding' method.
46−encode :: ToJSON a => a -> L.ByteString
47−encode = B.toLazyByteString . fromEncoding . toEncoding
48−{-# INLINE encode #-}
49−
5042-- | Encode a JSON 'Value' to a "Data.Text" 'Builder', which can be
5143-- embedded efficiently in a text-based protocol.
5244--
Data/Aeson/Encode/Functions.hs+10
@@ -3,6 +3,7 @@ module Data.Aeson.Encode.Functions
33 brackets
44 , builder
55 , char7
6+ , encode
67 , foldable
78 , list
89 , pairs
@@ -15,11 +16,20 @@ import Data.ByteString.Builder (Builder, char7)
1516import Data.ByteString.Builder.Prim (primBounded)
1617import Data.Foldable (Foldable, foldMap)
1718import Data.Monoid ((<>), mempty)
19+import qualified Data.ByteString.Builder as B
20+import qualified Data.ByteString.Lazy as L
1821
1922builder :: ToJSON a => a -> Builder
2023builder = fromEncoding . toEncoding
2124{-# INLINE builder #-}
2225
26+-- | Efficiently serialize a JSON value as a lazy 'L.ByteString'.
27+--
28+-- This is implemented in terms of the 'ToJSON' class's 'toEncoding' method.
29+encode :: ToJSON a => a -> L.ByteString
30+encode = B.toLazyByteString . builder
31+{-# INLINE encode #-}
32+
2333-- | Encode a 'Foldable' as a JSON array.
2434foldable :: (Foldable t, ToJSON a) => t a -> Encoding
2535foldable = brackets '[' ']' . foldMap (Value . toEncoding)