module Cloud.AWS.Lib.ToText
( ToText (toText)
) where
import Data.ByteString (ByteString)
import Data.IP (IPv4, AddrRange)
import Data.Text (Text)
import qualified Data.Text as T
import qualified Data.Text.Encoding as T
import Data.Time (UTCTime)
import qualified Data.Time as Time
import System.Locale (defaultTimeLocale)
class ToText a where
toText :: a -> Text
toMaybeText :: a -> Maybe Text
toMaybeText = Just . toText
instance ToText Text where
toText t = t
instance ToText ByteString where
toText = T.decodeUtf8
instance ToText Bool where
toText True = "true"
toText False = "false"
instance ToText UTCTime where
toText
= T.pack
. Time.formatTime defaultTimeLocale "%FT%T"
instance ToText Int where
toText = toTextFromShow
instance ToText Integer where
toText = toTextFromShow
instance ToText Double where
toText = toTextFromShow
instance ToText IPv4 where
toText = toTextFromShow
instance ToText (AddrRange IPv4) where
toText = toTextFromShow
toTextFromShow :: Show a => a -> Text
toTextFromShow = T.pack . show