{-# LANGUAGE TypeSynonymInstances #-}
-----------------------------------------------------------------------------
-- |
-- Module : Data.String.Stringable
-- Copyright : (c) 2009 Bas van Dijk
-- License : BSD-style (see the file LICENSE)
--
-- Maintainer : Bas van Dijk <v.dijk.bas@gmail.com>
-- Stability : Stable
-- Portability : Requires TypeSynonymInstances
--
-----------------------------------------------------------------------------
module Data.String.Stringable (Stringable(..)) where
import Data.String
import qualified Data.ByteString.Char8 as B
import qualified Data.DString as DS
import qualified Data.Text as T
import qualified Text.PrettyPrint as PP
-- | Class of types that can be converted to and from a String.
class IsString s => Stringable s where
toString :: s -> String
instance Stringable String where
toString = id
instance Stringable B.ByteString where
toString = B.unpack
instance Stringable PP.Doc where
toString = PP.render
instance Stringable ShowS where
toString s = s []
instance Stringable DS.DString where
toString = DS.toString
instance Stringable T.Text where
toString = T.unpack
instance IsString ShowS where
fromString = showString
instance IsString PP.Doc where
fromString = PP.text