module Data.SerDoc.TestUtil where import Text.Read import Data.ByteString (ByteString) import qualified Data.Text as Text import Data.Text.Encoding (encodeUtf8, decodeUtf8) import Data.Maybe showBS :: Show a => a -> ByteString showBS :: forall a. Show a => a -> ByteString showBS = Text -> ByteString encodeUtf8 (Text -> ByteString) -> (a -> Text) -> a -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Text Text.pack (String -> Text) -> (a -> String) -> a -> Text forall b c a. (b -> c) -> (a -> b) -> a -> c . a -> String forall a. Show a => a -> String show readMaybeBS_ :: Read a => ByteString -> Maybe a readMaybeBS_ :: forall a. Read a => ByteString -> Maybe a readMaybeBS_ = String -> Maybe a forall a. Read a => String -> Maybe a readMaybe (String -> Maybe a) -> (ByteString -> String) -> ByteString -> Maybe a forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> String Text.unpack (Text -> String) -> (ByteString -> Text) -> ByteString -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> Text decodeUtf8 readMaybeBS :: Read a => ByteString -> Maybe (a, ByteString) readMaybeBS :: forall a. Read a => ByteString -> Maybe (a, ByteString) readMaybeBS ByteString src = do (a x, String restStr) <- [(a, String)] -> Maybe (a, String) forall a. [a] -> Maybe a listToMaybe ([(a, String)] -> Maybe (a, String)) -> (ByteString -> [(a, String)]) -> ByteString -> Maybe (a, String) forall b c a. (b -> c) -> (a -> b) -> a -> c . ReadS a forall a. Read a => ReadS a reads ReadS a -> (ByteString -> String) -> ByteString -> [(a, String)] forall b c a. (b -> c) -> (a -> b) -> a -> c . Text -> String Text.unpack (Text -> String) -> (ByteString -> Text) -> ByteString -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . ByteString -> Text decodeUtf8 (ByteString -> Maybe (a, String)) -> ByteString -> Maybe (a, String) forall a b. (a -> b) -> a -> b $ ByteString src (a, ByteString) -> Maybe (a, ByteString) forall a. a -> Maybe a forall (m :: * -> *) a. Monad m => a -> m a return (a x, Text -> ByteString encodeUtf8 (Text -> ByteString) -> (String -> Text) -> String -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . String -> Text Text.pack (String -> ByteString) -> String -> ByteString forall a b. (a -> b) -> a -> b $ String restStr)