bytestring-encoding-0.1.0.0: src/Data/ByteString/Encoding.hs
-----------------------------------------------------------------------------
-- |
-- Module : Data.ByteString.Encoding
-- Copyright : (c) Masahiro Sakai 2018
-- License : BSD-style
--
-- Maintainer : masahiro.sakai@gmail.com
-- Stability : provisional
-- Portability : non-portable
--
-- 'B.ByteString' ↔ 'T.Text' converter based on "GHC.IO.Encoding".
--
-----------------------------------------------------------------------------
module Data.ByteString.Encoding
(
-- * Converter functions
encode
, decode
-- * Text encodings (re-exported from "System.IO")
, TextEncoding
, latin1
, utf8
, utf8_bom
, utf16
, utf16le
, utf16be
, utf32
, utf32le
, utf32be
, localeEncoding
, char8
, mkTextEncoding
) where
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.Lazy.Encoding as L
import qualified Data.Text as T
import qualified Data.Text.Lazy as TL
import System.IO
-- | Encode a strict 'T.Text' into strict 'B.ByteString' using a given 'Enc.TextEncoding'.
encode :: TextEncoding -> T.Text -> B.ByteString
encode enc = BL.toStrict . L.encode enc . TL.fromStrict
-- | Decode a strict 'B.ByteString' to a strit 'T.Text' using a given 'Enc.TextEncoding'.
decode :: TextEncoding -> B.ByteString -> T.Text
decode enc = TL.toStrict . L.decode enc . BL.fromStrict