{-# 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 :: Site -> StringTemplate T.Text -> T.Text -> T.Text renderPage s t c = render $ setAttribute "site" s $ setAttribute "content" c t renderPageFile :: String -> IO T.Text renderPageFile p = do c <- readFile $ "pages/" ++ p t <- pageTemplate s <- readSite return $ renderPage s 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