packages feed

MicroHs-0.15.0.0: lib/Data/Version.hs

module Data.Version(
  Version(..),
  showVersion,
  makeVersion,
  parseVersion,
  ) where
import qualified Prelude(); import MiniPrelude
import Control.DeepSeq.Class
import Data.List(intercalate)
import Text.ParserCombinators.ReadP
import Text.Read

data Version = Version { versionBranch :: [Int], versionTags :: [String] }
  deriving (Show, Eq, Ord)

instance NFData Version where
  rnf (Version x y) = rnf x `seq` rnf y

showVersion :: Version -> String
showVersion (Version b _) = intercalate "." (map show b)

parseVersion :: ReadP Version
parseVersion = do branch <- sepBy1 (fmap read (munch1 isDigit)) (char '.')
                  pure Version{versionBranch=branch, versionTags=[]}

makeVersion :: [Int] -> Version
makeVersion b = Version b []