module Net.Mac.Text
  ( encode
  , decode
  , decodeEither
  , builder
  , parser
  ) where

import Net.Types (Mac(..))
import Net.Mac (fromOctetsNoCast)
import Data.Text (Text)
import qualified Net.Internal as Internal
import qualified Data.Attoparsec.Text as AT
import qualified Data.Text.Lazy.Builder as TBuilder

encode :: Mac -> Text
encode (Mac a b) = Internal.macToText a b

decodeEither :: Text -> Either String Mac
decodeEither = Internal.macFromText' fromOctetsNoCast

decode :: Text -> Maybe Mac
decode = Internal.rightToMaybe . decodeEither

builder :: Mac -> TBuilder.Builder
builder (Mac a b) = Internal.macToTextBuilder a b

parser :: AT.Parser Mac
parser = Internal.macTextParser fromOctetsNoCast