@@ -3,6 +3,7 @@
3-- file, You can obtain one at http://mozilla.org/MPL/2.0/.
3-- file, You can obtain one at http://mozilla.org/MPL/2.0/.
5{-# LANGUAGE BangPatterns #-}
5{-# LANGUAGE BangPatterns #-}
6{-# LANGUAGE OverloadedStrings #-}
7{-# LANGUAGE OverloadedStrings #-}
7{-# LANGUAGE FlexibleInstances #-}
8{-# LANGUAGE FlexibleInstances #-}
@@ -15,13 +16,11 @@ module Data.ByteString.Conversion.To
16import Data.ByteString (ByteString)
17import Data.ByteString (ByteString)
17import Data.ByteString.Conversion.Internal
18import Data.ByteString.Conversion.Internal
18−import Data.ByteString.Lazy.Builder
19+import Data.ByteString.Builder
19−import Data.ByteString.Lazy.Builder.Extras hiding (runBuilder)
20+import Data.ByteString.Builder.Extra hiding (runBuilder)
20import Data.CaseInsensitive (CI, original)
21import Data.CaseInsensitive (CI, original)
21−import Data.Double.Conversion.Text
22import Data.Int
22import Data.Int
23import Data.List (intersperse)
23import Data.List (intersperse)
25import Data.Text (Text)
24import Data.Text (Text)
26import Data.Text.Encoding (encodeUtf8)
25import Data.Text.Encoding (encodeUtf8)
27import Data.Word
26import Data.Word
@@ -32,6 +31,12 @@ import qualified Data.Text as T
32import qualified Data.Text.Lazy as TL
31import qualified Data.Text.Lazy as TL
33import qualified Data.Text.Lazy.Encoding as TL
32import qualified Data.Text.Lazy.Encoding as TL
35+import Blaze.Text.Double
37+import Data.Double.Conversion.Text
35class ToByteString a where
40class ToByteString a where
36 builder :: a -> Builder
41 builder :: a -> Builder
@@ -42,8 +47,13 @@ instance ToByteString Text where builder x = byteString $ encodeUtf8 x
42instance ToByteString TL.Text where builder x = lazyByteString $ TL.encodeUtf8 x
47instance ToByteString TL.Text where builder x = lazyByteString $ TL.encodeUtf8 x
43instance ToByteString Char where builder x = builder $ T.singleton x
48instance ToByteString Char where builder x = builder $ T.singleton x
44instance ToByteString [Char] where builder x = builder $ TL.pack x
49instance ToByteString [Char] where builder x = builder $ TL.pack x
51+instance ToByteString Float where builder x = double $ float2Double x
52+instance ToByteString Double where builder x = double x
45instance ToByteString Float where builder x = builder $ toShortest $ float2Double x
54instance ToByteString Float where builder x = builder $ toShortest $ float2Double x
46instance ToByteString Double where builder x = builder $ toShortest x
55instance ToByteString Double where builder x = builder $ toShortest x
48instance ToByteString Int where builder x = intDec x
58instance ToByteString Int where builder x = intDec x
49instance ToByteString Int8 where builder x = int8Dec x
59instance ToByteString Int8 where builder x = int8Dec x