{-|
Module:      TextShow
Copyright:   (C) 2014-2016 Ryan Scott
License:     BSD-style (see the file LICENSE)
Maintainer:  Ryan Scott
Stability:   Provisional
Portability: GHC

Efficiently convert from values to 'Text' via 'Builder's.

/Since: 2/
-}
module TextShow (
      -- * The @TextShow@ classes
      -- ** 'TextShow'
      TextShow(..)
    , showbParen
    , showtParen
    , showtlParen
    , showbSpace
    , showtSpace
    , showtlSpace
      -- ** 'TextShow1'
    , TextShow1(..)
    , showbPrec1
    , showbUnaryWith
    , liftShowtPrec
    , liftShowtlPrec
      -- ** 'TextShow2'
    , TextShow2(..)
    , showbPrec2
    , showbBinaryWith
    , liftShowtPrec2
    , liftShowtlPrec2
      -- * 'Builder's
      -- ** The 'Builder' type
    , Builder
    , toText
    , toLazyText
    , toLazyTextWith
    , toString
      -- ** Constructing 'Builder's
    , singleton
    , fromText
    , fromLazyText
    , fromString
      -- ** Flushing the buffer state
    , flush
      -- ** 'Builder' utility functions
    , lengthB
    , unlinesB
    , unwordsB
      -- * Printing values
    , printT
    , printTL
    , hPrintT
    , hPrintTL
      -- * Conversions
      -- ** Conversion between 'TextShow' and string 'Show'
    , FromStringShow(..)
    , FromTextShow(..)
    , FromStringShow1(..)
    , FromTextShow1(..)
    , FromStringShow2(..)
    , FromTextShow2(..)
    , showsPrecToShowbPrec
    , showsToShowb
    , showbPrecToShowsPrec
    , showbToShows
      -- ** Conversions between 'Builder', strict 'TS.Text', and lazy 'TL.Text'
    , showtPrecToShowbPrec
    , showtlPrecToShowbPrec
    , showtToShowb
    , showtlToShowb
    , showbPrecToShowtPrec
    , showbPrecToShowtlPrec
    , showbToShowt
    , showbToShowtl
    ) where

import qualified Data.Text as TS ()
import qualified Data.Text.Lazy as TL ()
import           Data.Text.Lazy.Builder

import           Prelude ()

import           TextShow.Classes
import           TextShow.FromStringTextShow
import           TextShow.Instances ()
import           TextShow.Utils (toString, toText, lengthB, unlinesB, unwordsB)