950272b11e68779c07814e58a4566f9ba7c9691b
[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
7 import Types
8
9 outputHTML :: Show k =>  M.Map k (Maybe Version, Maybe Version) -> String
10 outputHTML map = showHtml $ page << mkTable map
11
12 myTitle = "Haskell Package Version Tracker"
13
14 page content = thehtml << (header << thetitle << myTitle +++
15                            body << (h1 << myTitle +++ content +++ footer))
16
17 mkTable m = table << (
18                 tr << (th << "Package" +++ th << "Hackage" +++ th << "Debian") +++
19                 (concatHtml $ map row $ M.toAscList m)
20                 )
21   where row (pkg,(h,d)) = tr << (td << show pkg +++
22                                   maybe none mkCell h +++
23                                   maybe none mkCell d )
24         mkCell (Version v u) = td << hotlink u << v
25         none = td << "–"
26
27 footer = p << ("This is created by " +++
28                hotlink "http://darcs.nomeata.de/hpvt/" << "hptv" +++
29                ", written by " +++
30                hotlink "mailto:mail@joachim-breitner.de" << "Joachim Breitner" +++
31                ". At the moment it is not updated automatically or even regulary.")