{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE LambdaCase #-}
module Data.SemanticVersion.PreReleaseIdentifier where
import Control.Applicative
import Control.Lens
import Data.SemanticVersion.AlphanumericIdentifier
import Data.SemanticVersion.NumericIdentifier
import Text.Parser.Char
import Text.Parser.Combinators
data PreReleaseIdentifier =
PreReleaseIdentifierAlphanumeric AlphanumericIdentifier
| PreReleaseIdentifierNumeric NumericIdentifier
deriving (PreReleaseIdentifier -> PreReleaseIdentifier -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PreReleaseIdentifier -> PreReleaseIdentifier -> Bool
$c/= :: PreReleaseIdentifier -> PreReleaseIdentifier -> Bool
== :: PreReleaseIdentifier -> PreReleaseIdentifier -> Bool
$c== :: PreReleaseIdentifier -> PreReleaseIdentifier -> Bool
Eq, Int -> PreReleaseIdentifier -> ShowS
[PreReleaseIdentifier] -> ShowS
PreReleaseIdentifier -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PreReleaseIdentifier] -> ShowS
$cshowList :: [PreReleaseIdentifier] -> ShowS
show :: PreReleaseIdentifier -> String
$cshow :: PreReleaseIdentifier -> String
showsPrec :: Int -> PreReleaseIdentifier -> ShowS
$cshowsPrec :: Int -> PreReleaseIdentifier -> ShowS
Show)
class HasPreReleaseIdentifier a where
preReleaseIdentifier ::
Lens' a PreReleaseIdentifier
instance HasPreReleaseIdentifier PreReleaseIdentifier where
preReleaseIdentifier :: Lens' PreReleaseIdentifier PreReleaseIdentifier
preReleaseIdentifier =
forall a. a -> a
id
class AsPreReleaseIdentifier a where
_PreReleaseIdentifier ::
Prism' a PreReleaseIdentifier
instance AsPreReleaseIdentifier PreReleaseIdentifier where
_PreReleaseIdentifier :: Prism' PreReleaseIdentifier PreReleaseIdentifier
_PreReleaseIdentifier =
forall a. a -> a
id
instance AsAlphanumericIdentifier PreReleaseIdentifier where
_AlphanumericIdentifier :: Prism' PreReleaseIdentifier AlphanumericIdentifier
_AlphanumericIdentifier =
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism'
AlphanumericIdentifier -> PreReleaseIdentifier
PreReleaseIdentifierAlphanumeric
(\case
PreReleaseIdentifierAlphanumeric AlphanumericIdentifier
a ->
forall a. a -> Maybe a
Just AlphanumericIdentifier
a
PreReleaseIdentifier
_ ->
forall a. Maybe a
Nothing)
instance AsNumericIdentifier PreReleaseIdentifier where
_NumericIdentifier :: Prism' PreReleaseIdentifier NumericIdentifier
_NumericIdentifier =
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism'
NumericIdentifier -> PreReleaseIdentifier
PreReleaseIdentifierNumeric
(\case
PreReleaseIdentifierNumeric NumericIdentifier
a ->
forall a. a -> Maybe a
Just NumericIdentifier
a
PreReleaseIdentifier
_ ->
forall a. Maybe a
Nothing)
parsePreReleaseIdentifier ::
CharParsing p =>
p PreReleaseIdentifier
parsePreReleaseIdentifier :: forall (p :: * -> *). CharParsing p => p PreReleaseIdentifier
parsePreReleaseIdentifier =
forall (m :: * -> *) a. Parsing m => m a -> m a
try (AlphanumericIdentifier -> PreReleaseIdentifier
PreReleaseIdentifierAlphanumeric forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (p :: * -> *). CharParsing p => p AlphanumericIdentifier
parseAlphanumericIdentifier) forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
<|>
NumericIdentifier -> PreReleaseIdentifier
PreReleaseIdentifierNumeric forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (p :: * -> *). CharParsing p => p NumericIdentifier
parseNumericIdentifier