@@ -141,6 +141,7 @@ decodeUtf8' bs = unsafeDupablePerformIO $ do
141 rnf (Chunk _ ts) = rnf ts
141 rnf (Chunk _ ts) = rnf ts
142{-# INLINE decodeUtf8' #-}
142{-# INLINE decodeUtf8' #-}
144+-- | Encode text using UTF-8 encoding.
144encodeUtf8 :: Text -> B.ByteString
145encodeUtf8 :: Text -> B.ByteString
145encodeUtf8 Empty = B.empty
146encodeUtf8 Empty = B.empty
146encodeUtf8 lt@(Chunk t _) =
147encodeUtf8 lt@(Chunk t _) =
@@ -154,10 +155,20 @@ encodeUtf8 lt@(Chunk t _) =
154 firstChunkSize = min B.smallChunkSize (4 * (T.length t + 1))
155 firstChunkSize = min B.smallChunkSize (4 * (T.length t + 1))
155 strategy = B.safeStrategy firstChunkSize B.defaultChunkSize
156 strategy = B.safeStrategy firstChunkSize B.defaultChunkSize
158+-- | Encode text to a ByteString 'B.Builder' using UTF-8 encoding.
157encodeUtf8Builder :: Text -> B.Builder
161encodeUtf8Builder :: Text -> B.Builder
158encodeUtf8Builder =
162encodeUtf8Builder =
159 foldrChunks (\c b -> TE.encodeUtf8Builder c `mappend` b) Data.Monoid.mempty
163 foldrChunks (\c b -> TE.encodeUtf8Builder c `mappend` b) Data.Monoid.mempty
165+-- | Encode text using UTF-8 encoding and escape the ASCII characters using
166+-- a 'BP.BoundedPrim'.
168+-- Use this function is to implement efficient encoders for text-based formats
169+-- like JSON or HTML.
161{-# INLINE encodeUtf8BuilderEscaped #-}
172{-# INLINE encodeUtf8BuilderEscaped #-}
162encodeUtf8BuilderEscaped :: BP.BoundedPrim Word8 -> Text -> B.Builder
173encodeUtf8BuilderEscaped :: BP.BoundedPrim Word8 -> Text -> B.Builder
163encodeUtf8BuilderEscaped prim =
174encodeUtf8BuilderEscaped prim =