module System.Console.Haskeline.Recover where import GHC.IO.Encoding import GHC.IO.Encoding.Failure transliterateFailure :: TextEncoding -> TextEncoding transliterateFailure :: TextEncoding -> TextEncoding transliterateFailure TextEncoding { mkTextEncoder :: () mkTextEncoder = IO (TextEncoder estate) mkEncoder , mkTextDecoder :: () mkTextDecoder = IO (TextDecoder dstate) mkDecoder , textEncodingName :: TextEncoding -> String textEncodingName = String name } = TextEncoding :: forall dstate estate. String -> IO (TextDecoder dstate) -> IO (TextEncoder estate) -> TextEncoding TextEncoding { mkTextDecoder :: IO (TextDecoder dstate) mkTextDecoder = (TextDecoder dstate -> TextDecoder dstate) -> IO (TextDecoder dstate) -> IO (TextDecoder dstate) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ((Buffer Word8 -> Buffer Char -> IO (Buffer Word8, Buffer Char)) -> TextDecoder dstate -> TextDecoder dstate forall from to state. (Buffer from -> Buffer to -> IO (Buffer from, Buffer to)) -> BufferCodec from to state -> BufferCodec from to state setRecover ((Buffer Word8 -> Buffer Char -> IO (Buffer Word8, Buffer Char)) -> TextDecoder dstate -> TextDecoder dstate) -> (Buffer Word8 -> Buffer Char -> IO (Buffer Word8, Buffer Char)) -> TextDecoder dstate -> TextDecoder dstate forall a b. (a -> b) -> a -> b $ CodingFailureMode -> Buffer Word8 -> Buffer Char -> IO (Buffer Word8, Buffer Char) recoverDecode CodingFailureMode TransliterateCodingFailure) IO (TextDecoder dstate) mkDecoder , mkTextEncoder :: IO (TextEncoder estate) mkTextEncoder = (TextEncoder estate -> TextEncoder estate) -> IO (TextEncoder estate) -> IO (TextEncoder estate) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap ((Buffer Char -> Buffer Word8 -> IO (Buffer Char, Buffer Word8)) -> TextEncoder estate -> TextEncoder estate forall from to state. (Buffer from -> Buffer to -> IO (Buffer from, Buffer to)) -> BufferCodec from to state -> BufferCodec from to state setRecover ((Buffer Char -> Buffer Word8 -> IO (Buffer Char, Buffer Word8)) -> TextEncoder estate -> TextEncoder estate) -> (Buffer Char -> Buffer Word8 -> IO (Buffer Char, Buffer Word8)) -> TextEncoder estate -> TextEncoder estate forall a b. (a -> b) -> a -> b $ CodingFailureMode -> Buffer Char -> Buffer Word8 -> IO (Buffer Char, Buffer Word8) recoverEncode CodingFailureMode TransliterateCodingFailure) IO (TextEncoder estate) mkEncoder , textEncodingName :: String textEncodingName = String name } where setRecover :: (Buffer from -> Buffer to -> IO (Buffer from, Buffer to)) -> BufferCodec from to state -> BufferCodec from to state setRecover Buffer from -> Buffer to -> IO (Buffer from, Buffer to) r BufferCodec from to state x = BufferCodec from to state x { recover :: Buffer from -> Buffer to -> IO (Buffer from, Buffer to) recover = Buffer from -> Buffer to -> IO (Buffer from, Buffer to) r }