module Signet.Unstable.Type.Id where import qualified Control.Monad as Monad import qualified Data.ByteString as ByteString import qualified Data.Word as Word import qualified Signet.Unstable.Exception.InvalidId as InvalidId newtype Id = MkId ByteString.ByteString deriving (Id -> Id -> Bool (Id -> Id -> Bool) -> (Id -> Id -> Bool) -> Eq Id forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Id -> Id -> Bool == :: Id -> Id -> Bool $c/= :: Id -> Id -> Bool /= :: Id -> Id -> Bool Eq, Int -> Id -> ShowS [Id] -> ShowS Id -> String (Int -> Id -> ShowS) -> (Id -> String) -> ([Id] -> ShowS) -> Show Id forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Id -> ShowS showsPrec :: Int -> Id -> ShowS $cshow :: Id -> String show :: Id -> String $cshowList :: [Id] -> ShowS showList :: [Id] -> ShowS Show) unwrap :: Id -> ByteString.ByteString unwrap :: Id -> ByteString unwrap (MkId ByteString byteString) = ByteString byteString separator :: Word.Word8 separator :: Word8 separator = Word8 0x2e parse :: ByteString.ByteString -> Either InvalidId.InvalidId Id parse :: ByteString -> Either InvalidId Id parse ByteString byteString = do Bool -> Either InvalidId () -> Either InvalidId () forall (f :: * -> *). Applicative f => Bool -> f () -> f () Monad.when ((Word8 -> Bool) -> ByteString -> Bool ByteString.any (Word8 -> Word8 -> Bool forall a. Eq a => a -> a -> Bool == Word8 separator) ByteString byteString) (Either InvalidId () -> Either InvalidId ()) -> (InvalidId -> Either InvalidId ()) -> InvalidId -> Either InvalidId () forall b c a. (b -> c) -> (a -> b) -> a -> c . InvalidId -> Either InvalidId () forall a b. a -> Either a b Left (InvalidId -> Either InvalidId ()) -> InvalidId -> Either InvalidId () forall a b. (a -> b) -> a -> b $ ByteString -> InvalidId InvalidId.MkInvalidId ByteString byteString Id -> Either InvalidId Id forall a b. b -> Either a b Right (Id -> Either InvalidId Id) -> Id -> Either InvalidId Id forall a b. (a -> b) -> a -> b $ ByteString -> Id MkId ByteString byteString render :: Id -> ByteString.ByteString render :: Id -> ByteString render = Id -> ByteString unwrap