module BytePatch.Pretty.PatchRep where
import qualified Data.ByteString as BS
import qualified Data.Text.Encoding as Text
import Data.Text ( Text )
class PatchRep a where
toPatchRep :: a -> Either String BS.ByteString
instance PatchRep BS.ByteString where
toPatchRep :: ByteString -> Either String ByteString
toPatchRep = ByteString -> Either String ByteString
forall a b. b -> Either a b
Right (ByteString -> Either String ByteString)
-> (ByteString -> ByteString)
-> ByteString
-> Either String ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
forall a. a -> a
id
instance PatchRep Text where
toPatchRep :: Text -> Either String ByteString
toPatchRep = ByteString -> Either String ByteString
forall a b. b -> Either a b
Right (ByteString -> Either String ByteString)
-> (Text -> ByteString) -> Text -> Either String ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ByteString -> Word8 -> ByteString)
-> Word8 -> ByteString -> ByteString
forall a b c. (a -> b -> c) -> b -> a -> c
flip ByteString -> Word8 -> ByteString
BS.snoc Word8
0x00 (ByteString -> ByteString)
-> (Text -> ByteString) -> Text -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> ByteString
Text.encodeUtf8