Skip to content

Commit

Permalink
Add support for the Text and ByteString types.
Browse files Browse the repository at this point in the history
  • Loading branch information
bos authored and jgoerzen committed Apr 27, 2011
1 parent f050e60 commit 19853f4
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 1 deletion.
1 change: 1 addition & 0 deletions Data/Convertible/Instances.hs
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,5 @@ module Data.Convertible.Instances(
import Data.Convertible.Instances.C()
import Data.Convertible.Instances.Map()
import Data.Convertible.Instances.Num()
import Data.Convertible.Instances.Text()
import Data.Convertible.Instances.Time()
74 changes: 74 additions & 0 deletions Data/Convertible/Instances/Text.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
{- |
Module : Data.Convertible.Instances.Text
Copyright : Copyright (C) 2011 MailRank, Inc.
License : LGPL
Maintainer : John Goerzen <jgoerzen@complete.org>
Stability : provisional
Portability: portable
Text instances for Convertible.
Copyright (C) 2011 MailRank, Inc. <bos@mailrank.com>
All rights reserved.
For license and copyright information, see the file COPYRIGHT
These instances perform conversion between text-like types such as
Text, ByteString, and the like.
The instances do /not/ include conversions between ByteString and
Text or String, since such conversions cannot safely be performed
without knowing the encoding of the ByteString.
-}

module Data.Convertible.Instances.Text()
where

import Data.Convertible.Base
import qualified Data.Text as TS
import qualified Data.Text.Lazy as TL
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BL
import Data.Word (Word8)

-- Text

instance Convertible [Char] TS.Text where
safeConvert = Right . TS.pack

instance Convertible TS.Text [Char] where
safeConvert = Right . TS.unpack

instance Convertible [Char] TL.Text where
safeConvert = Right . TL.pack

instance Convertible TL.Text [Char] where
safeConvert = Right . TL.unpack

instance Convertible TS.Text TL.Text where
safeConvert = Right . TL.fromStrict

instance Convertible TL.Text TS.Text where
safeConvert = Right . TL.toStrict

-- ByteString

instance Convertible [Word8] BS.ByteString where
safeConvert = Right . BS.pack

instance Convertible BS.ByteString [Word8] where
safeConvert = Right . BS.unpack

instance Convertible [Word8] BL.ByteString where
safeConvert = Right . BL.pack

instance Convertible BL.ByteString [Word8] where
safeConvert = Right . BL.unpack

instance Convertible BS.ByteString BL.ByteString where
safeConvert = Right . BL.fromChunks . (:[])

instance Convertible BL.ByteString BS.ByteString where
safeConvert = Right . BS.concat . BL.toChunks
3 changes: 2 additions & 1 deletion convertible.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ library
Build-Depends: time<1.1.3
else
Build-Depends: base<3
Build-Depends: mtl
Build-Depends: mtl, text

GHC-Options: -O2 -Wall -fno-warn-orphans

Expand All @@ -70,6 +70,7 @@ library
Data.Convertible.Instances.C,
Data.Convertible.Instances.Map,
Data.Convertible.Instances.Num,
Data.Convertible.Instances.Text,
Data.Convertible.Instances.Time

--Other-Modules: Database.HDBC.Utils
Expand Down

0 comments on commit 19853f4

Please sign in to comment.