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