{-# LANGUAGE CPP #-}

--------------------------------------------------------------------------------
-- |
-- Module      :  Data.String.ToString.Instances
-- Copyright   :  (c) 2009 Bas van Dijk
-- License     :  BSD3 (see the file LICENSE)
-- Maintainer  :  v.dijk.bas@gmail.com
-- Stability   :  Stable
--
-- This module exports the following instances for the 'ToString' class:
--
-- * 'ShowS'
--
-- * 'ByteString'
--
-- * 'DString'
--
-- * 'Doc'
--
-- * 'Text'
--
-- Note that the instances can be enabled or disabled based on cabal flags.
--
--------------------------------------------------------------------------------

module Data.String.ToString.Instances where

import Data.String.ToString (ToString, toString)

#ifdef SHOWS
import qualified Text.Show
#endif

#ifdef BYTESTRING
import qualified Data.ByteString.Char8
#endif

#ifdef DOC
import qualified Text.PrettyPrint
#endif

#ifdef TEXT
import qualified Data.Text
import qualified Data.Text.Lazy
#endif


--------------------------------------------------------------------------------
-- ToString instances
--------------------------------------------------------------------------------

#ifdef SHOWS
instance ToString Text.Show.ShowS where
    toString s = s []
#endif

#ifdef BYTESTRING
instance ToString Data.ByteString.Char8.ByteString where
    toString = Data.ByteString.Char8.unpack
#endif

#ifdef DOC
instance ToString Text.PrettyPrint.Doc where
    toString = Text.PrettyPrint.render
#endif

#ifdef TEXT
instance ToString Data.Text.Text where
    toString = Data.Text.unpack

instance ToString Data.Text.Lazy.Text where
    toString = Data.Text.Lazy.unpack
#endif


-- The End ---------------------------------------------------------------------