diff options
author | 2014-12-16 14:04:40 -0400 | |
---|---|---|
committer | 2014-12-16 14:04:40 -0400 | |
commit | 95418cc430284b65af13105f7c63da08908dd826 (patch) | |
tree | 9afab6aad8025f454b12b038936f6322b6a82f1c /Utility/DottedVersion.hs | |
parent | be93817b5bd80b051d5037e0641b63c16838b5fa (diff) |
Use wget -q --show-progress for less verbose wget output, when built with wget 1.16.
Diffstat (limited to 'Utility/DottedVersion.hs')
-rw-r--r-- | Utility/DottedVersion.hs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/Utility/DottedVersion.hs b/Utility/DottedVersion.hs new file mode 100644 index 000000000..14aa16da9 --- /dev/null +++ b/Utility/DottedVersion.hs @@ -0,0 +1,36 @@ +{- dotted versions, such as 1.0.1 + - + - Copyright 2011-2014 Joey Hess <joey@kitenet.net> + - + - License: BSD-2-clause + -} + +module Utility.DottedVersion where + +import Common + +data DottedVersion = DottedVersion String Integer + deriving (Eq) + +instance Ord DottedVersion where + compare (DottedVersion _ x) (DottedVersion _ y) = compare x y + +instance Show DottedVersion where + show (DottedVersion s _) = s + +{- To compare dotted versions like 1.7.7 and 1.8, they are normalized to + - a somewhat arbitrary integer representation. -} +normalize :: String -> DottedVersion +normalize v = DottedVersion v $ + sum $ mult 1 $ reverse $ extend precision $ take precision $ + map readi $ split "." v + where + extend n l = l ++ replicate (n - length l) 0 + mult _ [] = [] + mult n (x:xs) = (n*x) : mult (n*10^width) xs + readi :: String -> Integer + readi s = case reads s of + ((x,_):_) -> x + _ -> 0 + precision = 10 -- number of segments of the version to compare + width = length "yyyymmddhhmmss" -- maximum width of a segment |