8292ce2cf889b6df4bf829132b8ae4698df674db
[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) -> 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" +++ th << "Hackage" +++ th << "Debian") +++
24                 (concatHtml $ map row $ M.toAscList m)
25                 )
26   where row (pkg,(h,d)) = tr << (td << show pkg +++
27                                   maybe none mkCell h +++
28                                   maybe none mkCell d )
29         mkCell (Version v u) = td << hotlink u << v
30         none = td << "–"
31
32 footer = p << ("This is created by " +++
33                hotlink "http://darcs.nomeata.de/hpvt/" << "hptv" +++
34                ", written by " +++
35                hotlink "mailto:mail@joachim-breitner.de" << "Joachim Breitner" +++
36                ". At the moment it is not updated automatically every night.")