{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE DeriveDataTypeable #-} module Post where import qualified Data.Text as T import qualified Data.Text.Lazy as TL import qualified Data.String.Utils as S import Text.StringTemplate import Text.StringTemplate.GenericStandard import Text.Blaze.Html.Renderer.Text import Text.Markdown import System.Directory import System.FilePath.Glob import Data.Typeable import Data.Data import Data.List import Data.Char import Site import Control.Monad import Constant import Network.HTTP.Base (urlEncode) postPath = "posts/" :: String replace a b c = S.replace a b (T.unpack c) data Post = Post { title :: T.Text , link :: T.Text , date :: T.Text , comment :: T.Text , content :: T.Text } deriving (Data, Typeable, Show) postTemplate = do templates <- directoryGroup "templates" :: IO (STGroup T.Text) let Just t = getStringTemplate "post" templates return t renderPost :: Site -> StringTemplate T.Text -> Post -> T.Text renderPost s t p = render $ setAttribute "site" s $ setAttribute "post" p t renderPostT :: Post -> IO T.Text renderPostT p = do t <- postTemplate s <- readSite return $ renderPost s t p makeExtract :: Post -> T.Text makeExtract p = T.pack $ "