From 89ad33b2ef73989b83fdcdb6c8d6d3b7e0dd6b37 Mon Sep 17 00:00:00 2001 From: John Ky Date: Fri, 8 Nov 2024 17:16:06 +1100 Subject: [PATCH] Add ToText type class --- hw-prelude.cabal | 1 + src/HaskellWorks/ToText.hs | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/HaskellWorks/ToText.hs diff --git a/hw-prelude.cabal b/hw-prelude.cabal index d8d821c..b0a9648 100644 --- a/hw-prelude.cabal +++ b/hw-prelude.cabal @@ -96,5 +96,6 @@ library HaskellWorks.IO.Network.Socket HaskellWorks.IO.Process HaskellWorks.Prelude + HaskellWorks.ToText HaskellWorks.Unsafe hs-source-dirs: src diff --git a/src/HaskellWorks/ToText.hs b/src/HaskellWorks/ToText.hs new file mode 100644 index 0000000..8e074e8 --- /dev/null +++ b/src/HaskellWorks/ToText.hs @@ -0,0 +1,25 @@ +module HaskellWorks.ToText + ( ToText (..) + ) where + +import Data.Function +import Data.String (String) +import Data.Text (Text) +import qualified Data.Text as T +import qualified Data.Text.Lazy as LT +import qualified Data.Text.Lazy.Builder as TB + +class ToText a where + toText :: a -> Text + +instance ToText String where + toText = T.pack + +instance ToText Text where + toText = id + +instance ToText LT.Text where + toText = LT.toStrict + +instance ToText TB.Builder where + toText = LT.toStrict . TB.toLazyText