module Text.Hakyll.HakyllMonad
( HakyllConfiguration (..)
, Hakyll
, askHakyll
, getAdditionalContext
) where
import Control.Monad.Reader (ReaderT, ask)
import Control.Monad (liftM)
import qualified Data.Map as M
import Text.Pandoc (ParserState, WriterOptions)
import Text.Hakyll.Context (Context (..))
type Hakyll = ReaderT HakyllConfiguration IO
data HakyllConfiguration = HakyllConfiguration
{
absoluteUrl :: String
,
additionalContext :: Context
,
siteDirectory :: FilePath
,
cacheDirectory :: FilePath
,
enableIndexUrl :: Bool
,
pandocParserState :: ParserState
,
pandocWriterOptions :: WriterOptions
}
askHakyll :: (HakyllConfiguration -> a) -> Hakyll a
askHakyll = flip liftM ask
getAdditionalContext :: HakyllConfiguration -> Context
getAdditionalContext configuration =
let (Context c) = additionalContext configuration
in Context $ M.insert "absolute" (absoluteUrl configuration) c