Generate platform version comparision page
[darcs-mirror-hpvt.git] / HTMLOutput.hs
1 module HTMLOutput (outputHTML) where
2
3 import Text.XHtml hiding (version)
4 import qualified Data.Map as M
5 import Data.Maybe
6 import System.Time
7
8 import Types
9
10 outputHTML :: (Show k, Show t) =>  M.Map k (Maybe Version, Maybe Version, Maybe Version) -> t -> String
11 outputHTML map time = showHtml $ page time << mkTable map
12
13 myTitle = "Haskell Package Version Tracker"
14
15 page time content = thehtml << (header << thetitle << myTitle +++
16                            body << (
17                                 h1 << myTitle +++
18                                 p << ("Last update: " +++ show time) +++
19                                 content +++
20                                 footer))
21
22 mkTable m = table << (
23                 tr << (th << "Package" +++
24                        th << "Hackage" +++
25                        th << "Debian sid" +++
26                        th << "Debian squeeze") +++
27                 (concatHtml $ map row $ M.toAscList m)
28                 )
29   where row (pkg,(h,du,ds)) = tr << (td << show pkg +++
30                                   maybe none mkCell h +++
31                                   maybe none mkCell du +++
32                                   maybe none mkCell ds )
33         mkCell (Version v u) = td << hotlink u << v
34         none = td << "–"
35
36 footer = p << ("This is created by " +++
37                hotlink "http://darcs.nomeata.de/hpvt/" << "hptv" +++
38                ", written by " +++
39                hotlink "mailto:mail@joachim-breitner.de" << "Joachim Breitner" +++
40                ". At the moment it is updated automatically every night.")