module Signet.Unstable.Type.Signatures where import qualified Data.ByteString as ByteString import qualified Data.Either as Either import qualified Data.Word as Word import qualified Signet.Unstable.Exception.InvalidSignature as InvalidSignature import qualified Signet.Unstable.Exception.UnknownSignature as UnknownSignature import qualified Signet.Unstable.Type.Signature as Signature newtype Signatures = MkSignatures [Signature.Signature] deriving (Signatures -> Signatures -> Bool (Signatures -> Signatures -> Bool) -> (Signatures -> Signatures -> Bool) -> Eq Signatures forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Signatures -> Signatures -> Bool == :: Signatures -> Signatures -> Bool $c/= :: Signatures -> Signatures -> Bool /= :: Signatures -> Signatures -> Bool Eq, Int -> Signatures -> ShowS [Signatures] -> ShowS Signatures -> String (Int -> Signatures -> ShowS) -> (Signatures -> String) -> ([Signatures] -> ShowS) -> Show Signatures forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Signatures -> ShowS showsPrec :: Int -> Signatures -> ShowS $cshow :: Signatures -> String show :: Signatures -> String $cshowList :: [Signatures] -> ShowS showList :: [Signatures] -> ShowS Show) unwrap :: Signatures -> [Signature.Signature] unwrap :: Signatures -> [Signature] unwrap (MkSignatures [Signature] signatures) = [Signature] signatures separator :: Word.Word8 separator :: Word8 separator = Word8 0x20 parse :: ByteString.ByteString -> Either InvalidSignature.InvalidSignature ([UnknownSignature.UnknownSignature], Signatures) parse :: ByteString -> Either InvalidSignature ([UnknownSignature], Signatures) parse = ([Either UnknownSignature Signature] -> ([UnknownSignature], Signatures)) -> Either InvalidSignature [Either UnknownSignature Signature] -> Either InvalidSignature ([UnknownSignature], Signatures) forall a b. (a -> b) -> Either InvalidSignature a -> Either InvalidSignature b forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap (([Signature] -> Signatures) -> ([UnknownSignature], [Signature]) -> ([UnknownSignature], Signatures) forall a b. (a -> b) -> ([UnknownSignature], a) -> ([UnknownSignature], b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap [Signature] -> Signatures MkSignatures (([UnknownSignature], [Signature]) -> ([UnknownSignature], Signatures)) -> ([Either UnknownSignature Signature] -> ([UnknownSignature], [Signature])) -> [Either UnknownSignature Signature] -> ([UnknownSignature], Signatures) forall b c a. (b -> c) -> (a -> b) -> a -> c . [Either UnknownSignature Signature] -> ([UnknownSignature], [Signature]) forall a b. [Either a b] -> ([a], [b]) Either.partitionEithers) (Either InvalidSignature [Either UnknownSignature Signature] -> Either InvalidSignature ([UnknownSignature], Signatures)) -> (ByteString -> Either InvalidSignature [Either UnknownSignature Signature]) -> ByteString -> Either InvalidSignature ([UnknownSignature], Signatures) forall b c a. (b -> c) -> (a -> b) -> a -> c . (ByteString -> Either InvalidSignature (Either UnknownSignature Signature)) -> [ByteString] -> Either InvalidSignature [Either UnknownSignature Signature] forall (t :: * -> *) (f :: * -> *) a b. (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> [a] -> f [b] traverse ByteString -> Either InvalidSignature (Either UnknownSignature Signature) Signature.parse ([ByteString] -> Either InvalidSignature [Either UnknownSignature Signature]) -> (ByteString -> [ByteString]) -> ByteString -> Either InvalidSignature [Either UnknownSignature Signature] forall b c a. (b -> c) -> (a -> b) -> a -> c . Word8 -> ByteString -> [ByteString] ByteString.split Word8 separator render :: Signatures -> ByteString.ByteString render :: Signatures -> ByteString render = ByteString -> [ByteString] -> ByteString ByteString.intercalate (Word8 -> ByteString ByteString.singleton Word8 separator) ([ByteString] -> ByteString) -> (Signatures -> [ByteString]) -> Signatures -> ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . (Signature -> ByteString) -> [Signature] -> [ByteString] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap Signature -> ByteString Signature.render ([Signature] -> [ByteString]) -> (Signatures -> [Signature]) -> Signatures -> [ByteString] forall b c a. (b -> c) -> (a -> b) -> a -> c . Signatures -> [Signature] unwrap