on master help sign in
Better support for GHC < 7.8
commit9c92874df9d2f7ed736599d25a1ed9dbb25de9db authorLeon P Smith <leon@melding-monads.com> dateFri 10 Jan 2014, 18:52 (13 years ago) parent12677f2
3 files changed+9−24
Data/Text/Encoding.hs−9 Data/Text/Lazy/Encoding.hs+2−10 text.cabal+7−5
Data/Text/Encoding.hs−9
@@ -55,13 +55,9 @@ module Data.Text.Encoding
5555 , encodeUtf32LE
5656 , encodeUtf32BE
5757
58−#if MIN_VERSION_bytestring(0,10,4)
5958 -- * Encoding Text using ByteString Builders
60− -- | /Note/ that these functions are only available if built against
61− -- @bytestring >= 0.10.4.0@.
6259 , encodeUtf8Builder
6360 , encodeUtf8BuilderEscaped
64−#endif
6561 ) where
6662
6763#if __GLASGOW_HASKELL__ >= 702
@@ -70,7 +66,6 @@ import Control.Monad.ST.Unsafe (unsafeIOToST, unsafeSTToIO)
7066import Control.Monad.ST (unsafeIOToST, unsafeSTToIO)
7167#endif
7268
73−#if MIN_VERSION_bytestring(0,10,4)
7469import Data.Bits ((.&.))
7570import Data.Text.Internal.Unsafe.Char (ord)
7671import qualified Data.ByteString.Builder as B
@@ -79,7 +74,6 @@ import qualified Data.ByteString.Builder.Internal as B hiding (empty)
7974import qualified Data.ByteString.Builder.Prim as BP
8075import qualified Data.ByteString.Builder.Prim.Internal as BP
8176import qualified Data.Text.Internal.Encoding.Utf16 as U16
82−#endif
8377
8478import Control.Exception (evaluate, try)
8579import Control.Monad.ST (runST)
@@ -307,8 +301,6 @@ decodeUtf8' :: ByteString -> Either UnicodeException Text
307301decodeUtf8' = unsafeDupablePerformIO . try . evaluate . decodeUtf8With strictDecode
308302{-# INLINE decodeUtf8' #-}
309303
310−#if MIN_VERSION_bytestring(0,10,4)
311−
312304-- | Encode text to a ByteString 'B.Builder' using UTF-8 encoding.
313305encodeUtf8Builder :: Text -> B.Builder
314306encodeUtf8Builder = encodeUtf8BuilderEscaped (BP.liftFixedToBounded BP.word8)
@@ -369,7 +361,6 @@ encodeUtf8BuilderEscaped be =
369361 outerLoop i (B.BufferRange op ope)
370362 where
371363 poke8 j v = poke (op `plusPtr` j) (fromIntegral v :: Word8)
372−#endif
373364
374365-- | Encode text using UTF-8 encoding.
375366encodeUtf8 :: Text -> ByteString
Data/Text/Lazy/Encoding.hs+2−10
@@ -46,11 +46,9 @@ module Data.Text.Lazy.Encoding
4646 , encodeUtf32LE
4747 , encodeUtf32BE
4848
49−#if MIN_VERSION_bytestring(0,10,4)
5049 -- * Encoding Text using ByteString Builders
5150 , encodeUtf8Builder
5251 , encodeUtf8BuilderEscaped
53−#endif
5452 ) where
5553
5654import Control.Exception (evaluate, try)
@@ -60,14 +58,14 @@ import qualified Data.ByteString as S
6058import qualified Data.ByteString.Lazy as B
6159import qualified Data.ByteString.Lazy.Internal as B
6260import qualified Data.ByteString.Unsafe as B
63−#if MIN_VERSION_bytestring(0,10,4)
61+
6462import Data.Word (Word8)
6563import Data.Monoid (mempty, (<>))
6664import qualified Data.ByteString.Builder as B
6765import qualified Data.ByteString.Builder.Extra as B (safeStrategy, toLazyByteStringWith)
6866import qualified Data.ByteString.Builder.Prim as BP
6967import qualified Data.Text as T
70−#endif
68+
7169import qualified Data.Text.Encoding as TE
7270import qualified Data.Text.Lazy as L
7371import qualified Data.Text.Internal.Lazy.Encoding.Fusion as E
@@ -149,7 +147,6 @@ decodeUtf8' bs = unsafeDupablePerformIO $ do
149147{-# INLINE decodeUtf8' #-}
150148
151149encodeUtf8 :: Text -> B.ByteString
152−#if MIN_VERSION_bytestring(0,10,4)
153150encodeUtf8 Empty = B.empty
154151encodeUtf8 lt@(Chunk t _) =
155152 B.toLazyByteStringWith strategy B.empty $ encodeUtf8Builder lt
@@ -170,11 +167,6 @@ encodeUtf8BuilderEscaped :: BP.BoundedPrim Word8 -> Text -> B.Builder
170167encodeUtf8BuilderEscaped prim =
171168 foldrChunks (\c b -> TE.encodeUtf8BuilderEscaped prim c <> b) mempty
172169
173−#else
174−encodeUtf8 (Chunk c cs) = B.Chunk (TE.encodeUtf8 c) (encodeUtf8 cs)
175−encodeUtf8 Empty = B.Empty
176−#endif
177−
178170-- | Decode text from little endian UTF-16 encoding.
179171decodeUtf16LEWith :: OnDecodeError -> B.ByteString -> Text
180172decodeUtf16LEWith onErr bs = F.unstream (E.streamUtf16LE onErr bs)
text.cabal+7−5
@@ -1,5 +1,5 @@
11name: text
2−version: 1.1.0.0
2+version: 1.1.1.0
33homepage: https://github.com/bos/text
44bug-reports: https://github.com/bos/text/issues
55synopsis: An efficient packed Unicode text type.
@@ -121,13 +121,12 @@ library
121121 build-depends:
122122 array >= 0.3,
123123 base >= 4.2 && < 5,
124+ bytestring >= 0.9,
124125 deepseq >= 1.1.0.0,
125126 ghc-prim >= 0.2
126127
127− if impl(ghc >= 7.7)
128− build-depends: bytestring >= 0.10.4.0
129− else
130− build-depends: bytestring >= 0.9
128+ if impl(ghc < 7.8)
129+ build-depends: bytestring-builder
131130
132131 cpp-options: -DHAVE_DEEPSEQ
133132 ghc-options: -Wall -fwarn-tabs -funbox-strict-fields -O2
@@ -170,6 +169,9 @@ test-suite tests
170169 test-framework-hunit >= 0.2,
171170 test-framework-quickcheck2 >= 0.2
172171
172+ if impl(ghc < 7.8)
173+ build-depends: bytestring-builder
174+
173175 if flag(integer-simple)
174176 cpp-options: -DINTEGER_SIMPLE
175177 build-depends: integer-simple >= 0.1 && < 0.5