{-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} module Package.C.Type.Version ( Version (..) , showVersion ) where import CPkgPrelude import Data.List (intercalate) newtype Version = Version [ Natural ] deriving (Version -> Version -> Bool (Version -> Version -> Bool) -> (Version -> Version -> Bool) -> Eq Version forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Version -> Version -> Bool == :: Version -> Version -> Bool $c/= :: Version -> Version -> Bool /= :: Version -> Version -> Bool Eq, Eq Version Eq Version => (Version -> Version -> Ordering) -> (Version -> Version -> Bool) -> (Version -> Version -> Bool) -> (Version -> Version -> Bool) -> (Version -> Version -> Bool) -> (Version -> Version -> Version) -> (Version -> Version -> Version) -> Ord Version Version -> Version -> Bool Version -> Version -> Ordering Version -> Version -> Version forall a. Eq a => (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a $ccompare :: Version -> Version -> Ordering compare :: Version -> Version -> Ordering $c< :: Version -> Version -> Bool < :: Version -> Version -> Bool $c<= :: Version -> Version -> Bool <= :: Version -> Version -> Bool $c> :: Version -> Version -> Bool > :: Version -> Version -> Bool $c>= :: Version -> Version -> Bool >= :: Version -> Version -> Bool $cmax :: Version -> Version -> Version max :: Version -> Version -> Version $cmin :: Version -> Version -> Version min :: Version -> Version -> Version Ord, InputNormalizer -> Decoder Version (InputNormalizer -> Decoder Version) -> FromDhall Version forall a. (InputNormalizer -> Decoder a) -> FromDhall a $cautoWith :: InputNormalizer -> Decoder Version autoWith :: InputNormalizer -> Decoder Version FromDhall, Get Version [Version] -> Put Version -> Put (Version -> Put) -> Get Version -> ([Version] -> Put) -> Binary Version forall t. (t -> Put) -> Get t -> ([t] -> Put) -> Binary t $cput :: Version -> Put put :: Version -> Put $cget :: Get Version get :: Get Version $cputList :: [Version] -> Put putList :: [Version] -> Put Binary, Eq Version Eq Version => (Int -> Version -> Int) -> (Version -> Int) -> Hashable Version Int -> Version -> Int Version -> Int forall a. Eq a => (Int -> a -> Int) -> (a -> Int) -> Hashable a $chashWithSalt :: Int -> Version -> Int hashWithSalt :: Int -> Version -> Int $chash :: Version -> Int hash :: Version -> Int Hashable) showVersion :: Version -> String showVersion :: Version -> [Char] showVersion (Version [Natural] v) = [Char] -> [[Char]] -> [Char] forall a. [a] -> [[a]] -> [a] intercalate [Char] "." (Natural -> [Char] forall a. Show a => a -> [Char] show (Natural -> [Char]) -> [Natural] -> [[Char]] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Natural] v) instance Pretty Version where pretty :: forall ann. Version -> Doc ann pretty (Version [Natural] v) = [Doc ann] -> Doc ann forall m. Monoid m => [m] -> m forall (t :: * -> *) m. (Foldable t, Monoid m) => t m -> m fold (Doc ann -> [Doc ann] -> [Doc ann] forall ann. Doc ann -> [Doc ann] -> [Doc ann] punctuate Doc ann "." (Natural -> Doc ann forall ann. Natural -> Doc ann forall a ann. Pretty a => a -> Doc ann pretty (Natural -> Doc ann) -> [Natural] -> [Doc ann] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> [Natural] v))