Fix calculation of latest version
[darcs-mirror-hpvt.git] / PlatformOutput.hs
index 4a4e89f..11c0569 100644 (file)
@@ -1,3 +1,4 @@
+{-# LANGUAGE PatternGuards #-}
 module PlatformOutput (outputPlatform) where
 
 import Text.XHtml hiding (version)
@@ -10,9 +11,11 @@ import Distribution.Package hiding (PackageName)
 import Distribution.PackageDescription
 import Distribution.Text
 import Distribution.Version (VersionRange(ThisVersion))
-import Data.Version (showVersion)
+import qualified Data.Version as DV
+import Data.Version (showVersion, parseVersion)
 
 import Types
+import Utils
 
 outputPlatform :: (Show t) => t -> 
  DistroInfo ->
@@ -47,8 +50,8 @@ mkTable hackage datas = table << (
   where buildDependsMap pd = M.fromList (map fromDep deps)
           where fromDep (Dependency pkg (ThisVersion ver)) = (fromCabal pkg,ver)
                 fromDep d = error $ "Unexpected dependency format " ++ display d
-                deps = buildDepends pd ++ buildTools bi
-                bi = libBuildInfo (fromJust (library pd))
+                deps = buildDepends pd ++ tools
+                tools = maybe [] (buildTools . libBuildInfo) (library pd)
         maps = map (\(p,dists) -> (buildDependsMap p,dists)) datas
         pkgs = S.unions (map (M.keysSet . fst) maps)
         
@@ -60,7 +63,9 @@ mkTable hackage datas = table << (
                             Just ver -> 
                                 td << showVersion ver +++
                                 concatHtml (map (\(_,dm) -> case M.lookup pkg dm of
-                                    Just dver -> mkCell dver
+                                    Just dver ->
+                                        mkCell dver $
+                                            " " +++ showVCmp ver dver
                                     Nothing -> none
                                 ) dists) +++
                                 emptyCell
@@ -70,13 +75,18 @@ mkTable hackage datas = table << (
                                 emptyCell
                       ) maps) +++
                       case M.lookup pkg hackage of
-                        Just hver -> mkCell hver
+                        Just hver -> mkCell hver noHtml
                         Nothing -> none
                   )
-        mkCell (Version v u) = td << hotlink u << v
+        mkCell (Version v u) more = td << (hotlink u << v +++ more)
        none = td << "–"
         emptyCell = td << noHtml
 
+        showVCmp ver (Version dver _) = case dver `vCmp` showVersion ver of
+            LT -> "(<)"
+            EQ -> "(=)"
+            GT -> "(>)"
+
 footer = p << ("This is created by " +++
               hotlink "http://darcs.nomeata.de/hpvt/" << "hptv" +++
               ", written by " +++