packages feed

muon-0.1.0.0: src/Page.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
module Page where

import qualified Data.Text as T
import Site
import Text.StringTemplate
import Text.StringTemplate.GenericStandard
import Constant

pageTemplate = do
    templates <- directoryGroup "templates" :: IO (STGroup T.Text)
    let Just t = getStringTemplate "generic" templates
    return t

renderPage ::  StringTemplate T.Text -> T.Text -> T.Text
renderPage t c = render
               $ setAttribute "site" defaultSite
               $ setAttribute "content" c t

renderPageFile ::  String -> IO T.Text
renderPageFile p = do
    c <- readFile $ "pages/" ++ p
    t <- pageTemplate
    return $ renderPage t (T.pack c)

writePage ::  String -> T.Text -> IO ()
writePage p c = do
    mkdir $ sitePath ++ p
    writeFile (sitePath ++ p ++ "/index.html") (T.unpack c)

generatePage p = do
    c <- renderPageFile p
    writePage p c
    putStrLn $ "Generated " ++ p

generatePages = mapM_ generatePage pageNames