muon-0.1.0.0: src/Archive.hs
module Archive where
import System.Directory
import qualified Data.Text as T
import Site
import Text.StringTemplate
import Post
sitePath = "site/"
mkdir = createDirectoryIfMissing False
archiveTemplate = do
templates <- directoryGroup "templates" :: IO (STGroup T.Text)
let Just t = getStringTemplate "generic" templates
return t
makeTableRow :: Post -> String
makeTableRow p = "<tr>"
++ "<td><a href=" ++ T.unpack (link p) ++ ">" ++ T.unpack (title p) ++ "</a></td>"
++ "<td>" ++ T.unpack (date p) ++ "</td>"
++ "<td>" ++ T.unpack (comment p) ++ "</td>"
++ "</tr>"
makeTable :: [Post] -> T.Text
makeTable ps = T.pack
$ "<table>"
++ "<tr><td>Title</td><td>Date</td><td>Comment</td></tr>"
++ unlines (map makeTableRow ps)
++ "</table>"
renderGenericArchive t c = render
$ setAttribute "site" defaultSite
$ setAttribute "content" c t
renderArchive = do
ps <- getAllPosts
t <- archiveTemplate
return $ renderGenericArchive t (makeTable $ reverse ps)
writeArchive :: T.Text -> IO ()
writeArchive s = do
mkdir $ sitePath ++ "archive/"
writeFile (sitePath ++ "archive/index.html") (T.unpack s)
generateArchive = renderArchive >>= writeArchive >> putStrLn "Generated archive"