{-# LANGUAGE OverloadedStrings #-}

module Network.Damn.Format.Damn (
    damnFormat,
    damnFormatBytes
) where

import Data.ByteString                   (ByteString)
import Data.Text.Encoding
import Network.Damn.Format.Base
import Network.Damn.Format.Damn.Internal

-- | @damnFormat@ is, essentially, a formatter that transforms a raw
-- dAmn message into the text that the sender typed into the dAmn web
-- client.
damnFormat :: Formatter Text
damnFormat = either id (decodeUtf8 . damnFormat')

-- | @encodeUtf8 . damnFormat@
--
-- This function is defined separately to avoid an encoding round-trip.
damnFormatBytes :: Formatter ByteString
damnFormatBytes = either encodeUtf8 damnFormat'