{-# OPTIONS_GHC -fno-warn-orphans #-}

module Data.BCP47.Serialise () where

import Codec.Serialise
import Data.BCP47 (BCP47, fromText, toText)
import Data.Text (unpack)

instance Serialise BCP47 where
  -- bypass children not having their own Serialise instances by using toText/fromText
  encode :: BCP47 -> Encoding
encode = forall a. Serialise a => a -> Encoding
encode forall b c a. (b -> c) -> (a -> b) -> a -> c
. BCP47 -> Text
toText
  decode :: forall s. Decoder s BCP47
decode = forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either (forall (m :: * -> *) a. MonadFail m => String -> m a
fail forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
unpack) forall (f :: * -> *) a. Applicative f => a -> f a
pure forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Either Text BCP47
fromText forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< forall a s. Serialise a => Decoder s a
decode