{-# OPTIONS_GHC -Wall #-}
module Data.SemanticVersion.Version where
import Control.Lens
import Data.SemanticVersion.NumericIdentifier
import Text.Parser.Char
data Version =
Version NumericIdentifier NumericIdentifier NumericIdentifier
deriving (Version -> Version -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Version -> Version -> Bool
$c/= :: Version -> Version -> Bool
== :: Version -> Version -> Bool
$c== :: Version -> Version -> Bool
Eq, Int -> Version -> ShowS
[Version] -> ShowS
Version -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Version] -> ShowS
$cshowList :: [Version] -> ShowS
show :: Version -> String
$cshow :: Version -> String
showsPrec :: Int -> Version -> ShowS
$cshowsPrec :: Int -> Version -> ShowS
Show)
class HasVersion a where
version ::
Lens' a Version
versionMajor ::
Lens' a NumericIdentifier
versionMajor =
forall a. HasVersion a => Lens' a Version
version forall b c a. (b -> c) -> (a -> b) -> a -> c
. \NumericIdentifier -> f NumericIdentifier
f (Version NumericIdentifier
j NumericIdentifier
n NumericIdentifier
p) -> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\NumericIdentifier
j' -> NumericIdentifier
-> NumericIdentifier -> NumericIdentifier -> Version
Version NumericIdentifier
j' NumericIdentifier
n NumericIdentifier
p) (NumericIdentifier -> f NumericIdentifier
f NumericIdentifier
j)
versionMinor ::
Lens' a NumericIdentifier
versionMinor =
forall a. HasVersion a => Lens' a Version
version forall b c a. (b -> c) -> (a -> b) -> a -> c
. \NumericIdentifier -> f NumericIdentifier
f (Version NumericIdentifier
j NumericIdentifier
n NumericIdentifier
p) -> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (\NumericIdentifier
n' -> NumericIdentifier
-> NumericIdentifier -> NumericIdentifier -> Version
Version NumericIdentifier
j NumericIdentifier
n' NumericIdentifier
p) (NumericIdentifier -> f NumericIdentifier
f NumericIdentifier
n)
versionPatch ::
Lens' a NumericIdentifier
versionPatch =
forall a. HasVersion a => Lens' a Version
version forall b c a. (b -> c) -> (a -> b) -> a -> c
. \NumericIdentifier -> f NumericIdentifier
f (Version NumericIdentifier
j NumericIdentifier
n NumericIdentifier
p) -> forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (NumericIdentifier
-> NumericIdentifier -> NumericIdentifier -> Version
Version NumericIdentifier
j NumericIdentifier
n) (NumericIdentifier -> f NumericIdentifier
f NumericIdentifier
p)
instance HasVersion Version where
version :: Lens' Version Version
version =
forall a. a -> a
id
class AsVersion a where
_Version ::
Prism' a Version
instance AsVersion Version where
_Version :: Prism' Version Version
_Version =
forall a. a -> a
id
parseVersion ::
CharParsing p =>
p Version
parseVersion :: forall (p :: * -> *). CharParsing p => p Version
parseVersion =
NumericIdentifier
-> NumericIdentifier -> NumericIdentifier -> Version
Version forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall (p :: * -> *). CharParsing p => p NumericIdentifier
parseNumericIdentifier forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* forall (m :: * -> *). CharParsing m => Char -> m Char
char Char
'.' forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (p :: * -> *). CharParsing p => p NumericIdentifier
parseNumericIdentifier forall (f :: * -> *) a b. Applicative f => f a -> f b -> f a
<* forall (m :: * -> *). CharParsing m => Char -> m Char
char Char
'.' forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> forall (p :: * -> *). CharParsing p => p NumericIdentifier
parseNumericIdentifier