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 $ "" ++ "" ++ unlines (map makeTableRow ps) ++ "
TitleDateComment
" 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"