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

module Data.Encoding.Instances
  (
  ) where

import ClassyPrelude
import Utils.PathPiece
import Text.Read

import Web.PathPieces

import Data.Encoding

import Control.Monad.Fail


instance PathPiece DynEncoding where
  toPathPiece = showToPathPiece
  fromPathPiece = encodingFromStringExplicit . unpack

pathPieceJSON ''DynEncoding


instance IsString DynEncoding where
  fromString = encodingFromString
instance Read DynEncoding where
  readPrec = parens $ lexP >>= \case
    Ident str -> maybe (fail "Could not parse encoding") return $ encodingFromStringExplicit str
    _ -> fail "Ident lexeme expected"


instance Ord DynEncoding where
  compare = comparing show
