module Octane.Type.Text
( Text(..)
, encodeLatin1
) where
import Data.Function ((&))
import qualified Data.Aeson as Aeson
import qualified Data.ByteString.Char8 as StrictBytes
import qualified Data.Default.Class as Default
import qualified Data.OverloadedRecords.TH as OverloadedRecords
import qualified Data.String as String
import qualified Data.Text as StrictText
newtype Text = Text
{ textUnpack :: StrictText.Text
} deriving (Eq, Ord)
$(OverloadedRecords.overloadedRecord Default.def ''Text)
instance String.IsString Text where
fromString string = Text (StrictText.pack string)
instance Show Text where
show text = show (#unpack text)
instance Aeson.ToJSON Text where
toJSON text = text & #unpack & Aeson.toJSON
encodeLatin1 :: StrictText.Text -> StrictBytes.ByteString
encodeLatin1 text = text & StrictText.unpack & StrictBytes.pack