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 = "
"
++ "" ++ T.unpack (title p) ++ " | "
++ "" ++ T.unpack (date p) ++ " | "
++ "" ++ T.unpack (comment p) ++ " | "
++ "
"
makeTable :: [Post] -> T.Text
makeTable ps = T.pack
$ ""
++ "Title | Date | Comment |
"
++ unlines (map makeTableRow ps)
++ "
"
renderGenericArchive s t c = render
$ setAttribute "site" s
$ setAttribute "content" c t
renderArchive = do
ps <- getAllPosts
t <- archiveTemplate
s <- readSite
return $ renderGenericArchive s 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"